第4章 结构化设计方法

合集下载

软件工程第四章 结构化分析

软件工程第四章 结构化分析

软件需求分析阶段的工作,可以分成以下四个方面 :对问题的识别、分析与综合、制定规格说明以及 ( )。 A.总结 B.实践性报告 C.需求分析评审 D.以上答案都不正确
答案:C
需求验证应该从下述几个方面进行验证:(C ) A 可靠性、可用性、易用性、重用性 B可维护性、可移植性、可重用性、可测试性 C一致性、现实性、完整性、有效性 D 功能性、非功能性
3、需求分析步骤
1、需求获取
3、亲身实践:观察用户工作流程
优点: 1. 通过直接观察提取用户或系统的特性; 2. 有助于理解难以用语言描述清楚的复杂业务。 3. 更加准确和真实 缺点:
1. 观察可能使用户紧张,从而表现与往常不同。 2. 比较费时间
3、需求分析步骤
1、需求获取
3、需求分析步骤
3、需求分析步骤
3 需求描述
1. 又叫:需求规约
2. 是分析任务的最终产物,给出对目标软件的 各种需求。
3. 需求规约作为用户和开发者之间的一个协议 (需求规格说明书),在之后的软件工程各 个阶段发挥重要作用
软件需求分析阶段的目的是澄清用户的要求 ,并把双方共同的理解明确地表达成一份书 面文档——(软件需求规格说明书)。
经调查,系统分析员给出有问题的初略陈述, 其中部分描述如下:某商场的采购部门要求每 天开出定购清单,交采购员输入系统;仓库管 理员还要将库存信息此输入系统,经库存业务 (进贷或出贷)处理后输出。从这段描述可知 该部分数据流图中的外部项为:
A.采购员、仓库管理员 B.定购清单、库存业务 C.库存业务 D.定购清单、采购员 答案A
3、需求分析步骤
4、需求验证
1. 进行需求评审
2. 验证需求的一致性
3. 验证需求的现实性

第四章 不同结构化程度的幼儿园教育活动设计4-1

第四章 不同结构化程度的幼儿园教育活动设计4-1

案例2
• 小班科学活动“谁的小脚丫”设计思路
补充案例
• 大班数学活动“区别左右”
• 思考:设计思路说明了什么?
区别左右(大班)
瑞金一路幼儿园 徐艳峰 2012.10
设计思路:
区分左右是前后上下方位学习的延续, 但认识左右比认识前后上下对幼儿而言 要更具挑战性,因为“左右”的含义及 其相对性要具有更强的空间观念。
参考网站:中国幼儿园教案网
大班科学活动:水的三态变化
• 活动目标:1.了解水的变化,知道水遇热会变成水蒸气,遇冷会结冰。 2.那用语言表达自己观察到的水的三态变化。3.用多种感觉和体验 水的变化的有趣和好奇。 • 活动准备:电热水壶一个、2人一块冰 • 活动过程: • *小实验:水→蒸气:在孩子共同关注下,观察烧开水,水和蒸气互 变现象,看看电热水壶口往外冒气时,把一个盘子放在壶口上会发生 什么现象,观察蒸气凝成的小水珠。蒸气→水:看看盘子上有什么, 小朋友可以把手掌触摸蒸气感受手的潮湿。 • *让孩子看一看、闻一闻、摸一摸冰块,感知冰的特性,说一说冰块 放在手心有什么感觉。
设想通过这样一个学习活动达到发展 幼儿的空间观念,为今后认识立体图 形进一步发展幼儿空间方位知觉打好 基础。
从本班幼儿的年龄特点、已有数学经验和水 平进行考量,此次活动的目标预设为: 1、尝试以自身为中心区分左右,初步积累 判断左右的方法。 2、提高幼儿细致观察和辨别能力,体验与 同伴合作游戏的快乐。
参考网站:中国幼儿园教案网
大班科学活动:水的三态变化
• 孩子们看到老师准备电热水壶,又打了水,都围起来看。小实验开 始了,插电加热,很快水开了。老师说:“水壶的嘴巴冒气了,这个 现象我们叫它什么?” 有的说冒烟、有的说“水蒸气”在孩子共同 关注下,观察烧开水,水和蒸气互变现象,看看电热水壶口往外冒气 时。老师把一个盘子放在壶口上发生什么现象?看看盘子上有什么, 盘里有许多水珠。小朋友可以把手掌触摸蒸气,感受水的变化。老师 打开窗,水蒸气出去了,去哪儿?变成什么? 老师告诉他们,为什么会有这种变化,冰在0度凝固,温度升高了冰 块会融化的。小朋友很喜欢冰块,这些冰块被小朋友玩到融化成水了, 还依依不舍。怎么会变成冰呢?请大家回去放水到一个容器内进冰箱 里,一段时间,就做成冰块了。

004第4章结构化程序设计

