- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
国防科技大学计算机学院 第八章 软件设计基础 软件需求:解决“做什么” 软件设计:解决“怎么做” 软件设计的任务 问题结构(软件需求) 软件结构 从软件需求规格说明书出发,形成软件的具体设计方案。 8.1软件设计过程 软件设计包括 数据设计 信息模型 软件数据结构 体系结构设计 定义软件部件间的关系 接口设计 软件内部、外部及与人之间的通信 过程设计 软件组件的过程性描述 软件设计过程 从工程管理的角度看,软件设计可分为概要设计和详细设计两大步骤。 概要设计是根据需求确定软件和数据的总体框架 详细设计是将其进一步精化成软件的算法表示和数据结构。 8.2软件设计基本概念 8.2.1抽象与逐步求精 抽象是管理、控制复杂性的基本策略 。 “抽象”是心理学概念,它要求人们将注意力集中在某一层次上考虑问题,而忽略那些低层次的细节。 逐步求精 为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。 抽象与求精是一对互补的概念,这两个概念有助于设计者在设计演化过程中创造出完整的设计模型。 8.2.2模块化 模块化的概念 把软件划分为可独立命名和编址的部件,每个部件称为一个模块,当把所有模块组装到一起时则获得满足问题需要的一个解。 软件总体结构体现了模块化思想。 “模块化是软件唯一能使程序获得智能化管理的一个属性”,没有模块的程序控制路径错综复杂,变量被远距离引用等难于被人掌握。 模块化 “分治法” 一个复杂问题分割成若干个可管理的小问题后更易于求解。 当模块总数增加时,每个模块的成本减少了,但模块接口所需代价随之增加。 如果模块数为M时将获得最小开发成本,那么模块数在M附近选择,就能避免模块分割过度和不足。 这些问题涉及信息隐藏、内聚度与藕合度的概念。 模块化 怎样保证模块数“在M附近”? 依据什么标准划分模块? 模块独立性 模块独立性, 是指软件系统中每个模块只涉及软件要求的具体的子功能, 而和软件系统中其它的模块的接口是简单的 例如, 若一个模块只具有单一的功能且与其它模块没有太多的联系, 则称此模块具有模块独立性 一般采用两个准则度量模块独立性。即模块间耦合和模块内聚 模块独立性 耦合是模块之间的互相连接的紧密程度的度量。 内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。 模块独立性比较强的模块应是高内聚低耦合的模块。 模块间的耦合 设计软件时应尽量使用数据耦合,减少控制耦合,限制外部环境耦合和公共数据耦合,杜绝内容耦合。 非直接耦合(Nondirect Coupling) 两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和 调用来实现的。非直接 耦合的模块独立性最强。 数据耦合 (Data Coupling)一个模块访问另一个模块时,彼此之间是通过简单数据参数 (不是控制参数、公共数据结构或外部变量) 来交换输入、输出信息的。 标记耦合 (Stamp Coupling)一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。 控制耦合 (Control Coupling) 如果一个模块通过传送开 关、标志、名字等控制信息,明显地控制选择另模块的功能,就是控制耦合。 外部耦合(External Coupling) 一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。 公共耦合(Common Coupling) 若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。 内容耦合 (Content Coupling)如果发生下列情形,两个模块之间就发生了内容耦合 (1) 一个模块直接访问另一个模块的内部数据; (2) 一个模块不通过正常入口转到另一模块内部; (3) 两个模块有一部分程序代码重迭(只可能出现在汇编语言中); (4) 一个模块有多个入口。 内容耦合 模块内聚 模块内聚 功能内聚(Functional Cohesion) 一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。 模块内聚 信息内聚(Informational Cohesion) 这种模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该执行哪一个功能。由于这个模块的所有功能都是基于同一个数据结构(符号表),因此,它是一个信息内聚的模
文档评论(0)