第四章 软件总体设计
软件工程导论知识点总结(整理)
《软件工程导论》课后习题答案第一章软件工程概论1.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
2.为什么会产生软件危机?(1)开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。
造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性.(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
3.怎样克服软件危机?(1)充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训.在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。
(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。
(3)根据不同的应用领域,开发更好的软件工具并使用这些工具。
将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境.总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料.5.什么是软件生存周期?软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。
软件工程第四章
4.3.2、面向数据结构的设计方法 、
2、Jackson方法 (1) 分析并确定输入数据和输出数据的逻辑结构, 并用Jackson 图描绘这些数据结构。 (2) 找出输入数据结构和输出数据结构中有对应关 系的数据单元。
4.3.2、面向数据结构的设计方法 、
2、Jackson方法 (3) 用下述三条规则导出描绘程序结构的Jackson 图: ① 为每对有对应关系的数据单元,按照它们在数据结构图 中的层次在程序结构图的相应层次画一个处理框; ② 根据输入数据结构中剩余的每个数据单元所处的层次, 在程序结构图的相应层次分别为它们画上对应的处理框; ③ 根据输出数据结构中剩余的每个数据单元所处的层次, 在程序结构图的相应层次分别为它们画上对应的处理框。
4.2.2、模块独立性 、
1、耦合性 (4)内容耦合:出现下列情况之一就认为是 内容耦合:一个模块访问另一个模块的内 部数据;一个模块不通过正常入口而转到 另一个模块内部;两个模块有一部分程序 代码重叠;一个模块有多个入口。
4.2.2、模块独立性 、
1、耦合性 对于模块设计,尽量使用数据耦合,少用 控制耦合,限制公共环境耦合的范围,完 全不用内容耦合
4.3.2、面向数据结构的设计方法 、
面向数据结构的设计方法就是用数据结构作为程序 设计的基础。这种方法的最终目标是得出对程序处 理过程的描述,即在完成了软件结构设计之后,可 以使用面向数据结构的方法来设计每个模块的处理 过程。
4.3.2、面向数据结构的设计方法 、
1、Jackson图 (1) 逻辑数据结构 (2) Jackson图的优点 (3) Jackson图与层次方框图的比较
4.2.3、软件结构设计 、
软件结构图,是Yourdon 提出的进行软件 结构设计的有力工具。 主要的模块:传入模块、传出模块、变换 模块和协调模块。
软件工程 第四章 概要设计
第4章
4.4 模块的独立性
15
4.4.1 耦合性(Coupling)
5.外部耦合 一组模块都访问同一全局简单变量,而且不通过参数表传递该全局变量的信息,则称之为 外部耦合。 6.公共耦合
若一组模块都访问同一全局数据结构,则称之为公共耦合。公共数据环境可以是全局数据
4
4.2.1 概要设计的任务
概要设计的基本任务是: (1)设计软件系统结构; (2)数据结构及数据库设计; (3)编写概要设计文档;
(4)评审概要设计文档。
第4章
4.2 概要设计的任务与步骤
5
4.2.2 概要设计的步骤
概要设计的一般步骤如下: 1.选定体系结构 2.确定设计方案 3.设计软件结构
4.数据结构及数据库设计
(2)一个模块不通过正常入口而直接转入到另一个模块的内部;
(3)两个模块有一部分代码重叠(该部分代码具有一定的独立功能); (4)一个模块有多个入口。
第4章
4.4 模块的独立性
17
4.4.2 内聚性(Cohesion)
一个模块内各个元素彼此结合的紧密程度用内聚(或称聚合)来度量。一个理想的模块只
完成一个功能,模块设计的目标之一是尽可能高内聚。
第4章
4.4 模块的独立性
21
4.4.2 内聚性(Cohesion)
5.通信内聚
指模块内所有处理功能都通过公用数据而发生关系。即模块内各个组成部分都使用相同的 输入数据或产生相同的输出结果。
第4章
4.4 模块的独立性
22
4.4.2 内聚性(Cohesion)
第四章 软件复用PPT课件
软件复用是一项活动,不是一个对象。 复用的目的是想放弃那种原始的、一
切从头开始的软件开发方式,利用复 用,由共用的可复用构件来组装新的 系统。
3
所有可用于复用的软件元素构成可复 用的资产,这些资产包括高质量的软 件工作成果(如代码、设计、体系结 构、接口、测试)和文档、工具、过 程、经过编译的知识(如指导原则、 模型、公式)等。
28
可复用资产检查表
▪ 构件的功能是否在未来的实现中需要? ▪ 在领域中构件功能的公共性如何? ▪ 在领域中存在构件功能的副本吗? ▪ 构件是否依赖于硬件? ▪ 在不同的实现之间硬件是否保持不变? ▪ 硬件细节能否移到另一个构件中? ▪ 设计为下一步的实现是否做了足够的优
化?
29
▪ 能够把一个不可复用的构件参数化,使 其成为可复用的构件?
20
领域知识
领域分析
用户需求
软件开发与 软件构件开发
理解
目标软件 确认
检索
可复用构件库
21
▪ 随着可复用构件库规模的扩大,必须考 虑如何组织库的结构以保持较高的检索 效率。
▪ 软件构件从库中被检索出来之后,用户 必须理解它的功能或行为,以判定它是 否真正适合于当前的应用。
▪ 必要时,可考虑对某个与期望的功能或 行为匹配程度最好的可复用构件进行少 量修改,甚至可将修改后的构件再加到 可复用构件库中。
则复用是无效的。此时不推荐复用。
32
▪ 如果想要构造一个属于某一应用领域 的新软件,可先确定它的领域特征, 然后进行比较,决定现有的构件是否 可以有效地在新应用中复用。
▪ 典型的对软件复用有影响的领域特征 如下:
《软件工程》第4章软件总体设计
《软件工程》第4章软件总体设计软件总体设计是软件工程的一个重要环节,它涉及到软件系统的整体结构和架构的定义,以及软件模块之间的关系和接口的设计。
软件总体设计的目标是确保软件系统能够满足用户需求,并且具有高性能和可扩展性,同时保证系统的可维护性和可测试性。
软件总体设计的过程包括以下几个步骤:1.确定系统的功能需求:根据用户需求和系统分析的结果,定义系统应该具备的功能和特性。
2.划分系统结构:将系统划分为多个模块和子系统,确定各个模块之间的关系和层次结构。
3.定义模块接口:对每个模块定义清晰的接口,包括输入参数、输出参数和功能描述,以便模块之间的协作和集成。
4.设计系统架构:选择合适的架构风格和模式,确定系统的整体结构和组成,包括数据流、控制流和模块之间的通信。
5.设计数据结构和算法:根据系统需求和性能要求,设计合适的数据结构和算法,以满足系统的功能和性能要求。
6.设计系统界面:设计系统与用户和外部系统的界面,包括图形界面、命令行界面和数据交换接口。
7.考虑系统安全性和可靠性:在设计阶段考虑系统的安全性和可靠性需求,设计对应的安全和可靠性机制。
8.进行评审和验证:对软件总体设计进行评审和验证,确保设计的可行性和完整性。
软件总体设计的核心是系统架构设计,系统架构设计要考虑系统的功能需求、性能要求、可扩展性、可维护性、可测试性等因素。
常用的软件架构风格包括层次架构、客户端-服务器架构、分布式架构、面向服务的架构等。
选择合适的架构风格可以提高系统的灵活性和可维护性。
在软件总体设计过程中,还需要考虑到软件的适应性和可移植性。
软件应该能够适应不同平台和操作系统的要求,并能够方便地移植到其他环境中。
为了提高软件的可移植性,可以采用标准化的接口和协议,避免使用具体的硬件和操作系统依赖。
此外,软件总体设计还需要考虑到系统的可维护性和可测试性。
软件系统通常需要进行修改和维护,因此设计时需要考虑到系统的可扩展性和模块之间的解耦。
软件总体设计的内容
软件总体设计的内容
软件总体设计是指在软件开发过程中,对整个软件系统进行全面规划和设计的过程。
它涉及到软件架构、模块设计、数据结构设计、接口设计等多个方面,是软件开发的重要阶段之一。
首先,软件总体设计需要考虑系统的整体架构。
这包括确定系统的模块划分、模块之间的关系、数据流向以及整体的运行逻辑。
在这个阶段,需要考虑系统的可扩展性、灵活性以及性能等方面,确保系统能够满足未来的需求。
其次,软件总体设计需要进行模块设计。
这包括对每个模块的功能、输入输出、数据结构、算法等进行详细设计,确保每个模块都能够独立工作并且与其他模块协调配合。
另外,数据结构设计也是软件总体设计的重要内容。
在这个阶段,需要设计系统中所涉及的数据结构,包括数据库设计、文件结构设计等,确保数据能够被有效地组织和管理。
此外,接口设计也是软件总体设计的一部分。
这包括内部模块之间的接口设计,以及系统与外部环境的接口设计,确保系统能够
与其他系统或者用户进行有效的交互。
总的来说,软件总体设计是软件开发过程中至关重要的一环,它直接影响着系统的可靠性、可维护性以及性能。
一个好的软件总体设计能够为软件开发的后续工作奠定良好的基础,提高软件开发的效率和质量。
软件工程-习题及答案---第四章
软件工程-习题及答案---第四章一、判断题1、(√)如果在需求分析阶段采用了结构化分析方法,则软件设计阶段就应采用结构化设计方法。
2、(√)概要设计与详细设计之间的关系是全局和局部的关系。
3、(×)一个模块的作用范围应该大于该模块的控制范围。
4、(√)模块间的耦合性越强,则模块的独立性越弱。
5、(×)在设计模块时,应使一个模块尽量包括多个功能。
6、(√)软件结构图可以利用数据流图映射出来。
7、(×)结构化设计是一种面向数据结构的设计方法。
8、(√)在结构化设计过程中首先要确认DFD。
二、选择题1、软件结构图的形态特征能反映程序重用率的是(C)。
A、深度B、宽度C、扇入D、扇出2、概要设计的目的是确定整个系统的(B)。
A、规模B、功能及模块结构C、费用D、测试方案3、耦合是对软件不同模块之间互连程度的度量。
各种耦合从强到弱的排列为(C)。
A、内容耦合,控制耦合,数据耦合,公共环境耦合B、内容耦合,控制耦合,公共环境耦合,数据耦合C、内容耦合,公共环境耦合,控制耦合,数据耦合D、控制耦合,内容耦合,数据耦合,公共环境耦合4、当一个模块直接使用另一个模块的内部数据时,这种模块之间的耦合为(D)。
A、数据耦合B、公共耦合C、标记耦合D、内容耦合5、数据耦合和控制耦合相比,则(B)成立。
A、数据耦合的耦合性强B、控制耦合的耦合性强C、两者的耦合性相当D、两者的耦合性需要根据具体情况分析6、衡量模块独立性的标准是(D)。
A、耦合的类型B、内聚的类型C、模块信息的隐藏性D、耦合性和内聚性7、如果某种内聚要求一个模块中包含的任务必须在同一段时间内执行,则这种内聚为(A)。
A、时间内聚B、逻辑内聚C、通信内聚D、信息内聚8、为了提高模块的独立性,模块内部最好是(C)。
A、逻辑内聚B、时间内聚C、功能内聚D、通信内聚9、在结构化设计方法中,下面哪种内聚的内聚性最弱(C)。
A、逻辑内聚B、时间内聚C、偶然内聚D、过程内聚10、软件设计是把(A)转换为软件表示的过程。
12_Introduction_to_Software_Architecture
12 软件体系结构概述
12.1.1 什么是“体系结构”
词典的定义:
The art and science of designing and erecting buildings (建 筑学:设计和建造建筑物的艺术与科学); A style and method of design and construction (设计及构造 的方式和方法); Orderly arrangement of parts; structure (部件的有序安排;结 构); The overall design or structure of a computer system, including the hardware and the software required to run it, especially the internal structure of the microprocessor (计算 机系统的总体设计或结构,包括其硬件和支持硬件运行的软 件,尤其是微处理器内部的结构)。
12 软件体系结构概述
起源于建筑学的“体系结构”
“体系结构(Architecture)”一词起源于建筑学
如何使用基本的建筑模块构造一座完整的建筑?
包含两个因素:
基本的建筑模块:砖、瓦、灰、沙、石、预制梁、柱、屋面 板… 建筑模块之间的粘接关系:如何把这些“砖、瓦、灰、沙、石、 预制梁、柱、屋面板”有机的组合起来形成整体建筑?
连接发生和维持的机制——实现连接的物质基础(连接的机 制); 连接能够正确、无二义、无冲突进行的保证——连接正确有 效的进行信息交换的规则(连接的协议)。 简称“机制”(mechanism)和“协议”(protocol)。
12 软件体系结构概述
连接的机制(Mechanism)
软件安全-软件安全的架构和设计2PPT优秀课件
2 概要设计的内容:
(2)软件结构的总体设计:从系统开发的角度看 ,需求分析已经完成了部分功能设计,即将系统按 功能进行了逐层分解,使每一部分完成简单的功能 ,且各个部分又保持一定的联系,还要把该层次结 构的各个部分组合起来形成统一的系统。包括:采 用某种设计方法,将一个复杂的系统按功能划分为 模块的层次结构;确定各个模块的功能,建立模块 与功能的对应关系;确定模块间的调用关系和接口 (模块间传递的信息)关系;设计接口的信息结构 ;评估模块的划分质量,导出模块结构规则;
第四章 安全 软件的架构与设计 12
第四章 安全 软件的架构与设计 2
4.1.1 软件设计概念
人们经过多年的实践,总结和发展了许多软件的设 计概念和经验,成为软件设计人员设计复杂应用问 题时应该遵循的基础。
我们前面已经学习了需求分析,明确了用户的需求 ,但那都是软件的需求,而不是软件(也可以说是 从用户角度描述,而不是从软件开发人员角度描述 问题),这一节就是要将计算机软件需求变为软件 表示,那么什么是软件表示?如何实现这一变换? 这是这一节要解决的主要问题。
(2)从软件工程管理的观点上看可分为概要设计 和详细设计两个部分:概要设计是将软件的需求转 化为数据结构和软件的系统结构;详细设计是软件 结构表示的细化,得到软件的详细数据结构表达和 具体算法描述。
第四章 安全 软件的架构与设计 5
1 软件设计划分的形式:
(3)从设计的技术内容上看可分为数据设计、结 构设计和过程设计:从信息流技术包含的设计内容 上看,软件设计是根据软件的功能、性能需求和用 户其它要求,采用某种设计方法进行数据设计、系 统结构设计和过程设计。数据设计侧重于数据结构 的定义,系统结构设计侧重于定义软件系统各主要 成分之间的关系,过程设计则是把软件结构成分转 换成过程性描述。
《软件工程导论》考试大纲
四川工业科技学院《软件工程与项目管理》课程考试大纲一、课程类型:专业基础课二、课程总学时:8三、考试对象:(年级、专业、层次)年级:18级专业:软件工程层次:本科四、本课程的性质及任务:课程性质:本课程是一门专业基础理论课程,重在培养学生按工程化、标准化、规范化方法从事软件设计与研发的课程,对学生毕业后从事软件和网站开发岗位相关工作有重要意义。
课程定位:通过本课程的学习可以使学生掌握软件项目开发、使用和维护的工程化方法,减少因人为因素出现的软件危机,从而提高软件的生命周期。
本课程主要任务是培养学生在软件设计过程中撰写各种规格说明书,这样也利于学生写作能力和撰写毕业论文能力的提高。
五、考试知识点及要求:第一章软件工程概述(1学时)授课内容:①软件危机的产生、典型表现形式、产生的原因及消除的途径;②软件工程的基本原理、包括软件工程的定义、特性、方法学;③软件生授课目标与要求:通过本章的学习,了解和掌握软件工程的基本概念(如软件和软件工程的定义、等),软件危机的表现形式、产生的原因及消除的途径,软件工程的基本原理、方法学,软件的生存期。
掌握软件过程活动和过程模型,了解CASE。
授课的重点与难点:重点:软件工程的基本原理。
软件过程模型。
难点:软件危机的产生、典型表现形式,软件过程模型。
授课的演示与练习:演示:课堂讲授、多媒体演示、举例分析、课堂讨论练习:课后习题适当,由任课教师出些题目。
授课的建议:建议老师举例说明。
第二章项目分析与规划(1学时)授课内容:①可行性研究的任务、具体步骤、成本效益分析、可行性研究报告;②系统流程图;③系统框架图。
教学要求:深刻理解可行性研究的必要性,掌握可行性研究的任务、过程、成本效益分析以及可行性研究报告的主要内容;掌握系统流程图、系统框架图的基本内容。
授课的重点与难点:系统流程图、系统框架图难点:成本效益分析、可行性研究报告授课的演示与练习:演示:课堂讲授、实例分析、演示法练习:课后习题适当,由任课教师出些题目。
软件工程_软件总体设计
软件工程_软件总体设计在当今数字化的时代,软件已经成为了我们生活和工作中不可或缺的一部分。
从智能手机上的各种应用程序,到企业内部的管理系统,软件的身影无处不在。
而软件总体设计,作为软件工程中的关键环节,对于软件的质量、可维护性和开发效率都有着至关重要的影响。
软件总体设计,简单来说,就是在软件开发的早期阶段,对软件系统的整体架构、模块划分、数据结构、接口等方面进行规划和设计。
它就像是为一座即将建造的大厦绘制蓝图,为后续的详细设计和编码工作提供了指导和约束。
一个好的软件总体设计,首先需要明确软件的需求。
这包括对软件功能、性能、安全性、可靠性等方面的要求。
只有充分理解了用户的需求,才能设计出符合用户期望的软件系统。
在这个过程中,需求分析人员需要与用户进行充分的沟通,通过各种方式获取用户的需求,并对其进行整理和分析,形成详细的需求文档。
在明确了需求之后,接下来就是设计软件的架构。
软件架构就像是软件系统的骨架,它决定了软件的整体结构和组织方式。
常见的软件架构模式有分层架构、客户端服务器架构、微服务架构等。
选择合适的架构模式需要综合考虑软件的规模、复杂度、性能要求、可扩展性等因素。
例如,对于一个小型的单机应用程序,分层架构可能是一个比较合适的选择;而对于一个大型的分布式系统,微服务架构可能更加适合。
模块划分是软件总体设计中的另一个重要环节。
模块是软件系统中的基本组成单位,它具有相对独立的功能和明确的接口。
合理的模块划分可以提高软件的可维护性和可扩展性。
在进行模块划分时,需要遵循高内聚、低耦合的原则。
也就是说,一个模块内部的元素之间应该紧密相关,而不同模块之间的联系应该尽量减少。
这样可以使得每个模块的功能相对单一,便于理解和维护,同时也降低了模块之间的相互影响,提高了系统的稳定性。
数据结构的设计也是不容忽视的。
数据是软件系统的核心,合理的数据结构可以提高数据的存储和访问效率。
在设计数据结构时,需要考虑数据的类型、数量、存储方式等因素。
第二次作业答案
第三章需求分析作业一、名词解释结构化分析方法:面向数据流进行需求分析的方法,采用自顶向下、逐步求精的分析方法。
数据流图:用图形的方式从数据加工的角度来描述数据在系统中流动和处理的过程,只反映系统必须完成的功能,是一种功能模型。
数据字典:用于定义对数据流图中的各个成分的具体含义。
二、填空1、需求分析是指开发人员通过细致的调查,准确理解用户的要求,将用户非形式化的需求转化为完整的需求定义,再把需求定义转化为相应的形式化功能规约的过程。
2、需求分析的基本任务是准确定义新系统的目标,为了满足用户的需要,回答系统必须“做什么”的问题。
3、需求分析阶段需编写的文档有需求规格说明书、初步用户手册、软件测试计划。
4、数据流图的基本组成部分有源点/终点、加工、数据流、数据存储。
5、数据流图和数据字典共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分。
6、结构化分析方法是面向数据流的、自顶向下、逐步求精进行分析的方法。
7、数据字典有以下四类条目:数据加工、数据流、数据存储、数据元素。
数据元素是组成组成数据流和数据存储的最小元素。
8、在结构化分析的需求描述中,数据流图描述系统的分解,即描述系统由哪几部分组成,各部分有什么联系等等。
数据字典定义了数据流图中每一个图形元素。
9、在数据流图中,数据流是数据在系统内传播的路径,因此由一组固定的数据项组成。
加工(又称为数据处理)是对数据流进行的某些处理。
三、单项选择题1、需求分析阶段最重要的技术文档之一是( C )。
A.项目开发计划B.设计说明书C.需求规格说明书D.可行性分析报告2、在需求分析之前有必要进行( B )A.程序设计B.可行性分析C.ER分析D.3NF分析3、软件需求分析阶段建立原型的主要目的时( A )。
A.确定系统的功能和性能要求B.确定系统的运行要求C.确定系统是否满足用户需要D.确定系统是否满足开发人员需要4、软件开发的需求活动,其主要任务是( D )。
04第四章系统总体设计
作。
二、面向对象系统总体设计工具|
类图的组成: 接口
➢ 表述
接口是一种特殊的类,所有接口都是有构造型的类。 一个类可以通过实现接口支持接口所指定的行为。
类图的组成: 类之间的关系
➢ 依赖关系
依赖表示的是两个或多个模型元素之间语义上的连接关系。 只将模型元素本身连接起来而不需要用一组实例来表达它的意思。 表示了这样一种情形:提供者的某些变化会要求或指示依赖关系中
客户的变化,即依赖关系将行为和实现与影响其他类的类联系起来。
二、面向对象系统总体设计工具|
某土地定级信息系统
数据输入 数据编辑 因子分析 因素复合 级别划定 面积量算 专题制图 成果输出
空地 平
空分
样级
间形 均 曲引间值 分 点差
内坡 高 面力扩频 值 级收
插度 程 分模散率 分 别益
分分 分 级型分分 级 提测
析析 析
析析
取算
层次图示例
一、结构化系统总体设计工具|HIPO图
➢ HIPO图
✓ 根据系统抽象程度的不同,可以在模型中创建不同的类。
➢ 作用
是面向对象中的系统组织结构的核心。
二、面向对象系统总体设计工具|
类图的组成: 类
➢ 表述
在UML中类被表述成为具有相同结构、行为和关系的一组对象的 描述符号。所用的属性与操作都被附在类中。
➢ 内容
类定义了一组具有状态和行为的对象,其中属性和关联用来描述状 态。
类图的基本概念: 边界类
➢ 边界类
用于建立系统与其参与者之间交互 的模型。这种交互通常包括接收来 自用户和外部系统的信息与请求, 以及将信息与请求提交到用户和外 部系统。
软件概要设计
详细的设计思路。
返回节目录
5
第4章 软件概要设计
4.2 概要设计的基本原理
4.2.1 模块与模块独立性 4.2.2 抽象、信息隐蔽与局部化
返回节目录
6
第4章 软件概要设计
4.2.1 模块与模块独立性
所谓模块是指可以单独命名且可以通过名字来访问的 数据说明、可执行语句等程序对象的集合。 将这些模块组 装起来以满足整个问题的需求。
为什么模块要具有独立性呢?一般有以下两个主 要原因:
1)一个相对独立的模块的功能较为单一,接口 简单,易于开发。
2)一个相对独立的模块比较容易测试和维护。 模块的独立程度可以用两个定性的 标准 来度量, 即模块的 内聚性 和 耦合性 。
9
第4章 软件概要设计
1.内聚性 (cohesion) 内聚是模块功能强度的度量, 它标志一个模块内 部各个元素彼此结合的紧密程度 。一个理想的内聚 程度高的模块应该只完成一种功能。一般模块的内 聚性分为 7种类型,它们的关系如下图所示。
19
第4章 软件概要设计
信息内聚模块
查找 登录 删除
修改
符号表
几个加工同时引用一个共同的数据
20
第4章 软件概要设计
功能内聚
模块仅包括为完成某个功能所必须 的所有成分。 模块所有成分共同完成一个功 能,缺一不可 内聚性最强
21
第4章 软件概要设计
在软件的设计过程中,我们应该尽量使模块 的内聚性强一些。
例如:初始化系统模块、 系统结束模块、 紧急故障处理模块等均是时间性聚合 模块.
14
第4章 软件概要设计
过程内聚(顺序性组合)
软件工程习题解答
第一章软件工程概论一、填空题⑴ 软件是计算机系统中与硬件相互依存的部分,它是包括(A)、(B)、及(C)的完整集合。
其中,(A)是按事先设计的功能和性能要求执行的指令序列,(B)是使程序员能够正确操纵信息的数据结构,(C)是与程序开发、维护和使用有关的图文材料。
①软件②程序③代码④硬件⑤文档⑥外设⑦数据⑧图表⑵ 开发软件时,对于提高软件开发人员工作效率至关重要的是(A)。
软件工程中描述软件生存周期的瀑布类型一般包括计划、(B)、设计、编码、测试、维护等几个阶段。
其中,设计阶段在管理上可以依次分成(C)和(D)两个步骤。
A:① 程序开发环境② 操作系统的资源管理功能③ 开发程序人员数量④ 计算机的并行处理能力B:① 需求分析②需求调查③可行性分析④问题定义C、D:① 方案设计② 代码设计③ 概要设计④ 数据设计⑤ 运行设计⑥ 详细设计⑦ 故障处理设计⑧ 软件体系结构设计⑶ 有人将软件的发展过程划分为四个阶段,第一阶段(20世纪50年代),称为程序设计的“原始时期”。
这时既没有(A),也没有(B),程序员只能用机器指令编写程序。
第二阶段(20世纪60年代),称为“基本软件期”。
出现了(A),并逐渐普及。
随着(B)的发展,编译技术也有较大的发展。
第三阶段(20世纪60年代末至70年代中期)称为“程序设计方法时代”。
这一时期,与硬件价格下降相反,软件开发费用急剧上升。
人们提出了(C)和(D)等程序设计方法,设法降低软件的开发费用。
第四阶段(20世纪70年代中期至今),称为“软件工程”时期。
软件开发技术不再仅仅是程序设计技术,而是包括了软件开发的各个阶段。
如(E)、(F)、编码、单元测试、综合测试、(G)及其整体有关的各种管理技术。
A、B、C、D:① 汇编语言② 操作系统③ 虚拟存储器概念④ 高级语言⑤ 结构化程序设计⑥ 数据库概念⑦ 固件⑧ 模块化程序设计E、F、G:① 使用和维护② 兼容性的确认③ 完整性的确认④ 设计⑤ 需求定义⑥ 图像处理二、简答题⑴ 软件工程过程有哪几种基本活动,试加以说明。
第四章 总体设计(概要设计)
§4.1 总体设计的过程
总体设计过程通常由两个主要阶段组成: 1.系统设计,确定系统的具体实现方案; 2.结构设计,确定软件结构。
总体设计的过程: 总体设计的过程:
一、设想供选择的方案
确定方案
二、选择合理的方案 三、推荐最佳方案 四、功能分解
确定结构
五、设计软件结构 六、数据库设计 七、制定测试计划 八、书写文档 九、审查复审
第四章 总体设计(概要设计)
软件设计的任务是把分析阶段产生的软 件需求说明转换为用适当手段表示的软件 设计文档。 软件设计可分为概要设计(Preliminary Design)和详细设计(Detail Design)。 概要设计确定软件的结构,即软件的组成 及各子系统之间的相互联系;详细设计确 定模块内部的算法和数据结构,产生描述 各模块程序过程的详细设计的文档。
七.模块功能应该可以预测。 模块功能应该可以预测。 模块的功能应该可以预测, 模块的功能应该可以预测,但也要防止模块 功能过分局限。 功能过分局限。 如果一个模块可以当作一个黑盒子, 如果一个模块可以当作一个黑盒子 , 也就是 只要输入数据相同就产生同样的输出, 说,只要输入数据相同就产生同样的输出,这个 模块就是可以预测的。 模块就是可以预测的。 以上列出的启发式规则多数是经验规律, 以上列出的启发式规则多数是经验规律 , 对 改进设计,提高软件质量, 改进设计,提高软件质量,往往有重要的参考价 但是, 值。但是,它们既不是设计的目标也不是设计时 应该普遍遵循的原则。 应该普遍遵循的原则。
1. 偶然性内聚(Coincidental Cohesion) 所谓偶然性内聚是指一个模块内各成分为完成一组 功能而组合在一起,它们相互之间即使有关系,也很 松散。 2. 逻辑性内聚(Logical Cohesion) 如果一个模块完成的任务逻辑上相关(例如,一个产 生所有与类型无关的输出),则称为逻辑性内聚。 3. 时间性内聚 (Temporal Cohesion) 如果一个模块内包含的任务必须在一个时间段内执行 (例如一个初始化模块),则称之为时间性内聚。 4. 过程性内聚 (Procedural Cohesion) 模块的过程性内聚是指,模块内成分彼此相关,并 且必须按特定的次序执行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2018/10/13
34
模块间联系(耦合)(P73)
非直接耦合 数据耦合 特征耦合 控制耦合 公共耦合 内容耦合
2018/10/13
35
非直接耦合
两个模块没有直接关系(模块1和模 块2),模块独立性最强。
模块1
模块2
模块3
2018/10/13
模块4
36
数据耦合
一模块调用另一模块时,被调用模 块的输入、输出都是简单的数据(若干 参数)。 属松散耦合。
E (c)
协调模块
E F F
(b)
(d)
12
SC中的选择调用
A根据内 部判断决定 是否调用B A按另一判 定结果选择调 用 C或 D
A
B
2018/10/13
C
D
13
SC中的循环调用
A
B
C
A根据内在的循环重 复调用B、C等模块
2018/10/13 14
结构图(SC)举例
处方 计 总 费 号 挂 医院管理系统
偶然聚合 逻辑聚合 时间聚合 通信聚合 顺序聚合 功能聚合
2018/10/13
25
偶然聚合(巧合聚合)
例: T
P
Q
S
MOVE READ MOVE
A
TO B CARD FILE C TO D
模块T中的三个语句没有任何联系 缺点:可理解性差, 可修改性差
2018/10/13 26
逻辑聚合
把几种相关功能(逻辑上相似的功能) 组合在一模块内,每次调用由传给模块 的参数确定执行哪种功能。
2018/10/13
10
结构图(SC Structure Chart)
SD方法在概要设计中的主要表达工具
约定:
编辑学生记录 不加区分的数据 学生数据 数据信息 控制信息
2018/10/13
学号 无此学生 读学生记录
11
SC中的四种模块
A
B
C
D
传入模块 A
(a)
2018/10/13
传出模块
B
变换模块
37
数据耦合举例
开发票 单价 数量 金额
计算水费
38
特征耦合
两个模块与同一个数据结构(包括 若干个数据项)有关。
39
控制耦合
一模块向下属模块传递的信息 (开 关量、标志等控制被调用模块决策的变 量) 控制了被调用模块的内部逻辑。
40
控制耦合举例
B A 平均/最高 (控制信号) B 计算平均分 或最高分 平均/最高? 读入分数
一模块对另一模块的引用 一模块向另一模块传递的数据量 一模块施加到另一模块的控制的数量 模块间接口的复杂程度
2018/10/13
49
模块间耦合的类型
低
耦 合 (低耦合)
无直接耦合
数据耦合 标记耦合
强
模 块 独 立 性 弱
性
(中耦合)
(较强耦合)
控制耦合
外部耦合 公共耦合
高 (强耦合)
内容耦合
控制结构(程序结构)
控制结构是软件模块间 关系的表示
2018/10/13
6
控制结构图示(P68)
2018/10/13
7
控制结构的层次规则
只有一个顶层(0层)模块 0层外任一模块都会在它的邻层存在一模块与 它有关 同层模块间不发生联系
2018/10/13
8
软件结构度量术语
(一个模块 扇出 直接调用 的模块数)
成绩
计算平均分 计算最高 分 输出结果
41
去除模块间控制耦合的方法
控制耦合增加了理解和编程的复杂性,调 用模块必须知道被调模块的内部逻辑,增加 了相互依赖 (1)将被调用模块内的判定上移到调用模块中进 行 (2)被调用模块分解成若干单一功能模块
42
改控制耦合为数据耦合举例
A
平均成绩 B1 B2
最高成绩
(4) 减少高扇出争取高扇入
计算实发工资
取得 计时 薪金 编外 税收 编外 常规 编外 工资 制工 制工 人员 人员 人员 数据 资额 资额 工资 扣款 税款 扣款 扣款
产生职工工资报表并计算平均工资模块
2018/10/13 31
顺序聚合
模块内各处理成分相关, 且必须以特定次序执行
2018/10/13
32
顺序聚合模块
读入 成绩单 审查 成绩单 统计 成绩 打印 成绩
读入并审查成绩 单
统计并打印成绩 单
2018/10/13
33
功能聚合
模块仅包括为完成某个功能所必须的所 有成分。 模块所有成分共同完成一个功 能,缺一不可 聚合性最强
2018/10/13
57
作用范围和控制范围
作用范围 判定
Top X A B1 Y B X A B1 Y B B2 X
Top X A B1 B B2
Top Y
A
B
图1.作用范围在控制范围之外 图2.作用范围在控制范围之内,但判定位置太高 图3.作用范围在控制范围之内,正确实现 图4.理想的作用范围和控制范围
"各个击破"理论
2018/10/13 19
模块度
软件总成本 成 本 或 工 作 量
最小成本区域 M
集成成本
成本/模块 模块数量
2018/10/13 20
模块的特征(P72)
▲ 抽象
抽象是抽出事物的本质特性而暂时不考 虑他们的细节. ▲ 信息隐蔽 模块所包含的信息,不允许其它不需要 这些信息的模块访问,独立的模块间仅 仅交换为完成系统功能而必须交换的信 息。
(1)总体设计(概要设计) 确定软件的结构以及各组成成分 (子系统或模块)之间的相互关系。 (2)详细设计 确定模块内部的算法和数据结构,产生描 述各模块程序过程的详细文档。
2018/10/13
3
总体设计的任务
将系统划分成模块 决定每个模块的功能 决定模块的调用关系 决定模块的界面,即模块间传递的数据
计算平均分
计算最高分
43
公共耦合(公共数据区耦合)
一组模块引用同一个公用数据区(也称全 局数据区、公共数据环境)。
公共数据区指:
全局数据结构 共享通讯区 内存公共覆盖区等
44
公共耦合举例
A B C
公共数据区C
模块A、B、C间存在错综复杂的联系
45
公共耦合存在的问题
(1)软件可理解性降低 (2)诊断错误困难 (3)软件可维护性差, (4)软件可靠性差 (公共数据区及全程变量无保护措施) 慎用公共数据区和全程变量!!!
概述(P66)
需求分析解决系统“做什么”的问 题,软件设计解决系统“怎么做” 的问题,分为总体设计(概要设计) 和详细设计.软件设计是把软件需求 变换成为软件的具体解决方案.
2018/10/13
1
剩下的阶段
▲ 总体设计
▲ ▲ ▲ ▲
详细设计 编码 调试 维护
2018/10/13
2
软件设计分为两个阶段:
2018/10/13
16
模块
模块是具有一定功能的可以用名词调用的程序 语句集合,如:
独立的汇编程序 COBOL的段和节 Pascal过程 FORTRAN的子程序 汇编的宏
2018/10/13
17
模块化(Modularity)
模块化是好的软件设计的一个基本准则 从整体上把握 问题,隐蔽细节
2018/10/13 21
模块独立性度量(P73)
▲ 模块独立的概念
模块独立是指该模块能完成一个相对独立的特 定子功能,并且与其他模块之间的接口很简单. 模块独立是软件设计模块化、抽象和信息隐蔽 的直接结果. ▲ 独立的优势 1.具有独立模块的软件比较容易开发,接口简 化,有利于团队合作. 2.独立的模块比较容易测试和维护.
分解
复杂问题
较小问题
分解 可减小解题所需的总的工作
2018/10/13 18
例:将问题(P1+P2)分解为P1,P2
设函数C(x)定义问题 x 的复杂程度 函数E(x)确定解决问题 x 需要的工作量 对问题P1和P2,如: C(P1) > C(P2) 显然: E(P1) > E(P2) 有规律:C(P1+P2) > C(P1)+C(P2) E(P1+P2) > E(P1)+E(P2)
2018/10/13
4
软件总体设计基础(P67)
▲ 模块 模块就是程序对象的有名字的集合或者说是一 系列过程的总称. ▲ 软件结构 软件的结构就是软件内部各模块之间的关系表 示. ▲ 总体设计 总体设计是软件总体结构的设计. ▲ 详细设计 详细设计是软件模块内部的过程设计.
2018/10/13 5
深 度
(模块的 层数)
扇入 (调用一个给定模
块的模块个数)
宽度
(同一层最大模块数)
2018/10/13 9
结构图(SC Structure Chart)
结构图主要成分(page 69)
模块——用方框表示,方框中写有模块的名字,一个模 块的名字应适当地反映这个模块的功能,这就在某种 程度上反映了块内联系; 调用——从一个模块指向另一个模块的箭头表示前一模 块中含有对后一模块的调用; 数据——调用箭头旁边的小箭头表示调用时从一个模块 传入送给另一个模块的数据,小箭头也指出了传送的 方向。
2018/10/13
27
逻辑聚合模块
A E B F C G E、F、G逻辑 功能相似,组 成新模块EFG C A1 B1 C1 公用代码段