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

合集下载

软件工程导论复习重点总结很全第六版

软件工程导论复习重点总结很全第六版

第1章软件工程学概述1.1 软件危机1.1.1 软件危机旳简介软件危机(软件萧条、软件困扰): 是指在计算机软件旳开发和维护过程中所碰到旳一系列严重问题。

软件危机包括下述两方面旳问题:怎样开发软件, 满足对软件日益增长旳需求;怎样维护数量不停膨胀旳已经有软件。

软件危机旳经典体现:(1)对软件开发成本和进度旳估计常常很不精确;(2)顾客对“已完毕旳”软件系统不满意旳现象常常发生;(3)软件产品旳质量往往靠不住;(4)软件常常是不可维护旳;(5)软件一般没有合适旳文档资料;(6)软件成本在计算机系统总成本中所占旳比例逐年上升;(7)软件开发生产率提高旳速度, 远远跟不上计算机应用迅速普及深入旳趋势。

1.1.2 产生软件危机旳原因(1)与软件自身旳特点有关(2)与软件开发与维护旳措施不对旳有关1.1.3 消除软件危机旳途径对计算机软件有对旳旳认识。

认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完毕旳工程项目。

应当推广使用在实践中总结出来旳开发软件旳成功技术和措施, 并继续研究探索。

应当开发和使用更好旳软件工具。

总之, 为了处理软件危机, 既要有技术措施(措施和工具), 又要有必要旳组织管理措施。

1.21.2.1 软件工程旳简介软件工程: 是指导计算机软件开发和维护旳一门工程学科。

采用工程旳概念、原理、技术和措施来开发与维护软件, 把通过时间考验而证明对旳旳管理技术和目前可以得到旳最佳旳技术措施结合起来, 以经济地开发出高质量旳软件并有效地维护它, 这就是软件工程。

(期中考)软件工程旳本质特性:软件工程关注于大型程序旳构造软件工程旳中心课题是控制复杂性软件常常变化开发软件旳效率非常重要友好地合作是开发软件旳关键软件必须有效地支持它旳顾客在软件工程领域中是由具有一种文化背景旳人替具有另一种文化背景旳人发明产品1.2.2 软件工程旳基本原理用分阶段旳生命周期计划严格管理坚持进行阶段评审实行严格旳产品控制采用现代程序设计技术成果应能清晰地审查开发小组旳人员应当少而精承认不停改善软件工程实践旳必要性1.2.3 软件工程措施学软件工程包括技术和管理两方面旳内容。

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

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

设函数C(x)--定义问题x的复杂程度
函数E(x)--确定解决问题x需要的工作量(时间)
对于两个问题P1和P2,如果
C(P1)>C(P2)
显然
E(P1)>E(P2)
5.2.1 模块化
根据人类解决一般问题的经验 C(P1+P2)>C(P1)+C(P2)
如果一个问题由P1和P2两个问题组合而成,那么它的复杂程 度大于分别考虑每个问题时的复杂程度之和。 综上所述,得到下面的不等式
对每个合理的方案,分析员都应该准备下列4份资料。 (1) 系统流程图。 (2) 组成系统的物理元素清单。 (3) 成本/效益分析。 (4) 实现这个系统的进度计划。
典型的总体设计步骤
3.推荐最佳方案 用户和有关的技术专家应该认真审查分析员所推荐
的最佳系统,如果该系统确实符合用户的需要,并且是在 现有条件下完全能够实现的,则应该提请使用部门负责人 进一步审批。在使用部门的负责人也接受了分析员所推荐 的方案之后,将进入总体设计过程的下一个重要阶段—— 结构设计。
E(P1+P2)>E(P1)+E(P2)
这个不等式导致“各个击破”的结论——把复杂的问题分解 成许多容易解决的小问题,原来的问题也就容易解决了。这 就是模块化的根据。
5.2.1 模块化
由上面的不等式似乎还能得出下述结论: 如果无限地分割软件,最后为了开发软件而需要的工作量也 就小得可以忽略了。
每个程序都相应地有一个最适当的模块数目M,使得系统的开 发成本最小。
④ 一个模块有多个入口(这意味着 一个模块有几种功能)
Sub AA(….) … … Goto L … End sub Sub BB(..) … … L: … … End sub

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

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

