【软工视频】总体设计

小编正在马不停蹄的赶来~~~~

最近小编正在努力看软工视频,单纯看视频做笔记有点让我找不到联系,所以小编找了一本《软件工程》的书作为辅助,并且看完视频和书后做好思维导图,找信息之间的联系,特此分享给大家,希望可以对你们有所帮助哟~

看,导图在此!
在这里插入图片描述

先为大家奉上一张总体脉络图,正所谓:“全局观”嘛,哈哈,请耐心看我的细节分享,不容错过哦~

- 4.1 软件设计的目标和任务

一、 目标:根据用信息域表示的软件需求,以及功能和性能需求进行:

1. 数据设计

2. 系统结构设计

3. 过程设计(编码阶段)

二、 任务:根据功能和性能需求设计以实现系统。包括:

1.概要设计(总体设计):软件的总体结构,不考虑细节,包括体系结构设计和软件模块设计。

(1) 体系结构设计的准则:

- 体系结构是对复杂事物的一种抽象,可以高效地处理多种多样的个体需求。
- 体系结构在一定的时间内保持稳定。(接口一致)
-良好的体系结构:普通、高效、稳定。

(2)模块设计的准则:——见4.3

2.详细设计(过程设计):数据结构和算法等的精确描述

在这里插入图片描述

三、 软件设计过程:概要设计和详细设计

1. 制定规范(接口等统一,规范,)

2. 软件系统结构的总体设计(功能层次考虑,抽象,模型,总体化)

3. 处理方式设计(时间等方面的考虑)

4.数据结构设计(数据库,文件输入输出格式等)

5. 可靠性设计(修改和维护)

6.编写概要设计阶段的文档(概要设计说明书,数据库设计说明书,用户手册)

7.概要设计评审(可靠性,可实现性等,以及方案选择)

- 4.2软件设计基础

  • 自顶向下,逐步细化

  • 软件结构

  • 程序结构

  • 结构图

  • 模块化

  • 抽象化

(1)自顶向下,逐步细化:软件结构按照自顶向下方式,对各个层次的过程细节和数据细节逐个细化

(2)软件结构:包括两部分:程序的模块结构和数据的结构。进行模块分解,降低复杂性,提高效率。在这里插入图片描述

(3)程序结构:树状结构、网状结构(纵向为深度,横向为宽度)

在这里插入图片描述

(4)结构图:反映程序中模块之间的层次和调用关系。

(5)模块化:能把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构。

(6)抽象化:软件系统进行模块设计时,可有不同的抽象层次

——(4)(5)(6)模块(见4.3软件设计的概念和原理)

- 4.3 软件设计的概念和原理

- 4.3.1 模块和模块化

一. 模块:

1.概念:(1)模块的概念:是能够单独命令、独立完成一定功能的程序语句的集合,如高级语言中的过程、函数、子程序等。模块是构成程序的基本构件,模块是可以组合、分解、更换的单元。

(2)模块化:是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。能把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构。

模块化的目的是:为了降低模块与外部的联系,提高模块的独立性,降低软件复杂性,使软件设计、测试、维护等操作变得简易。

2.表示:

- 以功能做模块名

- 以功能的缩写做模块名

- 已定义模块

- 子程序(或过程)

3.模块的调用关系和接口:

在这里插入图片描述

表示:模块A有条件地调用另一个模块B

模块A有条件地调用另一个模块B

4.软件系统结构图:反映程序中模块之间的层次和调用关系。

在这里插入图片描述

深度和宽度都表示复杂性。

扇出一般为2-5个,扇入一般为1-5个。

5.模块的特征:

(1)抽象:抽象是抽出事物本质的共同提醒而暂时忽略他们之间的细节差异。

- 数据抽象:是一个命名的指令序列,具有一个特定和受限的功能。

- 过程抽象:是一个命名的说明数据对象的数据集合。

- 控制抽象:隐含程序控制机制,不必说明其内容细节。

(2)信息隐蔽:划分模块时,数据发生变化时,尽量不影响其他的信息,或者说对于不【需要模块内的信息(过程和数据)】的模块不能访问此模块。

局部化概念:所谓局部化,就是指把一些关系密切的软件元素物理地放得彼此靠近。在模块中使用局部量就是局部化的一个例子。显然局部化有助于信息隐蔽。

- 4.3.2 模块独立性:

(一)概念:是指软件系统汇总每个模块只涉及软件要求的具体的子功能。

模块独立性是通过开发具有单一功能和与其他模块没有太多交互作用的模块来达到的。也就是说,希望所设计的软件结构应使每个模块完成一个相对独立的特定功能,并且和其他模块之间的接口很简单。

*** 判断模块是否划分到位:模块独立性

模块的三个基本属性:

功能:描述该模块实现什么功能

逻辑:描述模块内部怎么做

状态:该模块使用时的环境和条件

(二)模块独立性的两个度量准则:原则:高内聚,低耦合。

(1)模块间的耦合:模块之间的耦合程度是指模块间的联系程度,尽量减少耦合,避免模块间的相互影响。

