软件系统架构师综合的知识能力包括9个方面,即:
1、战略规划能力。
2、业务流程建模能力。
3、信息数据结构能力。
4、技术架构选择和实现能力。
5、应用系统架构的解决和实现能力。
6、基础IT知识及基础设施、资源调配能力。
7、信息安全技术支持与管理保障能力。
8、IT审计、治理与基本需求分析、获取能力。
9、面向软件系统可靠性与系统生命周期的质量保障服务能力。
作为系统架构师,必须成为所在开发团队的技术路线指导者;具有很强的系统思维的能力;需要从大量互相冲突的系统方法和工具中区分出哪些是有效的,哪些是无效的。架构师应当是一个成熟的、丰富的、有经验的、有良好教育的、学习快捷、善沟通和决策能力强的人。丰富是指他必须具有业务领域方面的工作知识,知识来源于经验或者教育。他必须广泛了解各种技术并精通一种特定技术,至少了解计算机通用技术以便确定那种技术最优,或组织团队开展技术评估。优秀的架构师能考虑并评估所有可用来解决问题的总体技术方案。需要良好的书面和口头沟通技巧,一般通过可视化模型和小组讨论来沟通指导团队确保开发人员按照架构建造系统。
(1)技术能力
技术能力,不用置疑肯定是最重要的。技术能力弱的架构不是一个好架构。所以,你需要知道所有主流技术的基本原理、应用场景,及快速解决问题的能力。所以,架构师必须要有见识,所需知识面肯定是要不断拓展的。你需要清楚在什么样的场景用什么样的技术比较合适,并知道可能存在什么样的风险。来了需求,你脑袋是空的,不知道用什么技术这是最可怕的。
(2)架构能力
这个可以表现为抽象能力、整体规划能力、及设计能力。你需要照在业务的角度进行系统分解、技术选型、架构搭建,以及规范制定。架构出来了至少可以满足最近的发展,或者可以很方便对现有架构进行扩容。有人说架构不需要懂业务,我面试过的就有明确表示不做业务架构。当然有方面的架构师,如中间件架构师,运维基础设施架构师等。但一般的后端架构师都是需要了解业务,不理解业务你如果进行系统分解,服务划分,及根据不同业务作出不同的架构。技术都是为业务服务的,不站在业务的角度设计架构,那架构就是空谈。
(3)沟通能力
这个看起来不是最重要的,其实也非常重要。作为一个优秀的架构师,你需要清楚的知道客户的需求,需要不断和需求人员进行沟通,以达到客户真正的目的。不论是不是架构师,任何一个职场人,提高自己的沟通表达能力无疑是不可或缺的。有一句话怎么说的,领导就喜欢拍马屁的。做领导的大多不是技术特别牛的,但沟通能力肯定是很好的。
系统构架,是对已确定的需求的技术实现构架、作好规划,运用成套、完整的工具,在规划的步骤下去完成任务。系统架构师做为系统架构的设计者,关系到应用系统成败的关键。
系统架构师的主要功能包括:
(1)系统架构师是软件项目的总体设计师,是软件组织新产品的开发与集成、新技术体系的构建者。
(2)系统架构师是在技术上对所有重要事情做出决定的人(系统架构师在整个软件开发过程中都起着重要作用,并随着开发进程的推进而其职责或关注点不断地变化)。
(3)需求阶段,软件架构师负责理解和管理非功能性系统需求,比如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等。审查客户和市场人员提出的需求,确认开发团队提出的设计;组织开发团队成员和开发过程的定义;协助需求分析师完成“用户需求说明书”、“需求变更说明书”。
(4)设计阶段,架构师负责对整个软件架构、关键构件、接口的设计。协助系统分析师完成《系统概要设计说明书》。
(5)编码阶段,架构师则成为程序员的顾问,并且经常性地要举行一些技术研讨会、技术培训班等。
(6)测试及实施阶段,随着软件开始测试、集成和交付,集成和测试支持将成为软件架构师的工作重点。
系统架构师的职责就是设计一个公司的基础架构,并提供关于怎样建立
和维护系统的指导方针。具体来讲,系统架构师的职责主要体现于以下几方面:
1 负责公司系统的架构设计、研发工作;
2 承担从业务向技术转换的桥梁作用;
3 协助项目经理制定项目计划和控制项目进度;
4 负责辅助并指导 SA 开展设计工作;
5 负责组织技术研究和攻关工作;
6 负责组织和管理公司内部的技术培训工作;
7 负责组织及带领公司内部员工研究与项目相关的新技术。
8 管理技术支撑团队并给项目、产品开发实施团队提供技术保障。
9 理解系统的业务需求,制定系统的整体框架(包括:技术框架和业务框架)
10 对系统框架相关技术和业务进行培训,指导开发人员开发。并解决系统开发、运行中出现的各种问题。系统架构师的目的:
11 对系统的重用、扩展、安全、性能、伸缩性、简洁等做系统级的把握。
————系统架构师的工作在于针对不同的情况筛选出最优的技术解决方案,而不是沉在具体实现细节上。此外系统架构师是不可培养的,好的系统架构师也许不是一个优秀的程序员,但是不能不懂技术之间的差别,技术的发展趋势,采用该技术的当前成本和后继成本,该技术与具体应用的偶合程度,自己可以调配的资源状况,研发中可能会遇到的风险,如何回避风险。这些才是架构师需要考虑的主要内容。
第一种是基础架构的设计规划,例如:OS,硬件,网络,各种应用服务器等等。
第二种是软件开发设计的架构师,他们负责规划程序的运行模式,层次结构,调用关系,规划具体的实现技术类型,甚至配合整个团队做好软件开发中的项目管理。
系统构架师是最近在国内外迅速成长并发展良好的一个职位,它的重要性及给 T业所带来的影响是不言而喻的。在我国虽然还存在一定的争论性、不可预测性、不理解性,不确定性,但它确实是时代发展的需要。IT业各公司为了让他们现有的IT系统实现更大的价值,纷纷进行了重大的技术变革,这样一来,对高水平的架构师的需求激增。对负责架构的管理人员的需求不断增大,其增长速度比对CIO的需求还要快,这是因为,架构师会给一个组织带来大量专门技术。公司需要一些在架构方面有真才实学,而且学得深且广的人才。
在比尔·盖茨的众多称谓中,据说他更偏爱“首席软件架构师”。同样,在网易创始人丁磊名字前,也有“首席架构师”这样的称谓。由此可见,对于企业来说,架构师就是灵魂的创造者。
系统架构师该怎么来实现其“架构”企业的职能呢?尤其在设计企业IT策略时,该怎样体现架构师的价值?这里以实例说明:
摩托罗拉的副总裁 Toby Redshaw 说,架构师是“IT策略中的中枢”,而且这一角色对公司的影响确实非常大。当 Toby Reshaw在2001年进入摩托罗拉并担任其策略暨架构副总裁时,他俨然一位购房者对一套摇摇欲坠的公寓进行估价一样。他并不是仅仅只作些表面上的修改,而是拟定了一个重建摩托罗拉整个基础结构的计划,这个计划可以彻底修整公司的基础建设,就像一个建筑师设计一幢房子一样,Redshaw拟出了一张技术构架蓝图,一座技术性的建筑,以便使被他称作“如意大利面条般错乱的应用程序,机器和管线”那些东西变得井然有序。他说,只要选择了正确的架构策略并用对了人,摩托就可以用比以前更快的速度生产出大量应用软件,而且可以减少维持重叠系统的费用。Redshaw 说:“如果你连建筑架构都搞不好,就算你的石匠技术再高明,又有什么用?架构师IT策略中的中枢。”像Redshaw这样的系统架构师们在企业内部的影响力非常大。很久以来,虽然他们一直在信息技术部门担任重要职务,但是他们经常受委托提供全面概况分析,并提出一些关于如何遵照标准执行这些任务的建议,而这些对日常运作的影响极其有限。随着各公司都在寻找重建他们的IT系统,使其更能有效节省成本,更灵活的方法,架构师愈来愈被看作是至关重要的因素。
一个定义明确的架构的目标在于降低运行复杂的运算系统的费用。一个公司可以采用一种特定的数据库配置,如微软的数据库,进而将系统标准化,而不需要让公司的每个部门安装它们自己所需要的数据库服务器。
Express的技术架构副总裁Andy Miller说:“如果你没有一项强有力的架构策略,人人各行其是,最后以得到六种服务器和软件平台而告终,你的系统变成了大杂烩,而那将使你的费用激增。”把架构师独立出来有很多好处,比如系统的整体把握,质量上的保障,技术上的先进性,架构的灵活性,高效性,还可有效地降低成本。试想,1个月薪1w的架构师 10个月薪5k的工程师,肯定比11个月薪6k的高级工程师效果要好。一般来说,级别越高的架构师,经验更丰富,争相聘请的人也多,他们也是与公司全部的IT策略密切相关的专业人员。
作为软件开发的设计架构师,那么必须拥有一定的编程技能,同时有高超的学习新的架构设计、程序设计技能。另外,我觉得作为软件架构师,还必须了解一定的硬件、网络、服务器的基本知识。要不然,你都不知道有些什么材料可以用,你怎么去根据实际情况去规划你的软件架构呢?忽视程序设计能力的持续跟新,是永远不能够成为一个成功的系统架构师。
一般来讲,系统架构师应该拥有以下几方面的能力:
1:具备8年以上软件行业工作经验;
2:具备4年以上C/S或B/S体系结构软件产品开发及架构和设计经验;
3:具备3年以上的代码编写工作经验;
4:具备丰富的大中型开发项目的总体规划、方案设计及技术队伍管理经验;
5:对相关的技术标准有深刻的认识,对软件工程标准规范有良好的把握;
6:对.Net/JAVA技术及整个解决方案有深刻的理解及熟练的应用,并且精通WebService/J2EE架构和设计模式,并在此基础上设计产品框架;
7:具有面向对象分析、设计、开发能力(OOA、OOD、OOP),精通 UML 和 ROSE,熟练使用 Rational Rose、PowerDesigner等工具进行设计开发;
8:精通大型数据库如Oracle、Sql Server等的开发;
9:对计算机系统、网络和安全、应用系统架构等有全面的认识,熟悉项目管理理论,并有实践基础;
10:在应用系统开发平台和项目管理上有深厚的基础,有大中型应用系统开发和实施的成功案例;
11:良好的团队意识和协作精神,有较强的内外沟通能力。
系统构架师与产品经理的关系及区别
产品经理通常是指负责产品设计的“专人”。一个优秀的理想的产品经理,应同时具备较高的商业素质和较强的技术背景。产品经理要有深厚的领域经验,也就是说,对该软件系统要应用到的业务领域非常之熟悉。比如,开发房地产销售软件的产品经理,应该对房地产公司的标准销售流程了如指掌,甚至比大多数销售人员还要清楚。如果开发的是通用产品,他/她还具备对市场、潜在客户需求的深刻洞察力。那么,系统架构师与产品经理有什么不同呢?我们不应该把二者混为一谈,这是不少论述和实践常犯的错误。我看来,如果把开发软件比作摄制电影,产品经理之于系统架构师,就正像编剧之于导演。产品经理虽然要有一定技术背景,但仍应属于“商业人士(business people)”,而系统架构师则肯定是一个技术专家。二者看待问题的立场、角度和出发点完全不同。
系统构架师与项目经理的关系及区别
软件项目经理是指对项目控制/管理,关注项目本身的进度、质量,分配、调动、协调、管理好人、财、物等资源的负责人。对于软件项目经理来讲,包括项目计划、进度跟踪/监控、质量保证、配置/发布/版本/变更管理、人员绩效评估等方面。优秀的项目经理需要的素质,并不仅在于会使用几种软件或是了解若干抽象的方法论原则,更重要的在于从大量项目实践中获得的宝贵经验,以及交流、协调、激励的能力,甚至还应具备某种个性魅力或领袖气质(Charisma)。由此可见,项目经理和系统架构师在职责上有很大差异。混同这两个角色,往往也会导致低效、无序的开发。特别是,从性格因素上讲,单纯的技术人员倾向于忽视“人”的因素,而这正是管理活动的一个主要方面。另外,就像战争中的空军掩护(Air Cover)一样,专职的项目经理能够应付开发过程中大量的偶发事件和杂务,对于一个规模稍大的项目,这些杂务本身就能占用一个全职工作者的几乎全部时间。在一个项目中,推动项目发展的是系统构架师,而不是项目经理。项目经理的职责只是配合系统构架师,提供各个方面的支持。主要职责是与内外部沟通和管理资源(包括人)。系统构架师提出系统的总体构架,给出开发指导。一个项目中,项目经理的角色什么?如果他即使管理人员又是设计人员,则必须比别人强,能够有让别人服的东西。如果他只是项目管理人员,系统构架师有专门人员,就可以不用精通或者说了解it各个方面的知识,如果了解更好。另外,如果在一个项目没有人在技术构架上和开发指导上负全部责任,而是每个人都负责一快的架构、分析、设计、代码和实施等,最后肯定会失去管理。
系统构架师与系统分析师的关系及区别
系统分析师(System analyst)是指对系统开发中进行业务需求分析、系统需求分析、可行性分析、业务建模和指导项目开发的人。系统分析师所面临的往往是有许多不确定性的事件,需要对这些不确定性的事件进行分析、总结,使之得出一个相对可靠的确定性结论或实施方案模型。一般意思上讲,系统分析师的水平将影响系统开发的质量,甚至成败。但在一个完善的系统开发队伍中,还需要有业务专家,技术专家和其他辅助人员。对于大型企业或者项目,如果一人承担多个角色,往往容易发生顾此失彼的现象。
系统分析师对业务系统进行分析、建模,他的任务、目标是明确的。系统架构师协同系统分析师的工作,建议系统分析师按什么标准,什么工具,什么模式,什么技术去思考系统。同时,系统架构师应该对系统分析师所提出的问题,碰到的难题及时地提出解决的方法。系统架构师在项目中担任技术骨干的角色,负责技术实施中的重点技术问题攻关。同时,又是系统分析师的技术顾问,为整个项目的技术框架与技术细节的展开和落实提供强有力的技术保障。
优秀的系统架构师是保证软件系统强大生命力的核心人物。专业架构师能够帮助公司全面研究现有架构和设计模式、评估系统设计的优缺点和可能存在的风险,通过一系列的专题指导和具体案例帮助公司掌握先进的、成熟的设计模式,简化复杂的业务逻辑和需求,确定系统最适合法人方案。在必要的情况下,还可就特定领域或课题,为开发人员提供定制指导。通过上面的介绍,我们对系统构架师有了的较深刻的认识,我们明白了系统构架师的地位,作用,工作职责及任职条件,同时还区别出与其他角色的不同,那么如何评估系统构架师的工作成绩,
如何识别一个合格的优秀的系统构架师是不难的。
具体来讲,我们可以通过以下几方面来评估系统构架师的工作成绩:
1:系统构架师是否是某一技术领域的专家;
2:系统构架师能否指导分析员的设计工作,发现并指出设计存在的问题并提出解决方法,评审他们的工作;
3:系统构架师能否指导软件工程师进行开发工作,发现并指出编码存在的问题并提出解决方法,评审他们的工作;
4:系统构架师能否协助好项目经理制定项目计划和控制项目进度;
5:系统构架师能否及时有效地解决设计、开发人员所提出的问题,解决技术上的难题;
6:系统构架师能否制订并规范系统设计和开发文档、工具、模型;能否让其他人员容易理解;
7:系统构架师能否经常组织并带领公司内部员工研究、学习与项目相关的新技术;
8:系统构架师能否组织和管理好公司内部的技术培训工作,技术研究和公关工作;
9:系统构架师是否有良好的团队意识和协作精神,有较强的内外沟通能力;
10:系统构架师是否能管理好技术支撑团队并给项目、产品开发实施团队提供技术保障;
11:系统构架师所设计的系统架构是否合理,技术是否先进,能否满足客户的要求;
12:系统构架是否有扩展性,安全性,能否经受压力测试,网络流量在超用户数下如何控制;
13:系统边界如何处理,瓶颈问题如何解决等;
14:系统设计前期、中期、后期所要解决的问题,是否有阶段性,里程碑的标识;
15:是否有分析、识别并尽可能地回避风险,降低风险所引发问题成本的能力;
16:能否给公司降低开发成本,提高效率;
系统架构师的一般月薪范围在20000-100000美元左右。系统架构师是软件项目的总设计师,是软件企业的新产品、新技术体系的构建者,是软件开发中急需的高层次技术人才。其是由系统开发工程师发展而来,可以向研发总监,高级技术总监等高层次的方向发展。