⑵内聚:衡量一个模块内部各个元素彼此结合的紧密 程度。
5.2 续
耦合
软件结构中各个模块之间相互关联程度的度量。 常见的耦合: • ⑴非直接耦合 • ⑵数据耦合 • ⑶控制耦合 • ⑷特征耦合 • ⑸公共环境耦合 • ⑹内容耦合 设计原则:尽量使用数据耦合,少用控制耦合, 限制公共耦合的范围,避免使用内容耦合。
划分模块时尽量做到高内聚,低耦合,保持模块相对 独立性,并以此原则优化初始的软件结构。
⑴如果若干模块之间耦合强度过高,每个模块内功能 不复杂,可将它们合并,以减少信息的传递和公共区 的引用。
⑵若有多个相关模块,应对它们的功能进行分析,消 去重复功能。
设计准则
5.3 续
⑵模块规模应该适中
过大的模块往往是由于分解不充分。 过小的模块开销大于有效操作。
设计方法:定义一些不同的“映射”,把数据流 图变换成软件结构。
结构化设计方法——面向数据流的设计方法。
变换流
5.5 续
信息沿输入通路进入系统,同时由外部形式变换 成内部形式,进入系统的信息通过变换中心,经 加工处理以后再沿输出通路变换成外部形式离开 软件系统。当数据流图具有这些特征时,这种信 息流就叫作变换流。
B
C
D
(a) 基 本 形 式
(b) 顺 序
B
C
(c) 选 择
B
(d) 重 复
结构图
5.4 续
判定为真时调用A,为假时调用B
结构图
5.4 续
模块M循环调用模块A、B、C
概念
5.5 面向数据流的设计方法
定义:把信息流映射成软件结构,信息流的类型 决定了映射的方法。
目标:给出设计软件结构的一个系统化的途径。

软件工程导论(第五版)素材第五章范文

软件工程导论(第五版)素材第五章范文

第5章总体设计5.1设计过程1. 设想供选择的方案2. 选取合理的方案3. 推荐最佳方案4. 功能分解5. 设计软件结构6. 设计数据库7. 制定测试计划8. 书写文档9. 审查和复审5.2设计原理5.2.1模块化图5.1模块化和软件成本2数据结构(C++版) 5.2.2抽象5.2.3逐步求精5.2.4信息隐藏和局部化5.2.5模块独立1. 耦合2. 内聚5.3启发规则1. 改进软件结构提高模块独立性2. 模块规模应该适中3. 深度、宽度、扇出和扇入都应适当4. 模块的作用域应该在控制域之内图5.2模块的作用域和控制域5. 力争降低模块接口的复杂程度6. 设计单入口单出口的模块7. 模块功能应该可以预测软件工程导论(第五版) 3 5.4描绘软件结构的图形工具5.4.1层次图和HIPO图图5.3正文加工系统的层次图图5.4带编号的层次图(H图)4数据结构(C++版)5.4.2结构图图5.5结构图的例子——产生最佳解的一般结构图5.6判定为真时调用A,为假时调用B图5.7模块M循环调用模块A、B、C 5.5面向数据流的设计方法5.5.1概念1. 变换流2. 事务流软件工程导论(第五版) 5图5.8变换流图5.9事务流3. 设计过程6数据结构(C++版)图5.10面向数据流方法的设计过程5.5.2变换分析1. 例子2. 设计步骤软件工程导论(第五版) 7图5.11数字仪表板系统的数据流图8数据结构(C++版)图5.12具有边界的数据流图图5.13第一级分解的方法软件工程导论(第五版) 9图5.14数字仪表板系统的第一级分解图5.15第二级分解的方法图5.16未经精化的输入结构10数据结构(C++版)图5.17未经精化的变换结构图5.18未经精化的输出结构图5.19精化后的数字仪表板系统的软件结构软件工程导论(第五版) 11 5.5.3事务分析图5.20事务分析的映射方法5.5.4设计优化5.6小结习题51. 为每种类型的模块耦合举一个具体例子。

82软件工程导论第五章PPT课件

82软件工程导论第五章PPT课件

