软件体系结构概述
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件体系结构
目录
第一章软件体系结构概述 (3)
1.软件体系结构定义 (3)
2.软件体系结构内容 (3)
3.UML (4)
4.抽象、接口、高内聚、低耦合常用概念 (4)
第一章软件体系结构概述
1.软件体系结构定义
Architecture Styles,定义为根据结构组织模式构成的软件系统族,表达了部件和他们之间的关系。例如客户/服务器(Client /Server)结构、浏览器/服务器(Browser/Server)结构等。
2.软件体系结构内容
1.体系结构风格(Architecture Styles)
体系结构风格是描述特定系统组织方式的惯用范例,强调组织模式和惯用范例。组织模式即静态表述的样例,惯用范例则是反映众多系统共有的结构和语义。通常,体系结构风格独立于实际问题,强调了软件系统中通用的组织结构,比如管道线,分层系统,客户机-服务器等等。体系结构风格以这些组织结构定义了一类系统族。
2. 设计模式(Design Pattern)
设计模式是软件问题高效和成熟的设计模板,模板包含了固有问题的解决方案。设计模式可以看成规范了的小粒度的结构成分,并且独立于编程语言或编程范例。设计模式的应用对软件系统的基础结构没有什么影响,但可能对子系统的组织结构有较大影响。每个模式处理系统设计或实现中一种特殊的重复出现的问题。例如,工厂模式,它为解决抽象部分和实现部分独立变化的问题提供了一种通用结构。因此,设计模式更强调直接复用的程序结构。
3. 应用框架(Application Framework)
应用框架是整个或部分系统的可重用设计,表现为一组抽象构件的集合以及构件实例间交互的方法。可以说,一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为构
件复用提供了上下文(Context)关系。在很多情况下,框架通常以构件库的形式出现,但构件库只是框架的一个重要部分。框架的关键还在于框架内对象间的交互模式和控制流模式。
设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示;设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种不同的应用。体系结构风格描述了软件系统的整体组织结构,它独立于实际问题。而设计模式和应用框架更加面向具体问题。
体系结构风格、设计模式和应用框架的概念是从不同的目的和出发点讨论软件体系结构,它们之间的概念经常互相借鉴和引用。
3.UML
4.抽象、接口、高内聚、低耦合常用概念
5 架构师的职责(源自网络)
5.1 什么是架构师
很多的创业公司,一人身兼数职的情形还是很常见的。至少,我是经历过的,一个人包办了所有的开发过程,连测试我都做了,绝对的一条龙,但是经常踩钢丝、骑独轮车总会有失足的时候,结果有一次,从我手里发出去的光盘母盘,含有病毒僵尸,以至于被迫收回已经推上市场的2万张光盘,从那之后,我的心脏就开始变得无比坚强,现在就是整个后台服务都瘫痪了,我也只是微微一笑。(作者的经历说明:(1)架构师身兼数职很常见(2)架构师压力很大,但也很锻炼人(3)架构师对系统产品最了解)
其实,一个人身兼架构师和程序员,甚至多种角色,没什么不妥,后面还会讲这个话题,这种现象不是中国特色,跟国外是完全接轨的。我曾经跟米国的一个工程师在msn中聊过类
似的话题,发现他们的路子跟咱们没什么不同,在IT这个行业,我们跟世界的差距只有1天,他们刚弄出来的新东西,我们这里第2天保准见得到。
架构师这个称呼不是拍脑袋想出来的,是有国际标准(ISO/IEC 42010)可查的。架构师是软件开发活动中的众多角色之一,它可能是一个人、一个小组,也可能是一个团队。微软对架构师有一个分类参考,我们参考一下,他们把架构师分为4种:企业架构师
EA(Enterprise Architect)、基础结构架构师IA(Infrastructure Architect)、特定技术架构TSA(Technology-Specific Architect)和解决方案架构师SA (Solution Architect)。微软的这个分类是按照架构师专注的领域不同而划分的。
EA的职责是决定整个公司的技术路线和技术发展方向。盖茨给自己的Title就是首席软件架构师,网易丁磊也喜欢这么称呼自己,实际上就是EA角色;IA的工作就是提炼和优化技术方面积累和沉淀形成的基础性的、公共的、可复用的框架和组件,这些都是一个技术型公司传承下来的最宝贵的财富之一;特定技术架构师TSA,他们主要从事类似安全架构、存储架构等专项技术的规划和设计工作;SA的工作则专于解决方案的规划和设计,“解决方案”这个词在中国已经到了严重泛滥的程度,大忽悠们最喜欢把它挂在嘴边。所谓解决方案,就是把产品、技术或理论,不断地进行组合,来创造出满足用户需求的选择。售前工程师一般都是带着它到客户那里去发挥的。
大公司会把各种类型的架构师分得很清楚,小公司一般就不那么讲究了,架构师多数是是IA+TSA+SA,一人包打天下,所以说大公司出专才,小公司出全才。
实际工作中,我们也经常会见到另一种比较简单的分类方式,把架构师分为软件架构师和系统架构师。软件架构师基本上是IA+TSA,这也是程序员最容易突破,最可能走上的一条道路,比如JAVA架构师、DotNet架构师等等,我后面所讲的内容都是与软件架构师的相关的话题。系统架构师实际上是TSA+SA,更着力于综合运用已有的产品和技术,来实现客户期望的需求。系统架构师要求通晓软、硬件两方面的知识,所以它的知识体系相对庞杂。关于系统架构师的话题,我们可以稍后再作讨论。
5.2 架构师的职责
架构师需要参与项目开发的全部过程,包括需求分析、架构设计、系统实现、集成、测试和部署各个阶段,负责在整个项目中对技术活动和技术说明进行指导和协调。
架构师主要职责有4条: