1、THU SAGroup课程编号:课程编号:74100152软件体系结构(软件体系结构(1 1)软件体系结构发展中的若干重要问题软件体系结构发展中的若干重要问题覃征覃征 教授教授THU SAGroup课程简介课程简介1软件体系结构的定义和发展综述软件体系结构的定义和发展综述2工业软件体系结构的主要分类工业软件体系结构的主要分类3软件体系结构的发展方向软件体系结构的发展方向4案例研究案例研究52v 授课教师授课教师 主讲教授主讲教授:覃征覃征 办公室 清华大学软件学院 208室 电话 62795399 电子邮件 助教组助教组 邢剑宽 章晋学 zhang-THU SAGroup3v 教材及参考书教材
2、及参考书 教材教材 覃征等,软件体系结构(第二版),清华大学出版社,2008 Qin Zheng et al.,Software Architecture,Springer Verlag,2008 其它参考资料其它参考资料 Len Bass,Paul Clements,Rick Kazman,Software Architecture in Practice 2nd ed,Addison Wesley,2003 Paul Clements,Rick Kazman,Mark Klein,Evaluating Software Architectures,清华大学出版社,2003 Paul Cle
3、ments,Linda Northrop,Software Product Line:Practices and Patterns,清华大学出版社,2003 Christine Hofmeister,Robert Nord,Dilip Soni,Applied Software Architecture,Addison Wesley,2000 Jacobson,Software Reuse:Architecture,Process,and Organization for Business Success,Addison Wesley,2000THU SAGroup4THU SAGroup5v
4、 课程目标课程目标 掌握软件体系结构的概念、组成和相关领域国内外研掌握软件体系结构的概念、组成和相关领域国内外研究现状。究现状。明确软件体系结构划分标准、设计原则。明确软件体系结构划分标准、设计原则。学习学习软件体系结构构建模型软件体系结构构建模型、软件体系结构组态分析软件体系结构组态分析方法方法、软件体系结构形式化描述方法软件体系结构形式化描述方法、软件体系结构软件体系结构集成开发环境的设计与实现方法几个方面的知识集成开发环境的设计与实现方法几个方面的知识,并,并掌握在实际系统开发过程中分析、设计、应用软件体掌握在实际系统开发过程中分析、设计、应用软件体系结构思想的技能。系结构思想的技能。T
5、HU SAGroup6v 课程成绩课程成绩 平时:平时:40%课堂测试:10%(课堂提问、课堂考试、课堂报告)平时作业:30%期末考查:期末考查:60%考试形式:以45人为一个小组,共同完成一个规定题目的科技论文THU SAGroup7v 课程安排课程安排 第一讲:软件体系结构发展中的若干重要问题第一讲:软件体系结构发展中的若干重要问题(3)第二讲:软件体系结构风格与模式第二讲:软件体系结构风格与模式(9)第三讲:软件体系结构组态分析与应用第三讲:软件体系结构组态分析与应用(2*)第四讲:软件体系结构形式化描述第四讲:软件体系结构形式化描述(6)第五讲:第五讲:CSP和软件体系结构描述语言和软
6、件体系结构描述语言(3*)第六讲:软件体系结构集成开发环境的设计与实现第六讲:软件体系结构集成开发环境的设计与实现(3)第七讲:柔性软件体系结构第七讲:柔性软件体系结构(3*)第八讲:软件体系结构研究的展望第八讲:软件体系结构研究的展望(3)括号中为课时数,带星的为助教课THU SAGroup8THU SAGroup9什么是软件体系结构什么是软件体系结构如何利用软件体系结构进行如何利用软件体系结构进行宏观设计宏观设计软件体系结构设计案例分析软件体系结构设计案例分析如何利用形式化基础描述软如何利用形式化基础描述软件体系结构件体系结构如何进行软件体系结构开发如何进行软件体系结构开发什么是柔性软件体
7、系结构什么是柔性软件体系结构软件体系结构还有什么研究问题软件体系结构还有什么研究问题THU SAGroup课程简介课程简介1软件体系结构的定义和发展综述软件体系结构的定义和发展综述2工业软件体系结构的主要分类工业软件体系结构的主要分类3软件体系结构的发展方向软件体系结构的发展方向4案例研究案例研究510v 什么是软件什么是软件 软件一般认为由三部分组成:软件一般认为由三部分组成:程序:在运行时,能提供所希望的功能和性能的指令集。数据结构:使程序能够正确运行的数据结构。文档:描述程序研制过程、方法及使用的文档。THU SAGroup11v 软件的特点软件的特点 抽象性:逻辑实体,可记录,但看不到
8、抽象性:逻辑实体,可记录,但看不到 可复制性:与开发成本相比,复制成本很低可复制性:与开发成本相比,复制成本很低 无折旧无折旧 受硬件制约受硬件制约 未完全摆脱手工工艺未完全摆脱手工工艺 开发费用高开发费用高THU SAGroup12v 计算机软件发展的三个时期计算机软件发展的三个时期 早期时代(早期时代(60年代中期之前)年代中期之前)程序设计阶段硬件通用,软件专用;程序规模小,编写者和使用者为同一人(同组人)。第二代(第二代(60年代中期年代中期-70年代中期)年代中期)程序系统阶段出现“软件作坊”、产品软件;“个体化”开发方法。第三代(第三代(70年代中期之后)软件工程阶段年代中期之后)
9、软件工程阶段 软件开发成为一门新兴的工程学科软件工程。THU SAGroup13THU SAGroup14程序设计程序设计程序系统程序系统软件工程软件工程软件范畴软件范畴程序程序程序及说明书程序及说明书产品软件(项产品软件(项目软件)目软件)主要程序设计语言主要程序设计语言汇编及机器语言汇编及机器语言高级语言高级语言高级语言系统高级语言系统软件工作范围软件工作范围程序编写程序编写设计、测试设计、测试软件生存期软件生存期需求者需求者程序设计者本人程序设计者本人少数用户少数用户市场用户市场用户计算机软件发展的三个时期及特点计算机软件发展的三个时期及特点THU SAGroup15程序设计程序设计程序
10、系统程序系统软件工程软件工程维护责任者维护责任者程序设计者程序设计者开发小组开发小组专职维护人员专职维护人员硬件特征硬件特征价高、存储量小、价高、存储量小、稳定性差稳定性差价低、速度、价低、速度、容量、稳定性容量、稳定性明显提高明显提高向超高速、大向超高速、大容量、微型化容量、微型化发展发展软件特征软件特征完全不受重视完全不受重视软件技术的发软件技术的发展不满足需要,展不满足需要,出现软件危机出现软件危机开发技术有进开发技术有进步,但未获得步,但未获得突破性进展,突破性进展,软件危机没有软件危机没有完全摆脱完全摆脱计算机软件发展的三个时期及特点计算机软件发展的三个时期及特点v 我们需要的是软件
11、符合质量要求!我们需要的是软件符合质量要求!软件需求是进行软件需求是进行“质量质量”度量的基础,与需求不符就度量的基础,与需求不符就是质量不高。是质量不高。通常有一组通常有一组“隐含需求(隐含需求(implicit requirements)”是不被提及的(如对维护性的需求)。如果软件符合是不被提及的(如对维护性的需求)。如果软件符合了明确的需求却没有满足隐含需求,软件质量仍然值了明确的需求却没有满足隐含需求,软件质量仍然值得怀疑。得怀疑。THU SAGroup16性能性能Performance可用性可用性Usability可靠性可靠性Availability可扩展性可扩展性Extensibi
12、lity安全性安全性 Security功能性功能性Functionality随着社会的巨大进步随着社会的巨大进步,计算机系统的整体发展计算机系统的整体发展,新技术的新技术的不断涌现不断涌现,使计算机应用的需求迅速增加。而软件费用的使计算机应用的需求迅速增加。而软件费用的增加增加,高可靠性能下降高可靠性能下降,维护工作量增大维护工作量增大,出现了严重的出现了严重的“软件危机软件危机”。软件危机已经持续了三十多年,表现为:。软件危机已经持续了三十多年,表现为:软件的产品质量难以保障软件的产品质量难以保障 软件的开发效率难以提高软件的开发效率难以提高THU SAGroup17THU SAGroup1
13、8软件失败软件失败Software FailureSoftware Failure最常见错误形式:最常见错误形式:变量取值超过变量取值超过允许范围允许范围用户使用软件超载用户使用软件超载(OverloadOverload)现代系统的复杂性现代系统的复杂性往往集中于软件部分往往集中于软件部分(complexitycomplexity)代码正确,设计错误代码正确,设计错误(Design ErrorDesign Error)其他其他软件开发者不参与情况下软件开发者不参与情况下操作系统以及硬件改变操作系统以及硬件改变软件失败的原因软件失败的原因v 解决问题的想法解决问题的想法 更好的管理更好的管理(B
14、etter management)出众的团队组织(出众的团队组织(Different team organizations)更好的语言和工具(更好的语言和工具(Better languages&tools)统一的编程统一的编程 规范(规范(Uniform coding conventions)必须意识到:“软件”编程,它有自己的生命周期(life cycle)。大型软件系统的开发与其它工程项目如建造桥梁、制造飞机、轮船等的开发是同理的。THU SAGroup19THU SAGroup20v 软件质量问题对经济的影响:软件质量问题对经济的影响:美国美国NIST(国家商业标准和技术)报告,(国家商
15、业标准和技术)报告,“由于软件由于软件bug的普遍存在,使美国的普遍存在,使美国经济每年损失经济每年损失$590.5亿美元亿美元”,而,而Standish组织的数据是每年组织的数据是每年2000亿美元亿美元改进软件质量已经成为取得高投资回报率的直接途径,质量低的公司只会被遗改进软件质量已经成为取得高投资回报率的直接途径,质量低的公司只会被遗忘忘v 软件质量问题对生命安全的威胁:软件质量问题对生命安全的威胁:1963 年年,美国金星探测火箭飞行失败美国金星探测火箭飞行失败,造成经济损失达一千万美元,因为控制程造成经济损失达一千万美元,因为控制程序中的一个极小的错误序中的一个极小的错误,即将一逗号
16、误写为一小数点!即将一逗号误写为一小数点!由于着陆系统的高度报警程序问题部分导致了由于着陆系统的高度报警程序问题部分导致了1997年发生在关岛的韩国客机空年发生在关岛的韩国客机空难,难,228人遇难。人遇难。1996 年年,欧洲耗资高达欧洲耗资高达7 亿美元的亿美元的Ariane5 火箭发射后解体爆炸火箭发射后解体爆炸,究其原因是惯究其原因是惯性参考系统中的一个软件设计错误性参考系统中的一个软件设计错误,并由于认为这个软件不会发生错误而缺乏充并由于认为这个软件不会发生错误而缺乏充分的测试。分的测试。.如果有什么东西可以在软件开发之前用于描述软件,并能如果有什么东西可以在软件开发之前用于描述软件
17、,并能进行质量分析,从而保证软件质量就好了进行质量分析,从而保证软件质量就好了THU SAGroup21THU SAGroup22结构设计师:结构设计师:设计图纸设计图纸管理人员:管理人员:施工计划施工计划施工人员:施工人员:建造建筑物建造建筑物软件体系结构思想来源于建筑业软件体系结构思想来源于建筑业THU SAGroup23建立模型建立模型THU SAGroup24站点站点外表外表结构结构服务服务空间计划空间计划 结构设计结构设计THU SAGroup25最终的建筑最终的建筑鸟巢鸟巢THU SAGroup26玛雅阿兹特克金字塔玛雅阿兹特克金字塔瑞士保险公司大楼瑞士保险公司大楼THU SAGr
18、oup27THU SAGroup28对于大规模的,分布的,需要协作的,需要对于大规模的,分布的,需要协作的,需要交互的,需要监测的,需要扩展的,需要演交互的,需要监测的,需要扩展的,需要演化的复杂软件系统的化的复杂软件系统的规划规划。v 程序设计语言的进化程序设计语言的进化抽象级别(抽象级别(Abstract Level)THU SAGroup29面向代码段面向代码段面向问题空间面向问题空间面向机器面向机器面向机器面向机器 是一种针对如何直接操作机器指令来使用计算机资源的抽象级别。面向代码段面向代码段 将可复用的功能代码总结和包装以保证重用。如基本的数值计算,过程控制等。面向问题空间面向问题空
19、间 是这样一种抽象级别。它直接将问题空间中的实体以及实体的关系表达出来。如利用“类”来表示物理世界的实物。v 软件开发的进化软件开发的进化关注点(关注点(Concern)THU SAGroup301灵活使用机器使用灵活使用机器使用的底层指令和数据的底层指令和数据(Primitive instructions and data)2提高开发效率、代提高开发效率、代码可读性、易维护码可读性、易维护性性(Efficiency and convenience in code reading and maintenance)3实现软件产品线式实现软件产品线式生产生产(Software Product Li
20、ne)1960年代,软件危机爆发年代,软件危机爆发 1968年,软件工程被提出年,软件工程被提出 NATO software engineering conference 1968年,软件体系结构思想被提出年,软件体系结构思想被提出“The Structure of the THE Multiprogramming System”authored by Edsger Dijkstra(艾德勒 戴克斯加,荷兰)1975年,软件体系结构思想被升华年,软件体系结构思想被升华“Architecture is the complete and detailed specification of the
21、user interface”by Frederick Brooks(弗兰德里克 布鲁克斯,美国)THU SAGroup31Edsger DijkstraFrederick P.Brooks 19721976年,现代软件开发思想被提出年,现代软件开发思想被提出 information hiding and usage of interface(Parnas,1972)structure separation(Parnas,1974)the relationships between software structure and its quality(Parnas,1976)戴维 帕纳斯,美国
22、 1991年,年,”Software Architecture”在正式在正式文献中被使用文献中被使用 Software Architecture:Integrating Process and Technology authored Walker E.Royce and Winston W.Royce沃克 罗伊斯;温斯顿 罗伊斯,美国THU SAGroup32 David ParnasWalker E.Royce 1993年年,Software Architecture被定义,此定义成为被定义,此定义成为软件体系结构研究的公认基础软件体系结构研究的公认基础 An Introduction to
23、 Software Architecture authored by David Garlan and Mary Shaw 20世纪世纪90年代年代,软件体系结构描述语言,软件体系结构描述语言(ADL)兴盛兴盛 Darwin,Wright,C2,Rapide,MetaH,ACME,20世纪世纪90年代,软件体系结构评估方法兴起年代,软件体系结构评估方法兴起 SAAM,ATAM,2000年,年,IEEE1471-2000标准标准 IEEE Recommended practice for architectural description of software-intensive system
24、sTHU SAGroup33 2000年年,Software Architecture Product Line The Design and Use of Software Architecture authored by Bosch 2003年,年,UML2.0 发布发布 2000年至今,动态软件体系结构年至今,动态软件体系结构-ADL,LIME,dynamic Wright,THU SAGroup34v M.Shaw and D.Garlan,“An Introduction to Software Architecture,”V.Ambriola and G.Tortora,eds.,
25、Advances in Software Engineering and Knowledge Engineering,vol.2,World Scientific Publishing,1993,pp.139v D.E.Perry and A.L.Wolf,“Foundations for the Study of Software Architecture,”ACM Software Eng.Notes,vol.17,no.4,1992,pp.4052.v D.L.Parnas,“On the Criteria to Be Used in Decomposing Systems into M
26、odules,”Comm.ACM,vol.15,no.12,1972,pp.10531058.v D.L.Parnas,“On the Design and Development of Program Families,”IEEE Trans.Software Eng.,vol.2,no.1,1976,pp.19.v D.L.Parnas,P.Clements,and D.M.Weiss,“The Modular Structure of Complex Systems,”IEEE Trans.Software Eng.,vol.11,no.3,1985,pp.259266.v F.DeRe
27、mer and H.Kron,“Programming-in-the-Large versus Programming-in-the-Small,”Proc.Intl Conf.Reliable Software,ACM Press,1975,pp.114121.THU SAGroup35v D.Soni,R.Nord,and C.Hofmeister,“Software Architecture in Industrial Applications,”Proc.17th Intl Conf.Software Eng.(ICSE 95),ACM Press,1995,pp.196207.v P
28、.Kruchten,“The 4+1 View Model of Architecture,”IEEE Software,vol.12,no.6,1995,pp.4550.v B.W.Lampson,“Hints for Computer System Design,”Operating Systems Rev.,vol.15,no.5,1983,pp.3348;reprinted in IEEE Software,vol.1,no.1,1984,pp.1128.v J.A.Mills,“A Pragmatic View of the System Architect,”Comm.ACM,vo
29、l.28,no.7,1985,pp.708717.v W.E.Royce and W.Royce,“Software Architecture:Integrating Process and Technology,”TRW Quest,vol.14,no.1,1991,pp.215.v M.Shaw and P.Clements,“A Field Guide to Boxology:Preliminary Classification of Architectural Styles for Software Systems,”Proc.21st Intl Computer Software a
30、nd Applications Conf.(COMPSAC 97),IEEE CS Press,1997,pp.613.v M.Shaw,“The Coming-of-Age of Software Architecture Research,”Proc.23rd Intl Conf.Software Eng.(ICSE 01),IEEE CS Press,2001,pp.656664a.THU SAGroup36THU SAGroup37Mary Shaw玛丽玛丽 娋娋Frederick Brooks弗兰德弗兰德 里克里克 布鲁克斯布鲁克斯Barry Boehm拜瑞拜瑞 波姆波姆Carlis
31、s Baldwin卡利斯卡利斯 鲍德温鲍德温NSF 2007 Science of Design Principal Investigators(PI)Meeting THU SAGroup38萌芽期萌芽期发展期发展期成熟期成熟期THU SAGroup39THU SAGroup40什么是软件体系结构什么是软件体系结构?THU SAGroup41THU SAGroup42THU SAGroup43THU SAGroup44THU SAGroup45THU SAGroup46 自自NATO于于1968年提出软件工程概念以来年提出软件工程概念以来,软件工程界已经提出软件工程界已经提出了一系列的理论、
32、方法、语言和工具了一系列的理论、方法、语言和工具,解决了软件开发过程中的若干解决了软件开发过程中的若干问题问题.但是但是,软件固有的复杂性、易变性和不可见性软件固有的复杂性、易变性和不可见性,使得软件开发周使得软件开发周期长、代价高和质量低的问题依然存在期长、代价高和质量低的问题依然存在.大量实践统计表明大量实践统计表明:大系统大系统软件开发中软件开发中70的错误是由需求和软件设计阶段引入的的错误是由需求和软件设计阶段引入的;而且错误而且错误在系统中存在的时间愈长则愈难发现在系统中存在的时间愈长则愈难发现,解决这些错误的代价也愈高解决这些错误的代价也愈高.为了提高软件需求和软件设计的质量为了提
33、高软件需求和软件设计的质量,软件工程界提出了需求分软件工程界提出了需求分析工程技术和各种软件建模技术析工程技术和各种软件建模技术.但是在需求与设计之间仍存在一条但是在需求与设计之间仍存在一条很难逾越的鸿沟很难逾越的鸿沟,即缺乏能够反映做决策的中间过程即缺乏能够反映做决策的中间过程,从而很难有效从而很难有效地将需求转换为相应的设计地将需求转换为相应的设计.为此为此,软件体系结构概念应运而生软件体系结构概念应运而生,并试并试图在软件需求与软件设计之间架起一座桥梁图在软件需求与软件设计之间架起一座桥梁,着重解决软件系统的结着重解决软件系统的结构和需求向实现平坦地过渡的问题构和需求向实现平坦地过渡的问
34、题.THU SAGroup47v 软件体系结构基本概念软件体系结构基本概念 就体系结构的本意而言,它是指建立系统时的构造范就体系结构的本意而言,它是指建立系统时的构造范型、构造风格和构造模式,软件体系结构对于软件系型、构造风格和构造模式,软件体系结构对于软件系统的构造所起的是指导性的作用,它抛开了软件系统统的构造所起的是指导性的作用,它抛开了软件系统的功能细节,着重于讨论软件系统的总体框架。的功能细节,着重于讨论软件系统的总体框架。THU SAGroup48开发了开发了5年,投入资金达年,投入资金达300多亿美元,历史上代多亿美元,历史上代码量最大,达到码量最大,达到5000万万行,仅核心工程
35、师就有行,仅核心工程师就有9000人团队的庞大软件人团队的庞大软件开发项目开发项目基于基于软件体系结构软件体系结构的的分析、评估、计划、分析、评估、计划、组织、开发、测试组织、开发、测试v 对于一个软件开发单位来说,选择合适的体系结构是最对于一个软件开发单位来说,选择合适的体系结构是最重要的决策之一重要的决策之一v 良好的体系结构可以维系软件系统的完整性,使得开发良好的体系结构可以维系软件系统的完整性,使得开发和维护工作不至于杂乱无章;还可以简化软件系统复杂和维护工作不至于杂乱无章;还可以简化软件系统复杂性,让众多的开发单位的软件工程师们能以并行方式开性,让众多的开发单位的软件工程师们能以并行
36、方式开展工作展工作.THU SAGroup49v 软件体系结构基本概念软件体系结构基本概念 广义而言,软件系统结构涉及多方面的内容:广义而言,软件系统结构涉及多方面的内容:软件的成份及系统框架;软件成份的选择,各成分之间的相互作用,软件成份的进一步复合以及指导软件复合过程的总体模式;系统的功能、性能、设计以及从多种方案及选项中进行选择的决策。可见,软件体系结构更为关注的是系统结构及其成份,而方法论更关心系统的开发过程THU SAGroup50 Perry和和Wolf根据软件生命周期各阶段相应的实体、根据软件生命周期各阶段相应的实体、属性、关系、主要产品和评估标准,将软件开发过程属性、关系、主要
37、产品和评估标准,将软件开发过程分为如下阶段:分为如下阶段:需求分析:主要根据用户的需求,决定软件的功能;体系结构设计:选择构件、构件间相互关系以及对它们的约束,并以此为框架,为详细设计奠定基础;详细设计:主要对系统进行模块化和描述各个构件间的详细接口、算法和数据结构类型等;实现:使用程序设计语言实现设计方案的要求。THU SAGroup51v 软件体系结构研究与传统软件工程方法学的不同之处在软件体系结构研究与传统软件工程方法学的不同之处在于:于:所关心的问题不同所关心的问题不同 描述的着眼点不同描述的着眼点不同 抽象层次不同抽象层次不同 THU SAGroup52从不同角度看太阳从不同角度看太
38、阳 学院派学院派 测重于软件体系结构形式化理论研究。注重抽象、规约和演算。实践派实践派 将软件体系结构设计、描述与表示同传统的软件系统建模视为一体,以体系结构作为整个软件开发过程的核心。结合派结合派 试图将以上二者结合以来,将形式化理论应用于实际项目中。THU SAGroup53v 长期以来,CMU-SEI在其网站上公开征集软件体系结构的定义至今已有百余种。最近较有影响力的定义有:卡耐基梅隆大学Bass 等人于2003年在软件构架实践一书中提出,软件体系结构为系统的结构(structure or structures),包含软件元素、软件元素外部可见的属性以及这些软件元素之间的关系。v 软件体
39、系结构定义的发展演变 IEEE 610.12,1990 Vestal,1993 Garlan,1993 Gacek,1995 Bosch,2000 Perry,2000 IEEE Std1471-2000,2000v IEEE 610.12(1990年)软件工程标准词汇定义:SA=component,connector,environment,principle.体系结构是以构件、构件之间的关系、构件与环境之间的关系为内容的某一系统的基本组织结构,以及指导上述内容设计与演化的原理。v Honeywell实验室的Vestal在1993年提出了如下模型:SA=component,idioms/st
40、yles,common patterns of interaction.软件由构件组成,构件之间通过通用的互操作模式相连。体系结构风格描述了一种通用的设计模式,可满足特定系列的应用需求。v 卡耐基梅隆大学的Garlan于1993年对软件体系结构做出了如下定义:SA=Components,Connectors,Constraints 构件(Components)是功能单元,执行预定义的服务并且与其他构件交互。连接器(Connectors)定义交互协议与策略。约束(Constraints)定义了系统必须服从的规则。v 而南加州大学的软件工程研究中心的Gacek于1995年,提出了如下的概念:SA=
41、Components,Connections,Constraints,Stakeholder Needs,Rationale 在此定义中,构件(component)与连接(connection)的设计将依照涉众(Stakeholder)的需求。涉众(Stakeholder)指参与软件系统项目的人员,包括项目经理,程序员,市场营销人员,消费者与使用者等。理念(Rationale)指权衡存在下的策略。该定义反映了对运行时结构的实际影响因素,是为了使软件体系结构研究能将学术与实际应用联系起来。v 瑞典Blekinge技术学院的Bosch在2000年则对软件体系结构给出了如下的定义:The archi
42、tecture of a software system is concerned with the top-level decomposition of the system into its main components.软件系统的体系结构是对系统从顶层分解为主要构件的考量。decomposition 在该定义中,软件体系结构被认为是系统结构的唯一部署,仅关注单一的静态结构。此外需要注意的是,这里的术语component的涵义有所不同,可以被认为是模块基本的执行单元。v2000年Texas大学的Perry&Wolf模型如下:SA=elements,form,rational.该模型中,软
43、件体系结构是由一组元素(elements)构成。这组元素分成3类:处理元素(processing elements)、数据元素(data elements)和连接元素(connecting elements)。软件体系结构形式(form)是由专有特性(properties)和关系(relationship)组成。专有特性用于限制软件体系结构元素的选择,关系用于限制软件体系结构元素组合的拓扑结构。在多个体系结构方案中选择合适的体系结构方案往往基于一组准则(rational)。v 同样在2000年发布的IEEE Std1471-2000,则对软件体系结构做出了如下定义:软件系统的基本组织,包含构件
44、、构件之间、构件与环境之间的关系,以及相关的设计与演化原则等。不仅如此,该标准还对软件体系结构所涉及的相关概念做出了详细定义,例如需求者,架构师,系统涉众等等。v 获取者获取者(acquirer):An organization that procures a system,software product,or software service from a supplier.(The acquirer could be a buyer,customer,owner,user,or purchaser.)软件系统或软件产品的接收方v 架构架构(architecting):The activi
45、ties of defining,documenting,maintaining,improving,and certifying proper implementation of an architecture.定义,编档,维护,改进和验证体系结构正确实现的一组活动v 架构师架构师(architect):The person,team,or organization responsible for systems architecture.负责软件系统体系结构的个人,团队或者组织v 体系结构描述体系结构描述(architectural description):A collection of
46、 products to document an architecture.一组记录软件体系结构的文档v 体系结构体系结构(architecture):The fundamental organization of a system embodied in its components,their relationships to each other,and to the environment,and the principles guiding its design and evolution.软件系统中构件,构件之间的关系,构件与环境之间的关系,以及指导设计和演化的基本组织。v 生命周
47、期模型生命周期模型(life cycle model):A framework containing the processes,activities,and tasks involved in the development,operation,and maintenance of a software product,which spans the life of the system from the definition of its requirements to the termination of its use.围绕整个软件开发过程进行的一组过程和活动,以周而复始的方式存在v
48、软件系统软件系统(system):A collection of components organized to accomplish a specific function or set of functions.组织起来完成某些特定功能的一组构件v 系统涉众系统涉众(system stakeholder):An individual,team,or organization(or classes thereof)with interests in,or concerns relative to,a system.系统利益相关者v 视图视图(view):A representation of
49、 a whole system from the perspective of a related set of concerns.整个系统某个特定角度的表示THU SAGroup70体系结构体系结构模型模型视图视图THU SAGroup71Decomposition PerspectiveRuntime PerspectiveTHU SAGroup72THU SAGroup73THU SAGroup74THU SAGroup75Sequence Diagram(UML)THU SAGroup76Activity Diagram(UML)THU SAGroup77State Diagram(U
50、ML)THU SAGroup78v 软件工厂是一个以计算机为依托,并由计算机控制的程软件工厂是一个以计算机为依托,并由计算机控制的程序编制环境,程序的制作、检查和使用都应当在此环境序编制环境,程序的制作、检查和使用都应当在此环境中,并运用其中的工具来实现。中,并运用其中的工具来实现。v 建设软件工厂是软件工程化生产的大趋势。其实现依赖建设软件工厂是软件工程化生产的大趋势。其实现依赖于对体系结构、模型、方法、工具的研究。于对体系结构、模型、方法、工具的研究。THU SAGroup79THU SAGroup80v 软件生命周期软件生命周期 软件从开发启动启动开始到被放弃为止的过程软件从开发启动启动