软件架构设计讲义

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2019/4/18
成都信息工程学院
16

架构不是框框—应用架构的基本思想
一个架构是一个可复用的设计构 件,它规定了应用的体系结构, 阐明了整个设计、协作构件之间 的依赖关系、责任分配和控制流 程。
2019/4/18
成都信息工程学院
17
软件的总体结构主要回答的问题
•软件的组成部分 •软件的层次关系 •模块的内部处理逻辑 •模块之间的界面

后人精简Garlan and Shaw的定义为:
体系结构 = 组件 + 连接件 + 约束
Architecture = Components + Connectors + Constrains
2019/4/18
成都信息工程学院
11
SA之重要

最早指出SA的重要性 的是大师Edsger Dijkstra(1930-2002)
2019/4/18 成都信息工程学院 37
Control Flow vs. Data Flow

Control Flow (typical case in procedural systems)
主要问题是控制点怎样在程序 或系统之间移动 数据可能跟着控制走,但是并 不起推动系统运转的作用 关注的核心是计算顺序
为什么要进行体系结构开发?




领域内的软件结构一致性好; 建立更加开放的系统; 重用代码大大增加; 软件设计人员要专注于对领域的了解,使 需求分析更充分; 存储了经验; 允许采用快速原型技术; 有利于在一个项目内多人协同工作; 大粒度的重用使得平均开发费用降低;
2019/4/18 成都信息工程学院 26
成都信息工程学院
5
2.2从需求定义到软件体系结构
2019/4/18
成都信息工程学院
6
软件设计的目标和目的
软件需求:解决“做什么” 软件设计:解决“怎么做”
软件结构设计的任务 映射 问题结构(软件需求) 软件结构
2019/4/18
成都信息工程学院
7
2.2.1


什么叫软件的体系结构
目标:使普通人能做以前只有 专家圣手才能做的事情
2019/4/18 成都信息工程学院 2
工程的进化
2019/4/18
成都信息工程学院
3
工程化的步伐
手工(Craft)
行家里手和业余天才 直觉与强力 偶然的进步
商业(Commerical)
熟练的工匠 既定程序 注重实效地优化
工程(Professional Engineering)
2019/4/18 成都信息工程学院 18
软件体系结构
软件体系结构包括两部分: (1)过程构件(模块)的层次结构 (2)数据构件
软件体系结构学习主要内容
• 软件体系结构的有关概念 • 软件体系结构的层次性
• 软件体系结构的设计原理
2019/4/18
成都信息工程学院
20
普通部件及其支持的相互作用
序 部件类型 号 1 模块(Module) 2 对象(Object) 3 过滤器(Filter) 4 5 6 7 部件支持的相互作用类型
过程调用、数据共享 方法调用 数据流 消息传递、远程调用、 过程(Process) 通讯协议、同步 数据文件(Data file) 读写 数据库(Database) 模式、查询语言 文档(Document) 共享表示假设
我国伟大的教育家、思想家 陶行知

提出了“生活即教育”、“社会即学校”、 “教学做合一”三大教育主张。


“千教万教教人求真,千学万学学做 真人” “有其内必形诸外” “勿以恶小而为之,勿以善小而不为”
成都信息工程学院 1
2019/4/18
什么是“工程”?
定义有很多,通常来说:
用最少的代价解决问题 ... ... 目的是处理实际的难题 ... ... 以科学知识为手段 ... ... 建造工具 ... ... 服务于人类
“..the larger the
project, the more essential the structuring!”(1968)
http://www.cs.utexas.edu/users/EWD/ http://www.cs.utexas.edu/users/EWD/ewd01xx/EWD196.PDF
2019/4/18 成都信息工程学院 31
⑵ 参数化模型类:这一类别的风 格包括对特定应用领域的特定系 统组织,它指定了构件及其交互 的配置,如词法分析器,类型分 析器,优化器和代码生产器,还 有一些参考模型,如人机交互框 架,通信参考模型,以及在航空、 移动机器人等领域的大量特定领 域方法。
2019/4/18 成都信息工程学院 32


成功的架构开发需要确定领域专用的“热点” (Hot spot)。应用开发者在框架的基础上进行 开发,只须扩展架构的某些部分,“热点”就 是在应用领域的一种扩展槽,开发者根据自己 的需要填充这些扩展槽 “食谱” (Cookbook)就是描述如何使用架构 方法的文档。在“食谱”中包含了许多“烹饪” 方法,这些“烹饪”方法相当于一些具体的操 作步骤,描述了为解决某一专门问题如何使用 架构的详细方法。架构的内部设计和实现细节 通常不出现在“食谱”中。

2019/4/18

成都信息工程学院
14
技术进步

每个新的体系结构的诞生,都给技术的 进步带来深远影响



WWW 三层结构 CORBA J2EE .NET
2019/4/18
成都信息工程学院
Leabharlann Baidu
15
什么是软件体系结构

软件体系结构定义了软 件局部和总体计算部件的构 成,以及这些部件之间的相互 作用关系。
软件体系结构,又常被称为构架。
“软件体系结构”你早就知道 Client/Server Three-tier P2P Distributed ……
2019/4/18
成都信息工程学院
8
“建筑体系结构”
2019/4/18
成都信息工程学院
9
“建筑体系结构”
2019/4/18
成都信息工程学院
10
SA的定义
体系结构风格的最关键四个要素

提供一个设计的词汇表 定义一套配置规则 定义一套解释原则 定义基于这种风格的系统所进行的分析。
2019/4/18
成都信息工程学院
33
2.3.2