004第4章结构化程序设计

4.3.1 条件语句
if (InputScore >= 70) { if (InputScore >= 80) { if (InputScore >= 90) { OutputScore = "优秀"; //优秀 } else { OutputScore = "良好"; //良好 } } else { OutputScore = "中等"; //中等 } }
if (Score >= 60) { Console.WriteLine("该成 绩合格。"); } else { Console.WriteLine("该成 绩不合格。"); } }
}
4.3.1 条件语句

如果程序的逻辑判定关系比较复杂,可以用if…else嵌套语句 形式如下: if(表达式1) if(表达式2) if(表达式3) ... 语句1; else 语句2; else 语句3; else 语句4;
}
4.3.1 条件语句

2. if…else语句 if…else语句是一种更为常用的选择语句。if…else语 句的语法如下: if(表达式) { 语句块A; }
else
{ 语句块B; }
【例4-3】根据输入的学生
成绩Score的值,显示 其是否及格。
using System; class Score { static void Main() { Console.WriteLine("请您 输入学生成绩:"); int Score = int.Parse(Console.ReadLi ne());//转换为整数

【例4-4】假设考查课的成绩按优秀、良好、中等、及格和不及

软件工程概论课后答案解析

软件工程概论课后答案解析

第1章软件与软件工程的概念1、1 举出您所知道的应用软件的例子。

办公软件、游戏软件、财务软件、银行软件、人事管理软件、工资管理软件、学籍管理软件等。

1、2 认为“软件就就是程序,软件开发就就是编程序。

”这种观点就是否正确?为什么?认为“软件就就是程序,软件开发就就是编程序。

”这种观点就是错误的。

首先,软件就是计算机系统中与硬件相互依存的另一部分,它就是包括程序,数据及其相关文档的完整集合,程序只就是软件的组成部分之一;其次,在软件开发中,编程只就是软件开发过程的一个阶段。

1、3 如果将软件开发比作高楼大厦的建造,可以将软件的设计比作什么?可以将软件的设计比作建筑设计,软件设计的成果相当于建筑设计的设计图纸。

1、4 什么就是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机:软件危机就是指在计算机软件的开发与维护过程中所遇到的一系列严重问题。

典型表现:(1)对软件开发成本与进度的估计常常很不准确。

(2)用户对“已完成的”软件系统不满意的现象经常发生。

(3)软件产品的质量往往靠不住。

(4)软件常常就是不可维护的。

(5)软件通常没有适当的文档资料。

(6)软件成本在计算机系统总成本中所占的比例逐年上升。

(7)软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势。

产生软件危机的原因:除了软件本身的特点,其原因主要有以下几个方面:(1) 缺乏软件开发的经验与有关软件开发数据的积累,使得开发工作计划很难制定。

(2) 软件人员与用户的交流存在障碍,使得获取的需求不充分或存在错误。

(3) 软件开发过程不规范。

如,没有真正了解用户的需求就开始编程序。

(4) 随着软件规模的增大,其复杂性往往会呈指数级升高。

需要很多人分工协作,不仅涉及技术问题,更重要的就是必须有科学严格的管理。

(5) 缺少有效的软件评测手段,提交给用户的软件的质量不能完全保证。

1、5 什么就是软件工程?软件工程就是指导计算机软件开发与维护的工程学科。

第四章 结构化程序设计的三种结构

第四章 结构化程序设计的三种结构

第四章结构化程序设计的三种结构4.1 顺序结构程序设计一、结构化程序设计的程序结构顺序结构、分支结构/选择结构、循环结构二、C语言语句1、9种控制语句2、表达式语句3、特殊语句三、格式化输出--printf()函数printf()函数的作用:向计算机系统默认的输出设备(一般指终端或显示器)输出一个或多个任意类型的数据。

printf()函数的一般格式printf("格式字符串" [,输出项表]);1、"格式字符串"也称"转换控制字符串",可以包含三种字符(1)格式指示符。

格式指示符的一般形式如下:%[标志][宽度][.精度][F|N|h|L][类型]常用的标志字符如表3-1所示,常用的宽度指示符如表3-2所示,常用的精度指示符如表3-3所示,长度修饰符如表3-4所示,类型转换字符如表3-5所示。

(2)转义字符'\n'就是转义字符,输出时产生一个"换行"操作。

转义字符通常起控制作用(3)普通字符──除格式指示符和转义字符之外的其它字符。

格式字符串中的普通字符,原样输出。

例如printf("radius=%f\n", radius);语句中的"radius="是普通字符。

2.输出项表输出项表是可选的。

如果要输出的数据不止1个,相邻2个之间用逗号分开。

下面的printf()函数都是合法的:(1)printf("I am a student.\n");(2)printf("%d",3+2);(3)printf("a=%f b=%5d\n", a, a+3);必须强调:"格式字符串"中的格式指示符,必须与"输出项表"中、输出项的数据类型一致,否则会引起输出错误3、格式指示符输出不同类型的数据,要使用不同的类型转换字符。

第4章 结构化分析

第4章 结构化分析

基本目标:
(1)描述用户的需求。 (2)为软件设计工作奠定基础。 (3)定义一组需求,一旦开发出软件 产品之后,就可以用这组需求作为标准 来验收该产品。
实体 -关系图 数据流图
数据 字典
状态转换图
控制规约
结构化分析模型的结构
4
4.2 数据流图
一、数据流图的基本成分
数据流图的基本图形元素:
或 数据的源点/终点 source or sink
⊕ T
C 只有数据流A或只有数据流B(但数据流A和数据 流B不能同时)输入时变换成数据流C B 数据流A变换成数据流B或数据流C,但不能变换 T ⊕ C 成数据流B和数据流C
6
4.2 数据流图
二、数据流图绘制方法
绘制步骤: 找出系统的输入和输出
画系统的内部 画加工的内部
注意事项: (1)命名 (2)层次结构 (3)图和加工的编号 (4)在系统分析中要注意区别物流和数据流 (5)每个加工至少有一个输入数据流和一个输出数据流 (6)数据存储的读取 (7)数据守恒 (8)父图和子图的平衡 (9)局部数据存储 (10)合理分解
的信息存储。
13
4.4 数据字典
二、内容及格式
1.数据流条目 要定义数据流图中的数据流就要用数据流条目。数据流条目给出了某个数据流的 定义,它通常是列出该数据流的各个组成数据项。
表4.1 数据字典使用的描述符号
符 号 = + [· · · |· · · ] [· · · ,· · · ] 含 义 被定义为 与 或 或 示 例 X=· · · 表示X由· · · 组成 X=a+b表示X由a和b组成 X=[a|b]表示X由a或b组成 X=[a,b]表示X由a或b组成
4.4 数据字典

第4章结构化程序设计

第4章结构化程序设计
数据库应用基础
第 4章
结构化程序设计
重点:控制结构 、程序实例
东方学院 信息分学院 陈国顺
内 容 பைடு நூலகம் 航
学习提要 教学内容
要点回顾
习题/实验
2
学习提要与目标
理解结构化程序设计的概念 熟练掌握程序控制的基本结构 掌握控制结构嵌套
掌握过程与自定义函数
3
目 录
4.1 程序文件设计 4.2 程序控制的基本结构 4.3 子程序和用户自定义函数 4.4 本章小结
19
4.2.2
选择结构
1.二路分支选择结构
格式:IF <条件表达式> [THEN]
<语句序列1>
[ELSE <语句序列2>] ENDIF
20
4.2.2
选择结构
【例4.4】如果在例题4.2中,根据行李重量的不同,采用不同的收费标准。即当 重量不超过50kg时,按每千克0.60元收费;当重量超过50kg,超出50kg的 部分按每千克0.90元收费,而其中的50kg仍按每千克0.60元收费。试编写 程序计算托运费。 程序代码如下: *****CH4-4.PRG ***** SET TALK OFF CLEAR INPUT "请输入货物的重量(Kg):" TO W IF W<=50 F=W*0.60 ELSE F=50*0.6+(W-50)*0.9 ENDIF ?"货物重量"+ALLTRIM(STR(W,19,2))+" 千克需要的托运费为:"+ALLTRIM(S TR(F,19,2))+"元" 21 SET TALK ON
31

第4章 结构化设计方法

第4章 结构化设计方法

第4章结构化设计方法4.1 当你“编写”程序时你设计软件吗?软件设计和编码有什么不同吗?在“编写”程序时并没有设计软件。

软件设计包括概要设计和详细设计,编码是将详细设计中的过程描述转换成用程序设计语言来描述。

4.2 举出3个数据抽象的例子和可以用来操作这些数据抽象的过程抽象的一个例子。

抽象是忽略事物的细节,获取其本质特征的过程。

抽象是一种重要的机制,使人们能够对复杂系统能够很好地理解、交流和推理。

在软件领域,可以将抽象分为两类,即数据抽象和过程抽象。

在传统的结构化程序设计语言中,就提供了这两种抽象机制。

(1) 数据抽象:在所有的结构化程序设计语言中,用户都可以自定义抽象数据类型。

如定义抽象数据类型Student(学生)、Course(课程)、ClassScoreList(班级成绩单)。

(2) 过程抽象:过程抽象也称为是基于方法的抽象。

过程抽象使我们关心处理过程的名字和它能做什么,而无需知道如何完成所有实现细节。

如求班级总平均分average(ClassScoreList)就是一个过程抽象。

在面向对象的程序设计语言中,抽象与封装的概念密切相关,数据抽象和相关的过程抽象被封装在类中,不同类中相似的过程抽象(方法)又可以进一步抽象,放在接口中。

封装是保证事物有明确内外界限的机制。

内部是受保护的,与外部事物相隔离。

4.3 应在什么时候把模块设计实现为单块集成软件?如何实现?性能是实现单块集成软件的唯一理由吗?由于模块之间的调用降低了系统的运行速度,可能会导致满足不了用户的性能要求,这时就需要将软件设计为单块集成软件。

但是在设计时,最好按照模块化的原则进行设计,只是没有显式的模块定义而已。

这样的程序也具有模块化的优点。

性能是实现单块集成软件的唯一理由。

4.4 是否存在一种情况:复杂问题需要较少的工作去解决?这样的情况对模块化观点有什么影响?通过对复杂的问题进行合理分解,分解为若干个相对简单及独立的子问题,就可以用较少的工作去解决。

软件工程教案_4(第四章)

软件工程教案_4(第四章)

耦合强度依赖的因素: 耦合强度依赖的因素:
•一模块对另一模块的引用 •一模块向另一模块传递的数据量 •一模块施加到另一模块的控制的数量 •模块间接口的复杂程度
模块间耦合的类型
低 耦 合 性 无直接耦合
(低耦合) 数据耦合 低耦合)
强 模 块 独 立 性 弱
标记耦合
(中耦合) 控制耦合 中耦合)
外部耦合
§4.3 模块的独立性
4.3.1 模块独立性的概念 模块独立的含义: 模块独立的含义:
模块完成独立的功能 符合信息隐蔽和信息局部化原则 模块间关连和依赖程度尽量小
4.3.2 模块独立性的度量
模块独立性取决于模块的 内部和外部特征。 内部和外部特征。 SD方法提出的定性的度量标准: 方法提出的定性的度量标准: • 模块之间的耦合性 • 模块自身的内聚性
数据耦合举例
开发票 单价 数量 计算水费 金额
(3) 标记耦合(特征耦合) 3) 标记耦合(特征耦合)
如两个模块通过传递数据结构 如两个模块通过传递数据结构
(不是简单数据,而是记录、数组 不是简单数据,而是记录、 等)加以联系,或都与一个数据 加以联系,或都与一个数据
结构有关系, 结构有关系, 则称这两个模块 有关系 间存在标记偶合。 间存在标记偶合。
第四章 软件设计
主要内容: 主要内容: ▲ 软件设计的目标和任务 ▲ 软件设计基础 ▲ 模块的独立性 ▲ 结构化设计方法 ▲ 数据设计及文件设计 ▲ 过程设计
讨论要点
(1)如何将分析模型转换为软件 (1)如何将分析模型转换为软件 设计? 设计? (2)作为软件工程师在软件设计 (2)作为软件工程师在软件设计 方面应使用哪些基本原则和 概念? 概念?
将标记耦合修改为数据耦合举例

