【软件工程】 软件设计阶段

【前言】

在经历过计划阶段和需求分析的阶段接下来就到了软件设计的阶段,他是软件工程中非常重要的阶段,它主要是分两步来完成,一个是概要设计,一个是详细设计!

一、概要设计阶段

1、解析

概要设计主要是完成,系统的结构设计,进入了设计阶段,要把软件“做什么”的逻辑模型变换为“怎么做”的物理模型,即着手实现软件的需求,并将设计的结果反映在“设计规格说明书”文档中,所以软件设计是一个把软件需求转换为软件表示的过程。

2、软件设计的基础:

1.自顶向下,逐步细化;
2.软件结构 ——-将软件结构分解,为的是解决复杂性。
3.程序结构——–树状结构(层次结构),网状结构。
4.结构图———-解决了模块的层次关系和调用关系()
5.模块化———-能够把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构。 (高内聚,低耦合)
6.抽象化———-考虑最本质的因素(功能)
7.信息屏蔽——–屏蔽重要的信息

3、模块的内聚和耦合

模块具有三个基本的属性,功能、逻辑、状态!功能指的是模块实现的功能是什么,逻辑就是描述模块内部应该怎么做,状态就是该模块使用时候的环境和条件。

耦合(块间联系)

耦合指的是模块间的联系的强度,耦合性越强,模块间的联系越强

内容耦合——– 一个模块直接访问另一模块的内容,则称这两个模块为内容耦合。

若在程序中出现下列情况之一,则说明两个模块之间发生了内容耦合: 一个模块直接访问另一个模块的内部数据。
一个模块不通过正常入口而直接转入到另一个模块的内部。 两个模块有一部分代码重叠(该部分代码具有一定的独立功能)。 一个模块有多个入口。
内容耦合可能在汇编语言中出现。大多数高级语言都已设计成不允许出现内容耦合。这种耦合的耦合性最强,模块独立性最弱。


公共耦合——— 一组模块都访问同一个全局数据结构。
外部耦合——— 一组模块都访问同一全局简单变量,而且不通过参数表传递该全局变量的信息,则称之为外部耦合。
控制耦合———模块之间传递的不是数据信息,而是控制信息例如标志、开关量等,一个模块控制了另一个模块的功能。
标记耦合———调用模块和被调用模块之间传递数据结构而不是简单数据,同时也称作特征耦合。表就和的模块间传递的不是简单变量,而是像高级语言中的数据名、记录名和文件名等数据结果,这些名字即为标记,其实传递的是地址。
数据耦合———调用模块和被调用模块之间只传递简单的数据项参数。相当于高级语言中的值传递。
非直接耦合———两个模块之系,它们之间的联系完全是通过主模块的控制和调用来实现的。耦合度最弱,模块独立性最强。

【软件工程】 软件设计阶段_第1张图片

内聚(块内联系)

内聚指的是同一个模块之间的联系程度,理想模块都是高内聚的!

功能内聚——模块内所有元素的各个组成部分全部都为完成同一个功能而存在,共同完成一个单一的功能,模块已 不可再分。即模块仅包括为完成某个功能所必须的所有成分,这些成分紧密联系、缺一不可。
信息内聚——按照顺序执行(一个模块有一个任务)
通信内聚——具有公共的数据
过程内聚——顺序执行(一个模块中有多个任务,上一个步骤执行完,下一个执行)
时间内聚——同一时间完成任务,同一时间执行
逻辑内聚——将几种相关的功能结合在一起
巧合内聚——模块内部各部分之间没有什么联系

【软件工程】 软件设计阶段_第2张图片

综上由上边的两幅图可知,模块的独立性强的表现为就是高内聚,低耦合。

4、概要设计的基本任务

(1)成本效益分析,系统的进度计划
(2)确定模块结构,划分功能模块,
(3)编写文档

5、产生的文档

概要设计说明书
用户手册
测试计划
数据描述

二、详细设计


详细设计主要是完成数据设计(描述定义)和过程设计(代码的依据),根据概要设计提供的文档,确定每一个模块的算法,内部的数据组织!

详细设计的基本任务:

(1)为每个模块进行详细的算法设计。
(2)为模块内的数据结构进行设计。
(3)对数据结构进行物理设计,即确定数据库的物理结构。物理结构主要指数据库的存储记录格式、存储记录安排和存储方法,这些都依赖于具体所使用的数据库系统。
(4)估算存取时间和存储容量
(5)编写详细设计说明书。
(6)评审。对处理过程的算法和数据库的物理结构都要评审。

详细设计用到的工具

1、数据流程图

【软件工程】 软件设计阶段_第3张图片

2、n-s图(盒图)

控制关系隐含,循环的次数隐含,它看不到控制流

【软件工程】 软件设计阶段_第4张图片

3、pad图(问题分析图)便于记忆,容易转换成高级语言(自顶向下)

【软件工程】 软件设计阶段_第5张图片

4、判定表(静态逻辑)

【软件工程】 软件设计阶段_第6张图片

后记:

软工视频已经完成很长时间了,现在才总结,都是拖拉造成的,趁着假期,很快都会补上的!

你可能感兴趣的:(软件工程)