第4章 软件设计的概念_第1页
第4章 软件设计的概念_第2页
第4章 软件设计的概念_第3页
第4章 软件设计的概念_第4页
第4章 软件设计的概念_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1n软件设计的任务软件设计的任务n软件设计基本概念软件设计基本概念n模块化设计模块化设计n其他设计问题的处理其他设计问题的处理n设计文档及其复审设计文档及其复审2n主要内容主要内容n介绍软件设计的一般概念,包括软件设计的任务、基介绍软件设计的一般概念,包括软件设计的任务、基本原理、模块化设计和设计文档等内容。本原理、模块化设计和设计文档等内容。n这些概念适用于任何开发方法和开发过程,可以为后这些概念适用于任何开发方法和开发过程,可以为后面两章的教学奠定基础。面两章的教学奠定基础。 n重点掌握重点掌握n软件设计的任务、基本概念,模块化设计,设计文档。软件设计的任务、基本概念,模块化设计,设计文档

2、。n难点难点n模块与构件,抽象与细化,信息隐藏等模块与构件,抽象与细化,信息隐藏等 3n软件设计的任务软件设计的任务n把分析阶段产生的软件需求说明转换为用适当手段表把分析阶段产生的软件需求说明转换为用适当手段表示的软件设计文档。示的软件设计文档。-解决解决“如何做如何做” 的问题的问题n内容内容n数据设计数据设计:信息模型:信息模型 软件数据结构;软件数据结构;n体系结构设计体系结构设计:定义软件主要组成部件之间的关系;:定义软件主要组成部件之间的关系;n接口设计接口设计:软件内部、外部及与人之间的通信:软件内部、外部及与人之间的通信 (数据流和控制流)(数据流和控制流)n过程设计过程设计:将

3、软件体系结构的组成部件转变为对软:将软件体系结构的组成部件转变为对软 件组件的过程性描述。件组件的过程性描述。4n传统的设计任务的两阶段传统的设计任务的两阶段n概要设计阶段概要设计阶段n结构设计结构设计n接口设计接口设计n编写概要设计说明书编写概要设计说明书n详细设计阶段详细设计阶段n确定各个软件组件的数据结构和操作确定各个软件组件的数据结构和操作n产生描述各软件组件的详细设计文档产生描述各软件组件的详细设计文档5n软件设计工作流程软件设计工作流程总体总体设计设计需求需求 说明书说明书复审复审详细详细设计设计复审复审软件软件结构结构可接受可接受模块模块描述描述设计设计 说明书说明书修改修改NY

4、修改修改NY6n软件设计目标软件设计目标软件软件设计设计高可靠性高可靠性高效率高效率高可理解性高可理解性高可维护性高可维护性7n模块与构件模块与构件n抽象与细化抽象与细化n信息隐藏信息隐藏n软件复用软件复用8n模块模块(Module)n是一个拥有明确定义的输入、输出和特征的程序实是一个拥有明确定义的输入、输出和特征的程序实体。如函数、过程、子程序、宏等体。如函数、过程、子程序、宏等n若模块的所有输入都是实现功能必不可少的,所有若模块的所有输入都是实现功能必不可少的,所有输出都有动作产生,即成为定义明确的模块。输出都有动作产生,即成为定义明确的模块。n软件构件软件构件(Software Comp

5、onent)n可重复使用的软件组件。可重复使用的软件组件。n现有的可复用构件,大多是在对象的基础上创建。现有的可复用构件,大多是在对象的基础上创建。9n抽象抽象n提取客观世界中一群事物的某些本质共性,而暂时提取客观世界中一群事物的某些本质共性,而暂时忽略他们的非本质的细节,是一个从特殊到一般的忽略他们的非本质的细节,是一个从特殊到一般的过程。过程。n分层次考虑和处理问题分层次考虑和处理问题(数据和过程数据和过程)n过程抽象过程抽象:把完成一个特定功能的动作序列抽象为:把完成一个特定功能的动作序列抽象为一个过程名和参数表,以后通过指定过程名和实际一个过程名和参数表,以后通过指定过程名和实际参数调