软件工程第4章习题解答

软件工程第4章习题解答
解:(1)判定表:
说明:1,每一笔交易有3种属性:“交易金额”、“每股售价”、“股数”。
2,“交易总额”有3种值;“每股售价”有3种值;“股数”有2种值。所以每笔交易有18种状态。(表有19列,第1列是说明列)
3,每种状态有一个决策公式。判定表中的决策方案有18行。
4,每个计算公式中只有一个变量“交易金额”,设为a。
教师的工资档案存储在行政办公室的磁带上,档案中有目前的年工资、赡养的人数、雇佣日期等信息。需要写一个计算程序计算并印出每名教师的原有工资和调整后的新工资。要求:
⑴画出此系统的数据流图;
⑵写出需求说明;
⑶设计上述的工资调整程序(要求用判断表描述),设计时请分别采用下述两种算法,并比较这两种算法的优缺点;
set START to (I+1)
else if TABLE(I) > ITEM then
set FINISH to (I-1)
endif
enddo
if TABLE(I) = ITEM or TABLE(START) = ITEM or TABLE(FINISH) = ITEM then
set FLAG to 1
解:
⑴ 系统的数据流图
⑵ 需求说明:(略)
⑶ 程序框图:
算法说明:1 此算法是先找出工资少于$26,000的人, 再进行工资调整,属算法a
2 算法a适于数据库的记录不太多的情况,在数据库中查找较费时。
但是,调整系统的主要部分少一个判断,结构清晰一些。
3 算法b适于数据库的记录较多的情况,利用数据库的排序功能可很快地将教师的档案数据按工资大小排好序,调整程序只对前若干个记录进行操作。这个算法对于修改数据库回更便捷些。
交易

