软件工程课件05

上传人:kms****20 文档编号:51269433 上传时间:2018-08-13 格式:PPT 页数:204 大小:1.89MB
返回 下载 相关 举报
软件工程课件05_第1页
第1页 / 共204页
软件工程课件05_第2页
第2页 / 共204页
软件工程课件05_第3页
第3页 / 共204页
软件工程课件05_第4页
第4页 / 共204页
软件工程课件05_第5页
第5页 / 共204页
点击查看更多>>
资源描述

《软件工程课件05》由会员分享,可在线阅读,更多相关《软件工程课件05(204页珍藏版)》请在金锄头文库上搜索。

1、第五章 总体设计1软件工程 - 2010 - 第五章 总体设计第五章内容概要n软件设计过程n软件设计原理n启发规则n描绘软件结构的图形工具n面向数据流的设计方法n软件体系结构2软件工程 - 2010 - 第五章 总体设计软件设计的本质3软件工程 - 2010 - 第五章 总体设计n过去软件设计曾被狭隘地认为是“编程序”或“写 代码”,致使软件设计没有发挥它重要的作用, 导致软件系统结构稳定性极差:软件设计的本质4软件工程 - 2010 - 第五章 总体设计n软件设计是软件开发过程中承前启后的工 作,它依据软件需求规格说明书建立软件 设计方案,作为下一步程序编码的依据;n是在软件开发中形成质量的

2、地方:设计提 供了可用于质量评估的软件表示;n是将需求准确转换为完整的软件产品或系 统的唯一办法;软件设计的本质5软件工程 - 2010 - 第五章 总体设计软件设计过程开发阶段的信息流开发阶段的信息流6软件工程 - 2010 - 第五章 总体设计n概要设计:将软件需求转化为数据结构和 软件的系统结构,即系统的模块划分。n详细设计:通过对系统的结构表示(每个 模块的内部工作)进行细化,得到软件的 详细的数据结构和算法。软件设计过程7软件工程 - 2010 - 第五章 总体设计n总体设计过程通常由两个主要阶段组成:n系统设计阶段:确定系统的具体实现方案;n结构设计阶段:确定软件结构。n典型的总体

3、设计过程包括以下9个步骤:软件设计过程8软件工程 - 2010 - 第五章 总体设计n设想供选择的方案:n需求分析阶段得出的数据流图是总体设计的 极好的出发点。n设想供选择的方案的一种常用的方法是,设 想把数据流图中的处理分组的各种可能的方 法,抛弃在技术上行不通的分组方法(例如, 组内不同处理的执行时间不相容),余下的分 组方法代表可能的实现策略,并且可以启示 供选择的物理系统。 软件设计过程9软件工程 - 2010 - 第五章 总体设计n选取合理的方案:n从一系列方案中选取若干个合理的方案,通常 至少选取低成本、中等成本和高成本的3种方 案n对每个合理的方案分析员都应该准备下列4份 资料:

4、 (1) 系统流程图; (2) 组成系统的物理元素清单; (3) 成本效益分析; (4) 实现这个系统的进度计划;软件设计过程10软件工程 - 2010 - 第五章 总体设计n推荐最佳方案:n分析员应该综合分析对比各种合理方案的利 弊,推荐一个最佳的方案,并且为推荐的方 案制定详细的实现计划;n用户和有关的技术专家应该认真审查分析员 所推荐的最佳系统;n使用部门负责人进一步审批;n进入总体设计过程的下一个重要阶段结 构设计。软件设计过程11软件工程 - 2010 - 第五章 总体设计n 功能分解:n对程序(特别是复杂的大型程序)的设计,通常分为两 个阶段完成:n结构设计:确定程序由哪些模块组成

5、,以及这些模块之间的 关系;是总体设计阶段的任务;n过程设计:确定每个模块的处理过程;是详细设计阶段的任 务。n为确定软件结构,首先需要从实现角度把复杂的功能 进一步分解。根据是数据流图。n功能分解导致数据流图的进一步细化,同时还应该用 IPO图或其他适当的工具简要描述细化后每个处理的 算法。 软件设计过程12软件工程 - 2010 - 第五章 总体设计n设计软件结构:n通常程序中的一个模块完成一个适当的子功 能。应该把模块组织成良好的层次系统。n软件结构(即由模块组成的层次系统)可以用 层次图或结构图来描绘。n如果数据流图已经细化到适当的层次,则可 以直接从数据流图映射出软件结构。软件设计过

