软件工程(邓良松)第三章_第1页
软件工程(邓良松)第三章_第2页
软件工程(邓良松)第三章_第3页
软件工程(邓良松)第三章_第4页
软件工程(邓良松)第三章_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、3.1软件摘要设计概述3.2软件设计的基本原理3.3软件结构指南3.4基于IDEFO图的设计方法3.5软件详细设计3.6软件详细设计表示,第3章软件设计,返回主目录,第3章软件设计,3.1软件摘要设计概述3.1.1概述设计基本任务1。为了实现设计软件系统结构(以下简称软件结构)目标系统,最终需要设计构成此系统的所有程序和数据库(文件),对于程序,首先需要(1)采用特定的设计方法,将功能复杂的系统划分为模块。(2)确定每个模块的功能。(3)确定模块之间的调用关系。(4)确定模块之间的接口,即模块之间传递的信息。(5)评价模块结构的质量。如上所述,软件结构的设计是在需求分析阶段通过某种分析方法将系

2、统分解成层次的模块基础。设计阶段根据需求分析的结果,从实施的角度对模块进行分区,并构建模块的层次结构。软件结构的设计是直接影响详细设计和编码工作的摘要设计的关键阶段。软件系统的质量和一些总体特性是在软件结构的设计中确定的。因此,应由经验丰富的软件人员担任,采用特定的设计方法,选择合理的设计方案。2 .数据结构和数据库设计对于大规模数据处理的软件系统,除系统结构设计外,数据结构和数据库设计也很重要。1)数据结构的设计逐步细化方法也适用于数据结构的设计。需求分析阶段通过数据字典说明数据的组织、操作约束和数据的关系等,确定数据的结构特征,在摘要设计阶段进行详细调整,详细设计指定具体的实施详细信息。摘

3、要设计阶段必须使用抽象数据类型。“堆栈”是数据结构(例如“堆栈”)的概念模型,可以在详细设计中使用线性表和链接表来实现。设计有效的数据结构大大简化了软件模块处理过程的设计。2)数据库设计数据库的设计表示数据存储文件的设计,以及(1)概念设计。基于数据分析,从用户的角度由上而下执行视图设计。通常使用ER模型表示数据模型,这是概念模型。ER模型是设计数据库的基础和设计数据结构的基础。IDEF1x技术也支持概念模型,并且可以将此模型用作数据库设计的主要基础,就像使用IDEF1x方法设置具有一致性、可扩展性和可变性等特性的系统的信息模型一样。(2)逻辑设计。ER模型或IDEF1x模型独立于数据库管理系

4、统(DBMS),并结合特定的DBMS功能建立数据库的逻辑结构。对于关系DBMS,将概念结构转换为数据模式、子模式和规范,并指定定义数据项、类型、长度以及它们之间的层次或相互关系的表。(3)物理设计。不同的DBMS具有不同的物理环境,存储结构和访问方法也不同。物理设计是设计数据模式的物理细节,例如数据项存储要求、访问方法和索引创建。数据库技术是本书不详细讨论的专业技术。但是开发者需要注意的是,在大型数据处理系统的功能分析和设计中,必须同时进行数据分析和数据设计。数据库的“概念设计”和“逻辑设计”分别对应于系统开发的“需求分析”和“摘要设计”,数据库的“物理设计”对应于模块的“详细设计”。3.建立

5、摘要设计文件摘要设计文件的内容如下:(1)摘要设计指南。(2)数据库设计指南:提供主要使用的DBMS简介、数据库的概念模型、逻辑设计和结果。,(3)用户指南:对在需求分析阶段编写的用户指南进行补充。(4)修改测试计划:对测试策略、方法和步骤提出明确要求。4.在此阶段,我们将审查设计部分是否完全满足要求中规定的功能、性能等要求,设计方案的可行性,主要处理和内部和外部接口定义的准确性、有效性以及各个部分之间的一致性。3.1.2软件摘要设计文档摘要设计说明是在摘要设计阶段结束时提交的技术文档。根据GB8576-88计算机软件产品开发文档编写指南,软件设计文档可分为“概要设计说明书”、“详细设计说明书

