软件体系结构第5章
软件工程导论 第五章总体设计

控制 耦合
耦合性
特征耦 合 公共 耦合 内容 耦合
高
28
注意!!
在软件设计中应该追求尽可能松散耦合的系统。
否则影响系统的可理解性、可测性、可靠性和可
维护性。
29
耦合程度强弱的区分
无耦合:如果两个模块中的每一个都能独立 地工作而不需要另一个模块的存在,那么它 们彼此完全独立,模块间无任何连接。
在可行性研究阶段,软件作为系统的一个完整 部件; 在需求分析期间,软件解法是使用在问题环境 内熟悉的方式描述的; 当由总体设计向详细设计过渡时,抽象的程度 也就随之减少; 最后,当源程序写出来以后,也就达到了抽象 的最低层。 20
5.2.3 逐步求精
定义:为了能集中精力解决主要问题而尽量推迟 对问题细节的考虑。 人类的认知过程遵守Miller法则:一个人在任何时 候都只能把注意力集中在(7±2)个知识块上。
6
3. 推荐最佳方案 • 综合分析对比各种合理方案的利弊,推荐 一个最佳的方案,并且为推荐的方案制定 详细的实现计划。 • 在使用部门的负责人也接受了分析员所推 荐的方案之后,将进入总体设计过程的下 一个重要阶段——结构设计。
7
4.功能分解 • 为确定软件结构,首先需要从实现角度把 复杂的功能进一步分解。结合算法描述仔 细分析数据流图中的每个处理,如果一个 处理的功能过分复杂,必须把它的功能适 当地分解成一系列比较简单的功能。
12
5.2 设计原理
5.2.1 模块化
模块化:把程序划分成独立命名且可独立访问的模块,每个 模块完成一个子功能,这些模块集成起来构成一个整体,可 以完成指定的功能以满足用户的需求。 模块是由边界元素限定的相邻程序元素的序列,而且有一个 总体标识符代表它。模块是构成程序的基本构件。 过程、函数、子程序和宏等,都可作为模块。 面向对象方法学中的对象是模块,对象内的方法(或称为服 务)也是模块。
软件工程导论 第5章 总体设计

第五章总体设计经过需求分析阶段的工作,系统必须“做什么”已经清楚了,现在是决定“怎样做”的时候了。
总体设计的基本目的就是回答“概括地说,系统应该如何实现?”这个问题,因此,总体设计又称为概要设计或初步设计。
通过这个阶段的工作将划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等等,但是每个物理元隶仍然处于黑盒子级,这些黑盒子里的具体内容将在以后仔细设计。
总体设计阶段的另一项重要任务是设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。
总体设计过程首先寻找实现目标系统的各种不同的方案,需求分析阶段得到的数据流图是设想各种可能方案的基础。
然后分析员从这些供选择的方案中选取若干个合理的方案,为每个合理的方案都准备一份系统流程图,列出组成系统的所有物理元素,进行成本/效益分析,并且制定实现这个方案的进度计划。
分析员应该综合分析比较这些合理的方案,从中选出一个最佳方案向用户和使用部门负责人推荐。
如果用户和使用部门的负责人接受了推荐的方案,分析员应该进一步为这个最佳方案设计软件结构,通常,设计出初步的软件结构后还要多方改进,从而得到更合理的结构,进行必要的数据库设汁,确定测试要求并且制定测试计划。
从上面的叙述中不难看出,在详细设计之前先进行总体设计的必要性:可以站在全局高度上,花较少成本,从较抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的软件结构,从而用较低成本开发出较高质量的软件系统。
5.1 设计过程总体设计过程通常由两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构没计阶段,确定软件结构。
典型的总体设计过程包括下述9个步骤:1.设想代选择的方案如何实现要求的系统呢,在总体设计阶段分析员应该考虑各种可能的实现方案,并且力求从中选出最佳方案。
在总体设计阶段开始时只有系统的逻辑模型,分析员有充分的自由分析比较不同的物理实现方案,一旦选出了最佳的方案,将能大大提高系统的性能/价格比。
2011年软考系统架构设计师知识要点第五章

5.1.1 软件架构设计与生命周期1、需求分析阶段需求和 SA设计面临的是不同的对象:一个是问题空间;另一个是解空间。
保持二者的可跟踪性和转换。
2、设计阶段1.传统的设计概念只包括构件,随着研究的深入,构件间的互联机制逐渐独立出来,成为与构件同等级别的实体,称为连接子。
2.体系结构描述语言(Architecture Description Language ADL)对连接子的重视成为区分 ADL和其他建模语言的重要特征之一。
3.不同的视角得到多个视图,组织起来以描述整体的SA模型;不同侧面的视图反映所关注的系统的特定方面,体现了关注点分离的思想。
3、实现阶段团队的结构应该和体系结构模型有一定的对应关系,提高软件开发效率和质量。
分析和记录不同版本构件和连接子之间的演化。
填补高层 SA模型和底层实现之间的鸿沟,典型的方法如下:1.引入实现阶段的概念。
2.SA模型逐步精化。
3.封装底层称为较大粒度构件。
4、构件组装阶段可复用构件组装可以在较高层次上实现系统,研究内容包括:1.如何互联。
2.如何检测并消除体系结构失配问题。
中间件跨平台交互。
产品化的中间件更好地保证最终系统的质量,中间件导向的体系结构风格。
失配是指复用过程中,待复用构件对最终系统的体系结构和环境的架设(Assumption)与实际状况下不同而导致的冲突。
5、部署阶段软件构件的互联性、硬件的拓扑结构、硬件资源占用。
6、后开发阶段实现中的软件往往具有动态性,一类是软件内部执行所导致的体系结构改变,另一类变化是软件系统外部的请求对软件进行的重配置。
升级或进行其他修改时不能停机。
SA重建是指从已实现的系统中获取体系结构的过程。
5.2 基于架构的软件开发方法5.2.1 体系结构的设计方法概述基于体系结构的软件设计(Architecture-Based Software Design ABSD)方法。
体系结构驱动,指构成体系结构的商业、质量、功能需求的组合驱动。
软件体系结构课件第5章统一建模语言

