《SE.T04-设计基础.pptVIP

  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文档。上传文档
查看更多
国防科技大学计算机学院 第八章 软件设计基础 软件设计是软件工程的重要阶段。 软件设计过程是对程序结构、数据结构和过程细节逐步求精、复审并编制文档的过程。 经过软件工程师们多年的努力形成了一些软件设计技术、质量评估标准和设计表示法并用于软件工程实践。 本章讨论与软件设计有关的主要概念, 介绍几个具体的软件设计方法。 8.1软件设计过程 软件开发阶段由设计、编码和测试三个基本活动组成,其中“设计活动”是 获取高质量、低耗费、易维护软件最重要的一个环节。 需求分析阶段获得的需求规格说明书包括对欲实现系统的信息、功能和行为方面的描述, 这是软件设计的基础。对此采用任一种软件设计方法都将产生系统的总体结构设计(archite ctural design)、系统的数据设计(data design)和系统的过程设计(procedural design)( 图8.1)。 软件设计过程 不同的软件设计方法会产生不同的设计形式。 数据设计把信息描述转换为实现软件所要求的数据结构。 总体结构设计旨在确定程序各主要部件之间的关系。 过程设计要完成每一部件的过程化描述。 根据设计结果编制代码。 设计阶段做的决策直接影响软件质量,没有良好的设计就没有稳定的系统,也不会有易维护的软件。 统计表明:设计、编码和测试这三个活动一般占用整个软件开发费用(不包括维护阶段)的75%以上。 图8.1 开发阶段的信息流 软件设计过程 软件设计也可看作将需求规格说明逐步转换为软件源代码的过程。 从工程管理的角度看,软件设计可分为概要设计和详细设计两大步骤。 概要设计是根据需求确定软件和数据的总体框架 详细设计是将其进一步精化成软件的算法表示和数据结构。 概要设计和详细设计由若干活动组成,除总体结构设计、数据结构设计和过程设计外,许多现代应用软件,还包括一个独立的界面设计活动。 8.2软件设计基本概念 软件设计基本概念是过去三十年里陆续提出的。 软件设计者根据这组概念进行设计决策, 如:  划分子部件的标准;  从软件的概念表示中分离出功能和数据结构的细节;  以统一的标准衡量软件设计质量等等。 8.2.1抽象与逐步求精 抽象是管理、控制复杂性的基本策略 。 “抽象”是心理学概念,它要求人们将注意力集中在某一层次上考虑问题,而忽略那些低层次的细节。 使用抽象技术便于人们用“问题域”的概念和术语描述问题,而无须过早地转换为那些不熟悉的结构。 软件设计过程是,在不同抽象级别上考虑、处理问题的过程。 (1)在最高抽象级别上,用面向问题域的语言叙述“问题”,概括“问题解”的形式。 (2)不断地具体化,不断地用面向过程的语言描述问题。 (3)在最低的抽象级别上给出可直接实现的“问题解”,即程序。 抽象与逐步求精 软件工程过程的每一步都是对较高一级抽象的解作一次较具体化的描述。 在系统定义阶段, 软件系统被描述为基于计算机的大系统的一个组成部分; 在软件规划和需求分析阶段,软件用问题域约定的习惯用语表达; 从概要设计过渡到详细设计时,抽象级再一次降低; 编码完成后,达到了抽象的最低级。 抽象与逐步求精 在由高级抽象到低级抽象的转换过程中,伴随着一连串的过程抽象和数据抽象。 过程抽象把完成一个特定功能的动作序列抽象为一个过程名和参数表,通过指定过程名和实际参数调用此过程; 数据抽象把一个数据对象的定义(或描述 )抽象为一个数据类型名,用此类型名可定义多个具有相同性质的数据对象。 8.2.2模块化与信息隐藏 模块化的概念   把软件划分为可独立命名和编址的部件,每个部件称为一个模块,当把所有模块组装到一起时则获得满足问题需要的一个解。 软件总体结构体现了模块化思想。 “模块化是软件唯一能使程序获得智能化管理的一个属性”,      没有模块的程序控制路径错综复杂,变量被远距离引用等难于被人掌握。 模块化与信息隐藏 求解问题的过程 假设 函数C(X)定义了问题X已被觉察到的复杂性,    函数E(X)定义了求解问题X所要求的工作量(按时间计),   对于问题P1和P2, 如果    C(P1)>C(P2)      (8.1a) 则     E(P1)>E(P2)      (8.1b)     C(P1+P2)>C(P1)+C(P2)    (8.2)     E(P1+P2)>E(P1)+E(P2)    (8.3) 解决一个复杂问题,比解决一个简单问题耗费多。 由P1、P2组合而成的问题复杂性,比单个问题复杂性的和更大。 模块化与信息隐藏 “分治法”  一个复杂问题分割成若干个可管理的小问题后更易于求解。 当模块总数增加时,每个模块的成本减少了,但模块接口所需代价随之增加。 如果模块数为M时将获得最小开发成本,那么模块数在M附近选择,就能避免模块分割过度和不足

文档评论(0)

wuyuanli + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档