6、程13软件工程 - 2010 - 第五章 总体设计n设计数据库:n在需求分析阶段所确定的系统数据需求的基 础上,设计数据库。n数据结构的设计从某种意义上讲是设计活动 中最重要的一个。软件设计过程14软件工程 - 2010 - 第五章 总体设计n制定测试计划:n在软件开发的早期阶段考虑测试问题,能促 使软件设计人员在设计时注意提高软件的可 测试性。软件设计过程15软件工程 - 2010 - 第五章 总体设计n 书写文档:n(1)系统说明:主要内容包括用系统流程图描绘的系 统构成方案,组成系统的物理元素清单,成本效益 分析;对最佳方案的概括描述,精化的数据流图,用 层次图或结构图描绘的软件结构,用

7、IPO图或其他工 具(例如PDL语言)简要描述的各个模块的算法,模块 间的接口关系,以及需求、功能和模块三者之间的交 叉参照关系等等。n(2)用户手册:根据总体设计阶段的结果,修改更正 在需求分析阶段产生的初步的用户手册。n(3)测试计划:包括测试策略,测试方案,预期的测 试结果,测试进度计划等等。n(4)详细的实现计划n(5)数据库设计结果软件设计过程16软件工程 - 2010 - 第五章 总体设计n审查和复审:软件设计过程 可追溯性 接口 风险 实用性 技术清晰度 可维护性 质量 各种选择方案 限制 其它具体问题17软件工程 - 2010 - 第五章 总体设计第五章内容概要n软件设计过程n

8、软件设计原理n启发规则n描绘软件结构的图形工具n面向数据流的设计方法n软件体系结构18软件工程 - 2010 - 第五章 总体设计n模块:可单独命名和可编址的部分。(另:由边界 元素限定的相邻程序元素的序列,而且有一个总 体标识符代表它)如:nprocedure, function, subroutine, block,Macron模块化:程序划分成独立命名且可独立访问的模 块,每个模块完成一个子功能,把这些模块集成 起来构成一个整体,可以完成指定的功能满足用 户的需求。 软件设计的原理:模块化19软件工程 - 2010 - 第五章 总体设计n模块化的根据: 设函数C(X)定义问题X的复杂程度

9、, 且函数E(X)确定解决问题X需要的工作量(时间), 对于两个问题P1和P2,如果:C(P1)C(P2), 显然:E(P1)E(P2);根据人类解决一般问题的经验,另一个有趣的规律是: C(P1 + P2)C(P1)+C(P2),由此不难得出: E(P1 + P2)E(P1)+E(P2)。软件设计的原理:模块化20软件工程 - 2010 - 第五章 总体设计n模块并非越多越好:n随着模块数目增加,设计模块间接口所需要的工作量 也将增加。软件设计的原理:模块化21软件工程 - 2010 - 第五章 总体设计n模块化原理的好处:n软件结构清晰 ,容易设计、阅读和理解;n软件容易测试和调试,因而有

10、助于提高软件的可靠性 ;n能够提高软件的可修改性;n有助于软件开发工程的组织管理;软件设计的原理:模块化22软件工程 - 2010 - 第五章 总体设计n抽象:抽出事物的本质特性而暂时不考虑它们 的细节。n软件设计过程应当是在不同抽象级别考虑和处 理问题的过程。n软件工程过程的每一步都是对软件解法的抽象 层次的一次精化。软件设计的原理:抽象23软件工程 - 2010 - 第五章 总体设计n过程抽象:把完成一个特定功能的动作序列抽 象为一个过程名和参数表,以后通过指定过程 名和实际参数调用此过程。n数据抽象:把一个数据对象的定义抽象为一个 数据类型名,用此类型名可定义多个具有相同 性质的数据对象