2:GetPrefSet()
10:PrefSet(date_mg)
1:GetPrefSet()
:MeetingInitiator
第5章 统一建模语言 直接使用UML建模 – 会议安排系统的类图
Person
StronglyConflicts With
Conflicts With
Important Attendee
0..* 0..*
0..* Profers
Attendee
1..* 1..* 0..* 0..*
11 1 1
1
Meeting Initiator
Find.exe
Query .dll
部署图 定义系 统中软 硬件的 物理体
系结构
第5章 统一建模语言 部署图
客户端:个人PC QueryClient.exe
服务器
《TCP/IP》 查询
QueryServer.exe 部署图
定义系
统中软
Find.exe
硬件的
物理体
Query.dll系结构
第5章 统一建模语言
第5章 统一建模语言
直接使用UML建模 – UML中的通用表示
➢ 字符串:表示有关模型的信息; ➢ 名字:表示模型元素; ➢ 标号:不同于编程语言中的标号,是用于表示或说明图形符号的字
符串; ➢ 特殊字符串:表示某一模型元素的特性; ➢ 类型表达式:声明属性、变量及参数,含义同编程语言中的类型表
0
10
20
30s 时间刻度
第5章 统一建模语言 状态图
提交订单 已审核 印前处理
客户付钱
已付款
已处理
进行冲印
冲印中 冲印完成
描述满足 用例要求 所要进行 的活动以 及活动间 的完约成束关 系,有利 于识别并 行活动
软件体系结构5 第5章 软件质量属性

外部质量
易用性
易用性是指用户使用软件的容易程度。 现代人的生活节奏快,做什么事都想图个方便。所以把易用性作为 重要的质量属性对待无可非议。导致软件易用性差的根本原因 : 理工科大学教育存在缺陷:没有开设人机工程学、美学、心理学这 些必修课,大部分开发人员不知道如何设计易用的软件产品。开发 人员犯了“错位”的毛病:他以为只要自己用起来方便,用户也就 会满意。软件的易用性要让用户来评价。当用户真的感到软件很好 用时,一股温暖的感觉油然而生,于是就用“界面友好”、“方便 易用”等词来评价软件产品。
外部质量
兼容性
兼容性是指不同产品(或者新老产品)相互交换信息的能力。例如 两个字处理软件的文件格式兼容,那么它们都可以操作对方的文件, 这种能力对用户很有好处。兼容性又称为互操作性。 兼容性的商业规则:弱者设法与强者兼容,否则无容身之地;强者 应当避免被兼容,否则市场将被瓜分。金山软件公司的WPS与微 软的Word之争。WPS一定要与Word兼容,否则活不下去。但是 Word绝对不会与WPS兼容,除非WPS又在中国占有绝对优势。 中国联通和中国移动的手机互联互通问题。(互联网的价值与用户 数量的平方成正比)
质量目标与商业目标
质量定义
古时候人们ห้องสมุดไป่ตู้为长得结实、饭量大就是健康,这显然是不科 学的。现代人总是通过考察多方面的生理因素来判断是否健 康,如测量身高、体重、心跳、血压、血液、体温等。如果 上述因素都合格,那么表明这人是健康的。如果某个因素不 合格,则表明此人在某个方面不健康,医生会对症下药。 软件质量是许多质量属性的综合体现,各种质量属性反映了 软件质量的方方面面。人们通过改善软件的各种质量属性, 从而提高软件的整体质量。
响应度量(Response Measure):以某种方式对其进行度量,对 需求进行测试。
软件工程 第5章--RUP统一开发过程

(3) 制品(Artifact)
制品是过程生产、修改或使用的一种信息。制 品可分为输入制品和输出制品。
在面向对象设计中,制品被当作活动的参数。 制品有多种可能的形式,如:
模型 : 如用例模型或设计模型; 模型元素 : 如类、用例或子系统; 文档 : 如一个业务用例或体系结构文档; 源代码; 可执行文件。
13
a) 核心工作流
在 RUP 中共有 9 个核心过程工作流。它们将 所有工作人员和活动进行逻辑分组。
核心过程工作流分为 6 个核心工程工作流和 3 个核心支持工作流。
核心工程工作流有:业务建模工作流、需求 工作流、分析和设计工作流、实现工作流、 测试工作流、实施工作流。
核心支持工作流有:项目管理工作流、配置 和变更管理工作流、环境工作流。
11
Iteration Plan Storyboard
Use Case Model Project Measurements User-Interface Prototype
Developer Test
Iteration Assessment
Business Goal Test Environment Configuration
场景的系统大致轮廓; 估计整个项目需要的成本和时间; 评估风险,即分析不确定性的原因;
31
制品
a) 构想文档:有关项目核心需求、关键特 性和主要限制的构想。
b) 用例模型调查:包括所有在此阶段可确 定的用例和参与者。
c) 初期的项目术语。 d) 初始的业务用例:包括业务环境、是否
成功的评价标准、经济预测。 e) 早期的风险评估。 f) 项目计划:表明阶段和迭代。
内部发布 小里程碑
第1个外部发布 (如Beta版本)
软件工程 第5章--UML