END
28.07.2020
3
第一节 编码
本节内容:
一、相关概念
二、编码阶段的任务
三、程序设计语言的选择
四、编码风格
28.07.2020
4
一、相关概念
所谓编码就是选择一种语言把软件设计阶段的结 果翻译成计算机可以理解的源程序
它直接来源于设计,所以,程序的质量主要取决 于软件设计的质量
所选编程语言的特点和编码人员的编码风格会对 程序的可靠性、可读性、可测试性和可维护性产 生影响
28.07.2020
13
三、程序设计语言的选择
第三代语言
也称结构化编程语言,60年代—70年代
主要特征:具有很强的过程和数据结构化的能力
可分为三类: 通用高级语言(C、Pascal、Ada美国的三军通用语 言) 面向对象高级语言(C++,Objective-C,Smalltalk, Eiffel) 专用语言(LISP、PROLOG、APL和FORTH)
28.07.2020
8
三、程序设计语言的选择
1、程序设计特性
1)心理特性
需要考虑的几个心理特性
紧凑性:一种面向代码信息量的表示,这个信 息量必须由人来记忆:
❖ APL语言是一种非常紧凑的编程语言,但很 难读懂,Prolog语言也一种非常紧凑的语言
❖ 度量紧凑性的语言属性:
该语言支持结构化和逻辑块的程度
28.07.2020
返回至“编码风格”
19
数据说明
虽然在设计期间已经确定了数据结构的组织和复 杂程度,然而数据说明的风格却是在写程序时确 定的
为了使数据更容易理解和维护,遵循一些比较简 单的原则是必要的:
数据说明的次序应当规范化 说明语句中变量安排有序化 使用注释说明复杂数据结构

工学软件工程导论第五章

工学软件工程导论第五章

工学软件工程导论第五章在软件工程的领域中,第五章往往是一个关键的章节,它可能涵盖了软件工程中某一重要方面的深入探讨和阐述。

软件设计是软件工程中的核心环节之一。

在这一过程中,需要明确软件的整体架构、模块划分以及各模块之间的交互关系。

好的软件设计能够提高软件的可维护性、可扩展性和可靠性。

比如,在设计一个在线购物系统时,需要考虑用户界面的友好性、购物流程的顺畅性、订单处理的高效性以及后台管理的便捷性等多个方面。

设计模式是软件设计中的重要工具。

常见的设计模式包括单例模式、工厂模式、观察者模式等。

以单例模式为例,它确保一个类只有一个实例存在,在需要全局共享且唯一的资源管理时非常有用。

而工厂模式则将对象的创建与使用分离,增强了系统的灵活性和可扩展性。

软件架构的选择对于软件的性能和可维护性有着深远的影响。

分层架构将软件系统分为不同的层次,如表示层、业务逻辑层和数据访问层,每层专注于特定的功能,使得系统结构清晰,易于理解和维护。

微服务架构则将大型应用拆分成多个小型服务,每个服务可以独立部署和扩展,提高了系统的灵活性和弹性。

在软件设计中,还需要充分考虑用户需求和用户体验。

用户界面的设计应该简洁、直观,操作流程应该符合用户的习惯和预期。

同时,要对用户的各种操作和输入进行有效的错误处理和提示,以提高用户的满意度。

数据库设计也是软件工程中不可忽视的一部分。

合理的数据库设计能够提高数据的存储和检索效率,保证数据的完整性和一致性。

在设计数据库时,需要确定数据表的结构、字段的类型和约束,以及表之间的关联关系。

对于性能优化,这是在软件设计阶段就需要考虑的重要问题。

通过合理的算法选择、数据结构设计以及资源分配,可以有效地提高软件的运行效率。

例如,在处理大量数据时,选择合适的排序算法和数据存储结构能够显著减少运行时间。

安全性设计在当今的软件环境中至关重要。

需要采取措施防止数据泄露、非法访问和恶意攻击。

例如,采用加密技术对敏感数据进行保护,设置严格的用户认证和授权机制。

软件工程导论第五版复习重点

软件工程导论第五版复习重点

