小论文-软件构架师

要知道软件架构师的工作过程,首先就要知道什么是软件架构师,以及为什么一个项目需要架构师。

软件架构师,是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。主导系统全局分析设计和实施、负责软件构架和关键技术决策的人员。简单来说,就是将客户的需求转换为开发计划的角色。

软件架构师的任务是领导与协调整个项目中的技术活动(分析、设计和实施等)、推动主要的技术决策,并最终表达为软件构架、确定和文档化系统的相对构架而言意义重大的方面,包括系统的需求、设计、实施和部署等“视图”、确定设计元素的分组以及这些主要分组之间的接口、为技术决策提供规则,平衡各类涉众的不同关注点,化解技术风险,并保证相关决定被有效的传达和贯彻等。所以我们可以看出,架构师的主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作。他必须对开发技术非常了解,并且需要有良好的组织管理能力。可以这样说,一个架构师工作的好坏决定了整个软件开发项目的成败。

在需求阶段,软件架构师主要负责理解和管理非功能性系统需求,比如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等等,此外,架构师还要经常审查和客户及市场人员所提出的需求,确认开发团队所提出的设计,从而明确需求。

在需求越来越明确后,架构师的关注点开始转移到组织开发团队成员和开发过程定义上,

进入软件设计阶段,架构师负责对整个软件体系结构、关键构件、接口和开发政策的设计;

在编码阶段,架构师则成为详细设计者和代码编写者的顾问,并且经常性地要举行一些技术研讨会、技术培训班等。随着软件开始测试、集成和交付,集成和测试支持将成为软件架构师的工作重点。在软件维护开始时,软件架构师就开始为下一版本的产品是否应该增加新的功能模块进行决策。

在技术全面、成熟练达、洞察力强、经验丰富,具备在缺乏完整信息、众多问题交织一团、模糊和矛盾的情况下,软件架构师需要迅速抓住问题要害,并做出合理的关键决定和具备战略性和前瞻性思维能力,善于把握全局,能够在更高抽象级别上进行思考。主要包括如下:

⒈ 
对项目开发涉及的所有问题领域都有经验,包括彻底地理解项目需求,开展分析设计之类软件工程活动等

⒉具备领导素质,以在各小组之间推进技术工作,并在项目压力下做出牢靠的关键决策;

⒊拥有优秀的沟通能力,用以进行说服、鼓励和指导等活动,并赢得项目成员的信任;

⒋以目标导向和主动的方式来不带任何感情色彩地关注项目结果,构架师应当是项目背后的技术推动力,而非构想者或梦想家(追求完美);

⒌精通构架设计的理论、实践和工具,并掌握多种参考构架、主要的可重用构架机制和模式(例如J2EE架构等);

⒍具备系统设计员的所有技能,但涉及面更广、抽象级别更高; 活动确定用例或需求的优先级、进行构架分析、创建构架的概念验证原型、评估构架的概念验证原型的可行性、组织系统实施模型、描述系统分布结构、描述运行时刻构架、确定设计机制、确定设计元素、合并已有设计元素、构架文档、参考构架、分析模型、设计模型、实施模型、部署模型、构架概念验证原型、接口、事件、信号与协议等。

构架师不是通过理论学习可以搞出来的,不过不学习相关知识那肯定是不行的。总结构架师自我培养过程大致如下,

  1、构架师胚胎(程序员)

  学习的知识是语言基础、设计基础、通信基础等,应该在大学完成,内容包括java、c、c++、uml、RUP、XML、socket通信(通信协议)——学习搭建应用系统所必须的原材料。

  2、构架师萌芽(高级程序员)

  学习分布式系统、组建等内容,可以在大学或第一年工作时间

接触,包括分布式系统原理、ejb、corba、com/com+、webservice(研究生可以研究网络计算机、高性能并发处理等内容)

  3、构架师幼苗(设计师)

  应该在掌握上述基础之上,结合实际项目经验,透彻领会应用设计模式,内容包括设计模式(c++版本、java版本)、ejb设计模式、J2EE构架、UDDI、软件设计模式等。在此期间,最好能够了解软件工程在实际项目中的应用以及小组开发、团队管理。

  4、软件构架师的正式成型在于机遇、个人努力和天赋软件构架师其实是一种职位,但一个程序员在充分掌握软构架师所需的基本技能后,如何得到这样的机会、如何利用所掌握的技能进行应用的合理构架、如何不断的抽象和归纳自己的构架模式、如何深入行业成为能够胜任分析、构架为一体的精英人才这可不是每个人都能够遇上的馅饼…

时间: 2024-12-06 01:51:44

小论文-软件构架师的相关文章

软件构架师的流程

软件体系架构师工作流程: 今天让我们看了<梦想改造家>回答这样的一个问题:结合<梦想改造家>中建筑者的工作流程谈及对软件体系架构师的工作流程? 软件体系架构师在我的认知中,架构师的工作职责就是将我们所得到的工作需要进行总结,形成一个很好的软件架构(仿佛就是房屋中的一个模子).但是通过和王平仲工作流程的对比,可以很简单的发现一个软件体系的架构师并没有我们想象的那么的简单.架构师的主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作,是软件项目的总体设计师,是软件组织新

