- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章 结构化设计 在软件需求分析阶段确定了要让所开发的软件“做什么”的问题,接下来就是实现软件的需求,解决“怎样做”的问题。软件设计就是处理“怎样做”的问题,它被定义为“应用各种技术和原理,对设备、过程或系统作出足够详细的描述,使之能够在物理上的以实现”。 第一节 软件设计在开发阶段中的任务和地位 开发阶段由设计、编码和测试三个互相关联的基本活动组成,每个活动都按照某种方式进行信息变换。软件设计是开发活动的第一步,需求规格说明书中对将要实现系统的信息、功能和行为方面的需求描述构成了软件设计的基础。 软件结构设计 数据设计 过程(算法)设计 一个独立的界面设计活动。 软件结构设计是确定软件系统各主要部件之间的关系。 数据设计是把信息描述转换为实现软件系统所要求的数据结构。 过程(算法)设计是把结构部件转换成软件系统的过程性描述。 编码是根据这种过程性描述编制代码。 然后把生成的程序代码交由测试人员测试,最终得到完整有效的软件产品。 软件设计是一个把软件需求逐步转换为软件源代码的过程,它提供了软件的表示,使得软件的质量评价成为可能。 软件设计还是将用户要求准确地转化为最终软件产品的唯一途径,它也是后续开发活动及软件维护的基础。 因而,软件设计是开发阶段最重要的活动。 第二节 软件设计的概念和原则 一、模块化 1、模块 模块或组件是指具有一定功能的可以用名字调用的程序语句集合。 例如,过程、函数、子程序和宏等都可作为模块。面向对象范型中的对象是模块,对象内的方法也是模块。 2、模块化 模块化是将软件划分成若干个相对独立的模块,而这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。 模块化可以化繁为简,减少成本,但如果模块分得过多,会增加模块的接口成本,反而增加软件的整体成本。所以模块化的程度应该是适量的。 模块是由边界元素限定的相邻的程序元素(例如,数据说明,可执行的语句)的序列,而且有一个总体标识符来代表它。像Pascal或Ada这样的块结构语言中的Begin…end对,或者C,C++和Java语言中的{…}对,都是边界元素的例子。因此,过程、函数、子程序和宏等,都可作为模块。面向对象范型中的对象(见第6章)是模块,对象内的方法也是模块。模块是构成程序的基本构件。 模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求 Meyer提出了五条标准,我们可以用这五条标准来评价一种设计方法定义有效的模块系统的能力。下面列出这五条标准。 (1) 模块可分解性 如果一种设计方法提供了把问题分解为子问题的系统化机制,它就能降低整个问题的复杂性,从而可以实现一种有效的模块化解决方案。 (2) 模块可组装性 如果一种设计方法能把现有的(可重用的)设计构件组装成新系统,它就能提供一种并非一切都从头开始做的模块化解决方案。 (3) 模块可理解性 如果可以把一个模块作为一种独立单元(无需参考其他模块)来理解,那么,这样的模块是易于构造和易于修改的。 (4) 模块连续性 如果对系统需求的微小修改只导致对个别模块,而不是对整个系统的修改,则修改所引起的副作用将最小。 (5) 模块保护性 如果在一个模块内出现异常情况时,它的影响局限在该模块内部,则由错误引起的副作用将最小。 采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。因为程序错误通常局限在有关的模块及它们之间的接口中,所以模块化使软件容易测试和调试,因而有助于提高软件的可靠性。因为变动往往只涉及少数几个模块,所以模块化能够提高软件的可修改性。模块化也有助于软件开发工程的组织管理,一个复杂的大型程序可以由许多程序员分工编写不同的模块,并且可以进一步分配技术熟练的程序员编写困难的模块。 二、抽象 抽象就是抽出事物的本质特性而暂时不考虑它们的细节。 一个复杂的问题首先可以用一些高级的概念构造和理解,这些高级的概念又可以用一些低级概念构造和理解性,如此进行下去,直至最低层次的具体元素。 这就是所谓的层次思维,即用层次的方式考虑和处理一个复杂的问题。 软件工程的每一步都是对软件的较高一级抽象层的解的一次具体化的描述。 在软件计划阶段,软件系统被描述为整个计算机系统中的一个部分。 在软件需求分析阶段,软件用问题域约定的大家所熟悉的习惯用语描述。 从概要设计向详细设计过度时,抽象级别再次被降低。 编码完成后就达到最低的抽象层次。 在这种从高级抽象到低级抽象的转换过程中,始终伴随着一系列的过程抽象和数据抽象。 过程抽象把完成一个特定功能的动作序列抽象为一个过程名和参数表,并通过指定过程名和实际参数调用此过程。 数据抽象把一个数据对象的描
文档评论(0)