6、用此过程。参数调用此过程。n数据抽象数据抽象:把一个数据对象的定义抽象为一个数据:把一个数据对象的定义抽象为一个数据类型名,用此类型名可定义多个具有相同性质的数类型名,用此类型名可定义多个具有相同性质的数据对象。据对象。n细化细化n从高到低的逐步分解过程。从高到低的逐步分解过程。10n定义定义n把系统分解为模块时应遵守的指导思想。把系统分解为模块时应遵守的指导思想。n基本思想基本思想n模块内部的数据和过程,不需要这些信息的模块不可模块内部的数据和过程,不需要这些信息的模块不可访问;访问;n每一个模块只完成一个相对独立的特定功能;每一个模块只完成一个相对独立的特定功能;n模块之间仅仅交换那些完成

7、系统功能必须交换的信息。模块之间仅仅交换那些完成系统功能必须交换的信息。n目的目的n提高模块的独立性,当修改或维护模块时减少把一个提高模块的独立性,当修改或维护模块时减少把一个模块的错误扩散到其他模块中去的机会。模块的错误扩散到其他模块中去的机会。11nDesign with reuse, design for reuse12n定义定义n把大型软件按照规定的原则划分成一个个较小的、把大型软件按照规定的原则划分成一个个较小的、相对独立但又相互关联的模块。相对独立但又相互关联的模块。n指导思想指导思想n分解分解n模块独立性模块独立性n内容内容n分解分解n模块独立性模块独立性n自顶向下与由底向上自顶

8、向下与由底向上13n分解是处理复杂问题的常用方法分解是处理复杂问题的常用方法n传统软件工程:利用分解画分层传统软件工程:利用分解画分层DFD图;图;n设计阶段:利用分解实现模块化设计;设计阶段:利用分解实现模块化设计;nOO软件工程:利用分解划分类和对象。软件工程:利用分解划分类和对象。n将复杂问题分解可以降低解题的总工作量和复杂度将复杂问题分解可以降低解题的总工作量和复杂度已知若已知若C(p1)C(p2),则,则E(p1)E(p2)由经验:由经验:C(p1+p2)C(p1)+C(p2) 所以:所以:E(p1+p2)E(p1)+E(p2)14模块数模块数接口成本接口成本最小成本区最小成本区M软

9、软件件开开发发工工作作量量总成本总成本模块成本模块成本将模块数控制在最小成本区内可将模块数控制在最小成本区内可以使总的开发工作量保持最小。以使总的开发工作量保持最小。15n概括了把软件划分为模块时要遵守的准则,也是判断概括了把软件划分为模块时要遵守的准则,也是判断模块构造是不是合理的标准。坚持模块的独立性,是模块构造是不是合理的标准。坚持模块的独立性,是获得良好设计的关键。获得良好设计的关键。n衡量标准衡量标准n模块本身的内聚模块本身的内聚n模块内部各个成分之间的联系模块内部各个成分之间的联系n又称块内联系或模块强度又称块内联系或模块强度n模块间的耦合模块间的耦合n一个模块与其他模块之间的联系

10、一个模块与其他模块之间的联系n又称块间联系又称块间联系n模块独立性越高,块内联系越强,块间联系越弱。模块独立性越高,块内联系越强,块间联系越弱。16弱弱 强强 偶然性内聚偶然性内聚逻辑性内聚逻辑性内聚时间性内聚时间性内聚过程性内聚过程性内聚通信性内聚通信性内聚顺序性内聚顺序性内聚功能性内聚功能性内聚低内聚中内聚高内聚低内聚中内聚高内聚 从功能角度对模块内部聚合能力的度量。从功能角度对模块内部聚合能力的度量。17n偶然性内聚偶然性内聚n块内各组成部分在功能上是互不相关的。块内各组成部分在功能上是互不相关的。n模块内部成分的组合纯属偶然。模块内部成分的组合纯属偶然。n时间性内聚时间性内聚n模块所包

