- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件工程5章
第5章 总体设计 5.1 设计过程 5.2 设计原理 5.3 启发规则 5.4 描绘软件结构的图形工具 5.5 面向数据流的设计方法 概要设计任务: (1)方案设计 确定系统具体的实现方案。包含: 确定物理元素(程序、数据库、人工过程、硬件); 成本效益分析; 该方案的进度计划等。 (2) 结构设计 确定系统由哪些模块组成? 确定模块相互间的关系? 5.1 设计过程 1. 设想供选择的方案 对系统的逻辑模型(DFD)进行合理的分组(划分边界); 设想可能实现的物理实现方案,供选择。 2. 选取合理的方案 通常选取低成本、中等成本和高成本的三种方案。对每个方案准备: (1) 系统流程图; (2) 组成系统的物理元素; (3) 成本/效益分析; (4) 实现该系统的进度计划。 3. 推荐最佳方案 推荐一个最佳的方案;(技术、经济、操作) 为推荐的方案制定详细的实现计划; 方案由用户和有关的技术专家审查、确认。 1,2,3为方案设计 5. 设计软件结构 软件结构是由模块构成的层次结构,上层模块调 用下层模块来实现该模块的功能。 可以从数据流图映射出软件结构,------面向数据流的设计方法。 用层次(H)图或结构图(Yourdon)描述软件结构。 8. 书写文档 文档的主要内容有: 系统说明 系统流程图 系统的物理元素清单(程序、数据库、人工过程、硬件等) 成本/效益分析 精化的数据流图(功能分解) 软件结构:用层次图或结构图描绘 算法:用IPO图、PDL语言(伪码)等简要描述 模块间的接口 (模块的输入、输出) (2) 用户手册(初步的) (3) 测试计划 测试策略(自顶向下,自底向上) 测试方案(方法,人,地点) 预期的测试结果 测试进度计划 (4) 详细的实现计划 (5) 数据库设计结果 关系模式(逻辑模型) 9. 审查和复审 技术审查:保证质量、降低成本的重要措施。 管理复审:对开发成本、投资回报、开发进度进行审 查,发现问题,即时调整。 5.2 设计原理 5.2.1 模块化 (把复杂的问题分解为若干个简单的问题) 1.模块 是构成程序(软件)的基本构件。 过程 函数 子程序 对象 … 模块(VC#): 2.模块化 把程序划分成独立的模块,每个模块完成一个子功能(可能是多个函数)。优点: 软件结构清晰、容易理解; 容易测试; 可修改性好; 有助于软件工程的组织管理。 当划分的模块数增加时: 每个模块的规模减小,开发单个模块需要的成本(工作量)减少; 设计模块间接口所需要的工作量增加。 图5.1 模块化和软件成本 5.2.2 抽象 抽象就是把握事物本质,暂不考虑细节。 在软件结构每一层中的模块,表示了对软件抽象层次的一次精化。(一个抽象层次) 软件结构顶层的模块,控制了系统的主要功能; 软件结构底层的模块,完成对数据的一个具体处理。 用自顶向下由抽象到具体的方式分配控制: 简化了软件的设计和实现; 提高了软件的可理解性和可测试性; 软件更容易维护。 5.2.3 逐步求精 定义:“为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。” 逐步求精的过程就是从抽象到具体的过程。 帮助软件工程师把精力集中在与当前开发阶段最相关的那些方面上; 忽略目前暂时不需要考虑的细节,这些细节将留到以后再考虑。 5.2.4 信息隐藏和局部化 信息隐藏: 一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。 局部化: 把一些关系密切的软件元素(变量、函数等)物理地放得彼此靠近。 对象支持信息隐藏,对象中数据通常是私有的。 在模块中使用局部变量。 5.2.5 模块独立 模块独立 的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。 每个模块完成一个相对独立的特定子功能; 模块之间的接口简单。 优点: (1)便于多人分工合作开发同一个软件; (2)便于测试和维护。 模块的独立性的度量: 耦合: 衡量不同模块彼此间互相依赖(连接)的紧密程度。 内聚: 衡量一个模块内部各个元素彼此结合的紧密程度。 1. 耦合 耦合是对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于: 模块间接口的复杂程度(形参个数、类型等); 进入或访问一个模块的点数(如访问类的数据成员)。 在软件设计中应该
文档评论(0)