储户
储户
1
记录存款 信息
打印存款 信息
存款单
存款信息
存款存单
3
计算利息
4
打印利息 清单
存款信息
利息值
利息清单
D1
存款信息
存款信息
2
细化后的计算机储蓄系统软件结构
第3章 需求分析
1、需求分析的基本任务是什么?P46-P48 2、分析建模 2.1什么是模型? 模型:就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成。 2.2数据模型(E-R)、 功能模型(2.4节数据流图)、 行为模型(状态转换图是行为模型的基础) 3、要从哪些方面验证软件需求?P60
第6章 详细设计
1、结构程序设计中有哪几种基本控制结构?P108 2、了解人机界面的设计。 3、掌握过程设计的工具(程序流程图、盒图、PAD图,判定树)P114—P119 4、面向数据结构的设计方法(Jackson图) 5、程序复杂度的定量度量(McCabe)
6.1 结构程序设计
6.1 结构程序设计
实现
编码和测试
7.2 软件测试基础
7.2 软件测试基础
软件测试:为发现程序中的错误而执行程序的过程。 软件测试的准则(尽早和不断的测试、彻底测试的不可能、软件测试是有风险的行为、并非所有的软件错误都能恢复、反向思维逻辑、由小到大的测试范围、避免检查自己的代码、追溯至用户需求) 测试方法(黑盒测试和白盒测试) 测试步骤(模块测试、子系统测试、系统测试、验收测试、平行运行)
图6.4 盒图的基本符号
图6.5 PAD中基本符号 顺序结构;(b) 分支结构;(c) 多分支CASE结构; (d) 当型循环;(e);直到型循环;(f) 语句标号;(g)定义

软件工程导论(第6版)

软件工程导论(第6版)

第一章、软件工程学概述软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

软件危机包含下述两个方面的问题:1.如何开发软件,以满足对软件日益增长的需求。

2.如何维护数量不断膨胀的已有软件。

具体的说,软件危机主要有以下一些典型表现:1.对软件开发成本的进度的估计常常很不准确。

2.用户对“已完成的”软件系统不满意的现象经常发生3.软件产品的质量往往靠不住。

4.软件常常是不可维护的。

5.软件通常没有适当的文档材料。

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

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

软件生命周期:一个软件从定义、开发、使用和维护,知道最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生命周期。

软件配置:程序、文档和数据。

软件工程学的一个重要的目标:就是提高软件的可维护性,减少软件维护的代价。

软件:是程序、数据及相关文档的集合。

程序:是能够完成预定功能和性能的可执行的指令序列。

数据:是使程序能够适当地处理信息的数据结构。

文档:是开发、使用和维护程序所需要的图文资料。

软件工程:指导计算机软件开发和维护的一门工程学科。

软件工程具有下属的本质特性:1.软件工程关注于大型程序的构造。

2.软件工程的中心课题是控制复杂性。

3.软件经常变化。

4.开发软件的效率非常重要。

5.和谐地合作是开发软件的关键。

6.软件必须有效地支持它的用户。

7.在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。

软件工程的7条基本原理:1.用分阶段的生命周期计划严格管理。

2.坚持进行阶段评审。

3.实行严格的产品控制4.采用现代程序设计技术。

5.结构应能清楚的审查。

6.开发小组的人员应该少而精。

7.承认不断改进软件工程实践的必要性。

软件工程:包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。

通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为泛型。

工学软件工程导论第五章

工学软件工程导论第五章

工学软件工程导论第五章在软件工程的广袤领域中,第五章通常聚焦于一些关键且核心的概念和技术,这些内容对于理解和实践软件工程起着重要的支撑作用。

首先,让我们来谈谈软件设计的原则。

在软件开发过程中,良好的设计是成功的基石。

软件设计应遵循高内聚、低耦合的原则。

高内聚意味着一个模块内的各个部分紧密相关,共同完成一个明确的功能;低耦合则表示不同模块之间的相互依赖程度低,这样当对一个模块进行修改时,不会对其他模块产生过大的影响。

想象一下,如果一个软件系统中的各个模块像一团乱麻般交织在一起,那么任何一点小小的改动都可能引发“蝴蝶效应”,导致整个系统的崩溃。

软件架构也是第五章的重要内容之一。

常见的软件架构模式有分层架构、客户端服务器架构、微服务架构等。

分层架构将软件系统分为不同的层次,如表示层、业务逻辑层、数据访问层等,每一层都有明确的职责,使得系统结构清晰,易于维护和扩展。

客户端服务器架构则将系统分为客户端和服务器端两部分,客户端负责与用户进行交互,服务器端负责处理业务逻辑和数据存储。

而微服务架构则将一个大型的应用拆分成多个小型的服务,每个服务都可以独立部署和扩展,提高了系统的灵活性和可扩展性。

在软件设计中,还需要考虑到设计模式的运用。

设计模式是经过实践验证的解决特定软件设计问题的通用方案。

