资源描述
第 1章 软件体系结构概述 刘 伟 (Sunny Liu) weiliu_ 教学内容 引言 软件体系结构的意义 软件体系结构的定义 软件体系结构的发展 软件体系结构的优势 教材 教材 参考资料 软件架构 参考资料 设计模式 教学内容 引言 软件体系结构的意义 软件体系结构的定义 软件体系结构的发展 软件体系结构的优势 引言 三个小故事 故事一: 做“俯卧撑”的 大楼 故事二: 著名的美国塔科 马海峡大桥 故事三: 瓦萨战舰 引言 做“俯卧撑”的大楼 引言 做“俯卧撑”的大楼 引言 做“俯卧撑”的大楼 根据上海市政府公布的调查结果,房屋倾倒的主要原因是紧贴 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.1600N, 122.3300W),深度 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从业人员数量 Nu m be r o f I T pr o f e s s i o n a l s w o r l dw i de y = - 1 2 8 . 4 7 x 3 + 1 2 8 0 0 x 2 - 5 9 2 9 4 x + 1 4 6 6 2 3 0 2 , 0 0 0 , 0 0 0 4 , 0 0 0 , 0 0 0 6 , 0 0 0 , 0 0 0 8 , 0 0 0 , 0 0 0 1 0 , 0 0 0 , 0 0 0 1 2 , 0 0 0 , 0 0 0 1 4 , 0 0 0 , 0 0 0 1 6 , 0 0 0 , 0 0 0 1 9 4 5 1 9 4 8 1 9 5 1 1 9 5 4 1 9 5 7 1 9 6 0 1 9 6 3 1 9 6 6 1 9 6 9 1 9 7 2 1 9 7 5 1 9 7 8 1 9 8 1 1 9 8 4 1 9 8 7 1 9 9 0 1 9 9 3 1 9 9 6 1 9 9 9 2 0 0 2 2 0 0 5 Nu m be r o f I T pr o f e s s i o n a l s w o r l dw i de ( a s s u m pt i o n s ) P o l y . ( Nu m be r o f I T pr o f e s s i o n a l s w o r l dw i de ( a s s u m pt i o n s ) ) 软件体系结构的意义 曲线二 每年新产生或修改的源代码行数(开发 /累积) Ne w o r m o di f i e d s o u r c e l i n e s o f c o de pe r y e a r pe r de v e l o pe r 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 软件体系结构的定义 定义 软件体系结构的定义 定义 * 国内普遍接受的定义:软件体系结构包括 构件、连接件 和约束 ,它是 可预制 和 可重构 的软件框架结构。 构件 是可预制和可重用的软件部件,是组成体系结构的基 本计算单元或数据存储单元 连接件 也是可预制和可重用的软件部件,是构件之间的连 接单元 构件和连接件之间的关系用 约束 来描述 软件体系结构 = 构件 + 连接件 + 约束 软件体系结构的定义 构件 构件是 指一个计算单元或者数据存储单元,可以是一个 处理过程或数据元素 。 构件是用于实现计算和状态的单元 ,可以工作在:客户 端、服务器端、数据库或层等。 构件可简单可复杂:复杂构件描述一个系统,一个体系 结构由一些描述系统的复杂构件组成。 软件体系结构的定义 连接件 连接件是体系结构的一个元素,它可以用于建模: 构件之间的相互作用 控制这些相互作用的规则 简单相互作用: 过程的调用 访问共享变量 复杂和语义相关的相互作用: 客户端 -服务器协议 数据库访问协议 异步事件的多点传送 管道数据流 软件体系结构的定义 约束 约束描述了体系结构的配臵和拓扑要求,配臵或拓扑是指构 件和连接件组成的一个连接图,它用于描述软件体系结构的 构成,确定了体系结构的构件与连接件之间的连接关系 : 正确的连接性 并发和分布性 符合设计的启发式和风格规则 教学内容 引言 软件体系结构的意义 软件体系结构的定义 软件体系结构的发展 软件体系结构的优势 软件体系结构的发展 建筑架构的发展 基础研究阶段 软件体系结构的发展 软件架构的发展 基础研究阶段 1985年 -1994年 软件系统的设计人员习惯使用一些没有统一格式和语义的图形来描述系统 的结构。虽然描述的是各自负责的不同类型的系统,但在 描述风格和手段 方面却有着很多共性 ,不同系统之间也有着很多 设计手段或风格上的共性 。 一些重要的基本思想和基础概念开始浮出水面:数据 /信息隐藏和封装、 抽象数据类型、 面向对象软件设计与开发 等 开始尝试一些为了解决 特定行业 、 特定问题 所采用的具有明显针对性的设 计手段和设计结构。 试图识别出通用的 体系结构风格 和设计方式,尝试找到和应用一些通用的 方法来描述不同类型的系统结构 软件体系结构的发展 建筑架构的发展 概念确立阶段 软件体系结构的发展 软件架构的发展 概念确立阶段 1992年 -1996年 设计模式 软件体系结构(架构)基本概念和模型的确立 体系结构描述语言( ADL) 的发展 体系结构表述及分析规则的制定 体系结构 元素及风格 的分类研究 体系结构 评估方法 (如 SAAM等) 架构视图 ( 4+1视图) 软件体系结构的发展 建筑架构的发展 探索发展阶段 软件体系结构的发展 软件架构的发展 探索发展阶段 1995年 -2000年 1995年 IEEE专门针对软件体系结构的特刊 1997年, ACME体系结构交互语言 ,为不同体系结构描述语言之 间的交互提供一个统一的平台 1998年,软件体系结构工作会议 WICSA (Working IEEE/IFIP Conference on Software Architecture) 2000年,软件架构的路线图 架构模式 与设计模式 软件体系结构的发展 软件架构的发展 探索发展阶段 体系结构评估方法的发展: SAAMATAM 经验和成果开始在工业界大规模应用,如 Raytheon公司的 REAP (Raytheon Enterprise Architecture Process) UML (Unified Modeling Language)的发展 RUP (Rational Unified Process) 面向对象软件架构框架 (Architecture Framework)或架构平台 (Architecture Platform): Sun的 Java EE和 Microsoft的 .net Framework 特定领域 的体系结构 基于构件 的软件体系结构 软件体系结构的发展 建筑架构的发展 普及应用阶段 软件体系结构的发展 软件架构的发展 普及应用阶段 2000年至今 新架构风格: N层的 C/S架构、 B/S架构、基于代理的架构、 SOA等 Web Service OMG提出: MDA (Model Driven Architecture) 软件架构师 (Software Architect):比尔 .盖茨(微软首席架构师) 越来越多的软件架构国际性会议召开( 2005年, SEI举办的一系列会议增 加了 25个与软件架构相关的会议),越来越多的架构技术人员参与 美国大学 2000年、中国大学 2001年开始, 软件体系结构进入本科教育 2004年秋天, IEEE和 ACM联合提出 软件工程大学本科教育指南 ,软 件体系结构占软件设计的内容的 20%。 软件体系结构的发展 软件架构的发展 普及应用阶段 微软前首席软件架构师雷 奥兹 PHP之父、雅虎架构师 Rasmus Lerdorf 软件体系结构的发展 软件架构的发展 普及应用阶段 教学内容 引言 软件体系结构的意义 软件体系结构的定义 软件体系结构的发展 软件体系结构的优势 软件体系结构的优势 实例 软件体系结构的优势 容易理解 它从一个 高层设计的抽象层次 来表征一个系统 简化了 我们理解庞大系统的能力 重用 重用大的构件 重用一些集成构件的框架 特定领域的软件体系结构 设计模式 软件体系结构的优势 控制成本 系统维护者可以更好的理解变更带来的影响,因而可以 更加精确的估算变更所需的成本 软件体系结构的优势 可分析性 对系统的一致性检查提供高层次的视图 研究系统是否与某种体系结构风格相符合 对符合特定风格的特定领域系统的体系结构分析 分析依赖于其中的构件 软件体系结构的优势 软件体系结构的优势 http:/ eeles/ http:/www.sei.cmu.edu/architecture/ http:/en.wikipedia.org/wiki/Software_architecture http:/ http:/www.ics.uci.edu/fielding/pubs/dissertation/software _arch.htm 参考资料 END
展开阅读全文