UML的定义
UML定义有两个主要组成部分:语义和表示法。 语义用自然语言描述,表示法定义了UML的可 视化标准表示符号,这决定了UML是一种可视 化的建模语言。 在语义上,模型是元模型的实例。UML定义给 出了语法结构的精确定义。 使用UML时,要从不同的角度观察系统,为此 定义了概念“视图(View)‖。视图是对系统的模 型在某方面的投影,注重于系统的某个方面。
独立于过程
系统建模语言,独立于开发过程。
9
容易掌握使用 概念明确,建模表示法简洁明了,图形结 构清晰,容易掌握使用。 着重学习三个方面的主要内容: (1) UML的基本模型元素 (2) 组织模型元素的规则 (3) UML语言的公共机制 与程序设计语言的关系 用Java,C++ 等编程语言可实现一个系统。 一些CASE工具可以根据 UML所建立的系 统模型来产生Java、C++ 等代码框架。
31
UML事物 — 注释事物
11) Note(注释)
依附于一个元素或一组元素之上,对其进
行约束或解释的简单符号。没有语义影响。
See policy8-5-96.doc for details about these algorithms.
CashAccount presentValue()
32
15
UML定义 9 种图,表达UML中的 5 种视图,各 视图在静态和动态方面表示系统模型。
结构 视图 静态 方面
动态 方面
行为 视图 同左
实现 视图 构件图
环境 视图 部署图
同左
用例 视图 用例图
同左
类图 对象图
顺序图 同左 顺序图 合作图 (注重 合作图 状态图 进程、 状态图 活动图 线程) 活动图
软件体系结构-完整PPT课件张友生.doc

软件体系结构课程性质:必修学时/学分:40/2.5关于教材◇出版社:清华大学出版社◇作者:张友生课程内容◇软件体系结构概论◇软件体系结构建模◇软件体系结构风格◇软件体系结构描述◇动态软件体系结构◇Web服务体系结构◇基于体系结构的软件开发◇软件体系结构的分析与测试◇软件体系结构评估◇软件产品线体系结构◇软件危机的表现◎软件成本日益增长◎开发进度难以控制◎软件质量差◎软件维护困难第1章软件体系结构概论1.1 从软件危机谈起◇软件危机的表现◎软件成本日益增长20世纪50年代,软件成本在整个计算机系统成本中所占的比例为10%-20%。
到20世纪60年代中期,软件成本在计算机系统中所占的比例已经增长到50%左右。
而且,该数字还在不断地递增,下面是一组来自美国空军计算机系统的数据:1955年,软件费用约占总费用的18%,1970年达到60%,1975年达到72%,1980年达到80%,1985年达到85%左右。
第1章软件体系结构概论1.1 从软件危机谈起◇软件危机的表现◎开发进度难以控制由于软件是逻辑、智力产品,软件的开发需建立庞大的逻辑体系,这是与其他产品的生产不一样的。
在软件开发过程中,用户需求变化等各种意想不到的情况层出不穷,令软件开发过程很难保证按预定的计划实现,给项目计划和论证工作带来了很大的困难。
盲目增加软件开发人员并不能成比例地提高软件开发能力。
相反,随着人员数量的增加,人员的组织、协调、通信、培训和管理等方面的问题将更为严重。
第1章软件体系结构概论1.1 从软件危机谈起◇软件危机的表现◎软件质量差软件项目即使能按预定日期完成,结果却不尽人意。
1965年至1970年,美国范登堡基地发射火箭多次失败,绝大部分故障是由应用程序错误造成的。
在“软件作坊”里,由于缺乏工程化思想的指导,程序员几乎总是习惯性地以自己的想法去代替用户对软件的需求,软件设计带有随意性,很多功能只是程序员的“一厢情愿”而已,这是造成软件不能令人满意的重要因素。
第5章UML包图

17
5.6.2 调整候选包
在已经识别一组候选包后,减少包间依赖,最小化每个包中public、 protected元素的个数,最大化每个包中private元素的个数。做法如 下。 (1) 在包间移动类。 (2) 添加包、分解包、合并包或删除包。 通常,在分析阶段,将类封装为包模型时,应该尽量使包模型简单。 起初,将类图转换为包图时,不需考虑包间的泛化和依赖关系,仅 当使用诸如包泛化和依赖关系能简化包模型时,才使用这些包整理 技术。 除了保持简单,还应该避免嵌套包。包的嵌套结构越深,模型变得 越难理解。我们曾见过非常深层的嵌套包,而每个包仅包含一个或 两个类。这些模型更像是标准的、自上而下的功能分解,而不是包 模型。 作为经验法则,希望每个包具有4~10个分析类。然而,对于所有的 经验法则,却存在例外,如果打破某个法则使得模型更加清晰,就 采用这个法则。有时,必须引入只带有一个或者两个类的包,因为 需要断开包模型中的循环依赖,在这种情况下是完全合理的。
14
5.5 包的传递性
当客户包与提供者包之间是<<access>>依赖 时,提供者包中的公共元素就成为客户包中的 私有元素,这些私有元素在包外是不可以访问 的。如图5-15所示,Z包中的公共元素成为Y包 的私有元素,而X包只能访问Y包中的公共元素, 因此,X包不能访问Z包中的公共元素。所以, X、Y、Z包间的<<access >>关系不存在传递 性。
22
5.8 小
结
本章首先解释了几种常见的包图表示法, 并通过了一个简单的例子来说明包的可见 性、依赖关系、泛化等概念。其次,概要 地说明了5种包的构造型。 最后说明如何寻找包、确定包之间的依赖 关系,从而绘制出一个表明软件体系结构 的包图,并简要介绍了用包图表示系统体 系结构的建模方法。
软件工程第五章结构化设计

