软件架构师需要掌握哪些知识?

软件架构师需要掌握哪些知识?,第1张

架构师首先必须具有丰富的开发经验,是个技术主管。因为他必须清楚什么是可以实现的,实现的方式有哪些,相应的难度怎么样,实现出来的系统面对需求变化的适应性等一系列指标。另外,需要对面向过程、面向对象、面向服务等设计理念有深刻的理解,可以快速的察觉出实现中的问题并提出相应的改进(重构)方案(也就是通常说的反模式)。这些都需要长期的开发实践才能真正的体会到,单从书本上很难领会到,就算当时理解了也不一定能融会到实践中去。在技术能力上,软件架构师最重要也是最需要掌握的知识是构件通信机制方面的知识,包括进程内通信(对象访问、函数调用、数据交换、线程同步等)以及进程外(包括跨计算机)的通信(如RMI、DCOM、Web Service)。在WEB应用大行其道的今天,开发者往往对服务器间的通信关注的比较多,而对进程内的通信较少关注。进程外跨机器通信是构建分布式应用的基石,它是架构设计中的鸟瞰视图;而进程内的通信是模块实现的骨架,它是基石的基石。如果具体到一个基于.Net企业级架构设计,首先需要的是语言级别的认识,包括.NET的CLR、继承特性、委托和事件处理等。然后是常用解决方案的认识,包括ASP.NET Web Service、.NET Remoting、企业服务组件等。总之,丰富的开发实践经验有助于避免架构师纸上谈兵式的高来高去,给代码编写人员带来实实在在的可行性。其次,具有足够的行业业务知识和商业头脑也是很重要的。行业业务知识的足够把握可以给架构师更多的拥抱变化的能力,可以在系统设计的时候留出一些扩展的余地来适应可能来临的需求变化。有经验的设计人员可能都碰到过这样的事,一厢情愿的保留接口在需求变化中的命中率非常低。也就是说,在系统设计之初为扩展性留下来的系统接口没能在需求变化的洪流中发挥真正的作用,因为需求的变化并没有按照预想的方向进行,到最后还是不得不为变化的业务重新设计系统。这就是因为对业务知识的理解和对市场或者商业的判断没有达到一个实用的、可以为架构扩展性服务的水平。再次,架构设计师对人的关注必须提升到架构设计之初来纳入考虑的范围,包括沟通以及对人员素质的判断。软件过程是团队协作共同构建系统的过程,沟通能力是将整个过程中多条开发线粘合在一起的胶水。大家都应该碰到过事后说“原来是这样啊,我不知道啊”或者某个开发人员突然高声呼喊“为什么这里的数据没有了”之类的。沟通的目的就是尽量避免多条开发线的混乱,让系统构建过程可以有条理的高效进行。另外,对人的关注还表现在对团队成员的素质判断上,比如哪些开发人员对哪些技术更熟悉,或者哪些开发人员容易拖进度等。只有合理的使用人力资源,让合适的人做合适的事情才能让整个软件过程更加高效。架构师应时刻注意新软件设计和开发方面的发展情况,并不断探索更有效的新方法、开发语言、设计模式和开发平台不断很快地升级,软件架构师需要吸收这些新技术新知识,并将它们用于软件系统开发工作中。但对新技术的探索应该在一个理性的范围内进行,不能盲目的跟风。解决方案提供商永远都希望你能使用它提供的最新技术,而且它们在推广自己的解决方案的时候往往是以自己的产品为中心,容易给人错觉。比如数据库,往往让人觉得它什么都能做,只要有了它其它什么都不重要了。但事实上并不是如此,对于小型应用可以将许多业务逻辑用script的方式放入数据库中,但很少看到大型应用采用这样的做法。对于新东西需要以一种比较的观点来判断,包括横向的比较和纵向的比较,最后得出一些性能、可移植性以及可升级等指标。另外,新入行的开发人员往往关心新技术动向而忽略了技术的历史,而从DOS时代一路杀过来的开发者就对现在的技术体系有较全面的把握。

系统架构师应该掌握什么