常用的软件体系结构风格
1、 管道和过滤器风格
在管道/过滤器风格的软件体系 结构中,每个构件都有一组输入 和输出,构件读输入的数据流, 经过内部处理,然后产生输出数 据流。
与软件体系结构有关的研究:
• 体系结构风格(Architecture Styles)
表示软件系统的一种特别的基本结构,以及相 关的构造方法
• 设计模式(Design Patterns)
构造型模式、结构型模式、行为型模式
• 框架(Framework)
另一种研究和构造软件体系结构的方法,更多 的是关于应用领域问题的已建立的系统结构。
2019/4/18 成都信息工程学院 23
好的体系结构

与大多数好的设计一样 是一系列相容的原理和技术的产 物,在项目的各个阶段保持一致 在各种变化面前表现出弹性 在产品的整个生命周期中充当向 导 重用成熟的工程知识
成都信息工程学院 24
2019/4/18


除了构件,连接件和约束 3 个最基本的 组成元 素 , 软 件 体 系 结 构 还 包 括 端 口 (port)和角色(role)两种元素。 构件的接口由一组端口组成 ,每个端口 表示了构件和外部环境的交互点。连接 件作为建模软件体系结构的主要实体, 同样也有接口。连接件的接口由一组角 色组成,连接的每个角色定义了该连接 表示的交互的参与者。
2019/4/18
成都信息工程学院
30
2.3 软件体系结构的风格

软件体系结构风格主要分为两类。
⑴ 固定术语类:包括全局组织结构,如分层
系统,管道过滤器系统,客户/服务系统, 黑板系统等,还包括局部化的模式,如 模型-视图-控制等其他面向对象开发 的模式。全局化的模式是在软件全局上 提供设计方式;而局部化的模式则侧重 于软件系统的一小部分,是针对特定问 题提供解决方案。
受过系统教育的专业人 员 分析与理论 以科学为指导地升级换 代
不经意的推广
奢侈地使用原料
言传身教
注重成本与原料利用
专业教育课程
原料多次利用
生产是为了使用而不是 为销售而生产 出售
2019/4/18 成都信息工程学院
市场份额
4
规范化循环
土方法 专门的解决方法 实践提高 新的问题 模型与理论 规范化
2019/4/18

2019/4/18
成都信息工程学院
41
对于系统中数据和状态的控制方 法有两种。 (1)输入事务选择进行某种处理, 并把执行结果作为当前状态存储 到中央数据结构中,这时,仓库 是一个传统的数据库体系结构 (2)另一种方法是,由中央数据结 构的当前状态决定进行某种处理, 这时,仓库是一个黑(blackboard) 体系结构。
2019/4/18 成都信息工程学院 34
过滤 器 过滤 器
管道
过滤 器
过滤 器 管 道
过滤 器
管 道
过滤 器
管 道
Three Examples of Data Flow

Batch Sequential(批处理) Pipe-and-Filter(管道) Process Control(控制)

好的开始相当于成功一半 设计模式是支撑架构的重要组件 架构设计是骨架,设计模式就是肉
时刻牢记架构设计的目标 1. 最大化的重用: 2. 尽可能的简单明了: 3. 最灵活的拓展性:
2019/4/18
成都信息工程学院
27
框架和设计模式
构件通常是代码重用,而设计模式是设计重用, 框架则介于两者之间,部分代码重用,部分设 计重用,有时分析也可重用。 有三种级别的重用: (1)内部重用,即在同一应用中能公共使用的抽 象块; (2)代码重用,即将通用模块组合成库或工具集, 以便在多个应用和领域都能使用; (3)应用框架的重用,即为专用领域提供通用的 或现成的基础结构,以获得最高级别的重用 性。




设计模式是对在某种环境中反复出现的 问题以及解决该问题的方案的描述,它 比框架更抽象; 架构可以用代码表示,也能直接执行或 复用,而对模式而言只有实例才能用代 码表示; 设计模式是比架构更小的元素,一个架 构中往往含有一个或多个设计模式,架 构总是针对某一特定应用领域,但同一 模式却可适用于各种应用。
2019/4/18
成都信息工程学院
36
Patterns of Data Flow in Systems
In general, data can flow in arbitrary patterns(一般情 况,数据的流向无序) Often we are primarily interested in nearly linear data flow systems(我们主 要研究近似线性数据流) or in very simple, highly constrained cyclic structures (或者是在限度内的循环数 据流)
2019/4/18 成都信息工程学院 12
程序=?



程序 = 算法 + 数据结构(1960’s ) 程序 = 子程序 + 子程序(1970’s ) 对象 = 算法 + 数据结构 程序 = 对象 + 对象(1980’s) 程序 = 组件 + 连接件(1990’s)
2019/4/18
成都信息工程学院
13
SA发展



1980’s 使用非正式的框图 依靠专家的特定经验 不规范、多样地使用体系结构模式和风格 1990’s 认识到了体系结构的价值 开发过程中要求体系结构文档,并开始体系结构评 审 产品化、商业化的体系结构标准和组件集成框架开 始出现 规范化体系结构设计中的词汇、符号和工具 软件体系结构的书籍和课程 2000’s

2019/4/18 成都信息工程学院 38
Open Loop Control(开环控制)
2019/4/18
成都信息工程学院
39
Closed Loop Control(闭环控制)
2019/4/18
成都信息工程学院
40
2、仓库风格和黑板风格
仓库(Repositories)风格的体系结构有 两种不同的构件组成: (1)中央数据结构,它说明当前状态; (2)独立构件的集合,它对中央数据结构 进行操作。
2019/4/18 成都信息工程学院 21
软件体系结构可分为四种不同的体系:
• 概念结构
包括部件、互连、原则和性能等
• 代码结构
包括软件的配置管理、系统建造等
• 模块结构
包括模块界面、模块管理、模块控制和一致性等
• 执行结构
包括性能分析、调度分析、动态配置和不同的 执行系统之间的接口等 2019/4/18 22 成都信息工程学院
相关文档
最新文档