第4章-实用软件工程(第4版)-陆惠恩-清华大学出版社

第4章-实用软件工程(第4版)-陆惠恩-清华大学出版社
❖ 结构化程序设计(Structured Programming ,SP)
❖ 1、采用自顶向下、逐步求精的程序设计方法; ❖ 2、仅采用顺序、选择、重复三种基本控制结构,每种基本结构只有一个
入口、一个出口;将这三种基本控制结构根据程序的逻辑,嵌套或组合 成结构化程序,完成预定的功能。 ❖ 3、采用主程序员组的组织形式。
【例4.4】用因果图法设计测试用例
某规格说明规定:输入的第一列字符必须是A或B,第二列字符必须是一个数字。 第一、二列都满足条件时执行操作H;如果第一列字符不正确,则给出信息L; 如果第二列字符不正确,则给出信息R。
根据上述要求画出因果图,并设计测试用例。
例4.4 的因果图
例4.4的判定表
《实用软件工程(第3版)》陆惠恩编著
源程序文档编写规则 1.源程序文档书写规则:含义鲜明的标识符名称、适当的注解和程序布局阶梯式。 2. 数据说明:易于理解、便于查阅 3. 语句构造要简单明了 4. 输入输出语句要合理 5. 程序效率要满足用户需求。
▪ 程序设计主要应考虑的是程序的正确性、可理解性、可测试性和可维护性。
4.2 软件测试目标
《实用软件工程(第3版)》陆惠恩编著
8
程序流程图
《实用软件工程(第3版)》陆惠恩编著
9
程序图
《实用软件工程(第3版)》陆惠恩编著
10
计算程序的环行复杂度:
方法1:图中有4个线性无关的有向环:R1、R2、R3、R4。 在图4.4(b)中,实线弧数为14,节点数为12。因此,环行复杂度为 V(G)=14-12+2=4
《实用软件工程(第3版)》陆惠恩编著
5
4.5 设计测试方案
测试方案包括三个内容:
要测试的功能