服务注册中心
发现
注册
服务消费者 调用
服务提供者
并发系统的集中式控制模型
传感器进程 用户界面Fra bibliotek传动装置进程 系统控制器
计算进程 故障处理器
系统控制模型
事件驱动系统
广播模型:发生的事件广播到所有子系统,任何能处理 该事件的子系统都会响应。该模型适用于基于网络的分 布式系统。
广播模型中的子系统注册其感兴趣的特别事件 广播模型的优点是进化比较简单
软件模块化设计
模块是一个独立命名的,拥有明确定义的输入、输出 和特性的程序实体。
软件的模块化设计(Modular Design)。系统是有 一个个模块组装而成。
软件模块化设计优点
可以简化软件的设计和实现 提高软件的可理解性和可测试性 软件更容易得到维护。
软件模块化设计缺点
结构化设计阶段 数据流设计方法 面向数据的设计 结构化程序设计 案例分析
结构化设计概述
结构化设计方法(Structured Design, SD)是基于模 块化、自顶向下细化、结构化程序设计等程序设计技 术基础上发展起来的。
结构化设计方法用模块结构图来表达程序模块之间的 关系。
缺点是子系统都知道是否和什么时候处理事件,这可能会引 起冲突。
中断驱动模型:由中断处理器对来自外部的中断进行检 测,然后在其他组件中处理这些中断。该模型适用于对 定时有严格要求的实时系统。
只用在硬件实时系统中,要求对一些事件能做出及时响应
总线架构
像水管一样随意接入 像PCI总线一样即插即用
第三部分软件设计与建模
结构化软件设计
阳王东
回答问题
什么是软件设计?有哪些阶段和任务? 什么是模块化设计?有哪些原理? 什么是软件结构和体系结构?二者有什么区别? 数据流有哪些类型?如何区分? 数据流映射的步骤是什么? 什么是结构化程序设计?有哪些工具? 什么是JSD方法?具体步骤是什么?
【软件体系结构】 复习

第一章1. 体系结构发现、演化、重用体系结构发现解决如何从已经存在的系统中提取软件的体系结构,属于逆向工程范畴。
由于系统需求、技术、环境、分布等因素的变化而最终导致软件体系结构的变动,称之为软件体系结构演化。
体系结构重用属于设计重用,比代码重用更抽象。
由于软件体系结构是系统的高层抽象,反映了系统的主要组成元素及其交互关系,因而较算法更稳定,更适合于重用。
2.基于软件体系结构的软件开发方法:问题定义—>软件需求—>软件体系结构—>软件设计—>软件实现3.评价软件体系结构的方法权衡分析方法(ATAM方法),软件体系结构分析方法(SAAM方法),中间设计的积极评审(ARID方法)第二章1. 建模结构模型:研究结构模型的核心是体系结构描述语言。
以体系结构的构件,连接件和其他概念来刻画结构。
并力图通过结构来反映系统的重要语义内容。
框架模型:与结构模型类似,但不太侧重细节,而侧重于整体结构。
动态模型:是对结构和框架模型的补充,研究系统大颗粒的行为性质。
过程模型:研究构造系统的步骤和过程,结构是遵循某些过程脚本的结果。
功能模型:认为体系结构是由一组功能构件按层次组成,下层向上层提供服务。
功能模型可以看作是一种特殊的框架模型。
4+1视图模型:逻辑视图、进程视图、物理视图、开发视图和场景视图逻辑视图主要支持系统的功能需求,即系统提供给最终用户的服务。
在逻辑视图中,系统分解成一系列的功能抽象,这些抽象主要来自问题领域。
这种分解不但可以用来进行功能分析,而且可用作标识在整个系统的各个不同部分的通用机制和设计元素。
在面向对象技术中,通过抽象、封装和继承,可以用对象模型来代表逻辑视图,用类图来描述逻辑视图开发视图通过系统输入输出关系的模型图和子系统图来描述。
进程视图侧重于系统的运行特性,主要关注一些非功能性的需求。
物理视图主要考虑如何把软件映射到硬件上。
逻辑视图和开发视图描述系统的静态结构,而进程视图和物理视图描述系统的动态结构。
体系结构各章思考题 期末必考

