软件工程课件第三章概要设计

上传人:F****n 文档编号:88243229 上传时间:2019-04-21 格式:PPT 页数:104 大小:1.44MB
返回 下载 相关 举报
软件工程课件第三章概要设计_第1页
第1页 / 共104页
软件工程课件第三章概要设计_第2页
第2页 / 共104页
软件工程课件第三章概要设计_第3页
第3页 / 共104页
软件工程课件第三章概要设计_第4页
第4页 / 共104页
软件工程课件第三章概要设计_第5页
第5页 / 共104页
点击查看更多>>
资源描述

《软件工程课件第三章概要设计》由会员分享,可在线阅读,更多相关《软件工程课件第三章概要设计(104页珍藏版)》请在金锄头文库上搜索。

1、第三讲 软件设计概述,软件设计的任务 软件设计的基本概念 模块化设计 设计需要处理的问题 设计文档及其复审,什么是设计?,把问题转化为解决方案的创造性过程;解决方案的描述也称为设计。,设计和需求有什么不同?,张君和李丽想做一栋新房子。他们的需求如下: 三个小孩有玩耍的空间,并独立拥有各自的睡房 一间主人卧房 一个厨房 冬天可取暖,夏天可制冷 室内通水通电 等等,设计和需求有什么不同?,设计师的方案: 屋子的楼上有四间睡房,楼下有一间客房,一间厨房,一个玩具房和一个杂物室等等。 还有其他方案吗?,软件设计的两个阶段,设计者必须同时满足用户和系统开发人员的要求 概要设计书 详细设计书 设计者迂回于

2、各种活动中: 理解需求 提出可能的方案 测试方案的可能性 向用户描述各种可能 向编程人员提供设计文档,软件设计的内容,体系结构设计 定义软件部件间的关系 接口设计 软件内部、外部及与人之间的通信 数据设计 信息模型 软件数据结构 过程设计 软件组件的过程性描述,软件设计的任务,分析模型 设计模型 设计文档 回答How to do? 可以分为概要设计、详细设计 软件设计包括 数据设计 体系结构设计 接口设计 过程设计,分解和模块化,系统设计方法: 功能分解:将功能作为组件 面向数据的分解:基于外部数据结构 面向事件的分解:基于系统必须处理的事件 外部输入设计:基于系统的用户输入 面向对象设计:定

3、义对象的类及其相互联系,分解的层次化,模块和模块化,模块化:当系统的每项功能恰好由一个输入输出都明确定义的组件完成的时候,我们称这个系统模块化。 模块表示能够用计算机程序代码实现的,相对独立的单一数据处理功能,所以模块有时也叫功能模块。 进一步明确模块是拥有明确定义的输入、输出和特性的程序实体。,设计方法的选择,应该允许不同的设计者使用他们喜欢的技巧,只要他们的文档能让其他设计者明白就可以了。 设计方法的选择又是取决于设计者的偏好,而更多的时候取决于系统要求的结构或数据。,软件设计中涉及的问题,抽象(abstract)与细化(refinement) 抽象:分层次考虑和处理问题(数据和过程) 细

4、化:从高到低的逐步分解过程 信息隐藏 对其它模块隐藏模块内部的数据和过程,抽象,抽象是对具体对象(问题)进行概括,抽出这一类对象的公共性质并加以描述的过程。 先注意问题的本质及描述,其次是实现过程或细节。 数据抽象:描述某类对象的属性或状态(对象相互区别的物理量)。 代码抽象:描述某类对象的共有的行为特征或具有的功能。 抽象的实现:通过类的声明。,模块化设计的好处,信息隐藏 从不同角度了解系统 将难以解决的问题独立出来;抽象层次通过逐层分析来了解问题 允许不同的模块采用不同的设计方法,模块化设计,把大型软件按照规定的原则划分成一个个较小的、相对独立但又相互关联的模块 重要指导思想: 分解 模块

