词条 | 架构设计 |
释义 | 什么是架构?人们对一个结构内的元素及元素间关系的一种主观映射的产物。 软件架构师的职责架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。架构设计是软件设计过程的早期阶段,它把需求分析和设计流程连接在一起。架构师的主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作。他必须对开发技术非常了解,并且需要有良好的组织管理能力。可以这样说,一个架构师工作的好坏决定了整个软件开发项目的成败。 软件架构师之路所谓架构师通俗的说就是设计师、画图员、结构设计者,这些定义范畴主要用在建筑学上很容易理解。小时候到河中玩耍,经常干的事就是造桥,步骤如下:1、在沙滩上画图;2、选择形状好看、大小适合的石头;3、搭建拱桥。其中我们挑出来画图的那位光PP小孩就是传说中的“架构师”了。 在软件工程中,架构师的作用在于三方面:1、行业应用架构,行业架构师往往是行业专家,了解行业应用需求,其架构行为主要是将需求进行合理分析布局到应用模型中去,偏向于应用功能布局;2、应用系统技术体系架构,技术架构师往往是技术高手中的高手,掌握各类技术体系结构、掌握应用设计模式,其架构行为考虑软件系统的高效性、复用性、安全性、可维护性、灵活性、跨平台性等;3、规范架构师是通过多年磨砺或常年苦思顿悟后把某一类架构抽象成一套架构规范,当然也有专门研究规范而培养的规范架构师。他们的产物往往也分为应用规范和技术规范两类。 与建筑学类似,如果软件系统没有一个好的架构是不可能成为成功的软件系统的。没有图纸的建筑地、没有设计的造桥工程都是不可以想象的混乱世界。建筑工程如是,软件工程中亦然! 由于国内合格、胜任的软件架构师极为少见,直接导致了我国民族软件产业水平的落后。在未来以信息产业为主导的社会,信息产业水平的低下将直接影响国家核心竞争力。究其原因,无企业非急功 近利、个人缺乏引导。 企业的急功近利是有无法克服的原因的,那就是社会发展总体水平。“生存是第一位的,赚钱是第一位的”,多年来许多客户抱怨国内的软件公司无法信任、系统项目累做累败、公司越换越差,但因国外不可能给中国做应用系统项目还不得不找国内软件公司做。由于人月费用低、公司开发成本高,软件企业对于应用只能草草了事,拿钱走人(很多公司拿不到后期尾款)。这样的环境下,企业几乎无法投入更多资源培养自己的架构师,加上眼花缭乱的跳槽风气企业更是不愿投入…… 那么要成为架构师的途径似乎只有现在较为流行的软件学院和个人自我培养了。关于软件学院我接触过不少,其宗旨绝大部分都是造就(or打造)企业需要的软件架构师(or程序员or人才)。教师来源与企业、学员来源与企业、人才输送到企业是他们办学的手段。尽管各个如雨后春笋般出现的软件学院口号差不多,但恐怕大多只是为了圈钱卖学位了事... 架构师不是通过理论学习可以搞出来的,不过不学习相关知识那肯定是不行的。参考软件企业架构师需求、结合目前架构师所需知识,总结架构师自我培养过程大致如下仅供参考: 1、架构师胚胎(程序员)学习的知识是语言基础、设计基础、通信基础等,应该在大学完成,内容包括java、c、c++、uml、RUP、XML、socket通信(通信协议)——学习搭建应用系统所必须的原材料。 2、架构师萌芽(高级程序员)学习分布式系统、组建等内容,可以在大学或第一年工作时间接触,包括分布式系统原理、ejb、corba、com/com+、webservice(研究生可以研究网络计算机、高性能并发处理等内容) 3、架构师幼苗(设计师)应该在掌握上述基础之上,结合实际项目经验,透彻领会应用设计模式,内容包括设计模式(c++版本、java版本)、ejb设计模式、J2EE架构、UDDI、软件设计模式等。在此期间,最好能够了解软件工程在实际项目中的应用以及小组开发、团队管理。 4、软件架构师的正式成型在于机遇、个人努力和天赋,软件架构师其实是一种职位,但一个程序员在充分掌握软架构师所需的基本技能后,如何得到这样的机会、如何利用所掌握的技能进行应用的合理架构、如何不断的抽象和归纳自己的架构模式、如何深入行业成为能够胜任分析、架构为一体的精英人才这可不是每个人都能够遇上的馅饼…… 然而学海无涯,精力有限,个人如何能够很快将这些所谓的架构师知识掌握?这是秘密,每个人都有自己的独门家传秘笈就不敢一一暴露了。不过有一点就是广泛学习的基础之上一定要根据个人兴趣、从事领域确定一条自己的主线来努力。 如果说架构师是在模型图纸上工作的,那么模型元素必须是实实在在的,正如我们不可能期望抽象派画家来设计高楼大厦,没有实际意义的模型元素,是不可能构筑出软件系统的。迄今为止,绝大部分软件架构师是依赖软件程序员来实现他们的架构意图的,这二者直接的鸿沟是显而易见的。设计模式的出现是为缩短二者之间的鸿沟所做的努力,目的是让架构师和程序员之间有更多的共同语言和规范。尽管设计模式让软件开发效率和质量有一定程度的提升,但是它始终面临一个很明显的局限,那就是人的因素。人虽然在创造性方面有绝对优势,但是在精确性、持久性、效率、质量上是无法比拟机器的。所以我们希望在软件系统构建过程中,人和机器发挥各自的长处,也就是说,让人来扮演架构师的角色,而让机器来扮演程序施工者的角色。 软件架构师的重要测试架构师不仅仅会影响到公司内的测试部门,还会影响开发、市场部门,好的测试架构师,可以从保证质量的角度,对产品的研发、销售各个方面施加深远而正确的影响,也吸收来自各个部门的建议,最终提高整体软件质量。大家可能很吃惊,测试架构师怎么能影响到市场部门?我们可能有这样的经验,项目经理要去拿着不完善的产品去演示,测试人员更清楚产品的新特性及需要进一步改进的地方,把这些信息告诉项目经理,避免在客户现场演示时献丑,还能知道如何充分展示产品的优越性。我们的测试架构师当然也可以在更高的层次上给出市场营销的建议。 软件质量保证是一个贯穿需求分析、设计架构、软件测试等整个软件工程的过程,测试架构师需要熟悉需求分析方面的知识,在需求分析师整理用户需求的时候,才能和需求分析师结对工作共同保障整理的需求满足用户要求。测试架构师需要掌握软件架构设计方面的知识,在软件架构师构建软件框架的时候,才能和软件架构师结对工作共同保障架构没有致命的缺陷。测试架构师在测试技术、测试方法学上雄厚的知识,让他们具有需求分析师、架构设计师所不具备的视角,测试架构师和需求分析师、架构设计师的结对协同工作可以更加有效的获取完备的需求,更科学的进行软件架构。 分享架构师张银奎 Intel亚太研发中心架构师 《软件调试》一书的作者,《程序员》杂志调试之剑栏目作者,高端调试网站的创始人。毕业于上海交通大学信息与控制工程系,长期从事软件开发和研究工作,对 IA-32 架构、操作系统内核、驱动程序、尤其是软件调试有较深入研究。从2005年开始公开讲授“Windows内核及高级调试”课程,曾在微软的Webcast和各种技术会议上做过《Windows Vista内核演进》、《调试之剑》(2008年中国软件技术大会)、《感受和思考调试器的威力》(CSDN SD2.0大会)、《Windows启动过程》、《如何诊断和调试蓝屏错误》、《Windows体系结构——从操作系统的角度》(以上三个讲座都是微软“深入研究Windows内部原理系列”的一部分)等。翻译(合译)作品有《观止——微软创建NT和未来的夺命狂奔》、《数据挖掘原理》、《机器学习》、《人工智能:复杂问题求解的结构和策略》等。 汤涛滔 曾任微软顾问咨询部资深架构师 曾任职微软(中国)有限公司顾问咨询部、公共事业部高级行业顾问,历任资深技术顾问,技术总监,副总工程师等,具有相当丰富的项目管理和开发经验。负责过多个大型项目管理、设计和开发工作。作为技术专家设计、规划或评审多个项目,其中包括但不仅限于中国人民银行“人民银行货币调控系统”、海关总署“全国海关统计资讯系统”、“全国海关办公系统”和“移动办公系统”、人事部“全国机关事业单位工资管理系统”等,精通项目管理各个环节,对于软件需求开发管理、软件架构等具有相当丰富的实战经验。在业界具有良好的口碑。 刘捷 曾任职BEA(中国)资深软件架构师 曾任职BEA(中国)资深软件架构师,十余年的企业软件架构、开发和管理经验, 侧重于企业应用软件架构设计.主要负责客户大型项目的架构设计和研发。作为技术专家保证项目的成功实施,运行和维护。参加过全国/全省多个大型的计算机应用项目,擅长的领域包括电信,金融、税务,大型互联网web2.0应用等。此前就职于IBM,任软件架构师。 在此之前曾任日本东京一家软件企业的资深技术顾问。 张逸 曾任HP中国系统架构师 具有十余年的软件开发、设计和管理经验,曾先后担任高级软件工程师、项目经理、系统架构师、技术总监等职务。主要擅长点NET技术,包括C#,ASP,WCF,LINQ等。精通OOP技术以及设计模式与架构设计。熟悉UML以及用例驱动开发和AOP技术。同时在项目管理尤其是敏捷软件管理方面具有比较丰富的经验。2006及2007届微软Connect System Developer的MVP。著作包括电子工业出版社出版的《软件设计精要与模式》,以及译著《WCF服务编程》。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。