软件架构与架构建模技术
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7.1.2软件架构的发展史
经历了4个阶段:(1) “无体系结构”设计阶 段:以汇编语言进行小规模应用程序开发为 特征;(2) 萌芽阶段:出现了程序结构设计 主题,以控制流图和数据流图构成软件结构 为特征;(3) 初级阶段:出现了从不同侧面 描述系统的结构模型,以UML为典型代表; (4) 高级阶段:以描述系统的高层抽象结构 为中心,不关心具体的建模细节,划分了体 系结构模型与传统的软件结构的界限,该阶 段以Kruchten提出的“4+1”模型为标志。
7.2.2 面向对象模式
1、面向对象模式的基本结构
对象 对象 数据或模块 过程调用 对象
对象
对象
18:41
12
7.2.2 面向对象模式
2、面向对象模式的优点 面向对象系统具有如下4个基本特征:信息隐藏、数据抽象、动态汇集 和继承性,其优点大致归纳为以下几方面: (1)高度模块化,系统中的每个对象都是功能和数据独立的单元,对 象之间的联系是明确的和可预知的。 (2)功能封装、信息隐藏,用户不必知道对象的内部状态,只需了解 其功能描述就可以使用。因为对象对其它对象隐藏它的表示,所以可 以改变一个对象的表示,而不影响其它的对象。 (3)可重用性好,面向对象的继承性提供了一种代码共享的手段,可 以避免重复的代码设计。 (4)灵活性 ,对象可以根据自身的特点进行功能实现,提高了系统 的灵活性。 (5)系统易维护,面向对象的封装性决定了类和对象内聚性,从而将 可能出现的错误限制在对象内部,不会向外传播,易于检错和修改, 对某个对象中错误的修改也不会导致其它对象代码失效。 (6)可扩充性好,面向对象系统可以通过继承机制不断扩充功能,这 种增量式的功能扩充方式不会影响原有系统的运行。
ห้องสมุดไป่ตู้
7.1.2软件架构的发展史
20世纪80年代初到90年代中期,是面向对象开发 方法兴起与成熟阶段。
90年代以后则是基于构件的软件开发阶段,该阶段 以过程为中心,强调软件开发采用构件化技术和体 系结构技术,要求开发出的软件具备很强的自适应 性、互操作性、可扩展性和可重用性。此阶段中, 软件架构已经作为一个明确的文档和中间产品存在 于软件开发过程中,同时,软件架构作为一门学科 逐渐得到人们的重视,并成为软件工程领域的研究 18:41 5
7.1.2软件架构的发展史
20世纪70年代以前 ,此阶段系统规模较小 ,很少明确考虑系统结构,一般不存在系统 建模工作。
70年代中后期,由于结构化开发方法的出现 与广泛应用,软件开发中出现了概要设计与 详细设计,而且主要任务是数据流设计与控 制流设计。因此,此时软件结构已作为一个 明确的概念出现在系统的开发中。 18:41 4
7.2.1 管道和过滤器模式
3、管道和过滤器模式的不足 采用管道和过滤器模式的系统也存在着若干不利因素。 (1)通常导致进程成为批处理的结构。这是因为虽然过滤 器可增量式地处理数据,但它们是独立的,所以设计者必 须将每个过滤器看成一个完整的从输入到输出的转换。 (2)不适合处理交互的应用。当需要增量地显示改变时, 这个问题尤为严重。这样的系统几乎无法显示系统数据流 细微的变换过程。 (3)因为在数据传输上没有通用的标准,每个过滤器都增 加了解析和合成数据的工作,这样就导致了系统性能下降 ,并增加了编写过滤器的复杂性。
7.1从设计模式到软件架构
随着软件系统越来越复杂和庞大,对数据结构及算 法的选择在许多情况下成为较次要的部分,代码级 别的软件复用已经远远不能满足大型软件开发的需 求。而对整个系统的设计和描述变得越来越重要。 由此便产生了软件架构(Software Architecture) 这一概念,软件架构是软件设计抽象的进一步发展 ,它使得软件开发人员视野更加开阔,满足了更好 地理解软件系统,更方便地开发更大、更复杂的软 件系统的需要。 18:41 1
18:41 6
7.2经典软件架构模式
人们在软件开发实践中总结出了许多软件架 构模式,这些模式在提出后得到了不断的修 正和完善,逐渐成为人们选择软件架构时首 先考虑的模式,因此称为经典软件架构模式 。
18:41
7
7.2.1 管道和过滤器模式
1、管道和过滤器模式的基本结构
过滤器 管道 Filter Filter Filter Filter Filter
7.1.1软件架构的定义
虽然软件架构已经在软件工程领域中有着广 泛的应用,但迄今为止还没有一个被大家所 公认的定义。许多专家学者从不同角度和不 同侧面对软件架构进行了刻画。
18:41
2
7.1.1软件架构的定义
我们将使用软件架构的下列定义:
软件架构为软件系统提供了一个结构、行为 和属性的高级抽象,由构成系统的元素的描 述、这些元素的相互作用、指导元素集成的 模式以及这些模式的约束组成。软件架构不 仅指定了系统的组织结构和拓扑结构,并且 显示了系统需求和构成系统的元素之间的对 应关系,提供了一些设计决策的基本原理。3 18:41
Filter
18:41
8
7.2.1 管道和过滤器模式
2、管道和过滤器模式的优点 管道和过滤器模式的软件架构具有许多很好的特点: (1)使得软构件具有良好的隐蔽性和高内聚、低耦合的特 点; (2)允许设计者将整个系统的输入/输出行为看成是多个 过滤器的行为的简单合成; (3)支持软件重用。只要提供适合在两个过滤器之间传送 的数据,任何两个过滤器都可被连接起来; (4)系统维护和增强系统性能简单。新的过滤器可以添加 到现有系统中来;旧的可以被改进的过滤器替换掉; (5)允许对一些属性如吞吐量、死锁等的分析; (6)支持并行执行。每个过滤器是作为一个单独的任务完 18:41 9 成,因此可与其它任务并行执行。
18:41 10
7.2.1 管道和过滤器模式
4、模式实例 一个特征显著的实例是传统的编译器。传统的编译器一直 被认为是一种管道系统,在该系统中,一般包含四个阶段 即:词法分析、语法分析、语义分析和代码生成,每一个 阶段的输出是另一个阶段的输入。
词法分析
语法分析
语义分析
代码生成
18:41
11