软件体系结构概述复习过程文档格式.docx
- 文档编号:14305142
- 上传时间:2022-10-21
- 格式:DOCX
- 页数:5
- 大小:21.05KB
软件体系结构概述复习过程文档格式.docx
《软件体系结构概述复习过程文档格式.docx》由会员分享,可在线阅读,更多相关《软件体系结构概述复习过程文档格式.docx(5页珍藏版)》请在冰豆网上搜索。
2.设计模式(DesignPattern)
设计模式是软件问题高效和成熟的设计模板,模板包含了固有问题的解决方案。
设计模式可以看成规范了的小粒度的结构成分,并且独立于编程语言或编程范例。
设计模式的应用对软件系统的基础结构没有什么影响,但可能对子系统的组织结构有较大影响。
每个模式处理系统设计或实现中一种特殊的重复出现的问题。
例如,工厂模式,它为解决抽象部分和实现部分独立变化的问题提供了一种通用结构。
因此,设计模式更强调直接复用的程序结构。
3.应用框架(ApplicationFramework)
应用框架是整个或部分系统的可重用设计,表现为一组抽象构件的集合以及构件实例间交互的方法。
可以说,一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为构件复用提供了上下文(Context)关系。
在很多情况下,框架通常以构件库的形式出现,但构件库只是框架的一个重要部分。
框架的关键还在于框架内对象间的交互模式和控制流模式。
设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;
框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示;
设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种不同的应用。
体系结构风格描述了软件系统的整体组织结构,它独立于实际问题。
而设计模式和应用框架更加面向具体问题。
体系结构风格、设计模式和应用框架的概念是从不同的目的和出发点讨论软件体系结构,它们之间的概念经常互相借鉴和引用。
3.UML
4.抽象、接口、高内聚、低耦合常用概念
5架构师的职责(源自网络)
5.1什么是架构师
很多的创业公司,一人身兼数职的情形还是很常见的。
至少,我是经历过的,一个人包办了所有的开发过程,连测试我都做了,绝对的一条龙,但是经常踩钢丝、骑独轮车总会有失足的时候,结果有一次,从我手里发出去的光盘母盘,含有病毒僵尸,以至于被迫收回已经推上市场的2万张光盘,从那之后,我的心脏就开始变得无比坚强,现在就是整个后台服务都瘫痪了,我也只是微微一笑。
(作者的经历说明:
(1)架构师身兼数职很常见
(2)架构师压力很大,但也很锻炼人(3)架构师对系统产品最了解)
其实,一个人身兼架构师和程序员,甚至多种角色,没什么不妥,后面还会讲这个话题,这种现象不是中国特色,跟国外是完全接轨的。
我曾经跟米国的一个工程师在msn中聊过类似的话题,发现他们的路子跟咱们没什么不同,在IT这个行业,我们跟世界的差距只有1天,他们刚弄出来的新东西,我们这里第2天保准见得到。
架构师这个称呼不是拍脑袋想出来的,是有国际标准(ISO/IEC42010)可查的。
架构师是软件开发活动中的众多角色之一,它可能是一个人、一个小组,也可能是一个团队。
微软对架构师有一个分类参考,我们参考一下,他们把架构师分为4种:
企业架构师EA(EnterpriseArchitect)、基础结构架构师IA(InfrastructureArchitect)、特定技术架构TSA(Technology-SpecificArchitect)和解决方案架构师SA(SolutionArchitect)。
微软的这个分类是按照架构师专注的领域不同而划分的。
EA的职责是决定整个公司的技术路线和技术发展方向。
盖茨给自己的Title就是首席软件架构师,网易丁磊也喜欢这么称呼自己,实际上就是EA角色;
IA的工作就是提炼和优化技术方面积累和沉淀形成的基础性的、公共的、可复用的框架和组件,这些都是一个技术型公司传承下来的最宝贵的财富之一;
特定技术架构师TSA,他们主要从事类似安全架构、存储架构等专项技术的规划和设计工作;
SA的工作则专于解决方案的规划和设计,“解决方案”这个词在中国已经到了严重泛滥的程度,大忽悠们最喜欢把它挂在嘴边。
所谓解决方案,就是把产品、技术或理论,不断地进行组合,来创造出满足用户需求的选择。
售前工程师一般都是带着它到客户那里去发挥的。
大公司会把各种类型的架构师分得很清楚,小公司一般就不那么讲究了,架构师多数是是IA+TSA+SA,一人包打天下,所以说大公司出专才,小公司出全才。
实际工作中,我们也经常会见到另一种比较简单的分类方式,把架构师分为软件架构师和系统架构师。
软件架构师基本上是IA+TSA,这也是程序员最容易突破,最可能走上的一条道路,比如JAVA架构师、DotNet架构师等等,我后面所讲的内容都是与软件架构师的相关的话题。
系统架构师实际上是TSA+SA,更着力于综合运用已有的产品和技术,来实现客户期望的需求。
系统架构师要求通晓软、硬件两方面的知识,所以它的知识体系相对庞杂。
关于系统架构师的话题,我们可以稍后再作讨论。
5.2架构师的职责
架构师需要参与项目开发的全部过程,包括需求分析、架构设计、系统实现、集成、测试和部署各个阶段,负责在整个项目中对技术活动和技术说明进行指导和协调。
架构师主要职责有4条:
1、确认需求
在项目开发过程中,架构师是在需求规格说明书完成后介入的,需求规格说明书必须得到架构师的认可。
架构师需要和分析人员反复交流,以保证自己完整并准确地理解用户需求。
2、系统分解
依据用户需求,架构师将系统整体分解为更小的子系统和组件,从而形成不同的逻辑层或服务。
随后,架构师会确定各层的接口,层与层相互之间的关系。
架构师不仅要对整个系统分层,进行“纵向”分解,还要对同一逻辑层分块,进行“横向”分解。
软件架构师的功力基本体现于此,这是一项相对复杂的工作。
3、技术选型
架构师通过对系统的一系列的分解,最终形成了软件的整体架构。
技术选择主要取决于软件架构。
WebServer运行在Windows上还是Linux上?
数据库采用MSSql、Oracle还是Mysql?
需要不需要采用MVC或者Spring等轻量级的框架?
前端采用富客户端还是瘦客户端方式?
类似的工作,都需要在这个阶段提出,并进行评估。
架构师对产品和技术的选型仅仅限于评估,没有决定权,最终的决定权归项目经理。
架构师提出的技术方案为项目经理提供了重要的参考信息,项目经理会从项目预算、人力资源、时间进度等实际情况进行权衡,最终进行确认。
4、制定技术规格说明
架构师在项目开发过程中,是技术权威。
他需要协调所有的开发人员,与开发人员一直保持沟通,始终保证开发者依照它的架构意图去实现各项功能。
架构师与开发者沟通的最重要的形式是技术规格说明书,它可以是UML视图、Word文档,Visio文件等各种表现形式。
通过架构师提供的技术规格说明书,保证开发者可以从不同角度去观察、理解各自承担的子系统或者模块。
架构师不仅要保持与开发者的沟通,也需要与项目经理、需求分析员,甚至与最终用户保持沟通。
所以,对于架构师来讲,不仅有技术方面的要求,还有人际交流方面的要求。
5.3架构师的常见误区
1、架构师就是项目经理
架构师不是项目经理。
项目经理侧重于预算控制、时间进度控制、人员管理、与外部联系和协调等等工作,具备管理职能。
一般小型项目中,常见项目经理兼架构师。
2、架构师负责需求分析
架构师不是需求分析员。
需求分析人员的工作是收集需求和分析需求,并与最终用户、产品经理保持联系。
架构师只对最终的需求审核和确认,提出需求不清和不完整的部分,他会跟需求分析员时刻保持联系。
架构师是技术专家,不是业务专家。
3、架构师从来不写代码
这是一个尚存争论的问题。
目前有两种观点:
观点1:
架构师不写代码,写代码纯体力活,架构师写代码大材小用。
架构师把UML的各种视图交给开发人员,如果有不明确的地方,可以与架构师随时沟通。
观点2:
架构师本来自于程序员,只是比程序员站的层面更高,比程序员唯一多的是经验和知识,所以架构师也免不了写代码。
我个人觉得这两种说法是与架构师的出身和所处的环境有关。
架构师首先是一个技术角色,所以一定是来自于技术人员这个群体,比如系统架构师,多是来自于运维人员,可能本身代码写得并不多,或者说写不出来很漂亮的代码。
软件架构师多是来自于程序员,有着程序员的血统和情怀,所以在项目开发过程中,可能会写一些核心代码。
我们的理想是架构师不用写代码,但事实上有时候过于理想。
架构师写不写代码,可能取决于公司的规模、文化、开发人员的素质等现实情况。
另外,架构师也不是跟程序员界限分得那么清楚,按照能力也有高中低之分,写不写代码不是区分两者的根本标准。
5.4架构师的基本素质
周星驰有个片子《喜剧之王》,剧中的尹天仇整天揣着本《演员的自我修养》,一个好演员不仅需要天赋,也需要一定的理论指导,无师自通的人毕竟是少数。
架构师的成长过程也是这样。
从普通程序员到高级程序员,再到架构师,是一个经验积累和思想升华的过程。
经验积累是一个方面,素质培养是另一个方面,两者相辅相成,所以我觉得有必要把架构师的所要具备的素质罗列一下,作为程序员努力的方向。
1、沟通能力
为了提高效率,架构师必须赢得团队成员、项目经理、客户或用户认同,这就需要架构师具有较强的沟通能力。
沟通能力是人类最普遍性的素质要求,技术人员好像容易忽略,想成为架构师就不能忽略。
千万不要抱着这样的观念:
怀才跟怀孕似的,时间久了总会被人发现的。
还是天桥上卖大力丸的哥们说得对:
光说不练假把式,光练不说傻把式。
看看你周围的头头脑脑们,哪一个不是此中高手,我们千万不要鄙视,认为这是阿谀奉承、投机钻营,凡事都要看到积极的一面,沟通的确是一种能力。
我认为自己是一个略内向的人,因为我是农村出来的孩子,普通话都说不好,以前或多或少带有点自卑感,幻想着是金子总会发光,所以在职业生涯中吃了不少亏。
现在,我深深懂得了沟通的重要性,我会很主动地跟同事们,跟老大们不定时地沟通,感觉工作起来顺畅多了。
这一条我认为最为重要,所以排在首位。
我甚至认为下面几条都可以忽略,唯一这一条得牢记,而且要常常提醒自己。
2、领导能力
架构师能够推动整个团队的技术进展,能在压力下作出关键性的决策,并将其贯彻到底。
架构师如何来保证这种执行力?
这就需要架构师具有领导能力。
架构师的领导能力的取得跟项目经理不太一样。
项目经理主要负责解决行政管理,这种能力与技术关系不大,他有人权和财权,再扯上一张“领导”的虎皮,采用“胡萝卜加大棒”的方式,基本上可以保证执行力。
架构师在项目里面可能更多地使用非正式的领导力,也就是我们常说的影响力,里面包括个人魅力、技术能力、知识传递等等。
3、抽象思维和分析能力
架构师必须具备抽象思维和分析的能力,这是你进行系统分析和系统分解的基本素质。
只有具备这样的能力,架构师才能看清系统的整体,掌控全局,这也是架构师大局观的形成基础。
你如何具备这种能力呢?
一是来自于经验,二是来自于学习。
架构师不仅要具备在问题领域上的经验,也需要具备在软件工程领域内的经验。
也就是说,架构师必须能够准确得理解需求,然后
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 体系结构 概述 复习 过程