第4章 结构化设计方法 软件工程课件.ppt

  1. 1、本文档共120页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 结构化设计方法 软件工程课件

第4章 结构化设计方法 软件设计的概念及原则 结构化设计 体系结构设计 接口设计 数据设计 过程设计 软件设计规格说明 4.1 软件设计的概念及原则 软件设计的概念 设计是一项核心的工程活动。 在20世纪90年代早期,Lotus 1-2-3的发明人Mitch Kapor在Dr. Dobbs杂志上发表了“软件设计宣言”,其中指出: “什么是设计?设计是你站在两个世界——技术世界和人类的目标世界——而你尝试将这两个世界结合在一起……”。 4.1 软件设计的概念及原则 软件设计的概念 罗马建筑批评家 Vitruvius 提出了这样一个观念: “设计良好的建筑应该展示出坚固、适用和令人赏心悦目”。 4.1 软件设计的概念及原则 软件设计的原则 (1) 分而治之 分而治之是人们解决大型复杂问题时通常采用的策略。 将大型复杂的问题分解为许多容易解决的小问题,原来的问题也就容易解决了。 软件的体系结构设计、模块化设计都是分而治之策略的具体表现。 分而治之 尽管模块分解可以简化要解决的问题,但模块分解并不是越小越好。 模块规模的减小,虽然可使开发单个模块的成本减少,但随着模块数目增加,模块之间关系的复杂程度也会增加,设计模块间接口所需要的工作量也将增加,如图所示: 4.1 软件设计的概念及原则 (2) 模块独立性 模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他的模块的接口是简单的。 例如,一个模块只具有单一的功能且与其他模块没有太多的联系,那么,我们则称此模块具有模块独立性。 一般采用两个准则度量模块独立性。即模块间的耦合和模块的内聚。 耦合与内聚 耦合:是模块间相对独立性(互相连接的紧密程度)的度量。 模块之间连接越紧密、联系越多,耦合性就越高,则独立性就越弱。 内聚:是模块功能强度(模块内部元素彼此结合的紧密程度)的度量。 一般,模块内部各元素间内聚性越高,相对与其它模块的耦合性就会降低,而独立性就越强。 问题:模块和包是什么关系? 4.1 软件设计的概念及原则 (3) 提高抽象层次 抽象是指忽视一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。 当我们进行软件设计时,设计开始时应尽量提高软件的抽象层次,按抽象级别从高到低进行软件设计。 4.1 软件设计的概念及原则 (4) 复用性设计 复用是指同一事物不做修改或稍加修改就可以多次重复使用。 将复用的思想用于软件开发,称为软件复用。 我们将软件的可重用部分称为软件构件。 构造新的软件系统时不必从零做起,可以直接使用已有的软构件即可组装(或加以合理修改)成新的系统。 4.1 软件设计的概念及原则 (5) 灵活性设计 保证软件灵活性设计的关键是抽象。 面向对象系统中的类结构类似一座金字塔,越接近金字塔的顶端,抽象程度就越高。 “抽象”的反义词是“具体”。理想情况下,一个系统的任何代码、逻缉、概念在这个系统中都应该是唯一的,也就是说不存在重复的代码。 4.1 软件设计的概念及原则 在设计中引入灵活性的方法有: 降低耦合并提高内聚(易于提高替换能力); 建立抽象(创建有多态操作的接口和父类); 不要将代码写死(消除代码中的常数); 抛出异常(由操作的调用者处理异常); 使用并创建可复用的代码。 4.2 结构化设计 结构化设计的任务 结构化设计与结构化分析的关系 模块结构及表示 数据结构及表示 4.2.1 软件设计的任务 软件设计的主要任务是要解决如何做的问题。 在需求分析的基础上,建立各种设计模型,并通过对设计模型的分析和评估,来确定这些模型是否能够满足需求。 软件设计是将用户需求准确地转化成为最终的软件产品的唯一途径,在需求到构造之间起到了桥梁作用。 在设计阶段,往往存在多种设计方案,通常需要在多种设计方案之中进行决策和折中。 4.2.1 软件设计的任务 软件设计的阶段与任务 从工程管理的角度,可以将软件设计分为概要设计阶段和详细设计阶段。 从技术的角度,传统的结构化方法将软件设计划分为体系结构设计、数据设计、接口设计和过程设计4部分; 面向对象方法则将软件设计划分为体系结构设计、类设计/数据设计、接口设计和构件级设计4部分。 4.2.1 软件设计的任务 软件设计的阶段与任务 从管理和技术两个不同的角度对设计的认识。 4.2.1 软件设计的任务 软件设计的阶段与任务 体系结构设计:体系结构设计定义软件的主要结构元素及其之间的关系。 接口设计:接口设计描述用户界面,软件和其他硬件设备、其他软件系统及使用人员的外部接口,以及各种构件之间的内部接口。 数据设计:传统方法主要根据需求阶段所建立的实体—关系图(ER图)来确定软件涉及的文件系统的结构及数据库的表结构。 4.2.1 软件设计的任务

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档