【软件工程】第五章

目录

1. 设计过程

2.设计原理 

 2.1 模块化

2.2 抽象  p95

2.3 逐步求精  p95

2.4 信息隐藏和局部化  p96

 2.5 模块独立

 3.启发规则 p99

4. 描绘软件结构的图形工具 

 5.面向数据流的设计方法 p104

例题 


1. 设计过程

 总体设计阶段通常由两个主要阶段组成,

系统设计阶段,确定系统的具体实现方案

结构设计阶段,确定软件结构

典型的总体设计过程包含以下9个步骤: 

 

2.设计原理 

 2.1 模块化

(1)模块是边界元素限定的相邻程序元素的集合,而且总有一个总体标识符代表它,

如: C的函数 {}C++中的类等等

(2)模块化就是把程序划分成独立命名且可独立访问的模块

(3)为什么要模块化

模块化是为了使一个复杂的大型程序能被人的智力所管理,是软件应该具备的唯一属性 

(4)优点:是软件解决复杂问题所具备的手段,可降低软件复杂性,减少开发工作量,从而降低开发成本,提高软件生产率,这也是进行模块化的依据。

        模块化可使软件系统结构清晰,易于理解

2.2 抽象  p95

(1)抽象:认识复杂事物和现象时,抽出事物本质共同特性而暂不考虑它们的细节。 

(2)软件开发中的抽象:过程的抽象   数据的抽象

(3)如何抽象:在认识事物、分析和解决问题的过程中,忽略那些与当前研究目标不相关的部分, 以便将注意力集中于与当前目标相关的方面 

 (4)软件开发实际上就是一个从高层次抽象低层次抽象逐步过渡的过程。

2.3 逐步求精  p95

2.4 信息隐藏和局部化  p96

 2.5 模块独立

(1) 模块化、抽象、信息隐蔽、局部化的直接结果 

(2)模块独立的优点:容易开发、测试和维护 

(3)衡量模块独立性的两个指标 耦合性   内聚性

 耦合:也称模块间的联系,是对软件系统结构中,各模块间相互联系紧密程度的一种度量。

设计目标:低耦合 p97

1)无直接耦合两个模块没有直接关系,模块独立性最强。

(2)数据耦合:属松散耦合。一模块访问另一模块时,通过数据参数交换输入、输出信息。

(3)特征耦合:两个模块通过传递数据结构产生联系,或都与一个数据结构有关系,则称这两个模块间存在特征耦合(或标记耦合)

“计算水费”和“计算电费”本无关,由于引用了此数据结构*住户情况)产生特征耦合关系。

将特征耦合改为数据耦合举例:

(4)控制耦合:模块之间传递的有控制信息(如开关、标志、名字等),控制被调用模块的内部逻辑

控制藕合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖。解决方法:

 ( 1 )将被调用模块内的判定上移到调用模块中进行

( 2 )被调用模块分解成若干单一功能模块

将控制耦合改为数据耦合举例

(5)公共环境耦合:一组模块引用同一个公用数据区(也称全局数据区、公共数据环境)。

(6)内容耦合

尽量使用数据耦合,少用控制耦合和特征耦合,限制公共耦合的范围,完全不用内容耦合 

 

内聚: p98 又称块内联系。是对一个模块内部各个元素彼此结合的紧密程度的度量

若一个模块内各元素( 语句之间、程序段之间 )联系的越紧密,则它的内聚性就越高。
设计目标: 高内聚
(1)偶然内聚: 块内各组成成份在功能上是互不相关的。
(2)逻辑内聚: 把几种相关功能(逻辑上相似的功能)组合在一模块内,每次调用由传给模块的参数确定执行哪种功能( 控制耦合 )。
(3)时间内聚(经典内聚): 模块完成的功能必须在 同一时间段 内执行,这些功能 只因 时间因素 关联在一起。
如初始化系统模块
(4)过程内聚: 模块内各处理元素 相关 ,且 必须 特定次序 执行。
(5)通信内聚:模块内各部分 使用相 同的输入数据集 ,或着 产生相同的输出结果集
(6)顺序内聚: 如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行(通常一个处理元素的输出数据作为下一个处理元素的输入数据),则称为顺序内聚。
(7)功能内聚:
模块仅包括为完成某个功能所必须的所有成分。
模块所有成分共同 完成一个功能 ,缺一不可
内聚性最强

 

耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度。高内聚意味松耦合。

设计要求:低耦合,高内聚

 3.启发规则 p99

改进原则 :高内聚、低耦合

① 改进软件结构提高模块独立性

模块规模应该适中

③ 深度、宽度、扇出和扇入都应适当

④ 模块的作用域应该在控制域之内

⑤ 力争降低模块接口的复杂程度

⑥ 设计单入口单出口的模块

⑦ 模块功能应该可以预测

深度,宽度,扇出和扇入

宽度是软件结构内同一个层次上的模块总数的最大值

扇出是一个模块直接控制(调用)的模块数量,扇出过大意味模块过分复杂,需要控制和协调过多的下级模块

扇入表明有多少个上级模块直接调用它,扇入越大则表明共享该模块的上级模块越多,是有好处的,但是不能违背模块独立原理单纯追求高扇入。

 

作用域是指受模块内一个判定影响的所有模块的集合

控制域是指这个模块本身及其所有的下属模块的集合

4. 描绘软件结构的图形工具 

1.层次图和HIPO图(描述软件的层次结构。)

层次图中,一个方框代表一个模块,方框间的连线表示调用关系

 HIPO =层次图+ IPO

 酒店管理信息系统层次图

2.结构图 

 

主要成分说明:

l 一个方框表示一个 模块
l 一个模块指向另一个模块的箭头或直线,表示前一模块对后一模块的 调用
l 调用直线边的小箭头,表示调用时从一个模块传给另一个模块的 数据 ,也指出了传送方向。

 

 

 5.面向数据流的设计方法 p104

面向数据流的设计方法的目标是给出设计软件结构的一个系统化的途径

5.1概念

信息流映射成软件结构

信息流的类型决定了映射的方法

信息流可分为两种类型 :变换型流,事务型流

5.1 变换型数据流基本模型

 具有明确的传入、变换(或称主加工)和传出界面的 DFD

 

 设计步骤 p106

(1)复查基本系统模型

(2)复查并精华数据流图

(3)确定数据流图具有变换特性还是事务特性

(4)确定输入流还是输出流的边界,从而孤立出变换中心。

(5)完成“第一级分解”

(6)完成“第二级分解”

(7)对初步软件结构精化

5.2 事务性数据流基本模型

 

事务中心的任务:

Ø 接受输入数据(事务)
Ø 分析每个事务以确定它的类型。
Ø 根据事务类型选取一条活动通路

 

 

例题 

假设你在一所职业高中工作,负责该校信息系统的建设与维护。财务科长请你开发一个工资支付系统。

 处理工资的大致过程:每月月末教师把他们当月实际授课时数登记在课时表上,审核后交给财务科;职工把当月完成的任务的任务表经审核后交财务科。会计根据这些原始数

据计算每名教职工的工资(人事数据人事科提供,年度数用于年度人事考核),编制工资表工资明细表财务报。然后将工资报表报送银行,由银行把钱打到每名教职工的工资卡上,同时把工资明细表发给每名教职工。

0层DFD

 

 

SC第一级分解

 

SC第一级分解

SC优化

 

 

  • 29
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值