软件工程第二版知识点
- 格式:docx
- 大小:314.45 KB
- 文档页数:13
参考答案第1章一、填空题1. 程序设计时代程序系统时代软件工程时代2. 软件开发方法软件开发过程软件开发工具和环境软件管理学软件经济学软件心理学二、选择题1. B2. C3. C三、简答题略。
第2章一、填空题1. 获取过程供应过程开发过程操作过程维护过程管理过程支持过程2. 用户需求对象面向对象迭代性无间隙性3. 制定计划风险分析开发实施用户评估二、选择题1. C2. A 3 A三、简答题略。
第3章一、填空题1. 技术经济社会操作2. 合同责任侵权3. 对于现行系统进行分析研究导出新系统的逻辑模型二、选择题1. D2. D3. D三、简答题略。
第4章一、填空题1. 数据流加工(又称为数据处理)数据存储数据的源点或终点2. 数据流图数据字典描述加工逻辑的结构化语言判定表判定树3. 各个成分的具体含义逻辑模型需求说明书二、选择题1. C2. C3. A2 软件工程(第2版)三、简答题略。
第5章一、填空题1. 模块模块层次结构2. 软件需求软件表示总体设计详细设计3. 输入变换(或称处理)输出二、选择题1. A2. A3. C三、简答题略。
第6章一、填空题1. FOR WHILE UNTIL2. 自顶向下逐步求精三种基本控制结构主程序员组的组织形式3. 程序框图三种基本控制结构相互交叉结构化二、选择题1. B2. B3. C三、简答题略。
第7章一、填空题1. 标识分类多态继承2. 紧密松散3. 标识4. 服务5. 封装6. 消息对象标识输入信息二、选择题1. ABCD2. C3. C.4. AC5. C6. AD三、简答题略。
第8章一、填空题1. 脚本2. 概括聚合3. 并发性4. 数据流图数据流图5. 数据存储6. 约束二、选择题1. C2. B 3.B参考答案 3三、简答题略。
第9章一、填空题1. 对象是对问题域中某个实体的抽象,这种抽象反映了系统保存有关这个实体的信息或与它交互的能力类是对具有相同属性和行为的一个或多个对象的描述2. 前者是后者的实例,后者是前者的定义模板3. 主动对象是至少有一个服务不需要接收消息就能主动执行的对象。
1、软件的特性:(10个)形态、智能、开发、质量、生产、管理、环境、维护、废弃、应用特性2、软件的概念软件是计算机系统中与硬件相互依存的另一部分,包括程序、数据及其相关文档的完整集合。
3、软件危机产生的原因软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
4、什么是软件工程软件工程是指导计算机软件开发和维护的工程学科。
采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
5、简述软件生存期由哪些主要的阶段组成,每一阶段的主要任务是什么?软件定义、软件开发、运行维护(1) 问题定义与可行性研究:问题定义必须回答的关键问题是:“要解决的问题是什么”。
可行性研究要回答的关键问题是:“在成本和时间的限制条件下能否解决问题?是否值得做?”。
(2) 需求分析:这个阶段的任务仍然不是具体地解决客户的问题,而是准确地回答“目标系统必须做什么”这个问题。
(3) 软件设计:本阶段要回答的关键问题是“目标系统如何做?”为此,必须在设计阶段中制定设计方案,把已确定的各项需求转换成相应的软件体系结构。
结构中的每一组成部分都是意义明确的构件,此即所谓概要设计。
进而具体描述每个构件所要完成的工作,为源程序编写打下基础,此即所谓详细设计。
(4) 程序编码和单元测试:本阶段要解决的问题是“正确地实现已做的设计”,为此,需要选择合适的编程语言,把软件设计转换成计算机可以接受的程序代码,并对程序结构中的各个模块进行单元测试,然后运用调试的手段排除测试中发现的错误。
要求编写出的程序应当是结构良好、清晰易读的,且与设计相一致的。
(5) 集成测试和系统测试:集成测试的任务是将已测试过的模块按设计规定的顺序组装起来,在组装的过程中检查程序连接的问题。
系统测试的任务是根据需求规格说明的要求,对必须实现的各项需求,逐项进行确认,判定已开发的软件是否符合用户需求,能否交付用户使用。
为了更有效地发现系统中的问题,通常这个阶段的工作由开发人员、用户之外的第三者承担。
(6) 运行维护:已交付的软件投入正式使用,便进入运行维护阶段。
这一阶段可能持续若干年。
软件在运行中可能由于多方面的原因,需要对它进行维护。
通常有四种类型的维护:改正性维护、适应性维护、完善性维护和预防性维护。
6、软件工程的三种基本要素是什么软件工程的三种基本要素是方法、工具和过程。
(1) 软件工程方法为建造软件提供技术上的解决方法(“如何做”)。
目前使用得最广泛的方法是传统方法(结构化方法)和面向对象方法。
(2) 工具为方法的运用提供自动的或半自动的软件支撑环境。
(3) 过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
7、简述传统方法和面向对象方法的特点(1) 传统方法的特点传统方法也称为生命周期方法或结构化范型。
它采用结构化技术来完成软件开发的各项任务。
这种方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地逐步完成每个阶段的任务。
每一个阶段的开始和结束都有严格的标准,对于任何两个相邻的阶段而言,前一个阶段的结束标准就是后一阶段的开始标准。
传统方法的主要缺点是在适应需求变化方面不够灵活,另外,结构化方法要么面向行为,要么面向数据,缺乏使两者有机结合的机制。
(2)面向对象方法的特点面向对象方法把数据和行为看成同等重要,是将数据和对数据的操作紧密地结合起来的方法,这也是面向对象方法与传统方法的重要区别。
面向对象方法的出发点和基本原则,是尽量模拟人类习惯的思维方式,使开发软件的方法和过程尽可能接近人类认识问题和解决问题的方法与过程,从而使描述问题的问题空间与其解空间在结构上尽可能一致。
对于大型、复杂及交互性比较强的系统,使用面向对象方法更有优势。
8、常见的软件生存期模型主要有哪些?瀑布、喷泉模型的优缺点是什么?主要有瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型和统一过程。
瀑布模型优点:可强迫开发人员采用规范化的方法;严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
缺点:由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要;用户往往需要等待很长时间才能看到可以运行的程序;适应需求变更的能力比较差。
适用范围:瀑布模型只适用于项目开始时需求已确定的情况。
喷泉模型优点:在开发过程中使用统一的概念和方法,各阶段之间没有明显的界限,容易实现各个开发过程的多次反复迭代,达到了认识的逐步深化,降低了出错的可能性。
缺点:由于各个阶段之间的界线不明确,容易造成软件开发过程的无序。
适用范围:适用于面向对象的软件开发。
9、需求获取的任务(1)发现和分析问题,并分析问题的原因结果关系。
(2)与用户进行各种方式的交流,并使用调查研究方法收集信息。
(3)按照三个成分即数据、过程和接口观察问题的不同侧面。
(4)将获取的需求文档化,形式有用例、决策表、决策树等。
10、软件需求分析阶段的任务需求获取、需求分析、需求定义、需求验证。
11、银行存款业务如下:客户到银行柜台存款时,首先填写存款单(包括帐号、姓名、存款金额、存款类型),如果还没有开户,则需要先开户,填写开户单(包括姓名、身份证号、地址、电话、是否留密码)。
填写完存款单或开户单后,交给营业员,营业员将存款单或开户单信息输入计算机,系统记录开户信息或存款单信息,如果是开户并选择留密码,则需要客户输入密码。
最后印出开户单或存款单给用户。
请画出银行存款业务的分层数据流图(至少画出两层)。
(1) 识别外部实体及输入输出数据流外部实体:储户、业务员。
输入数据流:存款单,开户单,密码。
可以将存款单和开户单抽象为事务。
输出数据流:存款单,开户单。
(2) 顶层数据流图(3) 一层数据流图对银行储蓄系统进行分解,从大的方面分解为接收事务、处理开户、处理存款三部分,得到一层数据流图。
(4) 二层数据流图对“处理存款”及“处理开户”进行进一步分解,得到二层数据流图,即处理存款的数据流图和处理开户的数据流图。
处理存款的数据流图处理开户的数据流图12、按照以下描述,画出ER图。
一本教材由许多章组成,每一章包含许多节、小结和习题组成,章和节都具有标题和序号属性。
ER图如下:13、软件设计的概念程序应该不包含任何对其功能有障碍的缺陷;程序符合开发的目标;使用程序的体验应是愉快的。
14、软件设计的原则分而治之;模块独立性;提高抽象层次;复用性设计;灵活性设计。
15、什么是结构图的深度:模块结构的层次数什么是结构图的宽度:同一层模块的最大模块数称为结构图的宽度。
16、什么是耦合耦合是程序结构中各个模块之间的互相关联的度量,他取决于各个模块之间接口的复杂程序度、调用模块的方式以及接口的信息类型。
内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合、非直接耦合 17、什么是内聚内聚是一个模块内部各个元素彼此结合的紧密程度的度量。
巧合内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、信息内聚、功能内聚 18、模块的作用范围应在控制范围之内。
19、用面向数据流的方法设计第3章习题3.4所描述的银行存款业务的软件结构,并使用改进方法对模块结构进行精化。
(1) 对第3章习题3.4给出的数据流图进行精化,确定其边界,如下图所示。
(2) 对上图按事务型数据流进行处理,完成第一级分解,得到顶层和一层模块结构图。
第一级分解后的结构图(3) 完成第二级分解。
对上图所示的“输入数据”、“输出数据”和“调度”模块进行分解,得到未经精化的输入结构、输出结构和事务结构。
未经精化的输入结构未经精化的输出结构未经精化的事务结构将上面的三部分合在一起,得到初始的软件结构,如下图所示。
初始软件结构图(4) 对软件结构进行精化。
1) 由于调度模块下只有两种事务,因此,可以将调度模块合并到上级模块中,如图所示。
将调度模块合并到上级模块后的软件结构2)“记录密码”模块的作用范围不在其控制范围之内(即“输入密码”模块不在“记录密码”模块的控制范围之内),需对其进行调整,如图所示。
调整后的模块结构图20、对于图4-49所示的流程图,试分别用N-S图和PAD表示之。
图4-49 流程图对应的N-S 图如下: 对应的PAD 如下:21、面向对象的概念面向对象=对象+类+继承+消息通信如果一个系统是使用这样4个概念设计和实现的,则可认为这个系统是面向对象的。
22、关联分为普通关联、限定关联、以及聚合与复合。
23、什么是泛化关系泛化(generalization)关系就是一般类和特殊类之间的继承关系。
在UML 中,一般类亦称泛化类,特殊类亦称特化类。
泛化针对类型而不针对实例,因为一个类可以继承另一个类,但一个对象不能继承另一个对象。
泛化可进一步划分成普通泛化和受限泛化两类。
25、面向对象分析需要建立的三个模型是什么?面向对象分析需要建立的3个模型是:由用例和场景表示的功能模型(用例模型);用类和对象表示的静态模型(对象模型);由状态图和顺序图表示的动态模型(交互模型)。
26、结构图和行为图的区别结构图用于系统的静态建模,行为图用于系统的动态建模。
结构图包括:类图、组合图、构件图、部署图、对象图、包图、造型图行为图包括:活动图、用例图、状态图、顺序图、交互概念图、通信图、定时图 27、比较面向对象的分析方法和面向数据流的分析方法,阐述它们各自的特点。
面向对象的分析方法使用用例模型来表示用户的功能需求,用例模型相当于功能模型,在对用例模型进行细化的过程中,也伴随着对功能的分解。
但面向对象的分析方法并不是以功能分解为核心,在获取并分析用户的功能需求之后,重点以类和对象为核心,建立对象模型,交互模型也是围绕对象模型进行的。
面向数据流的分析方法是从建立顶层数据流图(环境图)开始,之后逐层对加工进行分解。
面向数据流的分析方法是以功能分解为核心的。
28、对象模型的5个层次主题层、类-对象层、结构层、属性层、服务层 29、软件工程的观点 从软件工程的观点,程序设计语言的特征应着重考虑软件开发项目的需要。
要求程序编码有如下一些工程上的性能要求。
(1)详细设计应能直接容易地翻译成代码程序。
(2)源程序应具有可移植性。
(3)编译程序应具有较高的效率。
(4)尽可能应用代码生成的自动工具。
(5)可维护性。
30、程序设计语言分类第一代语言、第二代语言、第三代语言、第四代语言。
31、程序的注释应注意什么注释分为序言性注释和功能性注释。
序言性注释通常常置于每个程序模块的开头部分,它应当给出程序的整体说明,对于理解程序本身具有引导作用。