5、独立性,分解(Decomposition),模块化是为了使一个复杂的大型程序能被人的智力所管理 设函数c(x)定义问题x的复杂程度,函数E(X)确定解决问题x需要的工作量(时间)。对于两个问题P1 和P2,如果,显然,模块化的依据,人类解决一般问题时一个有趣的规律: C (P1+P2)C (P1)+C (P2) E (P1+P2)E (P1)+E (P2) 结论:各个击破把复杂的问题分解成容易解决的小问题,原来的问题也就容易解决了,问题提出,如果无限的分割软件,最后为了开发软件而需要的工作量也就小得可以忽略了。 ?,模块数与开发工作量的关系,模块划分的基本原则,概括了把软件划分为模块时要遵守的

6、准则,也是判断模块构造是不是合理的标准。 但是到目前为止,没有统一的标准判断一个系统化分成几个模块是最优的。,模块划分的四项基本原则,1.模块独立性强 块内联系强 块间联系弱 2.高内聚 模块内部各成分之间 3.低耦合 一个模块与其它模块之间 4.公共(共享)模块 多个模块公用,模块独立性,问什么模块的独立性很重要? 有效模块化的软件容易开发出来 独立的模块比较容易测试和维护 人的独立性强如何? 人没有独立性,什么都依赖别人如何?,内聚,内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。一个模块内部各个元素之间的联系越紧密,则它的内聚性就越高,相对地,它与其他模块之间的耦合就

7、会减低,而模块独立性就越强。,内聚与耦合,内聚和耦合是相互关联的。在程序结构中各模块的内聚程度越高,模块间的耦合程度就越低。但这也不是绝对的。软件概要设计的目标是力求增加模块的内聚,尽量减少模块间的耦合,但增加内聚比减少耦合更重要,应当把更多的注意力集中到提高模块的内聚程度上来。,内聚, ,弱 强,低内聚 中内聚 高内聚,低内聚,.偶然性内聚 模块内各部分没有联系,或者即使有联系,这种联系也很松散。 .逻辑性内聚 这种模块把几种相关的功能组合在一起,每次调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能。这种模块是单入口的多功能模块。类似的有错误处理模块。它接受出错信号,对不同类型的错

8、误打印出不同的出错信息。,低内聚,.时间性内聚 时间内聚又称为经典内聚。这种模块大多为多功能模块,但模块的各个功能执行与时间有关,通常要求所有功能必须在同一时间段内执行。例如初始化模块和终止模块。,中内聚,.过程性内聚 如果一个模块内的处理是相关的,而且必须以特定次序执行,则称这个模块为过程内聚模块。 .通讯性内聚 如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。,高内聚,.顺序性内聚 如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行(通常一个处理元素的输出数据作为下一个处理元素的输入数据) .功能性内聚 一个模块中各个部分都

9、是某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。,七种内聚的优劣评分,功能内聚 10分 顺序内聚 9分 通信内聚 7分 过程内聚 5分 时间内聚 3分 逻辑内聚 1分 偶然内聚 0分,高内聚,低内聚,逻辑内聚模块,判断,调用模块,读,一,个,记,录,写,一,个,记,录,被,调,用,模,块,常见内聚类型,常见内聚类型,耦 合,对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度、调用模块的方式以及哪些信息通过接口。 在软件设计中应该追求尽可能松散耦合的系统,耦合的七种类型(低高)

10、,非直接耦合:如果两个模块之间没有直接关系,它们之间的联系完全是通过主要模块的控制和调用来实现的,这就是非直接耦合。 数据耦合:如果一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。 标记耦合 :如果一组模块通过参数表传递记录信息,就是标记耦合。事实上,这组模块共享了这个记录,它是某一类数据结构的子结构,而不是简单变量。这要求这些模块都必须清楚该纪录的结构,并按结构要求对此记录进行操作。,耦合的七种类型(续),控制耦合 :如果一个模块通过传递开关、标志、名字等控制信息,明显的控制选择另一模块的功能,就是控制耦

11、合。 外部耦合 :一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。 公共耦合 :若一组模块都访问同一个公共数据环境,则它们之间的耦合称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。,弱耦合,公共耦合,公共耦合,公共耦合会引起下列问题: 1、 所有公共耦合模块都于某一个公共数据 环境内部各项的物理安排有关,若修改某个数据的大小,将会影响到所有的模块。 2、无法控制各个模块对公共数据的存取,严重影响软件模块的可靠性和适应性。 3、公共数据名的使用,明显降低了程序的可读性。,内容耦合,如果出现下列情况之