C语言程序设计第四章

C语言程序设计第四章

运行情况: 1989↙ 1989is not a leap year.
2000↙
2000 is a leap year.
C程序设计
第五章
选择结构程序设计
例4.6 求
2 ax bx c 0 方程的解
#include "stdio.h" #include "math.h" main() {float a,b,c,d,disc,x1,x2,realpart,imagpart; scanf("%f,%f,%f",&a,&b,&c); printf("The equation"); if (fabs(a)<=1e-6) printf("is not a quadratic"); else disc=b*b-4*a*c; if(fabs(disc)<=1e-6) printf("has two equal roots:%8.4f\n",-b/(2*a)); else if(disc>1e-6) {x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); printf("has distinct real roots:%8.4f and %8.4f\n",x1,x2); } else {realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf("has complex roots:\n"); printf("%8.4f+%8.4fi\n",realpart,imagpart); printf("%8.4f-%8.4fi\n",realpart,imagpart); } }

软件工程第四章结构化需求分析

软件工程第四章结构化需求分析
在开始建立分析模型之前先理解问题。 以业务流程为中心来理解用户需求。 使用多个需求分析视图,建立数据、功能和行为模
型。
结构化分析模型
系统模型从以下不同的角度表述系统:
从外部来看,它是对系统分析上下文或系统环
境建模; 从行为上看,它是对系统行为建模; 从结构上看,它是对系统的体系结构和系统处 理的数据结构建模。
实例分析:图书馆系统
借书者 1 借书记录 包含 1 预约 M 书目
1
借/还/续借
M
图书 N
预约记录
实例分析:图书馆系统
实体:图书、借书者、管理员、借书目录、 预约记录、书目 属性给出如下:
借书者:借书者编号、姓名、性别、借书数、
最大借书数、罚金金额、有限期 图书:图书号、书目号 书目:书目号、书名、作者、出版社、丛书名、 收藏数、在馆数、预约数 借书记录:图书号、借书者编号、借出日期、 应还日期、续借次数 预约记录:书目号、借书者编号、预约日期
数据字典
数据字典是分析模型中出现的所有名字的一个 集合,并包括有关命名实体的描述 数据字典有以下两个作用:
它是所有名字信息管理的有效机制 作为连接软件分析、设计、实现和进化阶段的开发
机构的信息存储
数据字典应该由四类元素的定义组成:
数据流 数据流分量 数据存储 处理
实例分析:POS机系统
1 销售记录 1 付款 包含 M 商品 N 描述
N
1
商品描述
支付记录
实例分析:POS机系统
实体有销售记录、支付记录、商品、商品 描述 关联:
销售包含一组商品; 每个商品都有相应的描述信息; 每个支付对应一个销售。
实体的属性:

软件工程第4章概要设计

