软件工程期末复习 1解析.docx
《软件工程期末复习 1解析.docx》由会员分享,可在线阅读,更多相关《软件工程期末复习 1解析.docx(22页珍藏版)》请在冰豆网上搜索。
软件工程期末复习1解析
软件工程期末复习
说明:
制作此文档目的是总结知识,明确复习重点,减轻复习和备考的负担,提供一些练习题供大家巩固基础知识。
一、考试范围
1.软件工程学概述
2.可行性研究
3.需求分析
5.总体设计6.详细设计
7.实现
9.面向对象方法学引论
10.面向对象分析
13.软件项目管理考试内容以课本为依据。
本次考试重点是第1,2,5,6,7章。
二、考试内容
第一章软件工程学概述
1、软件危机(产生原因、克服途径)一般了解
2、软件工程(定义、基本原理、方法学)理解
3、软件过程(软件生命周期、软件生存期模型)理解
4、主要知识点
软件危机:
是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
产生危机的原因:
(1)与软件本身的特点有关
(2)与软件开发与维护的方法不正确有关。
软件:
软件定义由以下三部分组成:
程序、数据结构、文档
软件工程定义:
软件工程是指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发和维护软件。
把经过时间考验而证明正确的管理技术和当前能够得到的最好技术方法结合起来,以经济地开发出高质量的软件并有效的维护它,这就是软件工程。
软件工程7个本质特征:
(1)软件工程关注与大型程序的构造
(2)软件工程的中心课题是控制复杂性
(3)软件经常变化
(4)开发软件的效率非常重要
(5)和谐地合作是开发软件的关键
(6)软件必须有效的支持它的用户
(7)在软件工程领域中通常由具有一种文化背景的人替另一种文化背景的人创造产品
软件工程的7条基本原理:
(1)用分阶段的生存周期计划严格管理;
(2)坚持进行阶段评审;
(3)实行严格的产品控制;
(4)采用现代程序设计技术;
(5)结果应能清楚地审查结果;
(6)开发小组的人员应该少而精。
(7)承认不断改进软件工程实践的必要性。
软件工程的基本内容:
软件工程学的内容包括技术和管理两方面的内容。
软件工程方法学:
在软件生命周期全过程中使用的一整套技术方法的集合称为软件工程方法学。
软件工程方法学的三个要素:
方法、工具和过程。
软件生存周期:
一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。
软件生命周期的3个时期:
软件定义、软件开发和软件维护
(1)软件定义时期:
①问题定义②可行性研究③需求分析。
(2)软件开发时期:
①总体设计②详细设计③编码和单元测试④综合测试
(3)软件维护时期:
主要任务是是软件持久地满足用户的需要。
软件开发模型:
软件开发模型是跨越整个软件生存周期的系统开发、运作、维护所实施的全部工作和任务的结构框架。
瀑布模型即生存周期模型,是软件工程的基础模型。
其核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作。
采用结构化的分析与设计方法,将逻辑实现与物理实现分开。
此外,还有快速原型模型、增量模型、螺旋模型、喷泉模型等。
第二章可行性研究
1、可行性研究的任务熟悉理解
2、可行性研究的过程一般了解
3、系统流程图一般了解
4、数据流图掌握应用
5、数据字典(内容、定义数据的方法)掌握应用
6、主要知识点
可行性研究的任务:
用最小的代价在尽可能短的时间内确定问题是否能够解决。
一般说来,应从经济可行性、技术可行性、运行可行性、法律可行性和开发方案等方面研究可行性。
可行性研究的3个方面:
(1)技术可行性:
使用现有的技术是否能实现这个系统。
(2)经济可行性:
这个系统的经济效益能否超过它的开发成本。
(3)操作可行性:
这个系统的操作方式在这个用户组织内是否可行。
可行性研究的8个步骤:
(1)复查系统规模和目标研
(2)究目前正在使用的系统
(3)导出新系统的高层逻辑模型
(4)进一步定义问题
(5)导出和评价供选择的解法
(6)推荐行动方针
(7)草拟开发计划
(8)书写文档提交审查
系统流程图:
系统流程图是描绘物理系统的传统工具。
数据流图(DFD)(会画):
数据流图是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换,是系统逻辑功能的图形表示。
数据流图有4种元素:
正方形(或立方体)表示数据的源点或终点;圆角矩形(或圆形)代表变换数据的处理;开口矩形(或两条平行横线)代表数据存储;箭头表示数据流,即特定数据的流动方向。
数据字典:
数据字典是关于数据的信息的集合,即对数据流图中包含的所有元素的定义的集合。
数据字典的内容:
由四类元素的定义组成
(1)数据流;
(2)数据流分量(即数据元素);
(3)数据存储;
(4)处理。
第三章需求分析
1、需求分析的任务熟悉理解
2、需求分析模型(数据模型、功能模型、行为模型)掌握应用
3、状态转换图掌握应用
4、其他图形工具(层次方框图、Warnier图、IPO图)一般了解
5、面向数据流的分析方法理解
6、主要知识点
需求分析的任务:
它的基本任务是准确地回答“系统必须做什么?
”这个问题。
需求分析的任务不是确定系统如何完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。
需求分析建模:
数据模型、功能模型、行为模型
状态转换图(状态图):
指明了作为外部事件结果的系统行为。
为此,状态转换图描绘了系统的各种行为模式(状态)和在不同状态间转换的方式。
状态转换图是行为建模的基础。
面向数据流的需求分析方法:
结构化分析方法是面向数据流进行需求分析的方法。
结构化分析方法使用数据流图DFD与数据字典DD来描述,面向数据流问题的需求分析适合于数据处理类型软件的需求描述。
第五章总体设计
1、总体设计的任务熟悉理解
2、设计原理(模块化、抽象、逐步求精、信息隐藏)熟悉理解
3、模块独立性(耦合、内聚)熟悉理解
4、启发规则熟悉理解
5、描述软件结构的图形工具(层次图、HIPO图、结构图)一般了解
6、面向数据流的设计方法掌握应用
7、主要知识点
总体设计任务:
决定系统“怎样做”。
总体设计过程:
(1)设想供选择的方案。
(2)选取合理的方案。
(3)推荐最佳方案
(4)功能分解
(5)设计软件结构
(6)设计数据库
(7)制定测试计划
(8)书写文档(系统说明、用户手册、测试计划、详细的实现计划、数据库设计结果)
(9)审核和复审
模块化:
模块是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。
模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。
抽象:
就是抽出事物的本质特性而暂时不考虑它们的细节。
信息隐蔽:
模块中所包括的信息不允许其它不需要这些信息的模块调用。
信息局部化:
是指把一些关系密切的软件元素物理地放得彼此靠近。
模块独立性:
是软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中其他的模块接口是简单的。
模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。
模块独立性的两个定性标准:
耦合和内聚。
模块独立性比较强的模块应是高内聚低耦合的模块。
耦合:
衡量不同模块彼此间互相依赖(连接)的紧密程度的度量。
耦合强弱取决于模块间接口的复杂程度,调用模块的方式,以及通过接口的信息。
(1)非直接耦合:
两个模块中的每一个都能独立工作而不需要另一个模块,那么它们彼此完全独立。
(2)数据耦合:
两个模块间彼此通过参数交换信息,而且交换带信息仅仅是数据。
(数据耦合是低耦合,系统中必须存在这种耦合)
(3)标记耦合(也称为特征耦合):
当把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素,出现了特征耦合。
(4)控制耦合:
传递的信息中有控制信息(控制耦合是中度耦合,它增加了系统的复杂程度,它往往是多余的)
(5)外部耦合:
一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息。
(6)公共耦合:
当两个或多个模块通过一个公共数据环境互相作用时,它们之间的耦合称为公共耦合。
(7)内容耦合:
最高程度耦合是内容耦合。
出现下列情况之一就出现了内容耦合
a)一个模块访问另一个模块的内部数据。
b)一个模块不通过正常入口而转到另一个模块内部。
c)两个模块有一部分程序代码重叠(只可能出现在汇编中)
d)一个模块有多个入口(意味着一个模块有多种功能)
内聚:
衡量一个模块内部各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。
(1)巧合内聚:
如果一个模块完成一组人物,这些人物彼此间即使有关系,关系也是松散的,这就是巧合内聚。
(2)逻辑内聚:
如果一个模块完成的人物在逻辑上属于相同或类似的一类,则称为逻辑内聚。
(3)时间内聚:
如果一个模块包含的人物必须在同一段时间内执行,则称为时间内聚。
(4)过程内聚:
如果一个模块内的处理元素是相关的,而且必须以特定次序执行,则称为过程内聚。
(5)通信内聚:
如果模块中的所有元素都使用同一个输入数据和(或)产生同一个输出数据,则称为通信内聚。
(6)顺序内聚:
如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行,则称为顺序内聚。
(7)功能内聚:
如果模块内所有处理元素属于一个整体,完成一个单一的功能,则称为功能内聚。
启发规则:
(1)改进软件结构提高模块的独立性。
(2)模块规模应该适中。
(3)深度、宽度、扇出、扇入都应适当。
(4)模块作用域应该在控制域之内
(5)力争降低模块接口的复杂程度
(6)设计单入口单出口的模块
(7)模块功能可以预测
描述软件结构的图形工具:
层次图、HIPO图、结构图
面向数据结构的分析设计方法:
面向数据流的设计方法把信息流映射成软件结构,信息流的类型(包括变换流和事务流)决定了映射的方法(变换分析和事务分析)。
面向数据流的设计要解决的任务,就是上述需求分析的基础上,将DFD图映射为软件系统的结构。
第六章详细设计
1、详细设计的任务熟悉理解
2、结构程序设计一般了解
3、人机界面设计一般了解
4、过程设计的工具掌握应用
5、面向数据结构的设计方法掌握应用
6、程序复杂程度的定量度量熟悉理解
7、主要知识点
详细设计阶段的根本目标:
确定应该怎样具体的实现所要求的系统。
过程设计的工具(会画):
程序流程图、盒图、PAD图、判定表、判定树、伪码。
程序流程图:
程序流程图又称之为程序框图,它是软件开发者最熟悉的一种算法表达工具。
N-S图(盒图):
是一种符合结构化程序设计原则的图形描述工具。
在N-S图也能表示五种基本控制结构。
PAD图:
问题分析图。
它是用结构化程序设计思想表现程序逻辑结构的图形工具。
PAD也设置了五种基本控制结构的图示,并允许递归使用。
判定表:
能够清晰地表示复杂的条件组合与应做的动作之间的对应关系。
判定树:
优点在于,它的形式简单到不需任何说明,一眼就可以看出其含义,因此易于掌握和使用。
面向数据结构的设计方法:
主要有两种方法:
Jakson方法和Warnier方法。
Jackson系统开发方法(JSD)是一种典型的面向数据结构的分析设计方法,它是以信息驱动的,是将信息转换成软件的程序结构。
程序复杂程度的定量度量:
常用方法:
McCabe和Halstead。
流图:
实质上是“退化了的”程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。
3种根据流图来计算环形复杂度方法:
(1)流图中的区域数等于环形复杂度。
(2)流图G的环形复杂度√(G)=E-N+2,其中,E是流图中边的条数,N是结点数。
(3)流图G的环形复杂度√(G)=P+1,其中,P是流图中判定结点的数目。
在源代码中,IF语句、WHILE循环或FOR循环都相当于1个判断,而CASE语句或其他多分支语句相当的判断数等于可能的分支数减1。
第七章实现
1、编码一般了解
2、软件测试基础(测试目的、测试方法、测试准则)熟悉理解
3、白盒测试技术(逻辑覆盖、控制结构测试)掌握应用
4、黑盒测试技术(等价类划分、边界值分析)掌握应用
5、调试(调试过程、调试方法)一般了解
6、主要知识点
软件测试的目的:
在软件投入生产性运行之前,尽可能多地发现软件中的错误。
软件测试的准则:
(1)所有的测试都应追溯到用户需求
(2)应该在测试工作开始前较长时间内就开始编写测试计划
(3)Pareto原则应用于软件测试
(4)测试应从小规模开始
(5)穷举测试是不可能的
(6)为了达到最佳效果,应该由独立的第三方来构造测试
测试方法:
按照测试过程是否在实际应用环境中来分,有静态分析与动态测试。
测试方法有:
白盒法和黑盒法。
测试方案:
包括具体的测试目的,应该输入的测试数据和预期的结果。
通常把测试数据和预期的输出结果称为测试用例。
白盒测试(会设计测试用例):
把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。
这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。
白盒测试又称为结构测试。
白盒测试的方法有:
逻辑覆盖(语句覆盖、分支(判定)覆盖、条件覆盖、条件组合覆盖、路径覆盖、点覆盖、边覆盖)和控制结构测试(基本路径测试)。
黑盒测试(会设计测试用例):
把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程。
就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息的完整性。
黑盒测试又称为功能测试。
黑盒法的方法有:
等价类划分法,边界值分析法,错误推测法等。
软件测试的步骤:
(1)模块测试
(2)子系统测试
(3)系统测试
(4)验收测试
(5)平行运行
基本路径测试步骤:
(1)根据过程设计结果画出相应的流图。
(2)计算流图的环形复杂度。
(3)确定线性独立路径的基本集合。
(4)设计可强制执行基本集合中每条路径的测试用例。
等价类划分法步骤:
(1)划分出有效等价类和无效等价类,为每个等价类编号。
(2)设计一个新的测试用例,使它尽可能多地覆盖尚未被覆盖的有效等价类。
重复这一过程,直到所有的有效等价类都被覆盖。
(3)设计一个新的测试用例,使它仅覆盖一个尚未被覆盖的无效等价类。
重复这一过程,直到所有的无效等价类都被覆盖。
软件可靠性:
是程序在给定时间间隔内,按照规格说明书的规定成功地运行的概率。
第八章维护
1、维护的定义一般了解
2、维护的特点熟悉理解
3、主要知识点
维护的定义:
软件维护就是在软件已交付使用之后,为了改进错误或满足新的需要而修改软件的过程。
软件维护的四项活动:
(1)改正性维护:
诊断和改正程序中的错误。
(2)适应性维护:
为了和变化了的环境适当地配合而进行的修改软件的活动,是既必要又经常的活动。
(3)完善性维护:
增加新功能或者修改已有功能。
这项为何活动通常占软件维护工作的大部分。
(4)预防性维护:
当为了改进为了的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件时,出现了第四项维护工作,目前相对较少。
软件的可维护性:
(1)可理解性
(2)可测试性
(3)可修改性
(4)可移植性
(5)可重用性
第九章面向对象方法学引论+第十章面向对象分析
1、面向对象方法学概述(要点、优点)一般了解
2、面向对象的基本概念熟悉理解
3、对象模型(类图)掌握应用
4、功能模型(用例图)掌握应用
5、动态模型(状态图)掌握应用
6、主要知识点
面向对象的基本概念:
面向对象不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,以什么观点来研究问题并进行求解,以及如何进行系统构造的软件方法学。
而面向对象方法是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法。
面向对象方法的基本思想:
从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。
面向对象的几个重要概念:
对象、消息、方法性、继承性、封装性等。
第十三章软件项目管理
1、项目管理的内容一般了解
2、进度计划掌握应用
3、主要知识点
软件项目管理:
为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。
甘特图:
是历史悠久、应用广泛的制定进度计划的工具,能描述任务的分解情况以及每个任务的开始时间和结束时间。
工程网络图:
是制定进度计划时另一种常用的图形工具,它同样能描绘任务分解情况以及每项作业的开始时间和结束时间,它还显式地描绘各个作业彼此间的依赖关系,还能描述关键的任务。
三、考试形式
闭卷考试,满分100分时间:
90分钟
四、考试题型
填空题(15分)选择题(20分)判断题(10分)简答题(20分)分析设计题(35分)
五、练习题
(1)选择题
1、软件维护是软件生命周期中的固有阶段,一般认为,各种不同的软件维护中以___维护所占的维护量最小。
CA、纠错性维护B、代码维护 C、预防性维护D、文档维护2.使用软件时提出增加新功能就必须进行_______维护。
CA.改正性B.适应性C.完善性D.预防性3.维护软件时为了保证修改不会影响原来可以正常使用的功能,应安排_______测试。
DA.单元B.集成C.验收D.回归4.关于数据流图不正确的描述是_________。
DA.数据流图是结构化系统分析的主要工具。
B.在数据流图中,*号标识相邻的数据流只取其一。
C.数据流图中父图与子图两者的输入和输出数据流必需一致。
D. 画DFD图的任意层次图必须都要画数据存储项(即数据表单)5获取需求的困难和项目复杂带来的潜在风险属于______.AA.技术风险B.商业风险C.项目风险D.经济风险6.软件测试不包括_________方面的差错和纠错。
DA.软件计划B.软件设计C.软件编码D.软件价格7、软件维护过程产生的副作用,是指______。
BA、开发过程中发现的错B、因修改软件而造成的错误
C、隐含的错误D、运行时误操作8.下列关于瀑布模型的描述正确的是_______。
AA.瀑布模型的核心是按照软件开发的时间顺序将问题简化。
B.瀑布模型具有良好的灵活性。
C.瀑布模型采用结构化的分析与设计方法,将逻辑实现与物理实现分开。
D.利用瀑布模型,如果发现问题修改的代价很低。
9.划分模块如果必须存在耦合,选择适当的耦合类型的错误原则是___。
DA.尽量使用数据耦合B.少用控制耦合C.限制公共耦合的范围D.允许使用内容耦合10.类是具有相同属性和相同操作的对象抽象,对象是类的_________。
CA.例证B.用例C.实例D.例外11.对于分层的DFD,父图与子图的平衡是指____。
AA.父图与子图的输人输出数据流必须相同B.子图必须继承父图的输人与输出流C.父图与子图相应的输人输出数据流名字保持一致D.子图可以有自己的输入输出数据流.12.为了定量分析项目进度,需要在制定项目进度计划时,估算每个___AA.应该完成的工作任务的预算工作量的成本B.工作任务的预算成本C.工作任务的实际工作量的成本D.实际工作任务的预算成本.13.需求分析中开发人员要从用户那里了解_____AA.用户要求软件做什么B.用户使用界面C.输入的信息D.软件的规模14.软件开发时,一个错误发现得越晚,为改正它付出的代价就_____BA.越小B.越大C.接近平均D.不可捉摸15.软件过程模型是根据不同项目定义的、贯穿于软件生命周期的___。
BA.一组关键区域B.一种开发方法C.一个过程描述D.一个开发阶段16.在瀑布模型中,将软件划分为若干个时期,软件项目的可行性研究一般归属于____。
BA.维护时期B.计划时期C.运行时期D.开发时期.17.数据字典不包括对____描述。
DA.数据加工B.数据流C.数据存储D.数据源和数据接受.18.CMM模型将软件过程的成熟度分为5个等级,以下选项中,属于可管理级的行为特征是____.BA.工作无序,项目进行过程中经常放弃当初的计划B.定量的过程管理和软件质量管理C.建立了项目级的管理制度D.软件过程中活动的生产率和质量是可度量的.19.比较理想的可重用软构件是_______。
DA.子程序库B.源代码包含文件C.对象D.类20.软件生命周期中所花费用最多的阶段是______。
DA.详细设计B.软件编码C.软件测试D.软件维护21.软件需求分析阶段的工作,可以分为以下四个方面:
对问题的识别、分析与综合、编写需求分析文档以及_____.CA.总结B.阶段性报告C.需求分析评审D.以上答案都不对22.一个成功的测试是_。
BA.发现错误B.发现至今尚未发现的错误C.没有发现错误D.证明发现不了错误.23.类是具有相同属性和相同操作的对象抽象,对象是类的_______。
CA.例证B.用例C.实例D.例外24.螺旋模型是一种重要的软件过程模型,它的主要思想是:
结合了线性顺序模型和演化模型的思想,经过“制定计划”、“_____”、“实施工程”和“客户评估”四项活动的迭代不断获得新版本。
AA.风险分析B.质量管理C.基线制定D.实施监管25.软件维护的步骤不包括______________。
AA.维护组织B.修改程序C.重新验证程序D.分析和理解程序26.在结构化程序设计中要实现任何模块的单入口单出口。
一般不允许使用控制结构是______.BA.顺序B.无条件转移C.条件分支转移D.循环27.面向对象的动态模型中,每张状态图表示_______的动态行为。
BA.有关联的若干个类B.某一个类C.一系列事件D.一系列状态28.软件需求分析是保证软件质量的重要步骤,它的实施应该是在___。
CA.编码阶段处B.软件开发全过程C.软件定义阶段D.软件设计阶段29.应该在______,确定对象类中应有的服务。
AA.建立对象模型之后B.建立动态模型之后C.建立功能模型之后D.建立动态模型和功能模型之后30.软件测试是软件质量保证的主要手段之一,测试的费用已超过_____的30%以上。
因此,提高测试的有效性十分重要.AA.软件开发费用B