例如,单例模式确保一个类只有一个实例存在,适用于需要全局唯一访问的资源;工厂模式用于创建对象,将对象的创建与使用分离,提高了代码的灵活性和可维护性;观察者模式实现了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都会得到通知并自动更新。

另外,软件的接口设计也不容忽视。

一个好的接口应该具有简洁、明确、稳定的特点。

简洁的接口易于理解和使用,明确的接口能够准确地传达其功能和参数要求,稳定的接口则保证在软件的后续开发和维护过程中不会频繁变动,从而避免对依赖它的其他部分造成影响。

在软件设计的过程中,还需要进行充分的需求分析。

软件工程导论复习重点总结很全(第六版)

软件工程导论复习重点总结很全(第六版)

软件工程导论复习重点总结很全(第六版)第1章软件工程学概述1.1软件危机1.1.1软件危机的介绍软件危机(软件萧条、软件困扰:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

软件危机包含下述两方面的问题:如何开发软件,满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。

软件危机的典型表现:1对软件开发成本和进度的估计常常很不准确;2用户对“已完成的”软件系统不满意的现象经常发生;3软件产品的质量往往靠不住;4软件常常是不可维护的;5软件通常没有适当的文档资料;6软件成本在计算机系统总成本中所占的比例逐年上升;7软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

1.1.2产生软件危机的缘故原由1与软件本身的特点有关2与软件开发与维护的方法不正确有关1.1.3消除软件危机的途径对计算机软件有正确的认识。

认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。

应该推广使用在实践中总结出来的开发软件的成功技术和方法,并继续研究探索。

应该开发和使用更好的软件工具。

总之,为了解决软件危机,既要有技术措施(方法和工具,又要有必要的组织管理措施。

1.21.2.1软件工程的介绍软件工程:是指导计算机软件开发和维护的一门工程学科。

采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。

(期中考软件工程的本质特性:软件工程关注于大型程序的构造软件工程的中心课题是控制复杂性软件经常变化开辟软件的效率非常重要和谐地合作是开辟软件的枢纽软件必须有效地支持它的用户在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品1.2.2软件工程的基本原理用分阶段的生命周期计划严格管理保持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开辟小组的人员应该少而精承认不竭改良软件工程实践的必要性1.2.3软件工程方法学软件工程包括技术和管理两方面的内容。

工学软件工程导论第五章

工学软件工程导论第五章

工学软件工程导论第五章在软件工程的广袤领域中,第五章往往承载着关键的知识与理念,为我们进一步理解和实践软件工程奠定坚实的基础。

这一章,通常会聚焦于软件设计的核心原则与方法。

软件设计,就像是为一座即将拔地而起的高楼大厦绘制蓝图,其重要性不言而喻。

首先,我们来谈谈模块化设计。

将一个庞大而复杂的软件系统分解为若干个相对独立且具有特定功能的模块,每个模块专注于完成一项特定的任务。

这不仅使得软件的开发和维护变得更加容易,还提高了代码的可重用性。

想象一下,如果所有的代码都混在一起,就像一团乱麻,要找出问题或者进行修改,那简直是一场噩梦。

而通过模块化,我们可以清晰地知道每个模块的职责,当需要修改或优化某个功能时,只需关注对应的模块,大大提高了效率。

接口设计也是软件设计中的重要一环。

一个良好定义的接口,就像是一扇清晰的窗口,让不同的模块能够顺畅地交流和协作。

接口定义了模块之间的交互规则和数据传递方式,它应该简洁、清晰、稳定。

如果接口设计得不合理,模块之间的通信就会变得混乱,甚至导致整个系统的崩溃。

比如说,一个模块期望接收的数据格式与另一个模块提供的数据格式不一致,这就会引发严重的错误。

在软件设计中,还需要考虑架构模式的选择。

常见的架构模式有分层架构、客户端服务器架构、微服务架构等等。

每种架构模式都有其适用的场景和优缺点。

分层架构将系统分为不同的层次,每一层都有明确的职责,使得系统具有良好的层次结构和可扩展性。

客户端服务器架构则适用于需要将计算任务分布在不同的节点上的情况。

而微服务架构则将一个大型的应用拆分成多个小型的服务,每个服务都可以独立部署和扩展,提高了系统的灵活性和敏捷性。

另外,数据设计也是不能忽视的部分。

数据的组织、存储和访问方式直接影响着软件的性能和效率。

选择合适的数据结构和数据库管理系统,对于处理大量的数据至关重要。

比如,如果我们需要频繁地进行插入和删除操作,链表可能是一个更好的选择;而如果需要快速的查找,数组或者二叉搜索树可能更合适。

张海藩《软件工程导论》(第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【解析】耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。

软件工程导论课后解答第五章

软件工程导论课后解答第五章

第五章总体设计低耦合(5 种类型)1. 数据耦合:数据传递2.控制耦合:控制信息传递3.特征耦合:传过多的信息给被调用模块4.公共环境耦合:因全局变量,共享通信区5.内容耦合:诸如一个模块访问另一个模块内部z高内聚(7 种类型)功能内聚10 分顺序内聚9分通信内聚7分过程内聚 5 分时间内聚3分逻辑内聚 1 分偶然内聚0 分z面向数据流的设计方法划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等等设计软件的结构。

也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。

总体设计过程两个阶段1.系统设计阶段,确定系统的具体实现方案;2.结构设计阶段,确定软件结构。

总体设计过程9个步骤1 设想供选择的方案2 选取合理的方案3 推荐最佳方案4 功能分解5 设计软件结构 6 设计数据库7 制定测试计划 8 书写文档 9 审查和审核划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等等设计软件的结构。

也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。

总体设计过程两个阶段1.系统设计阶段,确定系统的具体实现方案;2.结构设计阶段,确定软件结构。

总体设计过程9个步骤1 设想供选择的方案2 选取合理的方案3 推荐最佳方案4 功能分解5 设计软件结构 6 设计数据库7 制定测试计划 8 书写文档 9 审查和审核1.欲开发一个银行的活期存取款业务的处理系统:储户将填好的存/取款单和存折交给银行工作人员,然后由系统作以下处理;(1)业务分类处理:系统首先根据储户所填的存/取款单,确定本次业务的性质,并将存/取款单和存折交下一步处理;(2)存款处理:系统将存款单上的存款金额分别记录在存折和帐目文件中,并将现金存入现金库;最后将存折还给储户;(3)取款处理:系统将取款单上的取款金额分别记录在存折和帐目文件中,并从现金库提取现金;最后将现金和存折还给储户。

绘制该系统的数据流图和软件结构图。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程 第5章 总体设计
总体设计(概要设计或初步设计)
总体设计的基本目的就是回答下面这个问题:
“概括地说,系统应该如何实现?”
2
总体设计
首先寻找实现目标系统的各种不同的方案(数据流图是极好 的出发点)。
分析员从这些供选择的方案中选取若干个合理的方案,为每 个合理的方案都准备一份系统流程图,列出组成系统的所有 物理元素,进行成本/效益分析,并且制定实现这个方案的 进度计划。
2. 选取合理的方案 • 通常至少选取低成本、中等成本和高成本的三种 方案。 • 对每个合理的方案分析员都应该准备下列4份资 料:系统流程图;组成系统的物理元素清单;成 本/效益分析;实现这个系统的进度计划。
6
3. 推荐最佳方案 • 综合分析对比各种合理方案的利弊,推荐 一个最佳的方案,并且为推荐的方案制定 详细的实现计划。 • 在使用部门的负责人也接受了分析员所推 荐的方案之后,将进入总体设计过程的下 一个重要阶段——结构设计。
7
4.功能分解 • 为确定软件结构,首先需要从实现角度把 复杂的功能进一步分解。结合算法描述仔 细分析数据流图中的每个处理,如果一个 处理的功能过分复杂,必须把它的功能适 当地分解成一系列比较简单的功能。
8
5. 设计软件结构
设计软件的体系结构需要在对需求分析阶段生成的数据流图进一步分 析和精化的基础上: (1)将系统按照功能划分为模块;通常程序中的一个模块完成一个适当 的子功能。 (2)确定模块之间的调用关系及其接口;应该把模块组织成良好的层次 系统。 (3)对划分的结果进行优化和调整。良好的软件结构设计对详细设计及 编码阶段的工作都是至关重要的。
14
首先,我们设C(x)为问题x所对应的复杂度函数,E(x) 为解决问题x所需要的工作量函数。对于两个问题P1和 P2,如果:
C(P1)> C(P2) 即问题P1的复杂度比P2高,则显然有: E(P1)> E(P2) 即解决问题P1比P2所需的工作量大。
15
在人们解决问题的过程中,发现存在有另一个有趣的规律: C(P1+P2)> C(P1)+C(P2) 即解决由多个问题复合而成的大问题的复杂度大于单独解决 各个问题的复杂度之和。也就是说,对于一个复杂问题,将 其分解成多个小问题分别解决比较容易。由此我们可以推出: E(P1+P2)> E(P1)+E(P2) 即将复杂问题分解成若干个小问题,各个击破,所需要的工 作量小于直接解决复杂问题所需的工作量。
分析员从中选出一个最佳方案向用户和使用部门负责人推荐。
如果负责人接受了推荐的方案,分析员应该进一步为这个最 佳方案设计软件结构。
3
总体设计的必要性
可以站在全局高度上,花较少成本,从较抽 象的层次上分析对比多种可能的系统实现方 案和软件结构;
从中选出最佳方案和最合理的软件结构,从 而用较低成本开发出较高质量的软件系统。
10
8. 书写文档
应该用正式的文档记录总体设计的结果,在这个阶段应该 完成的文档通常有下述几种: • 系统说明:数据流图、成本/效益分析,用层次图等描述的 软件构件,用IPO图简要描述各个模块的算法,模块的接 口等。
• 用户手册:根据总体设计阶段的结果,修改在需求阶段产 生的初步的用户手册。
• 测试计划:包括测试策略、测试方案、预期的测试结果, 测试进度计划等。
18
5.2.2 抽象
抽象:
抽象是人类在解决复杂问题时经常采用的一种思维 方式,它是指将现实世界中具有共性的一类事物的 相似的、本质的方面集中概括起来,而暂时忽略它 们之间的细节差异。结构化程序中自顶向下、逐步 求精的模块划分思想正是人类思维中运用抽象方法 解决复杂问题的体现。
19
软件工程过程的每一步都是对软件解法的抽象层次的 精化:
模块是由边界元素限定的相邻程序元素的序列,而且有一个 总体标识符代表它。模块是构成程序的基本构件。
过程、函数、子程序和宏等,都可作为模块。
面向对象方法学中的对象是模块,对象内的方法(或称为服 务)也是模块。
13
模块化的根据
“各个击破”的结论——把复杂的问题分解成许多 容易解决的小问题,原来的问题也就容易解决了。
4
5.1 设计过程
总体设计过程通常由两个主要阶段组成:
系统设计阶段:确定系统的具体实现方案; 结构设计阶段:确定软件结构。
5
典型的总体设计过程包括下述9个步骤
1. 设想供选择的方案 • 在总体设计阶段分析员应该考虑各种可能的实现 方案,并且力求从中选出最佳方案。 • 数据流图是总体设计的极好的出发点。
• 详细的实现计划
• 数据库设计结果:由数据模型(E-R图)转换成数据库的设计 结果。
11
9. 审查和复审
• 最后应该对总体设计的结果进行严格的技术审查, 在技术审查通过之后再由使用部门的负责人从管 理角度进行复审。
12
5.2 设计原理
5.2.1 模块化
模块化:把程序划分成独立命名且可独立访问的模块,每个 模块完成一个子功能,这些模块集成起来构成一个整体,可 以完成指定的功能以满足用户的需求。
软件结构(即由模块组成的层次系统)可以用层次图或结构图来描绘。
如果数据流图已经细化到适当的层次,则可以直接从数据流图映射出软 件结构。
9
6. 设计数据库
• 对于需要使用数据库的那些应用系统,软件工程 师应该在需求分析阶段所确定的系统数据需求的 基础上,进一步设计数据库。
7. 制定测试计划
• 在软件开发的早期阶段考虑测试问题,能促使软 件设计人员在设计时注意提高; 2、可以使程序结构清晰,增加易读性和
易修改性; 3、模块化还有利于提高代码的可重用性
及团队合作开发大型软件的可行性。
17
模块化和软件成本图
当然不是!!虽然 增加程序中的模块 数可以降低开发每 个模块的工作量, 但同时却增加了设 计模块接口的工作 量。通过图5.1所 示的模块数与软件 开发成本的关系图 中可以看出,当划 分的模块数处于最 小成本区时,开发 软件的总成本最低。
在可行性研究阶段,软件作为系统的一个完整 部件;
在需求分析期间,软件解法是使用在问题环境 内熟悉的方式描述的;
相关文档
最新文档