软件工程第4章概要设计
函数A 函数B 函数C 数据集
通常,通信内聚模块是通过数据流图来定义的。
5.通信内聚(2)
6.功能内聚
一个模块中各个部分都是完成某一具体功能 必不可少的组成部分 或者说该模块中所有部分都是为了完成一项 具体功能而协同工作,紧密联系,不可分割 的 软件结构中应多使用功能内聚类型的模块
内聚类型汇总
5.标记耦合
如果一组模块通过参数表传递信息 这个参数是: 数据结构 字符串 记录 不是简单变量
标记耦合举例 计算水电费
住户情况
计算水费
水费
住户情况
电费
计算电费
“住户情况”是一个数据结构,图中模块都 与此数据结构有关. “计算水费”和“计算电费”本无关,由于 引用了此数据结构产生依赖关系,它们之间 也是标记偶合.
4.2.2 软件结构风格与策略
1.软件结构风格取决于 程序的模块结构表明了程序各个模块的 组织情况,是软件的过程表示 数据的结构表明各个数据之间的关系和 各个数据元素的约束,是软件的信息表 示
2.软件结构的独立性风格
(1).独立性 软件系统中每个模块只涉及软件要求的 具体的子功能, 而和软件系统中其它的 模块的接口是简单的 一个模块和其它模块的独立程度是评价 一个模块设计好坏的重要度量尺度。
例如初始化模块和终止模块。
4.过程内聚
一个模块内部的处理成分是相关的,而且这些处 理必须以特定的次序执行
函数A 函数B 函数C
例如,把流程结构中的循环部分、判定部分、计 算部分分成一个模块,这三个任务组成的模块是 过程内聚模块。
5.通信内聚
如果一个模块内各功能部分都使用了相同的输入数 据,或产生了相同的输出数据,则称之为通信内聚 模块。

《软件工程实用教程》第4章_结构化软件设计

《软件工程实用教程》第4章_结构化软件设计

第4 章 結構化軟體設計
3.虛擬機風格 例:解釋器,通過虛擬機特定模組的解釋步驟 如下: 解釋引擎從被解釋的模組中選擇一條指令; 基於這條指令,引擎更新虛擬機內部的狀 態; 上述過程反復執行。
第4 章 結構化軟體設計
特點: 在虛擬機環境中運行的代碼不必須瞭解虛擬 機的具體細節。 一旦運行環境發生變化,只需要重寫虛擬機 本身,而不是整個系統。 通常虛擬機會限制在其中運行的軟體的行為, 特別是那些以實現跨平臺為目的的虛擬機, 如Java虛擬機和.NET CLR。 能夠使系統的結構更具層次性,使用虛擬機 提供的設施編寫的代碼,可以不考慮虛擬機 以外的實際環境,而在正確地實現了這種虛 擬機的環境中執行。
第4 章結構化軟體設計
本章學習內容: 1.瞭解概要設計的任務與過程 2.掌握結構化設計技術的基本原理與準則 3.掌握面向數據流分析的設計方法 4.瞭解面向數據的設計方法 5.掌握資料庫設計原則和步驟 6.瞭解常用的詳細設計工具 7.瞭解概要設計說明書的基本內容
第4 章 結構化軟體設計
4.1 概要設計的任務與過程 概要設計的目標是概要地說明軟體 應該怎樣實現,即解決軟體系統總 體結構設計的問題,包括軟體系統 的結構、模組劃分、模組功能和模 組間的聯繫等。
第4 章 結構化軟體設計
4.2.1 現代體系結構模型的基本概念
1.模式:是針對特定問題的成功解決方案,是指形成 了一種趨於固定的結構形式。 結構模式表達了軟體系統的基本結構組織形式或結 構方案,包含了一組預定義的子系統,規定了這些 子系統的責任,同時還提供了用於組織和管理這些 子系統的規則和嚮導。 設計模式為軟體系統的子系統、構件或者構件之間 的關係提供一個精練後的解決方案,描述了特定環 境下,用於解決通用軟體設計問題的構件以及這些 構件相互通信時的可重現結構。

第4章 结构化系统开发方法

第4章 结构化系统开发方法

