第五章总体设计(事务分析的映射方法实例)

合集下载

软件工程导论课件之第5章总体设计

软件工程导论课件之第5章总体设计
需要另一个模块的存在,那么它们完全独立。 n 在一个软件系统中不可能所有模块之间都没有
} n 继续对3.1和4.1细化,直到每个语句都能用程序设计语
言来表示
软件工程导论课件之第5章总体设计
逐步求精的作用: n 它能帮助软件工程师把精力集中在与当前开发
阶段最相关的那些方面上,而忽略那些对整体 解决方案来说虽然是必要的,然而目前还不需 要考虑的细节。 n 逐步求精方法确保每个问题都将被解决,而且 每个问题都将在适当的时候被解决,但是,在 任何时候一个人都不需要同时处理7个以上知 识块。
软件工程导论课件之第5章总体设计
5.2.5 模块独立
模块独立: n 模块独立的概念是模块化、抽象、信息隐藏和
局部化概念的直接结果。 n 希望这样设计软件结构,使得每个模块完成一
个相对独立的特定子功能,并且和其他模块之 间的关系很简单。
软件工程导论课件之第5章总体设计
模块独立的重要性: n 有效的模块化(即具有独立的模块)的软件比较
软件工程导论课件之第5章总体设计
n 上述框架中每一个加工语句都可进一步细化
n main() { /*建立2到100的数组A[ ],其中A[i]=i*/ ………..………1 for (i = 2;i <= 100;i++)A[i] = i; /* 建立2到10的素数表B[ ],存放2到10以内的素数*/ ….2 B[1] =2; B[2] = 3; B[3] = 5; B[4] = 7; /*若A[i]=i是B[ ]中任一数的倍数,则剔除A[i]*/ .…..….3 for (j = 1; j <= 4; j++) 检查A[]所有数能否被B[j]整除并将其从A[]剔除;.....3.1 /*输出A[ ]中所有没有被剔除的数*/ …………………….4 for (i = 2; i <= 100; i++) 若A[i]没有被剔除,则输出之……………………..…..4.1

软件工程导论 第5章 总体设计

软件工程导论 第5章 总体设计

第五章总体设计经过需求分析阶段的工作,系统必须“做什么”已经清楚了,现在是决定“怎样做”的时候了。

总体设计的基本目的就是回答“概括地说,系统应该如何实现?”这个问题,因此,总体设计又称为概要设计或初步设计。

通过这个阶段的工作将划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等等,但是每个物理元隶仍然处于黑盒子级,这些黑盒子里的具体内容将在以后仔细设计。

总体设计阶段的另一项重要任务是设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。

总体设计过程首先寻找实现目标系统的各种不同的方案,需求分析阶段得到的数据流图是设想各种可能方案的基础。

然后分析员从这些供选择的方案中选取若干个合理的方案,为每个合理的方案都准备一份系统流程图,列出组成系统的所有物理元素,进行成本/效益分析,并且制定实现这个方案的进度计划。

分析员应该综合分析比较这些合理的方案,从中选出一个最佳方案向用户和使用部门负责人推荐。

如果用户和使用部门的负责人接受了推荐的方案,分析员应该进一步为这个最佳方案设计软件结构,通常,设计出初步的软件结构后还要多方改进,从而得到更合理的结构,进行必要的数据库设汁,确定测试要求并且制定测试计划。

从上面的叙述中不难看出,在详细设计之前先进行总体设计的必要性:可以站在全局高度上,花较少成本,从较抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的软件结构,从而用较低成本开发出较高质量的软件系统。

5.1 设计过程总体设计过程通常由两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构没计阶段,确定软件结构。

典型的总体设计过程包括下述9个步骤:1.设想代选择的方案如何实现要求的系统呢,在总体设计阶段分析员应该考虑各种可能的实现方案,并且力求从中选出最佳方案。

在总体设计阶段开始时只有系统的逻辑模型,分析员有充分的自由分析比较不同的物理实现方案,一旦选出了最佳的方案,将能大大提高系统的性能/价格比。

第5章 总体设计

第5章 总体设计

第 5 章 总 体 设 计
通信内聚:如果模块中所有元素都使用同一个输入数
据和(或)产生同一个输出数据,则称为通信内聚。
25
软 件 工 程
高内聚也有两类: 顺序内聚:如果一个模块内的处理元素和同一个功 能密切相关,而且这些处理必须顺序执行(通常一个 处理元素的输出数据作为下一个处理元素的输入数 据),则称为顺序内聚。
设 计
8
软 件 工 程
5. 设计软件结构
通常程序中的一个模块完成一个适当的子功能。应该把 模块组织成良好的层次系统,顶层模块调用它的下层模块以 实现程序的完整功能,每个下层模块再调用更下层的模块, 从而完成程序的一个子功能,最下层的模块完成最具体的功 能。软件结构(即由模块组成的层次系统)可以用层次图或结 构图来描绘,第5.4节将介绍这些图形工具。
逻辑内聚:如果一个模块完成的任务在逻辑上属于 相同或相似的一类,则称为逻辑内聚。
第 5 章 总 体 设 计
时间内聚:如果一个模块包含的任务必须在同一段 时间内执行,就叫时间内聚。
24
软 件 工 中内聚主要有两类: 程
过程内聚:如果一个模块内的处理元素是相关的,而 且必须以特定次序执行,则称为过程内聚。 (使用程序流程图作为工具设计软件时,常常通过研究 流程图确定模块的划分,这样得到的往往是过程内聚 的模块)
第 5 章 总 体 设 计
如果数据流图已经细化到适当的层次,则可以直接从数 据流图映射出软件结构,这就是第5.5节中将要讲述的面向 数据流的设计方法。
9
软 件 工 程
6. 设计数据库
对于需要使用数据库的那些应用系统,软件 工程师应该在需求分析阶段所确定的系统数据需 求的基础上,进一步设计数据库。 在数据库课中已经详细讲述了设计数据库的 方法,本书不再赘述。

软件工程 总体设计PPT课件

软件工程 总体设计PPT课件

于公共耦 的物理安
合,区 排。
别在于在
外部耦合
中不存在依





**
28
第28页/共80页
(6)公共耦合
• 若一组模块都访问同一个公共数据环境,则它们
5.2
之间的耦合就称为公共耦合。
软 件
• 公共的数据环境可以是全局数据结构、共享的通 信区、内存的公共覆盖区等。

• 这种耦合会引起下列问题:
计 原

过程设计确定每个模块的处理过程。

• 为确定软件结构,首先需要从实现角度把复杂的功
能进一步分解。一般说来,经过分解之后应该使每
个功能对大多数程序员而言都是明显易懂的。功能 9 第9页/共80页
5.1.5 设计软件结构
• 通常程序中的一个模块完成一个适当的子功
能。
5.1

• 应该把模块组织成良好的层次系统,顶层模
**
上的操作全部集中在一个模块中,就可以消除
这种耦合。
26
第26页/共80页
(4)控制耦合
5.2
• 如果一个模块通过传送开关、标志、名字等控

制信息,明显地控制选择另一模块的功能,就

是控制耦合。

• 这种耦合的实质是在单一接口上选择多功能模块

中的某项功能。


• 对所控制模块的任何修改,都会影响控制模块。
• 总体设计阶段的另一项重要任务是设计软件的结构,也 就是要确定系统中每个程序是由哪些模块组成的,以及 这些模块相互间的关系。
总体设计的意义
• 在详细设计之前进行总体设计可以站在全局高度上,花 较少成本,从较抽象的层次上分析对比多种可能的系统 实现方案和软件结构,从中选出最佳方案和最合理的软 件结构,从而用较低成本开发出较高质量的软件系统。

软件工程导论知识点总结(整理)

软件工程导论知识点总结(整理)

《软件工程导论》课后习题答案第一章软件工程概论1.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。

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

(3)一般软件很难维护。

(4)软件生产效率很低。

(5)软件开发成本越来越大。

(6)软件成本与开发进度难以估计。

(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。

2.为什么会产生软件危机?(1)开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。

造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性.(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。

(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。

3.怎样克服软件危机?(1)充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训.在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。

(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。

(3)根据不同的应用领域,开发更好的软件工具并使用这些工具。

将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境.总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。

4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料.5.什么是软件生存周期?软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。

第5章 总体设计

第5章 总体设计

8
设计原理(续1)
◆设计示例: “用 AND, OR, and NOT 门构
建的计算机。 ”
chip1
chip2
◆第一种设计:设计师 设计三个功能芯片
chip3
2013-7-16
上海大学计算机学院
9
设计原理(续2)
◆第二种设计:每芯片一种门
2013-7-16
上海大学计算机学院
10
设计原理(续3)
2013-7-16
上海大学计算机学院
16
耦合(续1)
1. 内容耦合
● 一个模块直接引用另一个模块的内容 ● 示例
模块a修改模块b的语句 模块 a的分支转移到模块 b的局部标号
● 缺点
模块b的任何变化都要求变化a
2013-7-16
上海大学计算机学院
17
耦合(续2)
2. 共用耦合
● 两模块存取相同的数据 ● 示例
第5章 总体设计
◆设计任务
◆设计过程
◆设计原理
◆启发规则
◆图形工具 ◆面向数据流的设计
2013-7-16
上海大学计算机学院
1
总体设计的任务
◆“概括地说,系统应该如何实现?”
◆总体设计阶段的任务
●系统划分: 程序、文件、数据库、人工过程和文档等 ●设计软件的结构
每个程序是由哪些模块组成,以及这些模块相互间的关系。
2013-7-16
上海大学计算机学院
26
内聚(续4)
4. 过程性内聚
●一个模块内的处理元素是相关的,而且必须以特定次 序执行. ●示例
Function { read part number from database update repair record on master file }

总体设计

总体设计

第 5 章 总体设计
a. 偶然内聚 如果一个模块完成一组任务, 如果一个模块完成一组任务,这些任务彼此之 间即使有关系,关系也是松散的, 间即使有关系,关系也是松散的,这种内聚称为偶 然内聚。 然内聚。 b. 逻辑内聚 如果一个模块完成的任务在逻辑上属于相同或 相似的一类,则称为逻辑内聚。 相似的一类,则称为逻辑内聚。 c. 时间内聚 如果一个模块包含的任务必须在同一段时间内 执行,就叫时间内聚。 执行,就叫时间内聚。
第 5 章 总体设计 5.2.2 抽象
在现实世界中一定事物、 在现实世界中一定事物、状态或过程之 间总存在着某些相似的方面, 间总存在着某些相似的方面,把这些相似 的方面集中和概括起来, 的方面集中和概括起来,暂时忽略它们之 间的差异,就是抽象。 间的差异,就是抽象。
第 5 章 总体设计
例 考虑适用于低级CAD的图形软件包 抽象Ⅰ 该CAD软件系统配有能与绘图员进行可 视化通信的图形界面,能用鼠标代替绘图工具,画 各种直线和曲线;能完成所有几何计算以及所有截 面视图和辅助视图的设计。图形设计的结果存在图 形文件中,图形文件可包含几何的、正文的和其他 各种补充设计信息。 抽象Ⅱ 软件任务: 用户界面任务; 创建二维图形任务; 显示图形任务; 管理图形文件任务。
第 5 章 总体设计
总体设计的目的: 总体设计的目的: 回答“概括地说,系统应该如何实现? 回答“概括地说,系统应该如何实现?”。 总体设计的任务: 总体设计的任务: 1. 划分出组成系统的物理元素—— 程序、文件、 划分出组成系统的物理元素—— 程序、文件、 数据库、人工过程和文档。 数据库、人工过程和文档。 2. 设计软件结构,也就是要确定系统中每个程 设计软件结构, 序是由哪些模块组成的, 序是由哪些模块组成的,以及这些模块相互之间 的关系。 的关系。

软件工程知识梳理3-总体设计

软件工程知识梳理3-总体设计

总体设计(概要设计)总体设计的基本目的是回答“概括地说,系统应该如何实现”这个问题,因此总体设计又称为概要设计或初步设计。

本阶段的工作讲划分出组成系统的物理元素:程序、文件、数据库、人工过程和文档等,但是每个物理元素仍然处于黑盒子级,这些黑盒子里面的具体内容将在后面的详细设计完成。

两个阶段:系统设计:确定系统具体实现方案结构设计:确定软件结构九个步骤:1.设想供选择的方案2.选取合理的方案3.推荐最佳方案——>进入下一个阶段结构设计4.功能分解:先进行结构设计确定软件结构,然后进行过程设计5.设计软件结构6.设计数据库7.制定测试计划8.书写文档:系统说明、用户手册、测试计划、详细的实现计划、数据库设计结果9.审查和复审设计原理1.模块化:把程序划分程独立命名且可独立访问的模块,每个模块完成一个子功能,再把这些模块集成起来构成一个整体,可以完成指定的功能以满足用户需求。

(分治)2.抽象:3.逐步求精:4.信息隐藏和局部化:5.模块独立:耦合、内聚启发规则:经验之谈!1.改进软件结构提高模块独立性2.模块规模应该适中3.深度、宽度、扇出和扇入都应适当4.模块的作用域应该在控制域之内5.力争降低模块接口的复杂程度6.设计单入口单出口的模块7.模块功能应该可以预测描绘软件结构的图形工具1.层次图和HIPO图2.结构图面向数据流的设计方法在软件工程的需求分析阶段,信息流是一个关键考虑,通常用数据流图描绘信息在系统中加工和流动的情况。

面向数据流的设计方法定义了一些不同的“映射”,利用这些映射可以把数据流图变换成软件结构。

因为任何软件系统都可以使用数据流图表示,所以面向数据流的设计方法在理论上可以设计任何软件结构。

通常所说的结构化设计方法(SD方法)就是基于数据流的设计方法。

信息流—>软件结构,信息流的类型决定了映射的方法,信息流有两种:变换流和事务流。

变换分析:一系列设计步骤的总称,经过这些步骤把具有变换流特点的数据流图按预先确定的模式映射成软件结构。

五年级上册道德与法治《5.协商决定班级事务》教学设计

五年级上册道德与法治《5.协商决定班级事务》教学设计

五年级上册道德与法治《5.协商决定班级事务》教学设计一. 教材分析五年级上册道德与法治《5.协商决定班级事务》这一章节主要让学生了解协商的意义,学会通过协商的方式解决问题,培养学生的团队精神和责任感。

教材通过生动的案例和情景,引导学生认识到协商的重要性,学会在班级事务中运用协商的方法。

二. 学情分析五年级的学生已经具备一定的独立思考和表达能力,对于班级事务有一定的关注度。

但部分学生在面对问题时,可能还不会主动寻求协商解决,对于如何进行协商还不够了解。

因此,在教学过程中,教师需要关注学生的个体差异,引导他们主动参与协商,提高他们的沟通技巧。

三. 教学目标1.让学生了解协商的意义,认识到协商在解决问题中的重要作用。

2.培养学生学会倾听、理解他人的观点,尊重他人的意见。

3.引导学生学会用协商的方法解决问题,提高他们的沟通能力和团队协作能力。

4.培养学生的责任感和集体荣誉感。

四. 教学重难点1.重点:让学生掌握协商的基本方法,学会在班级事务中运用协商。

2.难点:培养学生面对问题时,主动寻求协商解决问题的意识。

五. 教学方法1.情境教学法:通过设置情境,让学生在实践中学会协商。

2.案例分析法:通过分析典型案例,引导学生认识协商的重要性。

3.小组讨论法:分组讨论,培养学生的团队协作能力和沟通能力。

4.师生互动法:教师引导学生,学生积极参与,提高课堂活力。

六. 教学准备1.准备相关案例材料,用于教学演示。

2.准备教室布局,便于学生分组讨论。

3.准备计时器,用于控制教学环节时间。

4.准备相关问题,用于引导学生思考。

七. 教学过程1.导入(5分钟)教师通过提问方式引导学生思考:在日常生活中,你是否遇到过需要和他人协商解决问题的情况?让学生认识到协商在解决问题中的重要性。

2.呈现(10分钟)教师呈现一个班级事务的案例,如:班级卫生打扫分工问题。

引导学生分析案例中存在的问题,并提出解决方案。

3.操练(10分钟)学生分组讨论,每组选择一个案例进行模拟协商。

第5章 总体设计

第5章 总体设计
128
对时间起决定性作用的软件进行优化:
• 在不考虑时间因素的前提下开发并精化软件结 构;
• 在详细设计阶段选出最耗费时间的那些模块, 仔细地设计它们的处理过程,以求提高效率; • 使用高级程序设计语言编写程序; • 在软件中孤立出那些大量占用处理机资源的模 块; • 必要时重新设计或用依赖于机器的语言重写上 述大量占用资源的模块的代码,以求提高效率。
5.5.4 设计优化
• 设计优化应该力求做到在有效的模块化的 前提下使用最少量的模块,以及在能够满 足信息要求的前提下使用最简单的数据结 构。 • 对于时间是决定性因素的应用场合,可能 有必要在详细设计阶段,也可能在编写程 序的过程中进行优化。 • 软件开发人员应该认识到,程序中相对说 比较小的部分(典型地,10%~20%),通常 占用全部处理时间的大部分(、功能分解、设计软件结构、设 计数据库、制定测试计划、书写文档、审查和复查 设计原理: 模块化,抽象,逐步求精,信息隐藏和局 部化,模块独立(耦合、内聚) 启发规则:改进结构、规模适中、扇入扇出、作用域、 降低接口复杂程度、单入口单出口、可预测。 图形工具:层次图和HIPO图、结构图 面型数据流的设计方法:变换流、事务流、设计过程、 变幻分析、事务分析、设计优化

软件工程简答题答案 第五版

软件工程简答题答案 第五版

软件工程简答题第一章绪论1.什么是软件危机?软件危机有什么表现?软件危机产生的原因是什么?答:所谓软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

主要是指如何开发软件,怎样满足对软件日益增长的需求,如何维护数量不断膨胀的先有软件。

表现:(1)对于软件开发的成本和进度的估计很不准确。

(2)开发的软件产品不能完全满足用户要求,用户对已完成的软件系统不满意的现象常常发生。

(3)开发的软件可靠性差。

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

(5)软件的可维护性差。

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

原因:软件开发中遇到的问题因找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,导致了软件危机。

2.简述软件的发展过程。

答:软件生产的发展划分为三个年代:(1)程序设计时代:这一时期,软件的生产主要是个体手工劳动的生产方式。

(2)程序系统时代:由于计算机的应用领域不断扩大,软件的需求也不断增长,软件由于处理的问题域扩大而使程序变得复杂,设计者不得不由个体手工劳动组成小集团合作,形成作坊式生产方式小集团合作生产的程序系统时代。

(3)软件工程时代:软件工程时代的生产方式是采用工程的概念、原理、技术和方法,使用数据库、开发工具、开发环境、网络、分布式、面向对象技术来开发软件。

3.什么叫软件工程?软件工程是如何克服软件危机的?答:软件工程是将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及上述方法的研究。

为了克服软件危机,人们从其他产业的工程化生产得到启示,采用工程的概念、原理、技术和方法来开发和维护软件。

4.软件工程的目标是什么?软件工程有哪些原则?答:软件工程的目标是:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户需求的软件产品。

原则如下:抽象、模块化、信息隐藏、局部化、完整性、一致性和可验证性。

总体设计(事务分析的映射方法实例)

总体设计(事务分析的映射方法实例)

③ 模块化与软件成本的关系
接口
④ 模块的基本属性
接口:指模块的输入与输出。 功能:指模块实现什么功能。 模块化好处: 模块化使软件容易测试和调试,因而有助 提高软件的可靠性。 模块化能提高软件的可修改性。 模块化有助于软件开发工程的组织管理。
5.2.2 抽象( Abstraction )
① 什么是抽象?
设计者从最高层开始,仔细推敲,进行功 能和信息的细化,给出下层实现的细节;
随着每个后续细化逐步的完成,提供越来 越多的细节,最终得出用程序设计语言表达 的程序。
结合了模块化和逐步细化思想建立的软件结构图
5 . 2.4信息隐蔽和局部化
信息隐蔽:在设计和确定模块时,使得一个 模块内包含的信息(过程或数据),不允许 其它不需要这些信息的模块访问,独立的模 块间仅仅交换为完成系统功能而必须交换的 信息。
① 什么是模块和模块化思想?
采取自顶向下的方式,逐层把软件系统划分 成若干可单独命名和可编址的部分- “ 模 块” ,每个模块完成一个特定的子功能;所 有模块按某种方法组成一个整体,完成整个 系统所要求的功能。 软件系统就是通过这些模块的组合来实现。
② 模块化的优点
模块化是软件解决复杂问题所具备的手段, 可降低软件复杂性,减少开发工作量,从而 降低开发成本,提高软件生产率,是模块化 的依据。
正文加工系统 主控模块
层次图
酒店管理信息系统功能结构图
5.4.2 结构图(SC Structure Chart)
主要成分说明:
一个方框表示一个模块;
一个模块指向另一个模块的箭头或直线,表示前
一模块对后一模块的调用;
调用直线边的小箭头,表示调用时从一个模块传
给另一个模块的数据,也指出了传送方向。

软件工程与项目管理课程标准

软件工程与项目管理课程标准

软件工程与项目管理课程标准一、课程概述(一)课程性质《软件工程与项目管理》是计算机应用专业教学计划中一门综合性和实践性很强的核心课程,主要内容包括软件工程概述、可行性分析、需求分析、概要设计、详细设计、面向对象分析与设计、编码、软件项目管理。

(二)课程基本理念本课程以“面向岗位、以岗位需求”为导向;以典型工作过程为依据选取教学内容;充分考虑学生的学习特点和职业发展需要。

(三)课程设计思路根据软件技术专业所涉及到的计算机语言编程和数据库术技术知识,以项目为驱动,通过“老师命题-学生实践”的方式在“知识-实践-项目”环节中提高学生的学习兴趣和动手能力;采用分段实施的教学过程:知识讲授阶段-实践阶段-强化指导来逐步提高学生的实际动手能力,为更深入地学习和今后从事软件工程实践打下良好的基础。

二、课程目标(一)总体目标:本课程的总目标是:“以学生实践为主体”,通过课程的实施,帮助学生学会自主学习。

使学生的知识、技能、素质得到全面发展,既为今后的专业课程学习打下良好的知识与技能基础,又培养良好的职业素养。

课程内容突出高职教育特点,确保人才培养目标的实现。

(二)具体目标1、知识目标掌握软件工程的基本概念及原理、掌握软件工程的基本原则和方法工具;了解当今软件企业的工作规范。

2、能力目标通过本课程的学习,掌握软件工程的基本理论、实用的开发方法和技术,并能够把软件工程的思想应用于软件项目实施过程;了解软件工程各领域的发展方向,对中小型软件项目进行可行性和需求分析、设计、编码、测试的能力及开发过程中应遵循的流程、准则、标准和规范,为今后从事软件工程实践打下良好的基础。

3、素质目标使学生具备团队精神及软件专业人员的基本素质,为就业和将来的发展打下理论和实践基础;培养学生认真参与、积极交流的主体意识;激发学生的学习热情,使学生初步形成编制程序的意识和科学精神。

三、课程内容标准第一章软件工程概述(一)教学目的、要求本章要求学生了解什么是软件危机和软件工程,软件危机产生的历史背景、根源和由此产生的大量的失败,了解软件工程是从何种角度切入到软件开发中去,如何解决软件危机,了解消除软件危险的途径。

第5章 总体设计案例

第5章 总体设计案例

软件工程总体设计案例总体设计的基本任务是回答“系统应该如何实现?”这个问题,设计出组成系统的物理元素——程序、文件、数据库、人工过程和文档等等,并确定系统中每个程序有哪些模块组成,以及这些模块相互间的关系。

1、设计方案的选择分析员应以数据流图为依据设想不同的自动化边界,导出多个初步的实现方案,分析比较这些方案,从中选出一个最佳方案向用户和使用部门负责人推荐。

对于工资管理系统,分析员在下图的基础上描绘了一组自动化边界,如4-1虚框所示。

图4-1 在数据流图上加自动化边界图4-1中“发放工资”,“数据收集”和“数据验证”可以用人工处理,其余部分用机器处理。

2、软件结构设计软件结构设计的主要任务是把系统内部各种功能关系变换成程序模块之间的控制关系。

(1)复查并确定数据流图的类型。

工资管理系统的数据流图具有较明显的输入、中心变换和输出三部分,故属于变换型的数据流图。

“人事数据”、“事务数据”是逻辑输入,“工资”和“报表”是逻辑输出。

(2)设计上层模块。

上层模块如下图4-2所示。

主控模块“工资管理”为顶,分成输入、中心变换、输出。

图4-2 工资管理系统上层模块(3)分解上层模块设计中、下层模块。

上图4-2中的中心变换模块与变换“处理事务”相对应,而变换“处理事务”分解后的数据流图(见第3章),又包含“取数据”、“计算应发工资”、“计算借款扣款”、“修改借款扣款”、“写工资单”、“计算实发工资”、“些报表”等7个功能。

所以中心变换模块分解后的“工资管理”分层结构图如下4-3所示。

后把控制归还给“工资管理”模块。

接下来,“工资管理”模块将控制转给“计算应发工资”模块,完成计算之后又将控制返回到“工资管理”模块。

以此类推,最后由“工资管理”模块结束处理。

在软件设计期间,分析员了解到对工资数据的处理规则是:只有把所有的有关数据都备齐之后,才能计算一名职工的工资。

根据这条规则可知,计算工资时,事务数据、人事数据和借款数据等有关数据缺一不可。

总体设计方法

总体设计方法

总体设计方法总体设计方法是指在进行项目或产品设计时,从整体的角度出发,对设计过程进行规划和组织的方法。

它包括对需求分析、概念设计、详细设计和实施等阶段的全面考虑和统筹安排,以保证设计的高效性、可靠性和可维护性。

下面将从需求分析、概念设计、详细设计和实施这四个阶段依次介绍总体设计方法。

首先是需求分析阶段。

在这个阶段,我们需要明确项目或产品的功能需求、性能需求、界面需求和系统约束等,通过与用户的沟通和调研,了解用户的真正需求和期望。

在需求分析的过程中,可以使用面谈、问卷调查、观察等方法收集信息,并将其整理成需求文档。

在这个阶段,我们要确保需求的准确性、完整性和一致性,以便为后续的设计工作提供准确的基础。

接下来是概念设计阶段。

在这个阶段,我们需要进行创意的产生和筛选,确定项目或产品的整体框架和基本方向。

概念设计需要考虑项目或产品的功能结构、界面布局、用户体验等方面,通过绘制草图、制作原型等方式将概念转化为具体的形式。

在这个阶段,我们要注重创新性和可行性的结合,确保设计方案的可实现性和可接受性。

然后是详细设计阶段。

在这个阶段,我们需要对概念设计进行进一步细化和完善,明确项目或产品的详细功能、结构和实现方式。

详细设计需要考虑项目或产品的模块划分、接口设计、算法设计等方面,通过绘制流程图、制定接口规范等方式将设计方案转化为具体的实施方案。

在这个阶段,我们要注重设计的合理性和可扩展性,确保设计方案的稳定性和可维护性。

最后是实施阶段。

在这个阶段,我们需要根据详细设计的方案进行具体的编码、测试和部署工作,将设计方案转化为最终的实际结果。

实施阶段需要注重工作的规范性和效率性,确保项目或产品的质量和进度。

在这个阶段,我们要注重团队的协作和沟通,确保设计方案能够按照计划顺利实施。

总体设计方法是一种系统化的设计方法,它能够帮助设计师从整体的角度出发,全面考虑和统筹安排设计过程。

通过合理的需求分析、概念设计、详细设计和实施,可以确保设计方案的高效性、可靠性和可维护性。

第05章 总体设计

第05章 总体设计
2011-4-2
下面看人类解决问题的一般规律: 下面看人类解决问题的一般规律:
设函数C( )为定义问题x的复杂程度 的复杂程度, 设函数 (x)为定义问题 的复杂程度, 函数 E(x)为解决问题 的工作量 。 对于两个问题 1 为解决问题x的工作量 为解决问题 的工作量。 对于两个问题P 和P2,如果 C(P1) >C(P2) 显然 E (P1) >E (P2) 量也大) 量也大) (即复杂程度大,工作 即复杂程度大,
2011-4-2
(8)书写文档 ) 编写总体设计文档(包括系统构成方案、 ※ 编写总体设计文档(包括系统构成方案、 物理元素清单、成本/效益分析 效益分析、 物理元素清单、成本 效益分析、最佳方案的概 括描述、数据流图、软件结构、 括描述、 数据流图 、软件结构、各个模块的算 模块间的接口关系) 法,模块间的接口关系)。 ※ 用户手册 测试计划(测试策略,测试方案, ※ 测试计划(测试策略,测试方案,预期的 测试结果,测试进度计划) 测试结果,测试进度计划) ※ 详细的实现计划 (9)审查和复审 审查和复审 应该进行严格的技术审查和管理复审。
2011-4-2
结构设计是总体设计阶段的任务; 结构设计是总体设计阶段的任务; 的任务 过程设计是详细设计阶段的任务。 过程设计是详细设计阶段的任务。 的任务 为确定软件结构, 为确定软件结构 , 首先把复杂的功能进一 步分解成一系列简单的功能。 步分解成一系列简单的功能 。 功能分解导致数 据流图的进一步细化, 并用IPO图或其他工具 据流图的进一步细化 , 并用 图或其他工具 来描述细化后每个处理的算法。 来描述细化后每个处理的算法。
2011-4-2
局部化的概念和信息隐蔽概念是密切相关的。 局部化的概念和信息隐蔽概念是密切相关的。 所谓局部化 局部化是指把一些关系密切的软件元素物理 所谓局部化是指把一些关系密切的软件元素物理 地放得彼此靠近。 地放得彼此靠近。在模块中使用局部数据元素是 局部化的一个例子。显然, 局部化的一个例子。显然,局部化有助于实现信 息隐蔽。 息隐蔽。 信息隐蔽和局部化的概念是由Parnas提出的。 提出的。 信息隐蔽和局部化的概念是由 提出的 Parnas提出在总体设计时就要注意软件的可维护性和 提出在总体设计时就要注意软件的可维护性和 可靠性的设计措施。这就是信息隐蔽的原则。 可靠性的设计措施。这就是信息隐蔽的原则。 信息隐蔽的原则 为了适应软件在生命周期中的多次修改, 为了适应软件在生命周期中的多次修改, 在模块划分的总体设计阶段就要尽量设法将 可变性因素隐蔽在一个或几个局部的模块中。 可变性因素隐蔽在一个或几个局部的模块中。 2011-4-2

张海藩《软件工程导论》(第6版)(章节题库 第5章 总体设计)【圣才出品】

张海藩《软件工程导论》(第6版)(章节题库 第5章 总体设计)【圣才出品】

第5章总体设计一、选择题1.模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准是模块的()。

A.抽象和信息隐蔽B.局部化和封装化C.内聚性和耦合性D.激活机制和控制方法【答案】C【解析】模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。

耦合衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。

2.在面向数据流的软件设计方法中,一般将信息流分为()。

A.变换流和事务流B.变换流和控制流C.事务流和控制流D.数据流和控制流【答案】A【解析】面向数据流的软件设计方法是以结构化分析阶段所产生的文档(包括数据流图、数据字典和软件需求说明书)为基础,自顶向下,逐步求精和模块化的过程。

它一般将信息流分为变换流和事务流。

①变换流:信息沿着输入通道进入系统,然后通过变换中心(也称主加工)处理,再沿着输出通道离开系统。

②事务流:信息沿着输入通道到达一个事务中心,事务中心根据输入信息(即事务)的类型在若干个动作序列(称为活动流)中选择一个来执行。

3.软件设计一般分为总体设计和详细设计,它们之间的关系是()。

A.全局和局部B.抽象和具体C.总体和层次D.功能和结构【答案】A【解析】软件设计分为总体设计和详细设计,其中总体设计属于全局性的设计,详细设计属于局部性的设计,是概要设计的完善。

4.将几个逻辑上相似的成分放在一个模块中,该模块的内聚度是()的。

A.逻辑性B.瞬时性C.功能性D.通信性【答案】A【解析】逻辑内聚:模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。

5.模块中所有成分引用共同的数据,该模块的内聚度是()的。

A.逻辑性B.瞬时性C.功能性D.通信性【答案】D【解析】通信内聚指模块内所有处理元素都在同一个数据结构上操作(有时称之为信息内聚),或者指各处理使用相同的输入数据或者产生相同的输出数据。

6.好的软件结构应该是()。

A.高耦合、高内聚B.低耦合、高内聚C.高耦合、低内聚D.低耦合、低内聚【答案】B【解析】耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。

总体设计——精选推荐

总体设计——精选推荐

总体设计
总体设计
结构化总体设计
结构化⽅法下,总体设计模型由功能结构图、IPO图、系统流程图和配置图来描述。

⾯向对象⽅法下,设计模型由功能结构图、类图及其辅助图(包括状态图、时序图和协作图)、组件图和配置图来描述。

数据库的概念结构是系统中数据模型的共同基础,它描述了系统最基础的数据结构,独⽴于特定的数据库结构;数据库的物理结构是数据库的物理数据模型,
它包括实际数据库服务器上的表、存储过程、字段、视图、触发器、索引等等,与特定的数据库系统密切相关。

应⽤系统的概念结构数据模型通常⽤ER模型进⾏描述。

(ER模型:实体、关系、属性)。

第五章总体设计(事务分析的映射方法实例)

第五章总体设计(事务分析的映射方法实例)

逐步求精的例子
外表
抽象
形体
衣着
性格
头发 脸形
领带
逐步求精
自顶向下,逐步求精的基本思想
将功能、信息的说明分为多个层次,最高 层也最抽象 ― 仅仅只是概念性地描述功能或 信息,不提供功能的内部工作情况或信息的 内部结构; 设计者从最高层开始,仔细推敲,进行功 能和信息的细化,给出下层实现的细节; 随着每个后续细化逐步的完成,提供越来 越多的细节,最终得出用程序设计语言表达 的程序。
通信内聚
模块内各部分使用相同的输入数据,或产生 相同的输出结果
顺序内聚
模块完成多个功能,各功能都在同一数据结 构上操作,每一功能有唯一入口。
功能内聚
模块仅包括为完成某个功能所必须的所有成 分。 模块所有成分共同完成一个功能,缺一不可 内聚性最强
模块间内聚的类型
总结:耦合、内聚与模块独立性关系
① 什么是抽象? 认识复杂事物和现象 时,抽出事物本质的 共同特 性而暂不考虑 宜宾学院 它们的细节。 宜宾学院计算机 ② 软件开发中的抽象 学院学生 过程的抽象 宜宾学院计算机 学院08级学生 数据的抽象
抽象
什么是抽象思想?
在认识事物、分析和解决问题的过程中,忽略 那些与当前研究目标不相关的部分, 以便将注 意力集中于与当前目标相关的方面
5 . 4 . 1 层次图和 HIPO 图 描述软件的层次结构。 层次图中,一个方框代表一个模块,方框间 的连线表示调用关系。 HIPO 图=层次图+ IPO 图
正文加工系统
主控模块
层次图
酒店管理信息系统功能结构图
5.4.2 结构图(SC Structure Chart)
主要成分说明: 一个方框表示一个模块; 一个模块指向另一个模块的箭头或直线,表示前 一模块对后一模块的调用; 调用直线边的小箭头,表示调用时从一个模块传 给另一个模块的数据,也指出了传送方向。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
耦合与内聚都是模块独立性的定性标准,都 反映模块独立性的良好程度。 但耦合是直接的主导因素,内聚则辅助耦合 共同对模块独立性进行衡量。 设计要求:低耦合,高内聚
5 .3 启发规则
改进原则 :高内聚、低耦合 ① 改进软件结构,提高模块独立性 ② 模块规模适中 ③ 深度、宽度、扇出和扇入适中 ④ 将模块的影响限制在控制范围内 ⑤ 降低模块接口的复杂性 ⑥ 设计单入口单出口的模块 ⑦ 模块功能可预测
5 . 4 . 1 层次图和 HIPO 图 描述软件的层次结构。 层次图中,一个方框代表一个模块,方框间 的连线表示调用关系。 HIPO 图=层次图+ IPO 图
正文加工系统
主控模块
层次图
酒店管理信息系统功能结构图
5.4.2 结构图(SC Structure Chart)
主要成分说明: 一个方框表示一个模块; 一个模块指向另一个模块的箭头或直线,表示前 一模块对后一模块的调用; 调用直线边的小箭头,表示调用时从一个模块传 给另一个模块的数据,也指出了传送方向。
1 、什么是模块独立性( module independence) 模块只完成系统要求的相对独立的功能 符合信息隐蔽原则 模块间关联和依赖程度尽量小 2 、模块独立的优点 容易开发、测试和维护
3 、衡量模块独立性的两个准则
① 耦合性( coupling ) ② 内聚性( cohesion )
① 耦合性( coupling )
① 什么是抽象? 认识复杂事物和现象 时,抽出事物本质的 共同特 性而暂不考虑 宜宾学院 它们的细节。 宜宾学院计算机 ② 软件开发中的抽象 学院学生 过程的抽象 宜宾学院计算机 学院08级学生 数据的抽象
抽象
什么是抽象思想?
在认识事物、分析和解决问题的过程中,忽略 那些与当前研究目标不相关的部分, 以便将注 意力集中于与当前目标相关的方面
逐步求精的例子
外表
抽象
形体
衣着
性格
头发 脸形
领带
逐步求精
自顶向下,逐步求精的基本思想
将功能、信息的说明分为多个层次,最高 层也最抽象 ― 仅仅只是概念性地描述功能或 信息,不提供功能的内部工作情况或信息的 内部结构; 设计者从最高层开始,仔细推敲,进行功 能和信息的细化,给出下层实现的细节; 随着每个后续细化逐步的完成,提供越来 越多的细节,最终得出用程序设计语言表达 的程序。
重点和难点
重点: 软件设计过程中应遵循的基本原理; 面向数据流的设计方法 难点: 变换分析、事务分析法的过程和应用
软件设计的目标和任务
软件需求:解决“做什么” 软件设计:解决“怎么做”. 软件设计的任务:以软件需求规格说明书为 依据,着手实现软件的需求,并将设计的结 果反映在“设计规格说明书”文档中。 软件设计的重要性:是软件开发阶段的第一 步,最终影响软件实现的成败和软件维护的 难易程度。
控制耦合举例
去除模块间控制耦合的方法
控制藕合增加了理解和编程的复杂性,调用 模块必须知道被调模块的内部逻辑,增加了 相互依赖。解决方法: ( 1 )将被调用模块内的判定上移到调用模块 中进行 ( 2 )被调用模块分解成若干单一功能模块
改控制藕合为数据藕合举例来自特征耦合两个模块通过传递数据结构加以联系,或都 与一个数据结构有关系,则称这两个模块间 存在特征耦合。 可能出现的情况:当把整个数据结构作为参 数传递时,被调用的模块虽然只需要使用其 中的一部分数据元素,但实际可以使用的数 据多于它真正需要的数据,这将导致对数据 访问失去控制,
② 内聚性( cohesion )
又称块内联系。指一个模块内部各个元素彼 此结合的紧密程度的度量。 若一个模块内各元素(语句之间、程序段之 间)联系的越紧密,则它的内聚性就越. 设计目标:高内聚
巧合内聚(偶然内聚)
块内各组成成份在功能上是互不相关的。
模块 M 中的三个语句没有任何联系。 缺点:可理解性差,可修改性差
软件设计的两个阶段
第一阶段:概要设计(总体设计) 根据软件需求,设计软件系统结构和数据结 构,确定程序的组成模块及模块之间的相互 关系。 回答“概括地说,系统应该如何实现?”。 其重要性是:站在全局高度,从较抽象的层 次上分析对比多种可能的系统实现方案和软 件结构,从中选出最佳方案和最合理的软件 结构,从而用较低成本开发出较高质量的软 件系统。
SC 中的四种模块
从下属模块 取得数据, 经过处理, 再传入上级 模块
从上级模块 获得数据, 经过处理, 再传送给下 属模块
加工模块。 从上级模块 对所有下属 模块进行协 获得数据, 经过处理, 调和管理的 模块 转换成其他 形式,再送 回上级模块。
软件工程
第五章总体设计
第五章总体设计
5 . 1 设计过程 5 . 2 设计原理 5 . 3 启发规则 5 . 4 描绘软件结构的图形工具 5 . 5 面向数据流的设计方法 5 . 6 小结 习题
学习要求
掌握: 1 、软件设计过程中应遵循的基本原理和相 关概念; 2 、描绘软件结构的图形工具的运用; 3 、面向数据流设计方法概念;变换分析、 事务分析法过程和应用。 理解: 1 、典型的总体设计过程包括的步骤; 2 、设计中的启发式规则;
③ 深度、宽度、扇出和扇入适中
软件结构度量术语
例:避免平铺结构
增加中间层降低扇出
④ 将模块的影响限制在控制范围内
作用域是指受模块内一个判定影响的所有模块的集 合 控制域是指这个模块本身及其所有的下属模块的集 合
A A 受 E 中判 定影响 B C D C A A D
E
F
F
E
B
使任一模块的作用域在其控制域内
软件开发实际上就是一个从高层次抽象到低 层次抽象逐步过渡的过程。 一个复杂的系统先用一些高级的抽象概念构 造和理解,这些高级概念又用较低级的概念 构造和理解,如此进行下去,直到具体元素。
抽象例子
外表 抽象 形体 衣着 性格
5 . 2. 3 逐步求精
逐步求精:为了能集中精力解决主要问题而 尽量推迟对问题细节的考虑。 可把逐步求精看作是一项把一个时期内必须 解决的种种问题按优先级排序的技术。 逐步求精是一种自顶向下的设计策略,按这 种设计策略,程序的体系结构是通过逐步精 化处理过程的层次而设计出来的。
① 改进软件结构,提高模块独立性
通过模块分解或合并,降低耦合提高内聚
② 模块规模适中
模块过大:可理解程度下降 模块过小:开销大于有效操作系统接口复杂 在考虑模块的独立性同时,为了增加可 理解性,模块的大小最好在 50 一 150 条语 句左右,可以用 1 一 2 页打印纸打印,便于 人们阅读与研究。
软件设计的两个阶段
第二阶段:详细设计(过程设计) 确定模块内部的算法和数据结构;选定某种 过程的表达形式来描述各种算法;产生精确 描述各模块程序过程的详细文档,并进行评 审。
将需求分析摸型转换为软件设计
软件结构设计以需求分析中得到的数据流图 为基础而进行。
SA与SD的关系
第一个阶段总体设计的任务
也称块间的联系。是对软件系统结构中,各 模块间相互联系紧密程度的一种度量。 设计目标:低耦合
无直接藕合
两个模块没有直接关系,模块独立性最强。
数据耦合
属松散耦合。一模块访问另一模块时,通过 数据参数交换输入、输出信息。
控制藕合
模块之间传递的是控制信息(如开关、标志、 名字等),控制被调用模块的内部逻辑。
模块 C 的控制范围: C、D、E、F、 G、H。 如果模块 C 作出的 决策影响了模块 L , L超出了 C 的控制 范围
⑤ 降低模块接口的复杂性
接口传递信息应简单且和模块功能一致。 模块的接口要简单、清晰、含义明确,便于 理解,易于实现、测试与维护。
⑥ 设计单入口单出口的模块
不要使模块间出现内容耦合。
逻辑内聚
把几种相关功能(逻辑上相似的功能)组合 在一模块内,每次调用由传给模块的参数确 定执行哪种功能。
逻辑内聚模块
时间内聚(经典内聚)
模块完成的功能必须在同一时间内执行,这 些功能只因时间因素关联在一起。 例:初始化系统模块 系统结束模块、 紧急故障处理模块等
过程内聚(顺序性组合)
模块内各处理成分相关,且必须以特定次序 执行。
⑦ 模块功能可预测,但防止模块功 能过分局限
如果一个模块可以当作一个黑盒子,相同输 入产生相同输出,其功能为可预测的。 若模块带有内部“存储器”,其功能可能是 不可预测的,难理解、难测试、难维护。 单一的模块具有高内聚。但模块功能过分局 限,可使用范围将过分狭窄,缺乏灵活性和 扩充性。
5 .4 描绘软件结构的图形具
特征耦合举例
说明: “住户情况”是一个数据结构,图中模块都与此 数据结构有关。 “计算水费”和“计算电费”本无关,由于引用 了此数据结构产生依赖关系,它们之间也是标记偶 合。
将特征耦合修改为数据耦合举例
公共环境耦合
一组模块引用同一个公用数据区(也称全局 数据区、公共数据环境)。 公共数据区指: 全局数据结构。 共享通讯区。 内存公共覆盖区等
③ 模块化与软件成本的关系
接口
④ 模块的基本属性
接口:指模块的输入与输出。 功能:指模块实现什么功能。 模块化好处: 模块化使软件容易测试和调试,因而有助 提高软件的可靠性。 模块化能提高软件的可修改性。 模块化有助于软件开发工程的组织管理。
5.2.2 抽象( Abstraction )
结合了模块化和逐步细化思想建立的软件结构图
5 . 2.4信息隐蔽和局部化
信息隐蔽:在设计和确定模块时,使得一个 模块内包含的信息(过程或数据),不允许 其它不需要这些信息的模块访问,独立的模 块间仅仅交换为完成系统功能而必须交换的 信息。 局部化:将一些关系密切的软件元素物理地 放得彼此靠近。
5. 2 . 5 模块独立
相关文档
最新文档