- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章 软件设计 内容介绍 3.1 软件设计概述 3.2 概要设计 3.3 模块和模块化 3.4 详细设计 3.5 Jackson程序设计方法 3.6 Warnier程序设计方法 3.7 用户界面设计 3.8 软件设计规格说明书 3.9 案例分析 3.10 小结 3.1 软件设计概述 3.1.1 软件设计概念与重要性 3.1.2 软件设计的任务与策略 3.1.3 软件设计基本原则 3.1.1 软件设计概念与重要性 软件设计就是根据软件需求分析阶段产生的数据和功能需求,采用某种设计方法进行概要设计(体系结构设计、数据设计/数据库设计)、详细设计(模块设计、过程设计、用户界面设计),生成所要构造的实体过程,是软件工程的技术核心。 3.1.1 软件设计概念与重要性 软件设计是把需求转化为软件系统的最重要的环节,其优劣在根本上决定了软件系统的质量,重要性表现为以下两方面。 (1)软件设计是开发阶段最重要的步骤,是软件质量得以保证的关键步骤。 (2)软件设计是将用户要求准确地转化为最终的软件产品的惟一途径。 3.1.2 软件设计的任务与策略 1.软件设计是一个把需求分析变换成软件表示的过程。 (1)概要设计 。 (2)详细设计。 2.在进行软件开发系统分析时需要遵循的策略。 (1)概要设计 概要设计:将软件需求转化为数据结构和软件的系统结构。概要设计只是描绘出软件的总体框架,根据功能、性能需求和数据需求导出软件的数据结构和系统结构。 概括地说,概要设计进行数据设计/数据库设计和系统体系结构设计。 概要设计主要完成以下任务: 制定规范; 软件系统结构的总体设计; 数据设计; 概要设计评审。 (2)详细设计 详细设计:对结构进行细化,得到软件的详细的数据结构和算法。对概要设计过程中给出的各种结构成分进行详细的加工,得到在程序细节上非常接近于源程序的软件表示。 概括地说,详细设计就是进行过程设计。 详细设计需要完成的工作是: 确定软件各个组成部分内的算法以及各部分的内部数据组织; 选定某种过程的表达形式来描述各种算法; 用户界面的设计; 编写详细设计文档; 进行详细设计的评审。 进行系统分析时需要遵循的策略 “简单-复杂-简单”。分析经常要经历“简单-复杂-简单”的过程,前一个简单表现为分析人员“认为简单”;随着分析的深入,原以为简单的问题会越来越复杂;最后,经过概括、消化、分解,使得需求简单明了。 软件复用技术。新开发的软件,要从一开始就考虑其可演化性,以便以后的再工程和构件提取。 模块化概念。模块化可以增强系统的独立性,使耦合度降低,实现“高内聚-低耦合”。对于模块的内部,使其高度集中,而模块与模块的联系相对减少,这样使系统各模块独立的进行运转。 3.1.3 软件设计基本原则 1.抽象与求精 2.模块化和信息隐藏 3.模块独立性 1.抽象与求精 抽象是一种思考和解决问题的形式,它集中注意事物某个一般性级别上的问题,避开不必要的低层细节。抽象可以分成若干级别,级别越高,细节就越少。 抽象过程是指具有特定功能的一个命令的指令序列。 抽象数据则是描述数据对象的一个命名的数据集合。 求精的主要思想是将某个宏观功能不断分解,逐步确立过程细节,直至用程序设计语言描述的算法实现为止。 2.模块化和信息隐藏 合理的软件结构应该是分块的结构,即软件应该分解成可单独命名的且可访问的部件,这些部件称为模块。 这种将软件分成具有一定结构的模块的过程称为模块化。 信息隐藏是指模块中所包含的信息(包括数据和过程)对不需要这些信息的其他模块是不可访问的。这样,每一个将来可能的改变都会局部于一个特定的模块,改变该模块的内部过程或数据的设计不会影响到其他模块。 3.模块独立性 模块独立性是模块化、抽象和信息隐藏的直接产物,其基本含义是每一个模块只完成功能需求中的一个特定的子功能,而且从程序结构的其他部分来访问这一模块只具有一个简单的接口。 3.2 概要设计 3.2.1 概要设计的任务和步骤 3.2.2 面向数据流图的设计方法 3.2.3 面向对象的设计方法 3.2.1 概要设计的任务和步骤 1.确定设计方案 设计供选择的方案 推荐最佳实现方案 2.软件结构设计 功能分解 设计软件结构 3.数据文件设计 4.制定测试计划 5.书写概要设计文档 3.2.2 面向数据流图的设计方法 面向数据流图的设计方法是基于抽象和功能分解进行软件结构设计的一种结构化设计方法。 有两种面向数据流图的设计方法:数据流分析和事务分析。 理论上,只要需求规格说明是用数据流图表示,就可以使用数据流分析方法进行软件结构设计。 1.数据流分析 数据流分析,又称变换分析,是一种将数据流图转换成软件结构图的系统设计方法。 计算机系统都有一个从“输入”到“变换”到“输出”的过程。 1.数
文档评论(0)