11、含的成分,是由相同的执行时间将他们连模块所包含的成分,是由相同的执行时间将他们连接到一起。接到一起。n要求在同一时间内执行。要求在同一时间内执行。18n逻辑性逻辑性内聚内聚n由若干个逻辑功能相似的成分组成。由若干个逻辑功能相似的成分组成。n执行时须从模块外引入判断量,增大块间耦合。执行时须从模块外引入判断量,增大块间耦合。读入分数读入分数平均平均/最高最高?计算平均分计算平均分计算最高分计算最高分输出结果输出结果19n过程性内聚过程性内聚n模块中包含的一组任务必须按照某一个特定的模块中包含的一组任务必须按照某一个特定的次序执行。次序执行。建立方程组系数矩阵建立方程组系数矩阵高斯消去法高斯消去法

12、回回 代代20n通信性内聚通信性内聚n模块内部的各成分使用同一种数据输入,或产生模块内部的各成分使用同一种数据输入,或产生同一个数据输出。同一个数据输出。n他们靠公用数据连接在一起。他们靠公用数据连接在一起。开领书单登记售书发票领书单售书登记表删除修改文 件21n顺序性内聚顺序性内聚/信息内聚信息内聚n各个功能都在同一数据结构上操作,每项功能有唯各个功能都在同一数据结构上操作,每项功能有唯一的入口点。如对符号表有查找、登录、删除、修一的入口点。如对符号表有查找、登录、删除、修改等操作,把查找、登录、删除、修改等功能设计改等操作,把查找、登录、删除、修改等功能设计在一个模块中,以实现信息的隐蔽。

13、在一个模块中,以实现信息的隐蔽。n功能性内聚功能性内聚n模块中的所有的成分结合在一起,用于完成一个单模块中的所有的成分结合在一起,用于完成一个单一的功能。一的功能。n块内联系最强的一类模块。块内联系最强的一类模块。22n功能性内聚最强,与其他模块联系少,最优功能性内聚最强,与其他模块联系少,最优n其他的高内聚和中内聚模块也可以使用其他的高内聚和中内聚模块也可以使用n低内聚模块尽量避免使用低内聚模块尽量避免使用23耦合是对软件内部块间联系的度量。耦合是对软件内部块间联系的度量。 非直接耦合非直接耦合数据耦合数据耦合特征耦合特征耦合控制耦合控制耦合外部耦合外部耦合公共耦合公共耦合内容耦合内容耦合弱

14、耦合弱耦合 中耦合中耦合 较强耦合较强耦合 强耦合强耦合24数据耦合数据耦合非直接非直接耦合耦合模块模块2模块模块1模块模块4模块模块3特征耦合特征耦合(参数表参数表传递数据结构传递数据结构)模块之间没模块之间没有信息传递有信息传递调用时通过调用时通过参数表交换参数表交换简单变量简单变量调用时通过调用时通过参数表交换参数表交换数据结构数据结构25n控制耦合控制耦合n在模块间传递的信息是用作控制信号的开关值或标志量。在模块间传递的信息是用作控制信号的开关值或标志量。n控制模块必须知道被控制模块的内部逻辑,从而增强了控制模块必须知道被控制模块的内部逻辑,从而增强了模块间的相互依赖。模块间的相互依赖

15、。读入分数读入分数平均平均/最高最高?计算平均分计算平均分计算最高分计算最高分输出结果输出结果控制控制信号信号26n外部耦合外部耦合n允许一组模块访问同一个全局变量允许一组模块访问同一个全局变量n公共耦合公共耦合n允许一组模块访问同一个全局性数据结构允许一组模块访问同一个全局性数据结构公共耦合图示公共耦合图示27n内容耦合内容耦合n一个模块可以直接调用另一模块中的数据,或一个模块可以直接调用另一模块中的数据,或者允许一个模块直接转移到另一个模块中去。者允许一个模块直接转移到另一个模块中去。28使用耦合的原则使用耦合的原则 对对“耦合耦合”的应用原则:的应用原则:不在于禁止耦合,不在于禁止耦合,