图4-20 信息系统切换方法示意图
第4章 结构化系统开发方法 4.6系统维护和评价 4.6.1系统维护和管理 1.系统维护的重要性 2.系统维护的主要任务 4.6.2系统评价的目的和任务 1.目标评价 2.性能评价 3.经济效益评价
4.7小结
结构化方法是目前仍然比较广泛应用的系统开发方法 之一。结构化方法主要分为系统规划、系统分析、系 统设计、系统实施和系统维护、评价等5个主要的阶 段。本章按照结构化方法的生命周期,详细介绍了结 构化信息系统设计方法的阶段、步骤、方法和要求。 1.本章学习目标 熟悉结构化系统开发方法的实施过程; 熟练掌握结构化开发方法使用的各种工具的使用; 能够使用结构化方法和相应的开发工具开发信息系统。 2.本章主要内容 3.重要术语
第4章 结构化系统开发方法 4.3系统分析 4.3.4信息系统逻辑模型 信息系统的逻辑模型的表达主要包括: 功能模型:描述新系统的功能; 数据流程图:描述信息和信息的流动; 信息模型:数据字典和数据库结构等。
第4章 结构化系统开发方法 4.3系统分析 4.3.4信息系统逻辑模型 1.功能描化系统开发方法 4.4系统设计
4.4.6系统设计阶段的成果 主要成果是系统设计说明书文档。应包括以下主要内 容: (1)控制结构图及每一模块详细说明; (2)数据库设计说明; (3)计算机和网络系统设计说明; (4)代码设计说明; (5)用户界面设计说明; (6)计算机处理过程说明; (7)实施费用估计。
第4章 结构化系统开发方法 4.3系统分析 4.3.1详细调查 1.调查方法 2.组织结构调查 3.业务流程调查 4.信息调查 5.PIECES方法图 4-2 库存管理业务流程图
第4章 结构化系统开发方法 4.3系统分析 4.3.2数据流图 1.DFD的图形符号
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华北电力大学计控学院
公共耦合(Common Coupling)
若一组模块都访问同一个公共数据环 境,则它们之间的耦合就称为公共耦合。
公共的数据环境可以是全局数据结构、
共享的通信区、内存的公共覆盖区等。
华北电力大学计控学院
float Max , Min ; float a[10]={ 99,45,78,97,100,67.5,89,92,66,43}; main( ) { maxmin( ); echoa(); printf( “max=%6.2f \nmin=%6.2f \n” , Max , Min ) ; } void echoa() { int i; for(i=0;i<10;i++) printf(“%f ",a[i]); } void maxmin() { int i ; Max=Min=a[0] ; for ( i=1; i<n; i++) { if( a[i] > Max ) Max=a[i] ; else if( a[i] < Min) Min=a[i] ; } }
华北电力大学计控学院
模块独立性的度量准则

耦合:是模块之间的互相连接的紧密程度的度量。 内聚:是模块功能强度(一个模块内部各个元素彼

此结合的紧密程度)的度量。

模块独立性比较强的模块应是高内聚低耦合的
模块。
华北电力大学计控学院
模块间的耦合

耦 合 性
高等耦合
内容耦合 公共耦合 特征耦合
控制耦合 数据耦合
水费 电费
计算水费 图a
计算电费

图b
事先定义了数据结构:
房租水电=房租+用水量+用电量 则上下模块间属于特征耦合.
计算应扣款
房租水电 水费 电费 房租水电
计算水费 图b
计算电费
控制耦合 (Control Coupling)
如果一个模 块通过传送开 关、标志、名 字等控制信息, 明显地控制选
择另一模块的 功能,就是控 制耦合。
华北电力大学计控学院
通信内聚 (Communication Cohesion)

如果一个模块内各功能部分都使用了相同的输入数 据,或产生了相同的输出数据,则称之为通信内聚
模块。

通常,通信内聚模块是通过数据流图来定义的。 比过程内聚高,因通讯内聚模块中包含了许多独立 的功能。
华北电力大学计控学院


识别: 如果描述模块功能时很难用一句话说清, 则可能是偶然内聚。
华北电力大学计控学院
逻辑内聚(Logical Cohesion)

把几种相关的功能组合在一起,每次被调用时, 由传送给模块的判定参数来确定该模块应执行哪
个功能。

缺点 1)不易修改,因包含多个功能 2)需传递控制参数——控制耦合 3)未用部分调入内存,影响效率
同工作,紧密联系,不可分割的。则称该
模块为功能内聚模块。


优点:容易修改和维护
识别方法 只用一个动宾词组就能准确地描述其功能。
华北电力大学计控学院

模块之间的连接越紧密,联系越多,耦合性就越 高,而其模块独立性就越弱。

一个模块内部各个元素之间的联系越紧密,则它 的内聚性就越高,相对地,它与其它模块之间的
华北电力大学计控学院
公共耦合的缺点
修改某个数据,将会影响所有模块 无法控制各个模块对公共数据的存取,影响软件
模块的可靠性和适应性
公共数据名的使用,明显降低了程序的可读性 只有在模块之间共享的数据很多,且通过参数表
传递不方便时,才使用公共耦合。
华北电力大学计控学院

公共耦合的复杂程度随耦合模块的个数增加 而显著增加。 若只是两模块间有公共数据环境,则公共耦 合有两种情况。松散公共耦合和紧密公共耦 合。
分而治之是人们解决大型复杂问题时通常采用 的策略。将大型复杂的问题分解为许多容易解 决的小问题,原来的问题也就容易解决了。
软件的体系结构设计、模块化设计都是分而治
之策略的具体表现。
华北电力大学计控学院
模块化

模块化就是把程序划分成独立命名且 可独立访问的模块,每个模块完成一 个子功能,把这些模块集成起来构成 一个整体,可以完成指定的功能满足 用户的需求。

