
软件体系结构1第1章软件体系结构概述.ppt
72页第1章,软件体系结构概述,刘 伟 (Sunny Liu) weiliu_china@,教学内容,引言 软件体系结构的意义 软件体系结构的定义 软件体系结构的发展 软件体系结构的优势,教材,,教材,,参考资料——软件架构,,参考资料——设计模式,,教学内容,引言 软件体系结构的意义 软件体系结构的定义 软件体系结构的发展 软件体系结构的优势,引言,三个小故事……,故事一: 做“俯卧撑”的大楼 故事二: 著名的美国塔科马海峡大桥 故事三: 瓦萨战舰,引言,做“俯卧撑”的大楼,引言,做“俯卧撑”的大楼,引言,做“俯卧撑”的大楼 根据上海市政府公布的调查结果,房屋倾倒的主要原因是紧贴7号楼北侧在短期内堆土过高,最高处达10米左右与此同时,紧临大楼南侧的地下车库基坑正在开挖,开挖深度达4.6米大楼两侧的压力差使土体产生水平位移,过大的水平力超过了桩基的抗侧能力,导致房屋倾倒山寨版原因之一:此栋楼房系自杀,原因是房价太高,自愧不值,畏罪自杀),引言,著名的美国塔科马海峡大桥(Tacoma Narrows Bridge),引言,著名的美国塔科马海峡大桥(Tacoma Narrows Bridge),引言,著名的美国塔科马海峡大桥(Tacoma Narrows Bridge) 1940年7月1日通车的塔科马海峡大桥是一座主跨853米的悬索桥,桥梁长度1524米,桥下通航净高59.40米,1940年11月7日上午11点15分(美国太平洋时间),戏剧性地被海风摧毁而坍塌,可怜的小狗Tubby随之一同掉落进普及特海峡,成为这次事故的唯一遇难者,后人称之为“桥梁建筑史上的珍珠港”。
对普及特海峡来说,倒塌的大桥也成为了世界上最大的人造礁石之一1940年11月28日,美国海军的水文办公室报告称,桥梁遗骸的地理坐标是(47.16'00“N,122.33'00“W),深度180英尺(55 m)引言,著名的美国塔科马海峡大桥(Tacoma Narrows Bridge) 从20世纪40年代后期开始,围绕塔科马海峡大桥风毁事故的原因后人进行了大量的分析与试验研究桥梁界最后给出的正式结论是震撼而有深远借鉴意义的:“塔科马大桥使用了崭新而没有经过验证的桥梁设计结构,使大桥建成后毁于风力造成的风振 由于桥梁设计(换成IT界的话来讲,就是桥梁的架构)的原因,导致了这样惨痛的工程失败 故事是令人震撼的,背后的教训也是深刻的虽然后续桥梁工程实施的质量无可挑剔,但正是桥梁设计使用了全新的架构,并且该架构没有经过实践的检验,从而导致最终桥梁崩溃性灾难的发生人类所有工程领域的进步都是建立在这样一系列失败的基础之上,并逐渐走向成熟和成功引言,瓦萨战舰,引言,瓦萨战舰 “瓦萨”号战舰是现存最古老的战舰残骸之一,也是世界上第一批风帆炮舰和当时世界最大的炮舰它在处女航中离岸10多分钟就沉没了,其终点是水下30米,当时船上150人中有数十人丧生。
直到300多年后,它才被打捞上岸 1628年8月10日,斯德哥尔摩码头人头攒动,人们都在焦急地等待,翘首企盼着堪称世界最顶级的“瓦萨”号战舰引言,瓦萨战舰 “瓦萨”号首航仅仅10多分钟就结束了其建造过程中埋下的很多隐患:安置太多重炮却没有足够的压舱物,导致战舰重心过高;首航前没有经过严格测试等等,都是“瓦萨”号沉没的罪魁但因为一切都是依照国王的要求建造的,所以,这个轰动一时的沉船事件最后也就不了了之引言,瓦萨战舰 瓦萨战舰的故事虽然发生在370多年前,但却很好地说明了软件架构的重要性:系统需求来自于企业目标,架构来自于系统需求,系统来自于架构 构架与设计师的经验、当时的技术水平有着密切的联系瓦萨战舰的设计师Henrik Hybertsson虽然是当时享有盛誉的知名设计师,但是无论从他本人的经验(从未设计过类似规模的战舰)还是当时的技术水平来看,都不具备相应的条件引言,看一组数字……,引言,建筑行业 华盛顿州立大学计算机系某项目——延误几个月且超支2050万美元(计算机科学与工程大楼建设项目不是软件项目,Sanchez 1998) 西雅图水手队棒球馆——1995年估算成本2亿5千万美元,它最后建成于1999年,耗资5亿1700万美元(Withers 1999) 波士顿Big Dig公路(美国历史上最昂贵的公路项目)建造项目,最初估算成本为26亿美元,最终成本总计超过150亿美元(Associated Press 2003) ……,引言,软件行业 爱尔兰人力资源管理系统(Personnel Payroll and Related Systems, PPARS)——最初的预算为880万欧元,在成本超支达到1亿4千万欧元后被取消(The Irish Times 2005) 美国联邦调查局(FBI)虚拟案件档案(Virtual Case File, VCF)系统——在花费了1亿7千万美元却只交付了1/10的计划功能的情况下被搁置(Arnone 2005),该项目更换了5任信息总监和10位项目经理,合同变更36次(Knorr 2005) ……,教学内容,引言 软件体系结构的意义 软件体系结构的定义 软件体系结构的发展 软件体系结构的优势,软件体系结构的意义,简单VS复杂,,隐藏在简单背后的复杂,软件体系结构的意义,曲线一——全球IT从业人员数量,软件体系结构的意义,曲线二——每年新产生或修改的源代码行数(开发/累积),软件体系结构的意义,曲线三——单个程序员年生产效率,软件体系结构的意义,,,,Higher technical complexity - Embedded, real-time, distributed, fault-tolerant - Custom, unprecedented, architecture reengineering - High performance,Lower technical complexity - Mostly 4GL, or component-based - Application reengineering - Interactive performance,Higher management complexity - Large scale - Contractual - Many stake holders - “Projects”,Lower management complexity - Small scale - Informal - Single stakeholder - “Products”,,,An average software project - 5-10 people - 3-9 month duration - 3-5 external interfaces - Some unknowns & risks,软件体系结构的意义,技术的复杂性,Assembly Fortran/COBOL Simula C++ Java Naked HW BIOS OS Middleware Domain-Specific Waterfall Spiral Iterative Agile Procedural Object Oriented Service Oriented Early tools CLE IDE XDE CDE Individual Workgroup Organization,Languages: Platforms: Processes: Architecture: Tools: Enablement:,软件体系结构的意义,建造一个狗窝,Can be built by one person Requires Minimal modeling Simple process Simple tools,软件体系结构的意义,建造一栋别墅,Built most efficiently and timely by a team Requires Modeling Well-defined process Power tools,软件体系结构的意义,建造摩天大楼,???,软件体系结构的意义,建模,软件体系结构的意义,建模,软件体系结构的意义,建模,软件体系结构的意义,需求实现,Architecture,教学内容,引言 软件体系结构的意义 软件体系结构的定义 软件体系结构的发展 软件体系结构的优势,软件体系结构的定义,定义 目前还没有一个标准的,普遍接受的定义 “ bridging the gap between requirements and implementations…” (David Garlan & Dewane Perry),软件体系结构的定义,定义,,CODE,,,implementation,design,architecture,,,Architectural decisions are the most fundamental decisions; changing them will have significant ripple effects.,软件体系结构的定义,定义* SEI软件体系结构讨论群定义如下:一个程序/系统构件的结构,它们之间的相互关系, 以及在设计和交付的整个过程中的原则和指导方针。
一般来说,软件体系结构定义需要考虑到系统中的构件及其它们之间的相互作用软件体系结构的定义,定义 Kruchten指出,软件体系结构具有四个角度,它们从不同方面对系统进行描述,其中概念角度描述系统的主要构件及它们之间的关系;模块角度包含功能分解与层次结构;运行角度描述了一个系统的动态结构;代码角度描述了各种代码和库函数在开发环境中的组织软件体系结构的定义,定义 David Garlan和Dewne Perry于1995年在IEEE软件工程学报上采用如下的定义:软件体系结构是一个程序/系统各构件的结构、它们之间的相互关系以及进行设计的原则和随时间进化的指导方针软件体系结构的定义,定义 Barry Boehm和他的学生提出,一个软件体系结构包括一个软件和系统构件,互联及约束的集合;一个系统需求说明的集合;一个基本原理用以说明这一构件,互联和约束能够满足系统需求软件体系结构的定义,定义 1997年,Bass,Ctements和Kazman在《实用软件体系结构》一书中给出如下的定义:一个程序或计算机系统的软件体系结构包括一个或一组软件构件、软件构件的外部的可见特性及其相互关系其中,“软件外部的可见特性”是指软件构件提供的服务、性能、特性、错误处理、共享资源使用等。
软件体系结构的定义,定义* Mary Shaw和David Garlan认为软件体系结构包括构成系统的设计元素的描述,设计元素的交互,设计元素组合的模式,以及在这些模式中的约束 软件体系结构包括构件(Component)、连接件(Connector)和约束(Constrain)或配置(Configuration)三大要素软件体系结构的定义,定义 Mary Shaw和David Garlan,Professor of Computer Science at Carnegie Mellon University,Professor of Computer Science at Carnegie Mellon University,软件体系结构的定义,定义,软件体系结构的定义,定义* 国内普遍接受的定义:软件体系结构包括构件、连接件和约束,它是可预制和可重构的软件框架结构 构件是可预制和可重用的软件部件,是组成体系结构的基本计算单元或数据存储单元 连接件也是可预制和可重用的软件部件,是构件之间的连接单元 构件和连接件之间的关系用约束来描述 软件体系结构 = 构件 + 连接件 + 约束,软件体系结构的定义,构件 构件是指一个计算单元。












