软件工程VER2第4章张海藩.pdfVIP

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

文档评论(0)

yzzf8888 + 关注
文档贡献者

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

1亿VIP精品文档

相关文档