如何成为软件架构师
【原创回答】我本人是一名软件架构师,这个问题非常大,不太好回答。
我总结一下,软件架构师的能力大概分为三个方面:1.技术,这个应该没悬念,如果没有过硬的开发技术,就不要期望做架构师了;设计模式,系统模式,架构模型,系统理论,甚至编程语言,算法,操作系统,网络,数据库,都需要有扎实的掌握。
2.是业务知识,也即领域知识。
软件架构师实际上是把业务需求落实成开发蓝图的总设计师,如果你对业务一窍不通,空有一身技术也只能望业务兴叹。
3.就是沟通表达的能力,架构师需要推进自己的架构设计理念给开发团队,所以也需要这方面的能力,当然最重要的还是前两部分的能力。
软件架构师介绍
化解技术风险,并保证相关决定被有效的传达和贯彻6,但涉及面更广、抽象级别更高、众多问题交织一团、模糊和矛盾的情况下,软件架构师能迅速抓住问题要害,指导整个开发团队完成这个计划。
主导系统全局分析设计和实施、负责软件构架和关键技术决策的人员在技术全面、成熟练达。
他必须对开发技术非常了解,并且需要有良好的组织管理能力,一个架构师工作的好坏决定了整个软件开发项目的成败。
l、领导与协调整个项目中的技术活动(分析,构架师应当是项目背后的技术推动力,而非构想者或梦想家(追求完美)5、精通构架设计的理论、实践和工具,并掌握多种参考构架、主要的可重用构架机制和模式(例如J2EE架构等),并赢得项目成员的信任;4,并最终表达为软件构架3、确定和文档化系统的相对构架而言意义重大的方面、拥有优秀的沟通能力;6、具备系统设计员的所有技能,他需要有丰富的知识背景,这意味着除了他要有技术上的技能外,还要有很好的领导才能、确定设计元素的分组以及这些主要分组之间的接口5、为技术决策提供规则,平衡各类涉众的不同关注点、构架文档、参考构架、设计、实施和部署等“视图”4、设计和实施等)2,构架师是项目的技术总管、组织系统实施模型、描述系统分布结构、事件、信号与协议等,而是从事更高层次的开发构架工作、评估构架的概念验证原型的可行性。
在团队中、洞察力强、经验丰富,用以进行说服、鼓励和指导等活动。
构架师的领导能力在团队中和项目质量控制中起着十分重要的作用,善于把握全局,能够在更高抽象级别上进行思考、推动主要的技术决策,具备在缺乏完整信息、具备领导素质,以在各小组之间推进技术工作,并在项目压力下做出牢靠的关键决策3、实施模型、部署模型、确定设计元素、合并已有设计元素、理解、评价并接收系统需求7、评价和确认软件架构的实现 专业技能软件构架师是技术主管、分析模型、设计模型、描述运行时刻构架、确定设计机制,包括系统的需求: 1、对项目开发涉及的所有问题领域都有经验,项目经理就是制片人(他要确定工作被完成了),并做出合理的关键决定的能力 l。
架构师的主要任务不是从事具体的软件程序的编写; 活动确定用例或需求的优先级、进行构架分析、构架概念验证原型、接口软件架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,项目经理是来管理项目的资源,开展分析设计之类软件工程活动等2、具备战略性和前瞻性思维能力; 主要包括如下、创建构架的概念验证原型、以目标导向和主动的方式来不带任何感情色彩地关注项目结果,包括彻底地理解项目需求,以便作出技术上的决定。
相对于构架师来说。
可以这样说,时间进度和花费的。
使用电影制作来做类比的话
如何成为软件架构师?
要成为架构师的途径似乎只有现在较为流行的软件学院和个人自我培养了。
关于软件学院我接触过不少,其宗旨绝大部分都是造就(or打造)企业需要的软件架构师(or程序员or人才)。
教师来源与企业、学员来源与企业、人才输送到企业是他们办学的手段。
尽管各个如雨后春笋般出现的软件学院口号差不多,但恐怕大多只是为了圈钱卖学位了事... 架构师不是通过理论学习可以搞出来的,不过不学习相关知识那肯定是不行的。
参考软件企业架构师需求、结合目前架构师所需知识,总结架构师自我培养过程大致如下仅供参考: 1、架构师胚胎(程序员)学习的知识是语言基础、设计基础、通信基础等,应该在大学完成,内容包括java、c、c++、uml、RUP、XML、socket通信(通信协议)——学习搭建应用系统所必须的原材料。
2、架构师萌芽(高级程序员)学习分布式系统、组建等内容,可以在大学或第一年工作时间接触,包括分布式系统原理、ejb、corba、com/com+、webservice(研究生可以研究网络计算机、高性能并发处理等内容) 3、架构师幼苗(设计师)应该在掌握上述基础之上,结合实际项目经验,透彻领会应用设计模式,内容包括设计模式(c++版本、java版本)、ejb设计模式、J2EE架构、UDDI、软件设计模式等。
在此期间,最好能够了解软件工程在实际项目中的应用以及小组开发、团队管理。
软件架构师主要是做什么啊?
工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。
主导系统全局分析设计和实施、负责软件构架和关键技术决策的人员。
根据信息产业部的有关文件,高端人才匮乏是中国软件产业当前发展最致命的阻碍因素之一,多数企业的高端职位一直空缺但招不到合适的人才。
高端职位的空缺,导致企业技术层次一直在低水平徘徊。
而众多低水平软件开发人员让中国大多数软件企业陷于严重的低层次重复开发状态,无法形成自己的产品研发和技术优势,导致国内90%以上的软件企业中的开发人员不到50人,很难发展壮大。
根据“第三届中国软件工程大会”的报告,在中国,未来五年,高端软件人才需求缺口达20万。
而每年自动成长起来的软件架构师只有几百人,可见市场需求的巨大。
在如此形势下,怎样抓住机遇,快速适应新的形势变化,快速提升职场竞争力,实现个人价值,是需要认真思考的事情。
...
软件架构师的角色如何培养?
随着软件系统的规模越来越大,复杂程度越来越高,软件设计的核心已经超越了传统的“算法+数据结构=程序”的设计模式,取而代之的是对系统的总体结构的设计和规范[1]。
软件架构在软件系统中充当着重要的角色,软件架构也是软件工程中迅速发展的一个研究实践领域,有很多的文献[2~4]讨论了如何构架一个好的软件系统。
软件架构师作为软件架构的设计者是关系到软件成败的关键因素。
然而,有关软件架构师的角色定位以及教育培养问题,仍然比较模糊,没有一致的结论。
作者近年来在软件架构的理论研究和实践方面做了一些工作,也取得了一定的成绩。
负责起草了全国计算机技术与软件专业技术资格(水平)考试中的系统分析师和系统架构设计师考试大纲,主编了有关考试教材。
本文主要讨论软件架构师的角色和培养问题。
文章按如下方式组织:第1节介绍软件架构和软件架构师的定义。
第2节讨论软件架构师在整个软件项目中所充当的角色,包括软件架构师的职责、软件架构师与系统分析师(系统分析员)的区别。
第3节研究软件架构师的资格,包括知识体系和任职条件。
第4节主要讨论如何评估软件架构师的工作。
第5节研究软件架构师的培养和认证问题。
第6节是全文的总结。
1 软件架构与软件架构师 1.1 软件架构 架构(architecture)的英文本意是来源于建筑行业的建筑艺术、建筑风格和结构,引入到软件领域后,并没有一个统一的定义。
IEEE-Std-1471-2000认为[5]:架构是一个系统的基本组织,它蕴含于系统的构件中、构件之间的相互关系中、构件与环境的相互关系中、以及呈现于其设计和演化原则中。
其实,软件架构(Software architecture,软件体系结构)一词早在20世纪60年代就被E.W.Dijkstra提出,但是直到20世纪90年代初才开始流行起来。
为了提高软件需求和软件设计的的质量,软件工程界提出了需求分析工程技术和各种软件建模技术。
但是在需求和设计之间仍然存在一条很难逾越的鸿沟,即缺乏能够反映做决策的中间过程,从而很难有效地将需求转化为相应的设计。
为此,软件架构的概念应运而生,并试图在软件需求与软件设计之间架起一座桥梁,着重解决软件系统的结构和需求向实现平坦过渡的问题[6]。
由于领域的不同,学术研究和应用实践的不同,人们对软件架构也有不同的理解和定义[7~9]。
尽管各种定义都从不同的角度关注软件架构,但其核心内容都是软件系统的结构,并且都涵盖了如下一些实体:构件、构件之间的交互关系、配置、构件和连接件构成的拓扑结构、设计原则与指导方针。
在此,作者对软件架构的理解和认识可用定义1进行描述。
定义1(软件架构) 软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
软件架构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。
目前,软件架构的研究已发展为软件工程领域的一个独立学科分支,具有比较严格的理论基础和工程指导原则[10]。
软件架构已经成为软件工程领域的研究热点以及大型软件系统与软件产品线开发中的关键技术之一。
有许多相关的研究人员对软件架构描述语言[11~13],软件架构的描述与表示[14,15],软件架构的分析与验证[16~19],基于架构的软件维护与演化[20,21],软件架构的可靠性[22,23]等方面进行了研究。
1.2 软件架构师 一直以来,绝大多数的软件组织都缺乏软件架构师的编制。
架构设计的工作基本上由项目经理、系统分析师与软件设计师兼任或分摊,导致普遍轻视软件架构专业人才的培养与任用。
事实上,软件构架师是目前很多软件组织最急需的人才,也是一个软件组织中的高级技术人才。
那么,究竟什么是软件架构师、软件架构师在项目开发中起什么作用、如何定位一个软件架构师和如何成为一个软件架构师呢?这是许多组织、技术人员和管理人员都希望知道的或希望参与讨论的话题。
下面对软件架构师这一概念作简单的阐述。
所谓架构师,通俗的说就是设计师或结构设计者,这些定义如果用在建筑学上,则是很容易理解的。
在软件工程领域中,软件架构师实际上就是软件项目的总体设计师,是软件组织新产品的开发与集成、新技术体系的构建者。
对一些大型软件产品或项目的开发,这一角色显得很关键,因为缺乏好的软件架构师而导致项目失败的例子不胜枚举,一个没有经验和能力的软件架构师也会使软件项目失败的速度加快。
正因如此,Martin Fowler指出[24]:架构师是对所有重要事情做出决定的人。
软件架构师在整个软件开发过程中都起着重要作用,并随着开发进程的推进而其职责或关注点不断地变化。
在需求阶段,软件架构师主要负责理解和管理非功能性系统需求,比如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等。
此外,架构师还要经常审查客户和市场人员所提出的需求,确认开发团队所提出的设计;在需求越来越明确后,架构师的关注点开始转移到组织开发团队成员和开发过程的定义上;在软件设计阶段,架构师负责...
软件架构师是如何认证的?
在国外,软件架构师的培养与认证具有严格的过程,明确规定了教育目标、认证的要求和学习课程等方面的内容。
下面,介绍三个组织的软件架构师认证情况。
(1)UC Irvine。
在UC Irvine的软件架构师认证计划[27]中,为了拿到软件架构师C级认证,学员必须完成11个单元的必修课程和至少4个单元的选修课程。
这些课程包括: ·必修课程:软件系统建模和分析概论(2个单元)、系统分析基础(3个单元)、用户需求的分析和文档化(3个单元)、软件架构项目(3个单元)。
·选修课程:信息系统项目管理(2个单元)、系统性能建模(2.5个单元)、管理业务改进项目(2.5个单元)。
UC Irvine的软件架构师认证要求学员具有业务系统建模,决定用户需求,评价业务过程的能力,掌握项目管理技术,能设计完善的、具有最佳可适应性和可扩展性的架构。
该认证程序以一门实践课程结束,在实践课程中,学员从头开始,设计一个大规模软件解决方案的架构。
(2)CMU/SEI。
SEI在软件架构师方面的认证[42]包括三个职位,分别是软件架构师、ATAM评估师和ATAM主任评估师。
这些认证都需要学习2年的课程。
其中软件架构师需要学习的课程有软件架构:原理与实践、软件架构文档化、)软件架构设计与分析和软件产品线。
(3)iCMG。
iCMG对软件架构师的认证强调7个层次的课程学习,如图2所示[30]。
在该认证体系中,上面的3个层次由其合作伙伴完成,iCMG只负责下面4个层次的知识体系。
目前,软件架构师的认证在国内基本上是空白,既没有专业的培训机构,也没有专门的认证指南和权威的教育认证机构。
而软件架构师作为软件的总设计师,其水平和能力直接决定了软件系统的总体性能。
根据教育部2004年9月8日关于紧缺人才的报告,2005年国内软件架构和系统分析人才缺口在6万人以上,是目前软件开发中急需的高层次技术人才。
人事部和信息产业部[2003]39号文件决定在全国计算机技术与软件专业技术资格(水平)考试中设立系统架构设计师级别的认证考试,试图解决软件架构师认证问题。
但是,由于各种原因,该考试未能如期举行,一拖再拖。
其实,这些措施也只是暂时起到一个过渡的作用,只有建立完善的软件架构师教育培训方案和权威的教育认证机构,才是当前急需解决的问题。
【软件架构师】要成为软件架构师,应该看什么书
目前,软件架构师的认证在国内基本上是空白,既没有专业的培训机构,也没有专门的认证指南和权威的教育认证机构。
在国外,软件架构师的培养与认证具有严格的过程,明确规定了教育目标、认证的要求和学习课程等方面的内容。
下面,介绍三个组织的软件架构师认证情况。
UC在UC Irvine的软件架构师认证计划[27]中,为了拿到软件架构师C级认证,学员必须完成11个单元的必修课程和至少4个单元的选修课程。
这些课程包括:·必修课程:软件系统建模和分析概论(2个单元)、系统分析基础(3个单元)、用户需求的分析和文档化(3个单元)、软件架构项目(3个单元)。
·选修课程:信息系统项目管理(2个单元)、系统性能建模(2.5个单元)、管理业务改进项目(2.5个单元)。
UC Irvine的软件架构师认证要求学员具有业务系统建模,决定用户需求,评价业务过程的能力,掌握项目管理技术,能设计完善的、具有最佳可适应性和可扩展性的架构。
该认证程序以一门实践课程结束,在实践课程中,学员从头开始,设计一个大规模软件解决方案的架构。
CMUSEI在软件架构师方面的认证[42]包括三个职位,分别是软件架构师、ATAM评估师和ATAM主任评估师。
这些认证都需要学习2年的课程。
其中软件架构师需要学习的课程有软件架构:原理与实践、软件架构文档化、软件架构设计与分析和软件产品线。
iCMGiCMG对软件架构师的认证强调7个层次的课程学习,如图2所示[30]。
在该认证体系中,上面的3个层次由其合作伙伴完成,iCMG只负责下面4个层次的知识体系。
...
软件架构师证书
系统架构师是一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。
主要着眼于系统的“技术实现”。
因此他/她应该是特定的开发、语言、工具的大师,对常见应用场景能马上给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估自己的团队实现特定的功能需求需要的代价。
系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单等。
系统架构师综合的知识能力包括9个方面,即:1、战略规划能力。
2、业务流程建模能力。
3、信息数据结构能力。
4、技术架构选择和实现能力。
5、应用系统架构的解决和实现能力。
6、基础IT知识及基础设施、资源调配能力。
7、信息安全技术支持与管理保障能力。
8、IT审计、治理与基本需求分析、获取能力。
9、面向系统可靠性与系统生命周期的质量保障服务能力。
作为系统架构师,必须成为所在开发团队的技术路线指导者;具有很强的系统思维的能力;需要从大量互相冲突的系统方法和工具中区分出哪些是有效的,哪些是无效的。
架构师应当是一个成熟的、丰富的、有经验的、有良好教育的、学习快捷、善沟通和决策能力强的人。
丰富是指他必须具有业务领域方面的工作知识,知识来源于经验或者教育。
他必须广泛了解各种技术并精通一种特定技术,至少了解计算机通用技术以便确定那种技术最优,或组织团队开展技术评估。
优秀的架构师能考虑并评估所有可用来解决问题的总体技术方案。
需要良好的书面和口头沟通技巧,一般通过可视化模型和小组讨论来沟通指导团队确保开发人员按照架构建造系统。
您好,能讲一下应用架构师、软件架构师、大数据架构师的区别么 ?...
位表述的类似一个购物网站架构师的范围,因为只有网站才会涉及到高并发,比如支付宝在春节那天能承受住好几亿人同时访问,这里系统的的架构师相当于是一个访问系统的总体设计师,需要考虑他的承载能力和处理能力,不会崩溃;应用架构就是企业内部构建整个应用系统,使企业的软件能良好运行不出问题,并且网络系统能跟上节奏的这类人。
软件架构师就是一款软件的需求和架构设计,仅仅注重软件本身、海量数据处理的情况,对数据仓库比较熟悉;大数据架构师就是后端底层会有海量的数据存储与处理,处理数据这个系统需要的构建就是大数据架构师,这涉及到数据仓库这些东西,因为同时访问的人数比较多嘛...