软件工程复习提纲答案连同实验答案.docx
《软件工程复习提纲答案连同实验答案.docx》由会员分享,可在线阅读,更多相关《软件工程复习提纲答案连同实验答案.docx(14页珍藏版)》请在冰豆网上搜索。
软件工程复习提纲答案连同实验答案
软件工程复习提纲
第1章概述
1、什么是软件危机?
产生软件危机的主要原因?
P3
软件危机是指计算机软件的开发和维护过程中所遇见的一系列严重问题
出现软件危机的主要原因是人们在开发软件时使用了错误的方法
2、软件工程的定义?
P5
软件工程是指导计算机软件开发与维护的工程学料,它采用工程的概念,原理、技术和方法来开发与维护软件
3、软件生命周期定义,八个阶段,及基本任务是什么?
P10
软件生命周期是指一个软件从定义、开发、使用和维护,直到最终被废弃,经历了一个漫长的时期。
八个阶段为问题定义(关键问题是:
“要解决的问题是什么?
”);可行性研究(用最小的代价在尽可能短的时间内确定问题是否解决);需求分析(仍然不是具体地解决客户的问题,而是准确地回答“目标系统必须做什么”这个问题);概要设计(概括地回答“怎么实现目标系统?
”这个问题);详细设计(还不是编写程序,而是设计出程序的详细规格说明);编码和单元测试(写出正确的容易理解、容易维护的程序模块);综合测试(通过各种类型的测试(及相应的调试)使软件达到预定的要求);软件维护(通过各种必要的维护活动使系统持久地满足用户的需求)
4、螺旋模型:
综合了瀑布模型和快速原型的优点,并增加了风险分析
5、5种模型的特点。
瀑布模型具有三个特点:
1阶段间具有顺序性和依赖性2推迟实现的观点3质量保证的重点
快速原型模型是不带反馈环的,软件产品的开发基本上是线性顺序进行的
增量模型也称为渐增模型,使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。
每一个构件由多个相互作用的模块构成,并且能够完成特定的功能
螺旋模型综合了瀑布模型和快速原型的优点,并增加了风险分析
喷泉模型
第2章结构化分析
1、可行性分析主要是进行哪三个方面的分析?
P23
技术可行性、经济可行性和操作可行性
2、结构化分析主要建立什么模型?
P32
主要建立功能模型(数据流图)、数据模型(ER图)和行为模型(状态图)
3、E-R关系图包含什么信息?
P40
包含着实体(客观世界中存在的且可相互区分的事物)、联系(客观世界中的事物彼此间往往是有联系的)和属性(实体或联系所具有的性质)
4、什么是数据流图?
P41
数据流图(DFD)是一种形象直观的图形,它描绘数据在软件中从输入移动到输出的过程中所经受的变换(即加工处理)
5、会画简单的实体联系图、系统流程图、数据流图?
P42
6、什么是数据字典?
P47
数据字典是描述数据的信息的集合,是对目标系统中使用的所有数据的定义的集合
7、结构化分析的策略是自顶向下逐步求精。
8、与用户沟通主要有那三种方法。
主要有访谈、简易的应用规格说明技术和原型系统
9、CASE计算机辅助软件工程CASE:
是借助于计算机及其软件工具的帮助,开发、维护、管理软件产品的过程,其目的是为了加快系统开发的过程,提高所开发系统的质量。
第3章结构化设计
1、结构化软件设计准则,什么是模块化?
P81
模块化就是把程序划分成独立命名且独立访问的模块,每个模块完成一个子功能,这些模块集成起来构成一个整体
2、什么是耦合?
P84
耦合是对一个软件结构内不同模块之间互连程度的度量
3、模块的耦合性包括哪些类型?
按从低到高怎么排列?
什么是控制耦合?
P84-85
包括非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、公共耦合和内容耦合。
尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,坚决避免使用内容耦合
如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合
4、什么是内聚?
P85
内聚是一个模块内的各个元素彼此结合的紧密程度
5、模块的内聚性包括哪些类型?
按从低到高怎么排列?
什么是顺序内聚?
P85-86
包括偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚和功能内聚
以上从右到左。
如果一个模块内的处理元素和同一功能密切相关,而且这些处理必须顺序执行(通常一个处理元素的输出数据作为下一个处理元素的输入数据),称为顺序内聚
6、结构化设计启发规则,什么是深度、宽度、扇出、扇入、模块的控制域、作用域?
P87
深度表示软件结构中控制的层数;宽度是软件结构内同一个层次上的模块总数的最大值;扇出是一个模块直接控制(调用)的模块数目;扇入是有多少个上级模块直接调用着它;模块的控制域是这个模块本身以及所有直接或间接从属于它的模块集合;模块的作用域定义为受该模块内一个判定影响的所有模块的集合
7、按数据流的类型,结构化设计方法有两种设计策略,它们是变换分析设计和事务分析设计
8、划分模块时,尽量做到高内聚低耦合,保持模块的独立性。
9、详细设计的三个任务。
过程设计、数据设计和接口设计
10、界面设计应该考虑的四个问题。
1模块化与模块独立2抽象3逐步求精4信息隐藏
11、程序流程图、盒图、PAD图、判定表、判定树、伪码的使用及转化。
第4章结构化实现
1、以G。
J。
Myers的观点,简述软件测试的目的?
P172
⑴测试是为了发现程序中的错误而执行程序的过程
⑵好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案
⑶成功的测试是发现了至今为止尚未发现的错误的测试
2、软件测试准则P174
所有测试都应该能够追溯到用户需求
应该在开始测试之前预先制定出测试计划
在软件测试过程中应该应用Pareto原理
应该从“小规模”测试开始,逐步过渡到“大规模”测试
穷举测试是不可能的
为了达到最佳的测试效果,应该由独立的第三方来从事测试工作
3、什么是黑盒测试法和白盒测试法?
P175、186
白盒测试方法是按照程序内部预期应有的逻辑测试程序,检验程序中的每条执行通路是否能按预定要求正确工作
黑盒测试让软件工程师设计出能充分检查程序所有功能需求的输入条件集
4、逻辑覆盖。
逻辑覆盖是对一系列测试过程的总称,这组测试过程逐渐进行越来越完整的通路测试
5、白盒测试、黑盒测试的种类是什么?
P186-190
白盒测试的种类:
逻辑覆盖和控制结构测试
黑盒测试的种类:
等价划分、边界值分析和错误推测
6、等价分类法的基本思想是什么?
P186-187
首先把程序的输入域划分成若干个数据类,然后根据划分出的输入数据种类设计测试用例
7、什么是集成测试?
P195
集成测试是测试和组装软件的系统化技术,在把模块按照设计要求组装起来的同时进行测试,主要目标是发现与接口有关的问题
8、集成测试阶段,渐增式与非渐增式测试有哪些区别?
P195
先分别测试每个模版,再把所有模块按设计要求放在一起结合成所要程序,这种方法称为非渐增式测试。
把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试,这种每次增加一个模块的方法称为渐增式测试。
非渐增式测试一下子把所有模块放在一起,并把整个程序作为一个整体来进行测试。
渐增式测试与“一步到位”的非渐增式相反,把程序划分成小段来构造和测试。
9、测试步骤。
单元测试、集成测试、确认测试和验收测试
10、α测试与β测试的差别。
α测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试;β测试由软件的最终用户们在一个或多个客户场所进行。
11、错误总数的估算。
第5章面向对象方法学部分
1、简述面向对象方法学的主要优点?
P264
1与人类习惯的思维方法一致2面向对象软件稳定性好3面向对象软件可重用性好4较易开发大型软件产品5可维护型好
2、什么是脚本、对象、类、实例、消息、方法、属性、继承、封装、多态、重载、动态联编、静态联编?
P226-229
脚本是指系统在某一执行期间内出现的一系列事件
在应用领域中有意义的、与所要解决的问题有关系的任何事物都可以作为对象(Object)
“类”就是对具有相同数据和相同操作的一组相似对象的定义
实例就是由某个特定的类所描述的一个具体的对象。
消息,就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明
方法,就是对象所能执行的操作,也就是类中所定义的服务
属性,就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象
继承是指能够直接获得已有的性质和特征,而不必重复定义它们
封装就是把某个事物包起来,使外界不知道该事物的具体内容
多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象
有两种重载:
函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;运算符重载是指同一个运算符可以施加于不同类型的操作数上面。
编译程序在编译阶段并不能确切知道将要调用的函数,只有在程序执行时才能确定将要调用的函数,为此要确切知道该调用的函数,要求联编工作要在程序运行时进行,这种在程序运行时进行联编工作被称为动态联编。
在编译时所进行的这种联编又称静态束定,在编译时就解决了程序中的操作调用与执行该操作代码间的关系
3、喷泉模型中喷泉一词体现了什么特性?
P232
“喷泉”这个词形象地表明了面向对象软件开发过程迭代和无缝的特性
4、简述三种面向对象模型的主要功能?
P231
对象模型(描述系统数据结构)、动态模型(描述系统控制结构)和功能模型(描述系统功能)
5、对象与对象之间的关系(关联、聚集、泛化)(理解)P235-240
关联关系表示两类对象之间存在着某种语义上的联系,也就是对象之间有相互作用、相互依靠的关系
聚集表示一类对象与另一类对象之间的关系,是整体与部分的关系
泛化关系,就是通常所说的继承关系,它是通用元素和具体元素之间的一种分类关系,表明在通用元素(类)和具体元素(类)之间存在一般与特殊的关系。
第6章软件维护
1、软件维护是定义?
软件维护有那些类型。
所谓软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程
包括修正性维护、适应性维护、完善性维护和预防性维护
2、软件维护的代价比例。
完善性维护占全部维护活动的50%~66%,改正性维护占17%~21%,适应性维护占18%~25%,其他维护活动只占4%左右
3、决定软件维护性的因素。
1可理解性2可测试性3可修改性4可移植性5可重用性
4、逆向工程的定义。
软件的逆向工程就是分析程序以便在源代码更高的抽象层次上创建出该程序的某种表示的过程
第7章软件项目管理
1、CMM的五个等级是什么?
初始级、可重复级、已定义级、已管理级和优化级
2、质量保证。
软件质量保证是在软件过程中的每一步都进行的“保护性活动”
实验
实验2:
请根据P76习题3,绘制E-R图描绘本系统中的数据对象。
实验3:
数据流图
为方便旅客,某航空公司拟开发一个机票预订系统,旅行社把预订机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地等)输入该系统,系统为旅客安排航班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统校对无误即印出机票给旅客。
请用数据流图描绘本系统中的功能。
软件工程实验4:
根据下面学生成绩单管理的数据流图完成软件结构图。
学生成绩单管理的第一级分解
:
学生成绩单管理的第二级分解:
软件工程实验5:
1:
把P108页程序流程图用PAD图描述。
2:
完成P166页习题9第一小问,用判定表表示手续费的计算。
6A:
软件测试
根据所给源程序及该程序的可执行程序,画出程序的控制流程图,设计相应的测试用例并执行之,要求达到100%条件覆盖(判定中的各个条件的所有可能结果至少出现一次)。
根据输入的年份判断是否为闰年。
#include"stdafx.h"
intisleapYear(intyear){
intisLeapYear;
if(year%4==0&&(year%100!
=0||year%400==0))
isLeapYear=1;
else
isLeapYear=0;
returnisLeapYear;
}
Int_main(intargc,_TCHAR*argv[])
{
intyear;
scanf(“%d”,&year);
if(isLeapYear(year)==1)
printf(“true”);
else
printf(“false”);
printf(“\n”);
}
测试用例:
输入year:
输出:
覆盖路径:
1300trueS1,S3,S4,S5,S7,S2,S8,S10
400trueS1,S3,S4,S5,S7,S2,S8,S10
66falseS1,S3,S4,S6,S7,S2,S9,S10
424falseS1,S3,S4,S6,S7,S2,S9,S10
软件工程实验6B:
软件测试
根据所给C语言源程序
软件工程实验7
1:
一台微机有一个显示器,一个主机,一个键盘,一个鼠标。
主机包括一个机箱,一个主板,一个电源,存储器等部件。
存储器又分为固定存储器、活动存储器,固定存储器又分为内存和硬盘,活动存储器又分为软盘和光盘。
用面向对象方法,建立微机的对象模型。
第一部分:
选择题(20*1.5)
第二部分:
填空题(10*2)
第三部分:
名词解释(4*3)
第四部分:
简答题:
(4*4)
第五部分:
综合题:
(6+6+10=22)