软件体系结构笔记
L1.pdf
- 课程简介
- 源起...
- 现状
- 系统分析员遇到的困境
- 解决之道
- 基于软件体系结构的开发
- 示意图
- 软件体系结构的生命周期
- 体系结构的非形式化描述
- 通常使用自然语言描述概念和原则
- 该阶段是创造性和开拓性
- 需要与软件用户进行不断地交互
- 体系结构的规范描述和分析
- 运用合适的形式化理论对上一阶段的非形式化描述进行规范定义
- 要求做到:无歧义、无思索、安全性、灵活性等
- 体系结构的求精及验证
- 大型复杂软件的体系结构设计总是从抽象到具体的过程,需要逐步细化、求精
- 求精过程中需要不断的验证,以判断所的具体体系结构与求精前的体系结构是否语义一致
- 体系结构的实施
- 求精后的体系结构用于系统的设计中,将软件中的构件component与连接件connector有机的结合,获得系统设计的总体框架
- 体系结构的演化和扩展
- 软件在使用过程中,用户可能提出新的非功能性需求,如性能、容错、安全性、互操作性、自适应性等
- 由于软件的需求的增加和改变而导致的软件体系结构的改变,称为演化和扩展。
- 体系结构的提供、评价和度量
- 在软件体系结构用于系统设计之后,根据系统实际的运行情况,对软件体系结构展开的定性的评价和定量的度量;有利于软件体系结构的重用(包括设计重用和构件重用)和知识积累
- 体系结构的终结
- 经过多次演化和修改后的体系结构,容易变得难以维护和理解,难以达到系统设计的要求。此时该体系结构就应该被抛弃,重新构造新的体系结构,这一过程称为体系结构的终结。
- 经过多次演化和修改后的体系结构,容易变得难以维护和理解,难以达到系统设计的要求。此时该体系结构就应该被抛弃,重新构造新的体系结构,这一过程称为体系结构的终结。
- 体系结构的非形式化描述
- 软件体系结构的发展阶段
- "无体系结构"设计阶段
- 软件开发以汇编为主,编程是少数科学家的游戏
- 软件应用以军用和科学计算为主
- 软件规模下,很少明确考虑体系结构
- 萌芽阶段
- 提出了结构化的变成思想
- 软件工程的思想被广泛应用
- 出现了一批结构化程序设计语言,包括pascal,ada语言等
- 软件体系结构已经称为系统开发中的一个明确概念
- 初级阶段
- 面向对象技术的提出,出现数十种支持软件开发的面向对象方法,如Booch,Coad/Yourdon等
- 各种面向对象语言如C++的出现
- 软件已对象为基本元素,系统由离散的对象构成
- 统一建模语言URL提出
- 高级阶段
- 软件开发强调构件化技术和体系结构技术
- COM、CORBA、EJB、WEbservice的提出
- 软件=构件+基于体系结构的构件组装
- 体系结构作为开发文档和中间产品,开始出现在软件开过程中。
- 四个阶段总结
- "无体系结构"设计阶段
L2.pdf
- 课程简介-----软件体系结构的定义、研究内容及意义
- 软件体系结构定义
- 众说纷纭的定义
- 软件体系结构定义:Bonch define 软件体系结构={ 组织、元素、子系统、风格}
- 不同定义总结
- 软件体系结构定义了构件componet
- 任何实际系统都可以看作由构件及其相互关系组成
- 构件可以是对象、进程、库、商品软件、数据库或者其他更广泛的模块
- 构件的基本特性是:独立、封装、重用
- 软件体系结构的主要研究内容
- 体系结构理论模型的研究
- 体系结构描述的研究
- 体系结构设计研究
- 体系结构分析与验证
- 基于体系结构的软件开发过程
- 特定领域的体系结构框架
- 体系结构的评价方法
- 软件体系结构的意义
- 有利于系统分析
- 有利于软件开发
- 有利于软件复用
- 有利于软件系统的演化
L3.pdf
- 课程简介------构件相相关概念
- 构件定义,特征信息
- 定义:构件时具有一定功能、可明确辨识的数据单位或计算单元
- 常见构件、构件的分类$1模块、对象、过滤器、过程、数据文件、数据库、文档 $2:独立而成熟的构件、有限制的构件、适应性构件、装配的构件、可修改的构件
- 构件的开发
- 从现有构件库中获取符合要求的构件,直接使用或者经过简单修改,得到可重用的构件
- 通过遗产工程,将具有潜在重用价值的构件提取出来
- 从市场购买现成的商品软件或者第三方厂商开发的中间件
- 基于COM、CORBA、WebService等技术规范,自行开发所需的构件
- 构件的组织和检索
- 关键字组织法
- 刻面facet组织法
- 超文本组织法
- 构件的组装
- 基于功能的组装技术
- 基于数据的组装技术
- 基于对象的组装技术
L4.pdf
- 课程简介
- 4+1模型概述
- 逻辑视图
- 进程视图
- 开发视图
- 物理视图
- 场景视图
- 4+1模型文档
- 小结
L4a.ppt
- 课程简介
- 4+1实例:一个简单ATM系统
- 场景视图
- 逻辑视图
- 开发视图
- 进程视图
- 物理视图
- 4+1模型开发迭代方法
L4b.ppt
- 课程简介
- 用例模型
- 参与者
- 用例
- 用例-参与者关系
- 用例描述
- 一个简单的用例文档
L5.ppt
- 课程简介-------体系结构风格(一)
- 概述
- 定义:一些特定的元素按照特定方式组成的结构,它有利于解决上下文环境里的问题
-
程序设计样式 设计模式 体系结构风格 重点 开发原则、可实现性 重用、概念完整性 重用、概念完整性 抽象层次 程序 构件 体系结构 使用 直接可用 直接可用 有约束和指导作用 - 体系结构风格作用:1.促进设计重用;2.带来代码重用;3.使系统易于理解;4.有利于系统的互操作性;
- 管道过滤器风格
优点:- 允许构造松散结构的系统
- 过滤器的重用很方便
- 易于扩展和修改
缺点:- 导致批处理风格的系统设计
- 交互性不强
- 同步比较困难
- 应用方位比较狭隘
- 仓库风格和黑板风格: a.知识源;b.黑板数据结构;c.控制器;
- 优点:
- 便于多客户共享大量数据,它们不用关心数据何时有的、谁提供的、怎样提供的;
- 既便于添加新的作为知识源代理的应用程序,也便于扩展共享的黑板数据结构;
- 缺点:
- 不同的知识源代理对于共享数据结构要达成一致,而且,这也造成对黑板数据结构的修改较为困难——要考虑到各个代理的调用
- 需要一定的同步/加锁机制保证数据结构的完整性和一致性,增大了系统复杂度
- 分层系统风格
- 优点:
- 由于对层次的邻接层数目进行了限制,所以系统易于改进和扩展;
- 每一层的软件都易于重用,并可为某一层次提供多种可互换的具体实现
- 分层系统所支持的设计体现了不断增加的抽象层次,这样,一个复杂问题的求解被分解为一系列递增的步骤
- 缺点:
- 系统的分层可能会带来效率方面的问题;
- 应当如何界定层次间的划分是一个较为复杂的问题。
- 客户端服务器风格
- 优点:
- 有利于分布式的数据组织;
- 构件间是位置透明的,客户和服务器都不用考虑对方的运行位置;
- 便于异质平台间的融合与匹配,客户和服务器可以运行不同操作系统;
- 具有良好的可扩展性,易于对服务器进行修改、扩展或增加服务器;
- 缺点:
- 客户必须知道服务器的访问标识,否则很难知道有哪些可用服务。
L6.ppt
- 课程简介-------体系结构风格(二)
- 分层系统风格实例
- 数据抽象和面向对象风格
- 优点:
- 隐藏实现细节
- 继承性,有利于重用
- 缺点:
- 过程调用依赖于对象标识的确定
- 不同对象的操作关联性差
- 基于事件的风格
- 优点:
- 事件广播者不必知道哪些部件会被事件影响
- 有利于软件复用,任何构件均可以注册其相关事件
- 系统演化、升级比较简单
- 缺点:
- 构件的调用不是主动的
- 系统正确性难以推理
- 模型-视图-控制器风格
- 优点:
- 简化系统设计
- 界面友好
- 缺点:
- 使用范围比较狭隘,局限在用户界面软件开发领域
- 解释器风格(虚拟机风格)
- 优点:
- 应用程序的可移植性和程序设计语言的跨平台能力
- 对硬件进行仿真
- 缺点:
- 效率比较低
- 信息系统的参考模型
- 体系结构风格的选择
L7.ppt
- 课程简介-------P2P结构
- 传统CS结构的问题
- P2P介绍
- 对等网络的基本知识
- 混合P2P结构
- 纯P2P结构
- 纯P2P结构:Gnutella
- 每个节点的结构
- 节点间数据的传输的原理
- P2P进一步演化的问题