《软件体系结构》各章思考题第1章软件体系结构概论1、根据自己的经验,谈谈对软件危机的看法。
2、就项目管理方面而言,软件重用项目与非重用项目有哪些不同之处。
3、实际参与/组织一个软件重用项目的开发,然后总结你是如何组织该项目的开发的。
4、为什么要研究软件体系结构?5、根据软件体系结构的定义,你认为软件体系结构的模型应该由哪些部分组成?6、在软件体系结构的研究和应用中,你认为还有哪些不足之处?第2章软件体系结构建模1、选择一个规模合适的系统,为其建立“4+1”模型。
2、引入了软件体系结构以后,传统软件过程发生了哪些变化?这种变化有什么好处?3、软件体系结构的生命周期模型与软件生命周期模型有什么关系?第3章软件体系结构风格1、层次系统结构和基于消息的层次系统结构有什么区别?2、试分析和比较B/S,二层C/S和三层C/S,指出各自的优点和缺点。
3、组织或参与一个采用B/S和C/S混合体系结构的软件项目的开发,总结开发经验。
4、组织或参与一个采用三层体系结构的软件项目的开发,总结开发经验。
5、SIS和DSSA分别用在哪些场合?6、在软件开发中,采用异构结构有什么好处,其负面影响有哪些?第4章软件体系结构描述1、体系结构描述有哪些方法?有哪些标准和规范?2、体系结构描述语言与程序设计语言有什么区别?3、选择一个规模适中的系统,使用UML为其建模。
第5章动态软件体系结构1、什么是动态软件体系结构?动态软件体系结构与静态软件体系结构有什么区别?2、基于构件的动态软件体系结构模型的层次结构是什么?3、试比较Dynamic Wright和Darwin的特点。
4、试用Dynamic Wright描述B/S结构第6章Web服务体系结构1、什么是Web服务体系结构?与传统的结构相比,使用Web服务有哪些好处?2、在Web服务中,如何实现其松散耦合的特点?3、试分析服务提供者、服务请求者和服务代理三者的作用,以及它们之间的工作流程。
冯铁《软件工程概论教学》第五章系统设计

一、判断题1、The results of decomposition form composite parts called modules or components.(T)2、Cohesion refers to the internal “glue” with which a component is constructed.(T)3、We say that two components are loosely coupled when there is a great deal of dependence between them.(F)4、Design is the creative process of transforming the problem intoa solution.(T)二、解释概念1、 what is design?Design is the creative process to transform the problem into a solution. 设计是将问题转化成解决方案的创造性的活动Design is the description of a solution. 是对解决方案的描述。
2、What is Coupling? States Coupling levels from low to high.Coupling耦合性是指模块间联系,即程序结构中不同模块之间互连程度。
耦合等级从低到高:Uncoupled 非直接耦合:通过上级模块进行联系,无直接关联。
Data coupling 数据耦合:参数传递的是一般类型的数据。
Stamp coupling 标记耦合:参数传递的是诸如结构类型的数据。
Control coupling 控制耦合:模块间传递的是诸如标记量的控制信息。
Common coupling 公共耦合:全局结构类型的数据。
Content coupling 内容耦合:病态连接,一个模块可以直接操作另一个模块的数据(如go to 语句的使用)。
《软件体系结构》教学大纲

《软件体系结构》教学大纲课程英文名称: Software Architecture课程编号:050302一、课程说明1.课程性质《软件体系结构》课程,是软件工程专业硕士研究生的主干课程。
2.课程的目的和任务软件体系结构主要介绍软件体系结构和中间件的基本概念,使学生对软件体系结构有比较深入的了解。
通过学习,使得学生在软件工程思想的基础上,更进一步掌握软件分析和软件开发的方法和思想,并能在实际中应用。
培养学生成为一名合格的软件分析师或软件工程师,并为其在该领域进一步深造打下坚实的基础。
3.适用专业软件工程,计算机科学与技术专业4.学时与学分学分:3 学时:45 讲授学时:45 实践学时:05.先修课程软件工程,数据结构与算法,操作系统,程序设计6.推荐教材或参考书目教材名称:《软件体系结构》张友生编著清华大学出版社ISBN:7302078106 2004版主要参考书目:《软件体系结构理论与实践》冯冲,江贺,冯静芳编著人民邮电出版社2004版7.主要教学方法与多媒体要求主要教学方法:理论和技术教学,案例驱动教学多媒体要求:多媒体教学占80%8.考核方式1、平时成绩(书面作业+上机实验+考勤)2、课程大作业3、期末闭卷笔试4、总成绩 = 笔试成绩(60/100)+ 平时成绩(20/100)+ 大作业成绩(20/100)9.课外自学要求书本上没讲过的内容,让学生自学。
推荐的教材,学有余力的学生可以自学。
二、教学基本要求和能力培养要求1.通过本课程的教学环节,达到以下基本要求1)、应使学生全面了解软件体系结构的概念。
2)、使学生对软件体系结构有比较深入的了解,掌握软件体系结构的思想,了解软件体系结构的设计过程。
3)、使学生在了解软件体系结构的基础上,能用之于软件开发的实践过动中去。
2.通过学习本课程应具备以下能力培养学生成为一名合格的软件分析师或软件工程师,并为其在该领域进一步深造打下坚实的基础。
三、课程教学内容第一章软件体系结构概论重点:了解软件危机的概念、产生以及表现。
(完整版)《软件设计与体系结构》教学大纲-2014-2月版