《软件构架实践》阅读笔记1

<软件构架实践>阅读笔记01 今天我开始阅读<软件构架实践>这本书,这也是我们下学期的一门学位课,所以我不敢懈怠,从头开始读这本书.在我的原来的思想中,软件构架应该就是在编写软件之前,先要以画图或者文档的方式,对要编写的软件进行一个大体构架的描述,然后根据这个构架去编写软件,今天读这本书,让我对软件的构架有了新的认识. 记得老师曾经说过,我们这一个专业不缺人,缺的是人才.而只有对编程技术熟练到一定程度,才能去写构架,而且还不一定能做好,所以还是要好好学习这本书. 首先通过前面的导读

软件构架、架构和框架的区别

软件框架(Software Framework)介绍 面向某领域(包括业务领域,如ERP,和计算领域,如GUI)的.可复用的"半成品"软件,它实现了该领域的共性部分,并提供一系列定义良好的可变点以保证灵活性和可扩展性.可以说,软件框架是领域分析结果的软件化,是领域内最终应用系统的模板. 随着软件规模的扩大.应用的广泛和软件复用技术的发展,以子程序或类(Class)为单位的软件复用有许多不足:(1)子程序库日趋其庞大以致于使用人员难以掌握,(2)大多数类粒度很小,且其自身往往不能完成有用

《软件构架实践》阅读笔记3

<软件构架实践>阅读笔记03 今天开始阅读<软件构架实践>的第3章,这一章主要是通过3个相互关联但又不相同的结构对航空电子系统 A-7E系统进行了描述,使我们明白了 模块分解结构.使用结构和进程结构是如何相互补充.共同描绘系统的蓝图的. 首先简要了解一下A-7E这个软件系统,这个系统主要是读取各传感器的数据,更新座舱中的显示内容,通过这个系统,要与飞机上的近24中航空电子设备进行通信,以达到辅助飞行员正确投弹的目的. 首先通过分解结构来描述这个系统,这里所说的"分解&qu

软件构架实践阅读笔记5

把构架作为软件开发过程基础的任何组织都需要理解构架在其生命期中的位置.在生命期模型中,构架设计就是从初步的需求分析开始逐步进行迭代,所以在了解系统需求之前,不能开始设计构架,但是刚开始设计构架时并不需要收集太多需求."构架的驱动因素"包括功能.质量和商业需求,为了确定构架驱动因素,需要识别优先级最高的业务目标,用质量属性场景或用例来表述这些业务目标. 用于设计构架以满足质量需求和功能需求的方法即属性驱动的设计(ADD).ADD是一种定义软件构架的方法,该方法将分解过程建立在软件必须满足

01读《软件构架实践》后感

寒假生活 读<软件构架实践>1-3章后感 看到书名,心里便对"软件构架"产生了一个模糊的轮廓,根据现有的经验,我的理解是:既然被称作是一个构架,那应该是一个系统的骨干之处,是撑起整个系统的复杂结构.可能是有的人早时设计一个系统的构架,后来被人们广泛使用,最终演变成为适用于多个系统的多样式构架,像我们学过的设计模式,被人熟练运用丰富后成为开发的经验. 在阅读之后,我找到了构架的确切定义:某个软件或计算机系统的软件构架是该系统的一个或多个结构,他们由软件元素(特征损失模型MOD

01软件构架实践阅读笔记之一

软件构架实践是我们下学期要学习的一本书,所以我想将这本书作为我阅读笔记的一本书. 在这本念书的第一章是总序,在其中提到: 1.所谓"正确的"就是在指功能.性能和成本几个方面都能满足用户要求且无缺陷: 2.所谓"无缺陷"就是在指编码后对软件系统进行彻底的穷举测试修复了所有的缺陷,保证所编写的代码本身不存在缺陷: 但是我们知道编写一个软件,并不可能很好的达到这种的效果,所以应该做到作者提到的"创造.应用.和推广"战略.但是我存在这样的问题: 1.创造

软件project师的属性与发展

工作近十年了.[软件project师] 一直是我职业 title 的中心词,仅仅是前面的修饰语在不断变化,从0基础.中级.高级到资深. 事实上 [软件project师] 是一个非常泛化的定义.工作现实中软件project师是被详细分工的.形成了详细定义的project师. 定义 软件project师是以下这些详细project师的整体概括: 开发project师 測试project师 UIproject师(又称设计师) 产品project师(尽管如今多称产品经理,但实际的工作内容更偏向proje

《软件构架实践》阅读笔记三

这一章主要是通过ISSS系统的构架来分析交通管制系统的实际解决方案. 首先从物理视图的角度来分析,物理视图主要是一些硬件方面的视图,通过它我们可以清楚的看到各个硬件之间相互关联关系,使系统的物理分布显示的更加清晰. 模块分解视图,软件的模块元素被称为计算机软件配置项,主要是讲的软件的一些配置模块,这些模块构成了可提交的文档和软件单元,标志着开发工作的进程,模块分解视图反应了可修改性战术. 进程视图,这一视图主要用来保证系统的容错性. 客户机-服务器视图,这一视图通过精心设计,使客户机和服务器具有