6、”和“数据库设计说明书”。设计指南的主要内容包括:(1)简介:写作目的、背景、定义、参考资料。(2)总体设计:要求、操作环境、基本设计概念和处理流程、结构。(3)界面设计:用户界面、外部界面、内部界面。(4)执行设计:执行模块组合、执行控制、执行时间。(5)系统数据结构设计:逻辑结构设计、物理结构设计、数据结构与程序的关系。(6)系统错误处理设计:错误消息、改进措施、系统恢复设计。3.2软件设计的基本原理,3.2.1模块化模块化的概念出现在编程技术中。什么是模块?模块是程序中程序对象(例如数据说明、执行语句等)的集合,或单独命名和寻址的元素(例如高级语言中的过程、函数和子程序)。在软件的体系结

7、构中,模块是可合并、拆卸和更换的单元。模块具有一些基本属性:(1)接口:表示模块的输入和输出。(2)功能:表示模块实现的功能。(3)逻辑:描述所需功能以及如何在内部实现所需数据。(4)状态:指示模块的工作环境,即模块的调用与调用的关系。功能、状态和接口反映模块的外部特性,逻辑反映内部特性。模块是在解决一个复杂问题时,将软件系统由上而下划分为多个模块的过程。每个模块完成一个特定的子功能,所有模块以某种方式组合在一起,成为一个整体,完成整个系统要求的功能。在面向对象设计中,模块和模块化的概念进一步扩展(请参阅第1112章)。模块化是软件解决复杂问题的手段,为了说明这一点,可以推断出问题的复杂性和工

8、作量的关系。设置问题x时,复杂性函数为C(x),解决此问题所需的工作量函数为E(x)。对于问题,P1和p2;C(P1)C(P2)要求P1比P2复杂时,E(P1)E(P2)要求的任务越多。基于典型故障排除经验的法则是C(P1 P2)C(P1) C(P2)。换句话说,问题是两个问题相结合而不是单独考虑每个问题的复杂性之和。因此,您可以看到E(P1 P2)E(P1) E(P2)是一个模块化基础,它可以开发大型复杂的软件系统并适当地分解,从而降低复杂性,减少开发努力,从而降低开发成本并提高软件生产率。但是,如果无限制地分割系统,软件开发的工作负载最终会趋向于零吗?实际上,模块越分割,块内的工作量就越小

9、,但是模块间接口的工作量会增加,如图3.1所示。如图所示,将软件开发成本最小化的模块数m目前无法确定确切的m值,但是为了避免在拆分模块时过多或过少,一个模块的大小必须因功能和用途而异。此外,还必须降低接口成本,提高模块的独立性。图3.1模块和开发软件成本,3.2.2抽象抽象是用于理解复杂现象的思维工具。也就是说,提取事物本质的共同特性,暂时不考虑其细节,不考虑其他因素。抽象概念在软件工程方面广泛应用于计算机软件领域。软件工程实施的每个阶段都可以看作是软件抽象级别的进一步细化。在系统定义阶段,软件可以被视为整个计算机系统的一个元素。在软件需求分析阶段,软件的解决方案使用问题环境中的术语进行说明。

10、从摘要设计到详细设计阶段,将面向问题的术语和面向实现的术语结合起来,说明解决方法,直到图像级别逐渐降低,并在生成源程序时达到最低抽象级别。这是软件工程全过程的抽象层。到软件设计阶段,在不同的抽象层、软件设计过程中,抽象与逐步细化、模块化密切相关,因此,在软件结构中定义模块的实体,在抽象中具体分析和组织软件的层次结构,并帮助提高软件的理解度。3.2.3信息隐藏通过抽象可以确定构成软件的进程实体。通过隐藏信息,可以定义和实施模块的进程详细信息和对本地数据结构的访问限制。信息隐藏是指在设计和确定模块时,一个模块中包含的信息(进程或数据)不能被不需要该信息的其他模块访问。“隐藏”是指,有效的模块化是通

11、过相互交换执行系统功能所需的信息,并定义一组相互独立的模块来“隐藏”自己的实施细节和数据而实现的。软件系统在整个生命周期中需要多次修改,信息因软件系统的修改、测试和未来维护而受益。因此,在分割模块(例如使用本地数据结构)时,大多数进程(细节实现)和数据隐藏在软件的其他部分,因此,软件修改时意外引入的错误的影响仅限于一个或少数模块内部,而不会影响其他部分。3.2.4模块独立性需要将系统划分为多个模块,以降低软件系统的复杂性,提高可理解性、可维护性,但模块不能任意划分,应尽可能保持独立性。模块独立性表示独立的子功能,每个模块仅完成系统要求,与其他模块的连接最少,接口最简单。模块独立性概念是模块化、

