《软件体系结构Lec11》由会员分享,可在线阅读,更多相关《软件体系结构Lec11(54页珍藏版)》请在金锄头文库上搜索。
1、软件体系结构软件体系结构 主讲老师:周立新主讲老师:周立新*1教科书和参考书教科书和参考书教科书:教科书:软件架构实践(第软件架构实践(第2版),版),L.Bass.P.Clements.and R.Kazman, 车立红译,车立红译,清华大学出版社(清华大学出版社(2004)参考书:参考书:软件构架编档,软件构架编档,Paul Clements, Felix Bachmann等著,朱崇高等著,朱崇高 译,清华大学出版社(译,清华大学出版社(2004)软件体系结构软件体系结构一门初露端倪学科的展望,一门初露端倪学科的展望,;M.Shaw and D.Garlan, Prentice Hall,
2、 1996清华清华大学出版社(大学出版社(1998),科学出版社(),科学出版社(2003)*2*3*4体系结构(体系结构(Architecture)的定义的定义IEEE的定义的定义体系结构是以组件、组件之间的关系、组件与体系结构是以组件、组件之间的关系、组件与环境之间的关系为内容的某一系统的基本组织环境之间的关系为内容的某一系统的基本组织结构以及指导上述内容设计与演化的原理。结构以及指导上述内容设计与演化的原理。对对Software architecture的常见中文翻译的常见中文翻译软件体系结构软件体系结构软件架构软件架构软件构架软件构架*5软件体系结构(构架)研究的问题软件体系结构(构架
3、)研究的问题结构性问题结构性问题系统的组织,由哪些组件构成系统的组织,由哪些组件构成全局性的控制结构全局性的控制结构通讯、同步或访问的协议通讯、同步或访问的协议将功能分配到不同的系统组成部分将功能分配到不同的系统组成部分设计元素的组成设计元素的组成系统的物理分布系统的物理分布可扩展性、性能可扩展性、性能*6软件构架的主要内容软件构架的主要内容软件构架的主要内容包括软件构架的主要内容包括对系统组成元素的描述对系统组成元素的描述这些元素相互之间的交互这些元素相互之间的交互系统组成的模式系统组成的模式模式的约束模式的约束所以在软件构架中,系统以组件和组件之所以在软件构架中,系统以组件和组件之间的交互
4、进行定义。间的交互进行定义。当前的系统同时可以作为更高层设计的一当前的系统同时可以作为更高层设计的一个系统组件。个系统组件。*7软件构架的描述软件构架的描述对软件系统而言,有一个合适的体系结构对软件系统而言,有一个合适的体系结构是长期成功的保证。是长期成功的保证。当前对于软件构架的描述是当前对于软件构架的描述是非正式的非正式的因人而异因人而异针对特定系统的针对特定系统的通常由框图和线条以及相关的解释所组成通常由框图和线条以及相关的解释所组成*8 一些典型的构架描述一些典型的构架描述“Camlelot采用了采用了C/S结构并且使用远程方结构并且使用远程方法调用(法调用(RPC)”系统设计中采用了
5、抽象分层和模块分解的系统设计中采用了抽象分层和模块分解的方法方法“”我们采用了一种分布式的、面向对象的我们采用了一种分布式的、面向对象的方法进行信息管理。方法进行信息管理。“”将传统的顺序编译器改造成并发编译器将传统的顺序编译器改造成并发编译器的最简单的方法是将不同的编译阶段在多的最简单的方法是将不同的编译阶段在多个处理上并发执行。个处理上并发执行。“*9软件设计的层次软件设计的层次软件设计可以发生在多个不同的层次,在软件设计可以发生在多个不同的层次,在每一层我们都会发现相应的组件以及由这每一层我们都会发现相应的组件以及由这些组件组成更大的组件的组合机制。些组件组成更大的组件的组合机制。二进制
6、执行文件层二进制执行文件层 位模式位模式代码层代码层编程语言的原语、操作符;编程语言的原语、操作符;记录、数组、过程;记录、数组、过程;构架层构架层模块模块*10需求:做什么概要设计,总体,架构,:怎么做?分模块功能划分,接口定义,模式,详细设计:算法设计,数据设计实现:编码,测试*11工程学科的演化工程学科的演化手工制造手工制造生产生产商业制造商业制造科学科学专业工程专业工程*12工程学科的演化(工程学科的演化(2)手工制造手工制造商业制造商业制造工程制造工程制造有天赋的业余者有天赋的业余者直觉直觉/蛮劲蛮劲无计划的进展无计划的进展偶然的交流偶然的交流对原材料的浪费对原材料的浪费为使用而制造
7、为使用而制造熟练的手工艺者熟练的手工艺者已成型的一套流程已成型的一套流程经验的提炼经验的提炼技巧训练技巧训练关注成本和收益关注成本和收益为销售而制造为销售而制造受教育的职业人员受教育的职业人员理论和分析理论和分析科学指导下的进展科学指导下的进展职业教育职业教育科学分析原料使用科学分析原料使用市场根据产品细分市场根据产品细分*13科学与工程的记录周期科学与工程的记录周期 业界传说业界传说 临时解决方案临时解决方案 正式正式记录记录新问题新问题 模型与理论模型与理论 改进的实践改进的实践*14软件工程的演化软件工程的演化手工制造手工制造生产生产商业制造商业制造科学科学专业工程专业工程1965-70
8、 算法、数据算法、数据一些独立的案例(算一些独立的案例(算法、数据结构、编译器法、数据结构、编译器构造构造1980s软件开发方法学软件开发方法学*15Software Architecture in Practice第一章第一章 构架商业周期构架商业周期*16构架由什么决定?构架由什么决定?构架是否由系统需求决定?构架是否由系统需求决定?将一份需求说明书给两个不同的架构师,他们将一份需求说明书给两个不同的架构师,他们是否能够设计出同样的架构?是否能够设计出同样的架构?软件构架是技术、商业和社会等诸多因素软件构架是技术、商业和社会等诸多因素共同作用的结果。共同作用的结果。*17构架从哪里来?构架
9、从哪里来?影响构架的因素主要包括:影响构架的因素主要包括:系统涉众(系统涉众(stakeholder)开发组织开发组织构架师的素质和经验构架师的素质和经验技术环境技术环境*18*19系统涉众(系统涉众(stakeholder)管理者:成本要低,人人都得干活管理者:成本要低,人人都得干活营销人员:特性突出、投放市场快、成本营销人员:特性突出、投放市场快、成本低、可与同类产品匹敌低、可与同类产品匹敌终端用户:行为、性能、安全性、可靠性、终端用户:行为、性能、安全性、可靠性、易用性易用性维护人员:可修改性强维护人员:可修改性强客户:成本低、及时交付、不要频繁修改客户:成本低、及时交付、不要频繁修改*
10、20*21*22开发组织开发组织除了通过需求表示的组织目标外,构架还除了通过需求表示的组织目标外,构架还受开发组织的结构或本质的影响受开发组织的结构或本质的影响对现存构架的重用对现存构架的重用对某一个基础设施进行长期的商业投资以实现对某一个基础设施进行长期的商业投资以实现某些战略目标某些战略目标开发组织本身的结构也会影响构架的形成开发组织本身的结构也会影响构架的形成*23构架师的素质和经验构架师的素质和经验构架师先前的一些经验、教育、培训以及构架师先前的一些经验、教育、培训以及所接触到过的成功构架模式都会影响到他所接触到过的成功构架模式都会影响到他们对某种构架的选择。们对某种构架的选择。*24
11、17世纪上半叶,北欧新教势力与中欧天主教势力发生了一场“三十年战争”,作为北欧新教势力的代表,瑞典的军事力量达到鼎盛时期。1625年,号称“北方飓风”的瑞典国王古斯塔夫斯阿道弗斯(Gustavs Adolphus)决心建造一艘史无前例的巨型新战舰瓦萨(Vasa)战舰。瓦萨战舰确实是一艘令人望而生畏的战舰:舰长70米,载员300人,在三层的甲板上共装有64门重炮,火力之强让人难以置信。*251628年8月10日,这艘巨大的战舰终于完工。在斯德哥尔摩,瓦萨战舰举行了盛大的下水典礼。礼炮声中,战舰扬帆起航,乘风前进。在1万多名围观者的目光注视下,忽然,瓦萨号奇怪地摇晃了一下,便向左舷倾斜。海水从炮孔
12、处涌入船舱,战舰迅速翻入水中,几分钟后,这艘雄伟战舰的处女航也是唯一的一次航行结束了。瓦萨战舰在它壮丽的起航时刻,带着全身飘扬的彩旗,沉没于它诞生的港口。*26人们对瓦萨的沉没做出了各种各样的分析,最后的主要结论是:该舰制造工艺精良,但“比例严重失调”,也就是说,该战舰的架构存在缺陷。瓦萨的沉没早已成为往事。然而,300多年后的今天,在企业信息系统领域,类似“瓦萨”这样的故事却比比皆是。处在工业高度发达的今天,在机械、电子、建筑、车船制造等各个领域,作为学科和工业的基石“架构体系”早已形成完整的理论和方法体系,但是,与这些成熟的工业领域相比,与企业信息系统相关的架构体系,几乎还处在原始和蒙昧的
13、状态。*27理解架构:瓦萨战舰的故事理解架构:瓦萨战舰的故事1625年,瑞典国王古斯塔年,瑞典国王古斯塔夫斯阿道弗斯(夫斯阿道弗斯(Gustavs Adolphus)决心建造一艘)决心建造一艘史无前例的巨型新战舰史无前例的巨型新战舰 瓦萨(瓦萨(Vasa)战舰。)战舰。瓦萨战舰确实是一艘令人望瓦萨战舰确实是一艘令人望而生畏的战舰:舰长而生畏的战舰:舰长70米,米,载员载员300人,在三层的甲板人,在三层的甲板上共装有上共装有64门重炮,火力超门重炮,火力超强。强。*28瓦萨战舰的处女航1628年年8月月10日,这艘巨大的战舰终于完工。日,这艘巨大的战舰终于完工。在斯德哥尔摩的王宮前,瓦萨战舰举
14、行了盛在斯德哥尔摩的王宮前,瓦萨战舰举行了盛大的下水典礼。大的下水典礼。在在1万多名围观者的目光注视下,忽然,瓦万多名围观者的目光注视下,忽然,瓦萨号奇怪地摇晃了一下,便向左舷倾斜。海萨号奇怪地摇晃了一下,便向左舷倾斜。海水涌入船舱,战舰迅速翻入水中。几分钟后,水涌入船舱,战舰迅速翻入水中。几分钟后,这艘雄伟战舰的处女航这艘雄伟战舰的处女航也是唯一的一次也是唯一的一次航行结束了。瓦萨战舰在它壮丽的起航时刻,航行结束了。瓦萨战舰在它壮丽的起航时刻,带着全身飘扬的彩旗,沉没于它诞生的港口。带着全身飘扬的彩旗,沉没于它诞生的港口。 *29瓦萨战舰为什么沉没?瓦萨战舰为什么沉没?人们对瓦萨的沉没做出了
15、分析,最后的主要结论是:该舰制造工艺精良,但“比例严重失调比例严重失调”,也就是说,该战舰的架构架构存在缺陷。 *30信息系统的“瓦萨”问题同样同样,在今天的企事业信息系统领域,在今天的企事业信息系统领域,“瓦萨瓦萨”问题问题“架构架构”成为需要解决的成为需要解决的关键问题。关键问题。*31*32技术环境技术环境技术环境可以看作是对构架师素质和经验技术环境可以看作是对构架师素质和经验的特殊反映的特殊反映代表某个时代的构架师的普遍素质和经验代表某个时代的构架师的普遍素质和经验比如:在当今的技术环境下,如果构架师对信比如:在当今的技术环境下,如果构架师对信息系统的设计不考虑使用基于息系统的设计不考
16、虑使用基于WEB的,面向对的,面向对象的和支持中间件的方法是很难想像的象的和支持中间件的方法是很难想像的*33*34构架所受的影响构架所受的影响构架师所受的影响构架师所受的影响涉众涉众开发组织开发组织需求(质量属性)需求(质量属性)构架师(小组)构架师(小组)构架构架系统系统构架师的经验构架师的经验*35构架商业周期(构架商业周期(ABC)构架师所受的影响构架师所受的影响涉众涉众开发组织开发组织需求(质量属性)需求(质量属性)构架师(小组)构架师(小组)构架构架系统系统构架师的经验构架师的经验*36ABC构架的反影响力构架的反影响力构架会影响开发组织的结构构架会影响开发组织的结构构架会影响开发
17、组织的目标构架会影响开发组织的目标构架会影响客户对一个系统的要求构架会影响客户对一个系统的要求构建系统的过程丰富了整个开发团队的经构建系统的过程丰富了整个开发团队的经验,从而将影响设计师对后继系统的设计验,从而将影响设计师对后继系统的设计一些系统会影响并实际改变软件工程的环一些系统会影响并实际改变软件工程的环境,也就是系统开发人员学习或实践的技境,也就是系统开发人员学习或实践的技术环境术环境*37*38*39*40Data Banker*41*42第二章第二章 什么是软件构架什么是软件构架 *43构架概念的澄清构架概念的澄清控制处理(控制处理(CP)特征损失模型特征损失模型(MODP)回响模型
18、回响模型(MODR)噪音模型噪音模型(MODN)这是一个构架(描述)吗?这是一个构架(描述)吗?水下声学模拟系统水下声学模拟系统*44构架定义构架定义Len Bass, Paul Clements等人对构架所做等人对构架所做的定义:的定义:某一个软件或计算系统的软件构架是该系统的某一个软件或计算系统的软件构架是该系统的一个或多个结构,它由软件元素、这些元素的一个或多个结构,它由软件元素、这些元素的外观可见属性以及这些元素之间的关系组成。外观可见属性以及这些元素之间的关系组成。*45构架含义(构架含义(1)1.构架定义了构架定义了 软件元素软件元素构架必须省略元素中与其交互无关的某些信息构架必须
19、省略元素中与其交互无关的某些信息接口接口VS.内部实现内部实现2.系统可能而且确实由多个结构组成系统可能而且确实由多个结构组成其中任何一个结构并不能与构架等同其中任何一个结构并不能与构架等同结构的多重性是理解软件构架的关键结构的多重性是理解软件构架的关键*46构架的含义(构架的含义(2)3.具有软件的每个计算系统都有一个软件构架具有软件的每个计算系统都有一个软件构架每个软件系统都可以看成由若干个元素及其相互每个软件系统都可以看成由若干个元素及其相互联系构成联系构成系统构架系统构架VS.构架描述构架描述4.如果某个元素的行为可以从其它元素的角度如果某个元素的行为可以从其它元素的角度观察到,这个元
20、素的行为就是构架的内容观察到,这个元素的行为就是构架的内容这种行为使各元素的交互成为可能,是构架的一这种行为使各元素的交互成为可能,是构架的一部分部分5.构架的存在与构架的优劣无关构架的存在与构架的优劣无关*47构架的其他定义构架的其他定义构架是一种高层设计构架是一种高层设计构架是系统的总体结构构架是系统的总体结构构架是以组件、组件之间的关系、组件与环构架是以组件、组件之间的关系、组件与环境之间的关系为内容的某一系统的基本组织境之间的关系为内容的某一系统的基本组织结构以及指导上述内容设计与演化的原理结构以及指导上述内容设计与演化的原理构架是组件和连接器构架是组件和连接器*48构架模式、参考模型
21、和参考构架构架模式、参考模型和参考构架构架模式是对元素和关系类型以及一组对构架模式是对元素和关系类型以及一组对其使用方式的限制的描述其使用方式的限制的描述参考模型是一种考虑数据流的功能划分参考模型是一种考虑数据流的功能划分参考架构是映射到软件元素(它们相互使参考架构是映射到软件元素(它们相互使用,共同实现在参考模型中的定义的功能)用,共同实现在参考模型中的定义的功能)及元素之间数据流上的参考模型及元素之间数据流上的参考模型(这些都是理解架构中的元素的一些有用的(这些都是理解架构中的元素的一些有用的概念)概念)*49*50构架模式、参考模型和参考构架的构架模式、参考模型和参考构架的关系关系参考模
22、型参考模型构架模式构架模式参考构架参考构架软件构架软件构架*51软件构架的作用软件构架的作用涉众之间的交流涉众之间的交流代码级别的系统抽象代码级别的系统抽象程序员的交流工具程序员的交流工具构架级别的系统的抽象构架级别的系统的抽象包括程序员在内的绝大多数系统涉包括程序员在内的绝大多数系统涉众都借助软件体系结构来进行彼此理解、协商、达成共识或众都借助软件体系结构来进行彼此理解、协商、达成共识或者相互沟通的基础。者相互沟通的基础。系统设计的前期决策系统设计的前期决策软件构架是我们所开发的软件系统最早期设计决策的体现,软件构架是我们所开发的软件系统最早期设计决策的体现,它们对软件系统的后续开发、部署和
23、维护具有相当重要的影它们对软件系统的后续开发、部署和维护具有相当重要的影响。响。构架设计是能够对所开发系统进行分析的最早时间点。构架设计是能够对所开发系统进行分析的最早时间点。可传递的系统级抽象可传递的系统级抽象软件构架是关于系统构造以及系统各个元素工作机制的相对软件构架是关于系统构造以及系统各个元素工作机制的相对较小、却又能够突出反映问题的模型。较小、却又能够突出反映问题的模型。这种模型可以在多个系统之间传递,特别是可以应用到具有这种模型可以在多个系统之间传递,特别是可以应用到具有相似质量属性和功能需求的系统中,并能够促进大规模软件相似质量属性和功能需求的系统中,并能够促进大规模软件的系统级复用。的系统级复用。*522. What is Software Architectureiii.ANSI/IEEE Std 1471-2000, Recommended Practice for Architectural Description*53Architecture metamodel*54