11、。软件设计的原理:抽象24软件工程 - 2010 - 第五章 总体设计n过程抽象举例: 开发一个CAD软件的三层抽象n抽象层次. 用问题所处环境的术语来描述这个软件 :n该软件包括一个计算机绘图界面,向绘图员显示图形 ,以及一个数字化仪界面,用以代替绘图板和丁字尺 。所有直线、折线、矩形、圆及曲线的描画、所有的 几何计算、所有的剖面图和辅助视图都可以用这个 CAD软件实现软件设计的原理:抽象25软件工程 - 2010 - 第五章 总体设计n抽象层次. 任务需求的描述: CAD SOFTWARE TASKS user interaction task; 2-D drawing creation

12、task;graphics display task; drawing file management task; ENDn在这个抽象层次上,未给出“怎样做”的信息,不能直 接实现。软件设计的原理:抽象26软件工程 - 2010 - 第五章 总体设计n抽象层次. 程序过程表示。以二维绘图生成任务为 例:PROCEDURE:2-D drawing creationREPEAT UNTIL (drawing creation task terminates) DO WHILE (digitizer interaction occurs)digitizer interface task;DETERM

13、INE drawing request CASE;line: line drawing task;rectangle:rectangle drawing task; circle: circle drawing task; 软件设计的原理:抽象27软件工程 - 2010 - 第五章 总体设计n可以把逐步求精定义为:“为了能集中精力解决 主要问题而尽量推迟对问题细节的考虑。” n人类的认知过程遵守Miller法则*:一个人在任何 时候都只能把注意力集中在(72)个知识块上。 n逐步求精可视为一种自顶向下的设计策略。按 照这种设计策略,程序的体系结构是通过逐步 精化处理过程的层次而设计出来的。通过

14、逐步 分解对功能的宏观陈述而开发出层次结构,直 至最终得出用程序设计语言表达的程序。 *George A. Miller, “The Magical Number Seven, Plus or Minus Two: Some Limits on Our Capacity for Processing Information”, originally published in The Psychological Review, 1956, vol. 63, pp. 81-97软件设计的原理:逐步求精28软件工程 - 2010 - 第五章 总体设计n对于如何分解软件,信息隐藏原理指出:模块 应该设

15、计成其中包含的信息(过程和数据)对 不需要这些信息的其他模块来说是不可访问的 。只有为了完成软件的总体功能而必需在模块 间交换的信息,才允许在模块间进行传递.(D.L. Parnas, 1972) n局部化:指把一些关系密切的软件元素物理地 放得彼此靠近 。n隐藏的是模块的实现细节。n好处:n支持模块的并行开发;n使得软件易修改,减少后期测试和维护的工作量;n系统易于扩充。软件设计的原理:信息隐藏和局部化29软件工程 - 2010 - 第五章 总体设计n对于如何分解软件,信息隐藏原理指出:模块 应该设计成其中包含的信息(过程和数据)对 不需要这些信息的其他模块来说是不可访问的 。 n局部化:指

16、把一些关系密切的软件元素物理地 放得彼此靠近 。n隐藏的是模块的实现细节。n好处:n支持模块的并行开发;n使得软件易修改,减少后期测试和维护的工作量;n系统易于扩充。软件设计的原理:信息隐藏和局部化30软件工程 - 2010 - 第五章 总体设计n模块独立:每个模块完成一个相对独立的子功能 ,并且和其他模块之间的关系很简单。 它是模块 化、抽象、信息隐藏和局部化概念的直接结果。n模块独立的理由:n第一,有效的模块化(即具有独立性的模块)的软件 比较容易开发出来;n第二,独立的模块比较容易测试和维护。软件设计的原理:模块独立性31软件工程 - 2010 - 第五章 总体设计n模块的独立程度可以由两个定性标准度量,这 两个标准分别称为耦合和内聚。n耦合(Coupling):衡量不同模块彼此间互相 依赖(连接)的紧密程度;n内聚(Cohesion):衡量一个模块内部各个元 素彼此结合的紧密程度。 软件设计的原理:模块独立性32软件工程 - 2010 - 第五章 总体设计n耦合是对一

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

当前位置:首页 > 生活休闲 > 科普知识

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