12、一,两个模块间就发生了内容耦合: 一个模块访问另一个模块的内部数据 一个模块不通过正常入口而转到另一个模块的内部 两个模块有一部分程序代码重叠(只可能出现在汇编程序中) 一个模块有多个入口(这意味着一个模块有几种功能),内容耦合,(a)进入另一模块内部,(b)模块代码重叠,(c)多入口模块,内容耦合 0分 公共耦合 1分 外部耦合 3分 控制耦合 5分 特征耦合 7分 数据耦合 9分 非直接耦合 10分,高耦合,低耦合,七种耦合的优劣评分,关于耦合的设计原则,尽量使用数据(特征)耦合 少用控制耦合 限制公共环境耦合的范围 完全不用内容耦合,建立公共(共享)模块,建立公共模块的目的是减少冗余,减

13、少不必要的重复工作,划出某项功能成为一个能被几个模块共同利用的模块。也就模块结构图的形态是中层宽大,上下小的。 例:球场,田径场,哪种设计方案更好呢?,自顶向下和自底向上设计,自顶向下 顶层开始 逐步分解 由底向上 选择关键部分先设计 扩展到整个系统,两种设计方法的比较,3.如果在可行性上出现问题,可以较早发现,3.需要进行详细 可行性论证,2.整体测试可能在模块接口间发现不一致等问题,2.整体测试较易通过,1.可能导致较大的重新设计,1.易于修改和扩展,由底向上设计,自顶向下设计,4.4.1 协同设计,谁最合适设计系统的某一方面? 如何使组内成员相互了解别人的设计? 如何协调设计组件使整个系

14、统统一,4.4.2 用户(人机)界面设计,让用户驾驭软件,不是软件驾驭用户 减少用户的记忆 保持界面的一致性,人机界面设计,人机界面(Human Computer Interface,简称HCI)通常也称为用户界面 界面设计主要包括三个方面: 设计软件构件之间的接口 设计模块和其他非人的信息生产者和消费者的界面 设计人(如用户)和计算机间的界面,1 界面的设计原则,分析用户类型 应用程序和界面分离 一致性 尽量减少用户工作 提供反馈 出错处理和帮助功能 增加可视化图形表示,1.1 黄金规则,在有关界面设计的著作中, Theo Mandel创造了三条黄金原则: 置于用户控制之下 减少用户的记忆负

15、担 保持界面一致,黄金规则:置于用户控制之下,Mandel定义的一组允许用户操作控制的原则: 以不强迫用户进入不必要的或不希望的动作的方式来定义交互方式 提供灵活的交互 允许用户交互可以被中断和撤消 当技能级别增加时可以使交互流水化并允许定制交互 使用户隔离内部技术细节 设计应允许用户和出现在屏幕上的对象直接交互,黄金规则:减少用户的记忆负担,Mandel定义了一组设计原则,使界面能够减少用户记忆负担: 减少对短期记忆的要求 建立有意义的缺省 定义直觉性的捷径 界面的视觉布局应该基于真实世界的隐喻 以不断进展的方式揭示信息,缺省值,黄金规则:保持界面一致,用户应以一致的方式展示和获取信息: 所

16、有可视信息的组织均按照均按照贯穿所有屏幕显示所保持的设计标准 输入机制被约束到有限的集合,在整个应用中被一致地使用 从任务到任务的导航机制被一致地定义和实现 Mandel定义了一组帮助保持界面一致性的设计原则: 允许用户将当前任务放入有意义的语境 在应用系列内保持一致性 如过去的交互模型已建立起了用户期望,除非有迫不得已的理由,不要改变它,1.2 用户友好性设计,用户友好性一般属软件的性能特性,它独立于所有具体功能,却影响着所有功能的重用性。 用户友好性应体现在与用户有接口的软件特性上。 用户友好性的根本目的是为了软件可重用性、可维护性。,用户友好性的标志,可操作性 健壮性 易学习性 可扩展性,1.3 反馈响应时间(系统延迟) 系统闭合等级:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号