华北电力大学计控学院
数字仪表板控制
接收传感器信号
数据转换控制
驱动仪表板
转换成rpm 收集sps 读旋转信号
计算gph
读燃料流
确 定 加 速 / 减 速
计 算 mph
计 算 mpg
计 算 里 程
加 速 / 减 速 显 示
显 示 mpg
显示 mph
显 示 里 程
发 出 铃 声
发光二极管显示
华北电力大学计控学院
内容耦合

(Content Coupling)

一个模块直接访问另一个模块的内部数据。 一个模块不通过正常入口转到另一模块内部。 两个模块有一部分程序代码重迭。 (只可能出现在汇编语言中)。 一个模块有多个入口。
华北电力大学计控学院
关于耦合,应该注意:

设计原则


尽量使用数据耦合
中等耦合

非直接耦合
低等耦合 弱

模块独立性
华北电力大学计控学院
内聚
非直接耦合(Nondirect Coupling)
两个模块之间没有直接关系,它们之间的联系
完全是通过主模块的控制和调用 来实现的。
非直接耦合 的模块独立性 最强。
华北电力大学计控学院
数据耦合 (Data Coupling)
一个模块访问另一个模块时,彼此之间是通 过简单数据参数 (不是控制参数、公共数据 结构或外部变量) 来交换输入、输出信息的。

层次图
描绘软件的层次结构。

矩形框代表一个模块 框间的连线表示调用关系
求根

位于上方的模块调用下方的模块
华北电力大学计控学院
网上考试系统
题库管理
试卷管理
考试控制
试卷批阅
成绩管理
添 加 试 题
删 除 试 题
修 改 试 题
试 题 查 询
试 题 统 计
自 动 批 阅 客 观 题
手 动 批 阅 主 观 题
printf(“area is : %f\n”,s); }
特征耦合 (Stamp Coupling)
一组模块通过参数表传递记录信息,就是特征 耦合。这个记录是某一数据结构的子结构,而不 是简单变量。
华北电力大学计控学院
计算应扣款
用水量 用电量

图a
上下模块间传递的是用水量和 用电量、水费和电费。属于数 据耦合。
中等内聚 高等内聚 弱 模块独立性
华北电力大学计控学院


功能内聚
偶然内聚(Coincidental Cohesion)

当模块内各部分之间没有联系,或者即使有联系,这种 联系也很松散,则称这种模块为偶然内聚模块,内聚程 度最低。 缺点:
1)内容不易理解,很难描述其功能。
2)把完整的程序分割到多个模块中, 在程序运行时会频繁地互相调用。
华北电力大学计控学院

软件设计是后续开发步骤及软件维护工作 的基础。如果没有设计,只能建立一个不 稳定的系统结构。
华北电力大学计控学院
4.1.2 软件设计的原则

分而治之——模块化 模块独立性 提高抽象层次
复用性设计
灵活性设计
华北电力大学计控学院
4.1.2 软件设计的原则
分而治之
华北电力大学计控学院
模块化
华北电力大学计控学院
自顶向下,逐步求精

逐步求精:为了能集中精力解决主要问题而 尽量推迟对问题细节的考虑。 Miller法则(人类的认知规律):一个人在 任何时候都只能把注意力集中在7±2个知识 块上。

将软件的体系结构按自顶向下方式,对各个 层次的过程细节和数据细节逐层细化,直到 用程序设计语言的语句能够实现为止,从而 最后确立整个体系结构。 华北电力大学计控学院

逻辑内聚模块比偶然内聚模块的 内聚程度要高。因为它表明了各 部分之间在功能上的相关关系。
华北电力大学计控学院
时间内聚(Classical Cohesion)

时间内聚模块大多为多功能模块,但模块的各个 功能的执行与时间有关,通常要求所有功能必须 在同一时间段内执行。 例如:初始化模块和终止模块。
少用控制耦合 限制使用公共耦合(除非传递大量数据) 完全不用内容耦合

实际上,两个模块之间的耦合不只是一种类型,而
是多种类型的混合。这就要求设计人员进行分析、
比较,逐步加以改进,以提高模块的独立性。
华北电力大学计控学院
模块内聚

低等内聚
时间内聚 过程内聚 通信内聚 顺序内聚
偶然内聚 逻辑内聚
内 聚 性

华北电力大学计控学院
变换流
华北电力大学计控学院
华北电力大学计控学院
顺序内聚

一个模块中的处理元素和同一功能密切相关, 而且这些处理必须顺序执行,则称为顺序内 聚。

根据数据流图划分模块时,通常得到顺序内
聚的模块。
华北电力大学计控学院
功能内聚 (Functional Cohesion)

一个模块中各个部分都是完成某一具体功 能必不可少的组成部分,或者说该模块中 所有部分都是为了完成一项具体功能而协
耦合性就会减低,而模块独立性就越强。因此,
模块独立性比较强的模块应是高内聚低耦合的模
相关文档
最新文档