耦合强弱取决于模块相互之间接口的复杂程度,一般由模块之间的调用方式、传递信息的类型和数量来决定。

(2)模块内聚:模块内部各个元素之间的联系称为内聚,也称块内联系,又称模块强度。

<一>模块间的耦合:7种

在这里插入图片描述

<1>非直接耦合:两个模块之间没有直接关系。

<2>数据耦合:如果两个模块之间有调用关系,相互传递的信息以参数的形式给出,而且传递的信息仅仅是简单的数据(不是控制参数、公共数据结构或者外部变量),则称数据耦合。

<3>标记耦合:一组模块通过参数表传递记录信息。

<4> 控制耦合:一组模块通过控制信息控制选择另一个模块的功能。

<5>外部耦合:与外部硬件相连,都访问同一全局简单变量。

<6> 公共耦合:一组模块都访问同一个公共数据环境(公共区)。以产生影响。

<7>内容耦合:

在这里插入图片描述

模块最好是单进口单出口,并且调入时头部进入。几种内容耦合的情况:

1.一个模块直接调用了另一个模块的内部数据

2.一个模块不通过正常的入口进入另一个模块

3.部分代码重叠(汇编语言中)

4.多个入口

对于耦合的原则:

尽量使用数据耦合,少用标记耦合和控制耦合,限制公共耦合,完全不用内容耦合。

<二>模块内聚:7种

在这里插入图片描述

<1> 功能内聚:模块内各个部分都是完成某一个具体功能。(高内聚)

<2>信息内聚:(也叫顺序内聚):一个模块中各个处理元素都紧密相关于同一个功能且必须顺序执行。(元素之间运行是有一定的顺序,并且都基于同一个数据结构)

<3>通信内聚:模块中所有元素都使用相同的输入数据或者产生相同的输出数据。(公共数据)

<4>过程内聚:

<5> 时间内聚:所有功能必须在同一时间段内执行。

<6>逻辑内聚:将逻辑上相同或相似的一类任务放在同一模块中,被调用时,由传送给模块的参数来确定该模块应完成的某一功能。

<7>巧合内聚:(偶然内聚):元素之间没有意义上的联系。

(三)模块设计准则:(结构设计原则)

1.降低模块之间的耦合性,提高模块的内聚性,提高模块独立性

2.模块规模应该适中(<500行)

3.模块结构的深度、宽度、扇出和扇入应适当

(一般设计比较好的软件结构是:顶层扇出高,中层扇出较少,底层模块有高扇入)

4.模块的作用范围应该在控制范围之内

5.模块接口设计简单,以便降低复杂程度和冗余度

6.设计单入口单出口的模块

7.模块功能应该可以预测

另外,软件结构的改进:

- 模块功能的完善化

- 消除重复功能,改善软件结构:完全相似和局部相似

- 避免或减少病态联接:(3种)

- [1 ] 直接病态联接

- [2 ] 公共数据域病态联接

- [3] 通信模块联接

- 软件包应满足设计约束和可移植性。

- 4.4 结构化设计方法:

概念:结构化设计方法:是一种基于数据流的把在需求分析阶段得到的数据流图映射为软件结构图的设计方法。

一、结构化设计方法的步骤:

1.首先研究、分析和审查数据流图

2.根据数据流图决定问题的类型。

数据处理问题典型类型有两种:变换型和事务型

3.针对两种不同的类型分别进行分析处理。

在系统结构图中的模块:

- 传入模块(向左斜)

- 传出模块(一般是逻辑输出,向右斜)

- 变换模块(也叫转换模块)

- 协调模块(对子模块进行协调)

(一)变换型系统结构图:

三步骤:取得数据→变换数据→给出数据

在这里插入图片描述

变换分析方法:

1.重画数据流图

2.区分有效(逻辑)输入、有效(逻辑)输出和中心变换部分

3.进行一级分解,设计上层模块

4.进行二级分解,设计输入、输出和中心变换部分的中、下层模块。

在这里插入图片描述

(二)事务型数据流图:当一个数据项到达处理某个模块时,将有多个动作之一。

事务分析:与变换分析一样,从分析数据流图开始,自顶向下,逐步分解,建立系统到结构图。

在这里插入图片描述

事务分析过程:

1.识别事务源

2.规定适当的事务性结构

3.识别各种事务和他们定义的操作

4.注意利用公共模块

5.对每一个事务,或对联系密切的一组事务,建立一个事务处理模块

6.对事务处理模块规定他们全部的下层操作模块

7.对操作模块规定他们的全部细节模块。

概要设计的后处理:

1.为每一个模块写一份处理说明(包括数据、模块的位置等)

2.为每一个模块提供一份接口说明

3.确定全局数据结构和局部数据结构

4.指出所有的设计约束和限制

5.进行概要设计的评审

包括:数据设计及文件设计(略)

本篇博客暂时总结到总体设计,软件设计的详细设计(过程设计)详情请看下篇博客……

发布了63 篇原创文章 · 获赞 13 · 访问量 8556

猜你喜欢

转载自blog.csdn.net/Ginny97/article/details/89743503