我要成为一个软件架构师。对一个年轻的工程师来说,这是一个很好的目标。那么要成为系统架构师,应该掌握什么呢?

架构师首先必须要了解需求和业务,架构师必须接地气。

不了解需求的架构师,就去设计架构,指挥大家干活,纯粹是耍流氓。架构虽然不是产品经理,但是产品最终都是服务客户的。如果架构师只懂技术,不考虑需求,做出的系统可能是高大上,但是用户不一定买账,那就是一个失败的产品了。

其次,架构师需要定义架构。

搞清楚需求后,下一步就是思考,如何解决这些需求并定义它的架构。架构定义过程让你想清楚你打算怎么在兼顾需求和限制的情况下把问题解决好。架构定义是将结构,方针,原则和领导力引入软件项目的技术层面。

第三,架构师还需要进行技术选型,选择哪种技术来支持业务的实现。

这里注意的'是,不一定要选择那些潮流技术,选择什么技术,要看自己的场景。有时候,选择一些最原始的技术,没准更适合自己的业务场景。技术选型是很重要的,选择正确的技术,就能事半功倍。如果选择不好,那么就会欠技术债务,不仅影响产品的开发周期,还会影响产品的稳定性。

第四,架构师需要进行架构协作。

这里的架构协作,不仅仅指技术方面了。一个好的产品,牵涉到很多人即“项目干系人”,要想让一个软件项目成功,需要所有的系统干系人紧密协作来保证架构和所在的环境很好的集成。

第五,架构师还可以参与一些设计,开发,测试的工作。

还是那句话,架构师要接地气。真正去使用自己的产品,不仅能对产品进度很好地把握,还能在使用中发现产品架构存在的问题,及时修补和调整。另外,这样做的另外一个好处,就是架构师能够真正融入团队,并不是高高在上的。这不仅不会削弱你的权威,相反,能够让下属更尊重你,这也是领导力养成的一个重要途径。

最后在招聘网站摘录了一些对架构师的要求,供大家参考,希望有这个目标的小伙伴,不断努力,早日实现。

熟悉分布式、高性能架构和开发技术,如分布式应用开发、数据分布式管理和同步等

精通J2EE系统架构,深刻理解J2EE架构的优缺点,具有大型基于J2EE体系结构的项目规划、系统架构设计、开发经验,精通j2ee设计模式

深刻理解软件系统架构,精通面向对象分析设计方法,逻辑能力佳,具有丰富的OOA、OOD、OOP、UML及SOA经验,精通RationalRose、PowerDesigner等设计工具

技术视野广阔,具有良好的前瞻性,思路清晰、逻辑性强,对移动支付和互联网支付的相关技术具有优秀的领悟力和前瞻性,有较强的业务分析能力

良好的沟通能力、团队合作精神和服务意识认真负责、具有高度责任感和敬业精神

对于性能瓶颈可以给出最优的切片,集群和分布式服务器搭建解决方案

理解面向对象分析和设计的基本原则,熟悉常用的设计模式,熟悉UML

熟悉Java的多线程,线程与线程,进程与进程的通信机制

精通系统优化,对系统优化原理有深入的理解。对系统端到端性能优化有丰富的实践经验,熟悉各种远程本地Cache组件(尤其是Memcached,Redis),对Cache服务器集群架构有丰富的经验

软件架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。主导系统全局分析设计和实施、负责软件构架和关键技术决策的人员。根据“第三届中国软件工程大会”的报告,在中国,未来五年,高端软件人才需求缺口达20万。而每年自动成长起来的软件架构师只有几百人,可见市场需求的巨大。

扩展资料:

架构师的主要任务:

1、领导与协调整个项目中的技术活动(分析、设计和实施等)

2、推动主要的技术决策,并最终表达为软件构架

3、确定和文档化系统的相对构架而言意义重大的方面,包括系统的需求、设计、实施和部署等“视图”

参考资料来源:百度百科-软件架构师

参考资料来源:百度百科-软件工程


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/6033779.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-12
下一篇 2023-03-12

发表评论

登录后才能评论

评论列表(0条)

保存