- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 软件设计本章目标 了解软件设计的意义和目标。掌握软件设计的原则。了解软件设计的分类。熟悉数据库结构设计。熟悉用户界面设计。学习编写软件设计说明书。7.1 软件设计的基本概念 完成了需求分析,回答了软件系统能“做什么”的问题,软件的生命周期就进入了设计阶段。软件设计是软件开发过程中的重要阶段,在此阶段中,开发人员将集中研究如何把需求规格说明书里归纳的分析模型转换为可行的设计模型,并将解决方案记录到相关的设计文档中。实际上,软件设计的目标就是要回答“怎么做”才能实现软件系统的问题,也可以把设计阶段的任务理解为把软件系统能“做什么”的逻辑模型转换为“怎么做”的物理模型。软件设计在软件开发中处于核心地位。7.1 软件设计的基本概念7.1.1 软件设计的意义和目标 软件设计在软件开发过程中处于核心地位,它是保证质量的关键步骤。设计为我们提供了可以用于质量评估的软件表示,设计是我们能够将用户需求准确地转化为软件产品或系统的唯一方法。软件设计是所有软件工程活动和随后的软件支持活动的基础。软件设计是一个迭代的过程,通过设计过程,需求被变换为用于构建软件的“蓝图”。McGlaughlin提出了可以指导评价良好设计演化的3个特征:1)设计必须实现所有包含在分析模型中的明确需求,而且必须满足用户期望的所有隐含需求。2)对于程序员、测试人员和维护人员而言,设计必须是可读的、可理解的指南。3)设计必须提供软件的全貌,从实现的角度说明数据域、功能域和行为域。 以上每一个特征实际上都是设计过程应该达到的目标。 7.1 软件设计的基本概念7.1.2 软件设计的原则为了提高软件开发的效率及软件产品的质量,人们在长期的软件开发实践中总结出一些软件设计的原则,其基本内容如下。1. 模块化模块是数据说明、可执行语句等程序对象的集合,是构成程序的基本构件,可以被单独命名并通过名字来访问。在面向过程的设计中,过程、函数、子程序、宏都可以作为模块;在面向对象的设计中,对象是模块,对象中的方法也是模块。模块化就是把系统或程序划分为独立命名并且可以独立访问的模块,每个模块完成一个特定的子功能。模块集成起来可以构成一个整体,完成特定的功能,进而满足用户需求。 7.1 软件设计的基本概念 在模块化的过程中,要注意以下几点。(1) 模块的规模要适中。(2) 提高模块的独立性,降低模块间的耦合程度。(3) 提高模块的内聚程度。(4) 加强模块的保护性。7.1 软件设计的基本概念 2. 抽象 抽象是人们认识复杂的客观世界时所使用的一种思维工具。抽象主要是为了降低问题的复杂度,以得到问题领域中较简单的概念,好让人们能够控制其过程或以宏观的角度来了解许多特定的事态。 抽象在软件开发过程中起着非常重要的作用。一个庞大、复杂的系统可以先用一些宏观的概念构造和理解,然后再逐层地用一些较微观的概念去解释上层的宏观概念,直到最底层的元素。7.1 软件设计的基本概念3. 逐步求精 在面对一个新问题时,开发人员可暂时忽略问题非本质的细节,而关注于与本质相关的宏观概念,集中精力解决主要问题,这种认识事物的方法就是逐步求精。逐步求精是抽象的逆过程。开发人员认识问题时逐步求精的过程,同时也是抽象程度逐渐降低的过程。 按照逐步求精的思想,程序的体系结构是按照层次结构,逐步精化过程细节而开发出来的。可见,求精就是细化,它与抽象是互补的概念。逐步求精与抽象的关系 7.1 软件设计的基本概念 4. 信息隐藏信息隐藏与模块化的概念相关。当一个系统被分解为若干个模块时,为了避免某个模块的行为干扰同一系统中的其他模块,应该让模块仅仅公开必须让外界知道的信息,而将其他信息隐藏起来,这样模块的具体实现细节相对于其他不相关的模块而言就是不可见的,这种机制就叫做信息隐藏。信息隐藏提高了模块的独立性,加强了外部对模块内部信息进行访问的限制,它使得模块的局部错误尽量不影响其他模块。信息隐藏有利于软件的测试和维护工作。通常,模块的信息隐藏可以通过接口来实现。模块通过接口与外部进行通信,而把模块的具体实现细节(如数据结构、算法等内部信息)隐藏起来。一般来说,一个模块具有有限个接口,外部模块通过调用相应的接口来实现对目标模块的操作。7.1 软件设计的基本概念 5. 复用性设计 软件复用就是将已有的软件成分用于构造新的软件系统。可以被复用的软件成分一般称作可复用构件,无论对可复用构件原封不动地使用还是作适当的修改后再使用,只要是用来构造新软件,则都可称作复用。软件复用不仅仅是对程序的复用,它还包括对软件生产过程中任何活动所产生的制成品的复用,如软件开发计划、可行性研究报告、分析模型、设计模型、源程序`、测试用例等等。如果是在一个系统中多次使用一个相同的软件成分,则不称作复用,而称作共享;对一个软件进行修改,使它运行于新的软硬件平台
原创力文档


文档评论(0)