《软件设计与体系结构》教学大纲一、课程基本信息二、课程目的和任务软件体系结构是根植于软件工程发展起来的一门新兴学科,目前已经成为软件工程研究和实践的主要领域。
专门和广泛地研究软件体系结构是从20世纪90年代才开始的,1993-1995年之间,卡耐基梅隆大学的Mary Shaw与David Garlan,贝尔实验室的Perry,南加州大学的Barry Boehm,斯坦福大学的David Luckham等人开始将注意力投向软件体系结构的研究和学科建设。
三、本课程与其它课程的关系。
体系结构在软件开发中为不同的人员提供了共同交流的语言,体现并尝试了系统早期的设计决策,并作为系统设计的抽象,为实现框架和构件的共享和重用、基于体系结构的软件开发提供了有力的支持。
鉴于体系结构的重要性,Dewayne Perry将软件体系结构视为软件开发中第一类重要的设计对象,Barry Boehm也明确指出:“在没有设计出体系结构及其规则时,整个项目不能继续下去,而且体系结构应该看做是软件开发中可交付的中间产品”。
四、教学内容、重点、教学进度、学时分配第一章软件体系结构概论1.1 从软件危机谈起1.1.1 软件危机的表现1.1.2 软件危机的原因1.1.3 如何克服软件危机1.2 构件与软件重用1.2.1 构件模型及实现1.2.2构件获取1.2.3 构件管理1.2.4构件重用1.2.5 软件重用实例1.3 软件体系结构的兴起和发展1.3.1 软件体系结构的定义1.3.2 软件体系结构的意义1.3.3 软件体系结构的发展史1.4 软件体系结构的应用现状第二章软件体系结构建模2.1 软件体系结构建模概述2.2 "4+1"视图模型2.2.1 逻辑视图2.2.2 开发视图2.2.3 进程视图2.2.4 物理视图2.2.5 场景2.3 软件体系结构的核心模型2.4 软件体系结构的生命周期模型2.5 软件体系结构抽象模型2.5.1 构件2.5.2 连接件2.5.3 软件体系结构2.5.4 软件体系结构关系2.5.5 软件体系结构范式第三章软件体系结构风格3.1 软件体系结构风格概述3.2 经典软件体系结构风格3.2.1 管道和过滤器3.2.2 数据抽象和面向对象组织3.2.3 基于事件的隐式调用3.2.4 分层系统3.2.5 仓库系统及知识库3.2.6 C2风格3.3 客户朋艮务器风格3.4 三层C/S结构风格3.4.1 三层C/S结构的概念3.4.2 三层C/S结构应用实例3.4.3 三层C/S结构的优点3.5 浏览器朋艮务器风格3.6 公共对象请求代理体系结构3.7 正交软件体系结构3.7.1 正交软件体系结构的概念3.7.2 正交软件体系结构的实例3.7.3 正交软件体系结构的优点3.8 基于层次消息总线的体系结构风格3.8.1 构件模型3.8.2 构件接口3.8.3 消息总线3.8.4 构件静态结构3.8.5 构件动态行为3.8.6 运行时刻的系统演化3.9 异构结构风格3.9.1 为什么要使用异构结构3.9.2 异构结构的实例3.9.3 异构组合匹配问题3.10 连系统构成的系统及其体系结构3.10.1 连系统构成的系统3.10.2 基于SASIS的软件过程3.10.3 应用范围3.11 特定领域软件体系结构。
软件系统设计

软件系统架构设计第5章 软件系统架构设计【学习目标】•系统设计内容•系统平台设计•系统拓扑设计•软件体系结构模式•软件应用结构5.1系统设计概述系统设计是从创建新系统角度来描述、组织、构造系统的过程。
它是对系统分析的深化和细化,需要考虑系统的实现环境和系统的效率、可靠性、安全性、适应性等非功能需求,得出软件系统的设计方案。
一、软件系统设计的过程1.系统总体设计任务总体设计也称为概要设计,其主要的任务是根据用户需求分析阶段得到的目标系统的物理模型,确定一个合理的软件系统的体系结构。
它包括:•合理地划分组成系统的部件•确定部件间的控制关系•部件间的接口关系•系统数据结构2.系统总体设计过程•确定系统划分•功能分解•设计软件结构•数据库的设计3.系统设计基本方法1)抽象化•抽象是在软件设计的规模逐渐增大的情况下,控制复杂性的基本策略。
•抽象的过程是从特殊到一般的过程,上层概念是下层概念的抽象,下层概念是上层概念的精化和细化。
•软件工程过程的每一步都是对较高一级抽象的解作一次具体化的描述。
2)逐步求精•逐步求精,把问题的求解过程分解成若干步骤或阶段,每步都比上步更精化,更接近问题的解法。
•抽象使得设计者能够描述过程和数据而忽略低层的细节,而求精有助于设计者在设计过程中揭示低层的细节。
3)模块化•模块化,即把软件按照规定原则,划分为一个个较小的,相互独立的但又相互关联的部件,实际上是系统分解和抽象的过程。
•模块是数据说明、可执行语句等程序对象的集合,它是单独命名的,并且可以通过名字来访问。
例如,过程。
函数、子程序、宏等。
4)信息隐藏•每个模块的实现细节对于其它模块来说应该是隐蔽的。
•块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。
•通过信息隐蔽,则可定义和实施对模块的过程细节和局部数据结构的存取限制。
5)模块独立•模块独立:模块完成独立的功能,并且与其他模块的接口简单,符合信息隐蔽和信息局部化原则,模块间关联和依赖程度尽可能小。
第五章 多媒体计算机硬件及软件系统结构