16、而是充分了解各种耦合的特点与不足,并在需而是充分了解各种耦合的特点与不足,并在需要时使用它们并能预见到可能产生的问题要时使用它们并能预见到可能产生的问题。 耦合是影响软件复杂程度的一个重要因素。耦合是影响软件复杂程度的一个重要因素。应该采取下述设计原则:应该采取下述设计原则: 尽量使用数据耦合,少用控制耦合,限制尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合公共环境耦合的范围,完全不用内容耦合。29n由底向上由底向上n选择关键部分先设计选择关键部分先设计n扩展到整个系统扩展到整个系统n自顶向下自顶向下n顶层开始顶层开始n逐步分解逐步分解30n协同设计协同设计n谁最合适

17、设计系统的某一方面?谁最合适设计系统的某一方面? n如何使组内成员相互了解别人的设计?如何使组内成员相互了解别人的设计? n如何协调设计组件使整个系统统一?如何协调设计组件使整个系统统一? n用户界面设计用户界面设计n让用户驾驭软件,不是软件驾驭用户让用户驾驭软件,不是软件驾驭用户 n减少用户的记忆减少用户的记忆 n保持界面的一致性保持界面的一致性 n并发系统设计并发系统设计n怎样确保同时执行的组件间对共享数据的一致性怎样确保同时执行的组件间对共享数据的一致性 n并发并发是一种允许两个活动同时发生而不互相干扰是一种允许两个活动同时发生而不互相干扰的方法。的方法。31n组件组件1查询查询X是否为

18、空。是否为空。n组件组件1被告知被告知X不为空。不为空。n组件组件2查询查询X是否为空。是否为空。n组件组件2被告知被告知X不为空。不为空。n组件组件1出栈,删除最后一个元素。出栈,删除最后一个元素。n组件组件2想出栈,但想出栈,但X已为空,系统进入非法状态。已为空,系统进入非法状态。32组件组件1询问栈询问栈X是否为空。是否为空。组件组件1被告知栈被告知栈X不为空。不为空。组件组件2询问栈询问栈X是否为空。是否为空。组件组件2被告知栈被告知栈X不为空。不为空。组件组件1锁住栈锁住栈X,出栈,删去最后一个元素。,出栈,删去最后一个元素。组件组件2想出栈,但被告知想出栈,但被告知X已上锁。已上锁

19、。另一个组件加了一个元素到栈另一个组件加了一个元素到栈X中。中。组件组件2被告知被告知X已开锁(由于外部进程或者因为组已开锁(由于外部进程或者因为组2再再次尝试)次尝试)组件组件2出栈出栈 33如果两个操作可能影响同一个共享对如果两个操作可能影响同一个共享对象的状态,他们就应该执行互斥机制。象的状态,他们就应该执行互斥机制。34n建立设计文档的目的建立设计文档的目的n把设计师的思想告诉其他有关人员。把设计师的思想告诉其他有关人员。n“Design for the people”n软件设计说明书软件设计说明书n设计复审设计复审35n主要内容主要内容n范围范围:描述设计工作的整体范围;:描述设计工

20、作的整体范围; n数据设计数据设计:描述数据:描述数据对象和形成的数据结构、外部文件对象和形成的数据结构、外部文件 和数据库结构、内部数据结构等;和数据库结构、内部数据结构等; n体系结构设计体系结构设计:说明从需求模型导出的软件体系结构;:说明从需求模型导出的软件体系结构;n接口设计接口设计:描述人机界面及人机界面的设计规则;:描述人机界面及人机界面的设计规则; n模块的过程设计模块的过程设计:描述每个模块的处理说明、设计语言:描述每个模块的处理说明、设计语言 描述、调用其它模块和内部设计结构等;描述、调用其它模块和内部设计结构等; n其他其他 包括测试的考虑,确保设计满足所有需求,设计约包括测试的考虑,确保设计满足所有需求,设计约 束和一些特殊注解等内容

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论