12、抽象和信息隐藏这些软件工程的基本原理的直接构建。必须遵守这些原则,才能获得非常独立的模块。以良好的模块独立性能开发的软件质量好。由于具有良好的模块独立性、良好的信息隐藏性能、独立的功能、良好的理解、服务和测试性,软件可靠性必须很高。此外,您可以轻松开发界面简单、功能独立的模块,并并行工作,从而有效地提高软件工作效率。如何衡量软件的独立性?根据模块的外部特性和内部特性,提出了两种定性度量结合性和内聚性。1.耦合性也称为块到块连接,是软件系统结构中模块之间相互关联程度的测量。模块之间的连接越快,连接性越强,模块的独立性越差。模块之间的耦合程度取决于模块之间接口的复杂性、调用方法和传递的信息。模块的

13、可组合性没有直接关联数据组合标签组合控制组合公用关联内容组合具有低可组合性(1),没有直接关联:两个模块之间没有直接关系,并且不从属于不同模块的控制和调用传递信息。因此,模块之间的这种耦合性是最弱的,模块独立性是最高的。(2)数据关联:表示两个模块之间存在调用关系,并传递与高级语言中的值传递相对应的简单数据值。这种耦合程度低,模块的独立性高。(3)合并标签:数据结构(如数组名称、记录名称、文件名)在两个模块之间传递,这些名称将成为标签。实际上,此数据结构的地址被传递。两个模块必须熟悉这些数据结构,并根据需要工作,因此理解能力较差。以“信息隐藏”的方式将数据结构及其操作集中到一个模块中,从而消除

14、了这种结合,但是由于有其他功能,标记结合有时是不可避免的。(4)控制耦合:当一个模块调用另一个模块时,传递开关、标志等控制变量,正在调节的模块通过该控制变量的值选择性地执行块内的功能。因此,具有多个功能的模块及其调用模块控制哪些功能?控制耦合增加了理解和编程和修改的复杂性,调用模块需要知道协调模块内的逻辑关系。换句话说,调整后的模块处理详细信息不应“隐藏”,从而降低了模块的独立性。在大多数情况下,模块之间的控制组合不是必需的,可以将调整后的模块内的决策移动到调用模块中,同时将调整后的模块分解为多个单功能模块(按该功能),从而将控制组合更改为数据组合。(5)公共关联:表示通过公共数据环境交互的模

15、块之间的关联。公共数据环境可以是整体变量或数据结构、共享通信区域、内存的公共范围、所有存储介质的文件和物理设备(将共享外部设备分类为外部绑定)。共同键的复杂性随键模块数量的增加而增加。如果两个模块之间存在公共数据环境,则有两种情况。换句话说,一个模块仅在公共数据环境中提供数据,另一个模块仅从公共环境中获取数据,这只是数据组合的一种形式,是相对宽松的公共组合。这两个模块都是紧密的公共耦合,可在过去的公共数据环境中传输数据并从中获取数据。公共关联不能随着模块数量的增加控制对单个模块的公共数据访问,如果模块有错误,可以通过公共区域将错误扩展到其他模块,这将影响软件的可靠性,因此仅在模块之间共享的数据

16、较多,并且通过参数传递不方便的情况下使用公共关联。使软件的可维护性恶化。模块修改公用区中的数据时,将影响与其相关的所有模块。降低了软件的理解度。每个模块使用公用区中的数据,因此通常以不确定特定数据在哪个模块中共享的方式使用。(6)内容组合:最高级的组合和最差的组合。如果模块直接使用其他模块的内部数据,或通过异常入口移动到其他模块的内部,则这些模块之间的连接将成为内容绑定。这种情况在程序集编程中经常发生。上述六种类型的结合为设计软件、分割模块提供了决策指导。提高模块独立性,在模块之间构建尽可能宽松的系统是模块化设计的目标。要减少模块之间的耦合度,可以采取以下措施:(1)通过组合减少模块间接口的复杂性。模块间接口的复杂性包括模块的接口方式、接口信息的结构和数量。接口方法不是直接引用(组合内容),而是调用表达式(例如,过程语句调用方法)。接口信息通过参数传递和传递信息的结构尽可能简单,不需要流程、指针等类型参数等复杂的参数结构。在很多情况下,可以考虑模块的功能是否庞大和复杂。(2)将数据耦合最大限度地用于传输信息类型,避免控制耦合,以谨慎或控制的方式使用公共

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论