(3)重放声波信号 (4)用midi技术合成音乐
(a)(1)(3)(4) (b)(2)(3)(4) (c)(1)(2)(3) (d)全部
答:(d)
82750pb象素处理器具有较宽的指令字长(48位),直接连到vram的随机或并行通道,由于不同指令字的不同字段分别控制硬件机构,所以这些指令可以同时执行多种操作,它包括两个分开并对称的内插16位数据总线、为8位象素计算专门分开的alu操作;在解压缩时为运动补偿设计了象素插值器,解压缩编码数据流设计了统计解码器;以及为了同dvi的vram传输数据所设计的四个先进先出(fifo)数据缓冲区。82750pb象素处理器运行较小的微码译码器,它定时询问在vram中的命令表。由计算机建立主命令表,微码命令由主机直接引导加载到82750pb微码存储器中,当命令表指出某些操作需要运行时,如解码操作,微码译码器从vram中将一个微码块加载到82750pb内部的微码存储器中,并且执行它。这些解码是由主计算机设计并加载到vram中的。
第五章 多媒体计算机硬件及软件系统结构
单项选择题1-8:
1、组成多媒体系统的途径有哪些:
(1)直接设计和实现 (2)增加多媒体升级套件进行扩展
(3)cpu升级 (4)增加cd-da
(a)仅(1) (b)(1)(2) (c)(1)(2)(3) (d)全部
2.音频子系统
音频子系统由音频信号处理器、数字到模拟的转换硬件以及模拟滤波器组成。它与视频子系统并行操作、解决音频信号的压缩、编码和解码,还解决音频信号的a/d、d/a转换以及音响声效的特技处理。
音频子系统的核心器件是ad(analog device)公司的ad-2105数字信号处理器(dsp),通过它完成所有音频信号的压缩和解压缩任务。dvi系统采用自适应预测编码(adpcm)算法将16位的采样数据压缩编码成4位码,最后将压缩的音频数据输出到d/a转换器,dsp的垂直消隐中断出现在每个显示帧的场逆程,以此来解决视频数据流和音频数据流的同步问题。数字到模拟量的转换器是由burr-brown公司生产的pcm66p单片立体声16位串行接口组成。跟着d/a变换器是双通道的模拟滤波器,其截止频率近似固定在17khz,并且有5个极点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.2.7
解释器风格
5.2.8
C2风格
5.3 案例研究
5.3.1
案例1:上下文关键字
5.3.2
案例2:仪器软件
5.3.3
平台层PaaS和应用程序层SaaS
2
5.4 客户/服务器风格
5.5 三层C/S结构风格
5.5.1
三层C/S结构的优点
5.5.2
实例:某石油管理局劳动管理信息系统
5.6
24
低效。
黑板系统在拒绝错误假设中要承受多余的计 算开销。
但是,如果没有确定的算法存在,那么与根 本不存在的系统相比,低效总比没有强。
开发成本高。
绝大多数黑板系统要花几年时间来进化。 我们把这归因于病态结构问题。
25
5.2.6 模型-视图-控制器(MVC)风格
1. MVC模式
MVC由Trygve Reenskaug提出,首先被应用在 SmallTalk-80环境中,是许多交互和界面系统的构成基 础。MVC结构是为那些需要为同样的数据提供多个视图 的应用程序而设计的,它很好地实现了数据层与表示层的 分离。作为一种开发模型,MVC通常用于分布式应用系 统的设计和分析中,以及用于确定系统各部分间的组织关 系。对于界面设计可变性的需求,MVC(Model– View–Controller)把交互系统的组成分解成模型、视图、 控制器三种部件。
连接件可以用层次间的交互协议来定义。每个独立层 都要防止较高层直接访问较低层。
每一层次是由不同的部件构成的实体集合。层内的部 件可以交互。
相邻层的部件可直接从上向下调用,还可以设计 统一的层调用接口对层进行保护。
17
客户
使用
层N
高
层 N-1
层1
低
图5-5 分层模型
清华大学出版社
18
5.2.5 仓库风格和黑板风格
(5)支持并发执行。基于管道-过滤器模式 的系统存在很多并行的过滤器,这样的系统在实 际运行时,可以将存在并发可能的多个过滤器看 作多个并发的任务并行执行,从而大大提高了系 统的整体效率,加快了处理速度。当然,在调度 并行任务的时候,必须有相应的并行算法作基础, 否则,可能导致系统功能的混乱。
11
种处理。这时,仓库是一个黑板体系结构。即黑
板体系结构是仓库体系结构的特殊化。
19
(1)适应的设计问题 (2)解决方案
20
“黑板”模式类似于这样一个情形,即让专家们坐
在真实黑板前并一起工作来解决一个问题。每个专家独
立评估解法的当前状态,并可在任何时间到黑板上添加、
更改或删除信息。人们往往要决定接下来谁去访问黑板。
清华大学出版社
5
5.2 软件体系结构基本风格解析
5.2.1 滤器
管道-过
适用于对有序数据进行一系列已经定义的相互计算的 应用程序。管道过滤器模式下,每个功能模块都有一组 输入和输出。功能模块从输入集合读入数据流,并在输 出集合产生输出数据流,即功能模块对输入数据流进行 增量计算得到输出数据流。管道过滤器模式下,功能模 块称作过滤器(filter);功能模块间的连接可以看作输 入、输出数据流之间的通路,所以称作管道(pipe)。
在黑板模式中,如果可用的组件超过一个,仲裁者
(moderator)组件决定程序执行的顺序。
KS2
KS1
中央数据单元
KS3
(黑板/仓库)
KSn
KS4
图5-6 黑清板华大风学出格版的社 体系结构
21
从图5-6中不难看出,一个标准的黑板型 仓库模式系统通常包括3个组成部分:
(1)知识源: (2)中央数据单元: (3)控制单元:
◆ 支持容错性和健壮性。
在黑板体系结构中,所有的结果都只是假设。 只有那些被数据和其他假设强烈支持的才能生存。这
提供了对噪声数据和不确定结论的容忍。 23
黑板风格的体系结构的缺点有:
不同的知识源代理对于共享数据结构要达
成一致,而且,这也造成对黑板数据结构的修
改较为困难。
需要一定的同步锁机制保证数据结构的完
14
隐式调用系统的主要优点有以下两点:
为软件重用提供了强大的支持。当需要将 一个构件加入现存系统时,只需将它注册 到系统的事件中。
为改进系统带来了方便。当用一个构件代 替另一个构件时,不会影响到其他构件的 接口。
15
隐式调用系统的主要缺点有以下几方面:
● 构件放弃了对系统计算的控制。一个构件
22
黑板风格的体系结构的优点有:
◆ 便于多客户共享大量数据,它们不用关心数 据是何时出现的、谁提供的、怎样提供的。
◆ 既便于添加新的作为知识源代理的应用程序, 也便于扩展共享的黑板数据结构。
◆ 可重用的知识源。
知识源是某类任务的独立专家。 黑板体系结构有助于使它们可重用。重用的先决条件
是知识源和所基于的黑板系统理解相同的协议和数据, 或者在这方面相当接近而不排斥协议或数据的自适应 程序。
清华大学出版社
31
存储器
输入
被解释的程序 的当前状态
正在被解释 的程序
用于计算的 状态机
输出
执行引擎
选择的指令 选择的数据
执行引擎的 当前状态
图5-9 解释器风格的体系结构
32
解释器风格的优点如下:
有助于应用程序的可移植性与程序设 计语言的跨平台能力;可以对未实现的硬 件进行仿真。
清华大学出版社
6
数据 处理器
处理器 处理器
处理器 处理器
图5-1 管道–过滤器风格的体系结构
清华大学出版社
7
采用管道-过滤器模式建立的系统主要 有以下几个优点:
(1)由于每个构件的行为不受其他构件的影响, 因此,整个系统的行为比较易于理解。
设计者可以将系统抽象成一个“黑匣子”,其输入是 系统中第一个过滤器的输入管道,输出是系统中最后 一个过滤器的输出管道,而其内部各功能模块的具体 实现对用户完全透明。
触发一个事件时.不能确定其他构件是否会响应 它。而且即使它知道事件注册了哪些构件的过程, 它也不能保证这些过程被调用的顺序。
● 数据交换的问题。有时数据可被一个事件
传递,但在另一些情况下,基于事件的系统必须 依靠一个共享的仓库进行交互。在这些情况下, 全局性能和资源管理便成了问题。
● 既然过程的语义必须依赖于被触发事件
8
(3)具有较强的可维护性与可扩展性。 可维护性体现在系统过滤器部件的更新或 升级。
由于技术改进等原因,过滤器A的实现发生了 改变,采用新技术开发的过滤器D具有和A完 全相同的输入、输出管道接口,这时可以直接 将A替换为D,而无须对系统中的其他过滤器 或管道进行任何修改。
9
C
A
B
图5-2 管道-过滤器支持功能模块复用
的上下文约束,关于正确性的推理就存在问题。
16
5.2.4 分层系统风格
一个分层风格的系统按照层次结构组织,每一层 向它的上层提供服务,同时又是它的下层客户; 在某些系统中,除了邻接的层,一个内部层次对 于其他外部层次是隐藏的,对体系结构的约束包 括把系统内的交互限制在邻接层次之间。交互只 在相邻的层间发生;同时,这些交互按照一定协 议进行。
(2)支持功能模块的复用。任意两个过滤器只 要在相互的输入、输出管道格式上达成一致,就 可以连接在一起。
过滤器A和过滤器B只要对管道C中传输的数据格式达 成一致就可以实现互连,其中过滤器A并不关心过滤器 B如何处理管道C的内容,而过滤器B也不知道管道C的 内容究竟是如何产生的,即在管道过滤器模式中,过 滤器之间仅需很少的信息交换就可以完成互连。
清华大学出版社
13
5.2.3 基于事件的隐式调用风格
基于事件的隐式调用风格的思想是构 件不直接调用一个过程,而是触发或广播 一个或多个事件。系统中的其他构件中的 过程在一个或多个事件中注册,当一个事 件被触发,系统自动调用在这个事件中注 册的所有过程,这样,一个事件的触发就 导致了另一模块中的过程的调用。
清华大学出版社
26
2. MVC中的模型、视图和控制类
MVC中的模型、视图和控制类如图5-7所示。
(1)模型类
(2)视图类
(3)控制类
27
模型类
数据结构关系 变化-传播注册关系
内部数据和逻辑计算 向视图和控制器通知数据变化
视图类
显示形式 显示模式控制
从模型获得数据视图 更新操作
(a)
(b)
控制类
整性和一致性,增大了系统复杂度。
测试困难。由于黑板系统的计算没有依据
一个确定的算法,所以其结果常常不可再现。
此外,错误假设也是求解过程的一部分。
不能保证有好的求解方案。
一个黑板系统往往只能正确解决所给任务的某一百 分比。
难以建立一个好的控制策略。
控制策略不能以一种直接方式设计,而需要一种试 验的方法。
状态
事件控制 控制视图更新
(c)
28
3. MVC的实现 实现基于MVC的应用需要完成以下工作,如图5-8所
示:
分析应用问题,对系统进行分离
设计和实现每个视图
设计和实现每个控制器
使用和安装、卸载控制器 图5-8 MVC的实现
29
(1)分析应用问题,对系统进行分离 (2)设计和实现每个视图 (3)设计和实现每个控制器 (4)使用可安装和卸载的控制器
C
A
B
X
图5-3
管道-过滤器的可扩展性
清华大学出版社
10
(4)支持特殊的分析:如吞吐量计算和死 锁检测等。利用管道-过滤器模式图,可以很容 易地得到系统的资源使用与请求状态图,然后, 根据操作系统原理等相关理论中的死锁检测方法 就可以分析出系统目前所处的状态,是否存在死 锁可能及如何消除死锁等问题。