软件工程复习要点
一、填空题
1.软件是与硬件相对应的一种逻辑实体,包含 程序 ,文档和数据 。
2.软件的维护具有 多样性 、 复杂性 和 副作用 特点。
3.软件工程的三要素是 方法 、 工具 和 过程 。
4.软件危机是指在软件的 开发 和 维护 过程中遇到的很多严重的问题。
5.需求管理的内容包含 变更控制 、 版本控制 ,需求跟踪和需求状态跟踪 。
6.从工程角度研究需求,称为 需求工程 。
7.获取的需求会进一步进行细化,最终得到条理化可跟踪的需求称为 需求跟踪矩阵 。
8.1NF对数据要求是 数据项不能再分 ,2NF是在1NF的基础上消除了 非主属性对于码的部分函数依赖 ,3NF是在2NF基础上消除了 非主属性对于码的传递函数依赖 。
9.HIPO图中的H代表含义是 层次图 ,I代表的含义为: 输入 ,P代表的含义是: 处理 ,O代表的含义是 输出 。
10.模块的特征有 输入/输出 , 逻辑功能 , 和 运行程序,内部数据 。
11.模块的内聚和耦合是模块独立的重要特征,在设计过程中最求尽可能 松散 的耦合和尽可能 高 的内聚;因此在设计过程中,推荐使用 数据 耦合和 功能 内聚,避免使用 内容 耦合和 偶然 内聚。
-
1966 ,Bohm等证明:只需要用 顺序 、 选择和循环 三种控制结构都能实现任何单入口单出口程序。
-
结构程序设计是采用了 自顶向下,逐步求精 的设计方法和 单入口,单出口 的控制结构的程序设计技术。
-
如果一个结点有一个入口线和两个出口线,而且它不改变程序的数据项的值,则称为 谓词结点 。
15.用户帮助的提供有 集成 和 附加 两种方式。
16.响应时间的重要属性有 长度 和 易变性 。
17.软件维护的类型有 改正性维护 ,适应性维护 、完善性维护预防性维护 。其中所占比重最大的维护是 完善性维护 。
18.非结构化维护是从评价 程序代码 开始的,而结构化维护是从评价 设计文档 开始的。
二、选择题
1.对于比较熟悉的领域,最好不选择的模型是( C )。
A.瀑布模型 B.原型模型 C.增量模型 D.W模型
2.以下对瀑布模型的阐述不正确的是( C)。
A.能很好保证推迟实现 B.能很好做到阶段性验证
C.能很好应对需求变化 D.逆转性很差
3.以下关于原型模型阐述错误的是( C )。
A.能够帮助用户充分理解未来的软件 B.可以通过原型获取准确的需求
C.能充分调动开发人员的创造性,有利于创新 D.与用户交流过于频繁
4.以下模型的开发中,要求用户最好不参与开发工作的是(A )。
A.瀑布模型 B.原型模型 C.增量模型 D.W模型
5.以下模型中,测试工作展开最早的是( D )。
A.瀑布模型 B.原型模型 C.增量模型 D.W模型
6.下列关于测试的阐述正确的是( C )
A.测试是一个证明软件中不存在缺陷的生产活动
B.测试应该尽量推迟开展,这样代码测试会更彻底
C.在设计早期某个模块的一个缺陷,随着设计的深入,会传染蔓延到其它模块
D.测试用例有点瑕疵对测试活动没有影响
7.下列关于测试的阐述不正确的是( A )
A.测试用例一旦设计完成后,就不能改变
B.软件缺陷有时会在某个模块集中出现,主要原因是修复缺陷会引入新缺陷
C.在测试过程管理中需要同时关注缺陷的预防和缺陷的检测
D.理论上说,测试中发现的缺陷越多,软件的质量越可靠
8.导致软件产生缺陷的因素有( D )
A.技术问题 B.团队协作与沟通 C.功能理解 D.以上都是
9.下列关于测试的阐述不正确的是(A )
A.回归测试就是完整的执行发现缺陷前已经执行过的测试用例
B.一般在做回归测试前,都会做冒烟测试
C.在完成大规模的正规测试后,一般都会辅助做一些随机测试
D.软件的本地化测试不仅仅是软件界面上的文字翻译,还要考虑目标环境的文化、政治、宗教等方面
10.下列关于灰盒测试的阐述不正确的是( B )
A.灰盒测试是介于白盒测试与黑盒测试之间的一种测试
B.灰盒测试设计测试用例时只考虑程序的内部结构
C.灰盒测试既关心系统的边界,同时要兼顾模块间协作
D.灰盒测试对内部模块依然把它当成一个黑盒来看待
11.下列ALAC测试的阐述不正确的是( D )
A.ALAC测试是基于模拟用户使用软件的习惯的角度出发来设计测试用例的方法
B. ALAC测试依据的原则是“二八”原则
C.ALAC测试能有效提高测试效率和收益
D.ALAC测试能够对软件所有功能进行全面彻底的测试
12.以下不属于集成测试的内容的是( B )
A.穿越模块接口的数据丢失问题
B.局部数据结构的问题
C.误差积累、误差放大问题
D.集成后能否达到预期的总体功能
13.维护除了付出巨大的人力、物力和财力外,还有很多潜在的影响,以下属于维护的潜在影响的是( D )
A.当看起来合理的要求不能及时满足时,会引起用户的不满
B.修改可能会引入新的错误,使软件质量下降
C.大量工程师从事维护工作,会影响开发工作
D.以上都有可能
- 维护工作量模型:M=P+Ke(c-d) 表明( C )
A. 生产性工作量对维护工作量影响最大
B. 文档管理对维护工作量影响最大
C. 设计、文档管理与维护人员对软件熟悉程度对维护工作量的影响最大
D. 维护人员对软件熟悉程度对维护工作量的影响最大
15.以下不是维护工作中常见的问题的是( D )
A.没有注释的代码,维护相当困难
B. 维护人员经常变化与流动,维护变得困难
C. 没有足够的文档资料,或者资料不一致,维护变得困难
D. 维护能快速提高程序员水平,有很强的挑战性,很多人愿意从事这样的工作
16.软件的可维护性的决定因素的是( D )
A. 可理解性和可测试性 B. 可修改性
C. 可移植性和可重用性 D. 以上都是
17.影响维护工作量的因素的是( D )
A. 系统大小和开发技术 B. 程序设计语言和数据库技术
C. 系统年龄和应用类型 D. 以上都是
18.预防性维护的原因是( D )
A. 旧系统的维护时,维护成本比开发成本大得多
B. 使用最新的设计理念重新设计软件体系结构,对将来的维护帮助很大
C. 如果以旧系统作为原型,能大大提高开发效率
D. 以上都是
19.如果要测试考试百分制成绩的录入,设计的测试用例为:-10、48、114,则设计测试用例的方法是( A )。
A. 等价类划分法 B. 边界值分析法 C. 逻辑覆盖法 D.基本路径法
20.如果要测试考试百分制成绩的录入,设计的测试用例为:0、0.5、65、99、100,则设计测试用例的方法是( B )。
A. 等价类划分法 B. 边界值分析法 C. 逻辑覆盖法 D.基本路径法
21.如果要测试X值的输入,15<=X<=30,设计的测试用例为:14.99、15、15.01、20、29.98、30、30.0001,则设计测试用例的方法是( B )。
A. 等价类划分法 B. 边界值分析法 C. 逻辑覆盖法 D.基本路径法
22.如果要测试X值的输入,15<=X<=30,设计的测试用例为:10、22、40,则设计测试用例的方法是( A )。
A. 等价类划分法 B. 边界值分析法 C. 逻辑覆盖法 D.基本路径法
23.以下UML图形不属于表述软件静态结构的是( C )。
A. 类图 B.用例图 C.状态图 D.部署图
24.以下UML图形不属于表述软件动态结构的是( D )。
A. 顺序图 B.活动图 C.状态图 D.部署图
三、简答题
1.简述软件的生命周期。
2.简述软件可行性分析的5个方面。
3.数据字典包括哪些?
4.简述启发规则。
5.简述数据库的设计过程
或者
6.简述软件再工程过程。
7.简述软件设计原理。
以上七道解答题可以戳此链接
或者
8.根据一学期的学习,谈谈你对软件工程学科的认识。
这一题每个人都有不同的理解,而对于我目前了解到的就是,关注我,答案自动发送。
四、综合应用
1.数据库设计
现需要开发家政服务挂历系统,系统主要功能是管理家政服务的员工,家政服务的类型,客户信息的管理,从而更好管理家政服务的提供过程。经过需求分析,现确定系统涉及的实体有员工、服务种类、客户3个实体。
经分析系统业务逻辑和要求为:员工可提供多种家政服务,每次服务可多人参与,其他业务逻辑结合现实应用分析。
根据以上叙述完成下列任务:
(1)按照需求陈述,画出总E-R图。
(2)依据E-R图,设计数据库的逻辑结构,并说明或标注出表的主码(必要时可采用关系的合并等处理方式,并给出处理说明)。
2.阅读以下伪代码,完成以下问题。
Int X,Y,Z
If X>8 and Y>5 then
if X>16 or Y>10 then
Z=3
endif
Else
If X>0 or Y>0 then
Z=2
Else
Z=1
endif
endif
阅读以上伪代码,完成下列问题:
(1)画出程序流程图。
(2)画出N-S图。
(3)画出PAD图。
(4)画出控制流图,并计算这段程序的复杂度(3种方法)。
(5)按照语句覆盖标准、判定覆盖和条件覆盖为这段程序设计测试用例。
(6)用基本路径法为这段程序设计测试用例。
(此题在背面或另附纸作答)
本题我用draw.io化成,在这儿就不解释了,可以私聊我
3.阅读以下C语言代码,其功能为在屏幕上画圆。
//画圆函数,圆心坐标是(centerX, centerY),半径是radius,圆的颜色是color
void draw_circular(unsigned int centerX, unsigned int centerY, unsigned int radius, unsigned int color)
{
int x,y ;
int tempX,tempY;;
int SquareOfR = radius*radius;
for(y=0; y<XSIZE; y++)
{
for(x=0; x<YSIZE; x++)
{
if(y<=centerY && x<=centerX)
{
tempY=centerY-y;
tempX=centerX-x;
}
else if(y<=centerY&& x>=centerX)
{
tempY=centerY-y;
tempX=x-centerX;
}
else if(y>=centerY&& x<=centerX)
{
tempY=y-centerY;
tempX=centerX-x;
}
else
{
tempY = y-centerY;
tempX = x-centerX;
}
if ((tempYtempY+tempXtempX)<=SquareOfR)
lcd_draw_pixel(x, y, color);
}for2
}for1
}
(1)画出程序流程图。
(2)画出N-S图。(先将for循环转化为do while循环)
(3)画出PAD图。(先将for循环转化为do while循环)
(4)画出控制流图,并计算这段程序的复杂度(3种方法)。
(此题在背面或另附纸作答)
else
{
tempY = y-centerY;
tempX = x-centerX;
}
if ((tempYtempY+tempXtempX)<=SquareOfR)
lcd_draw_pixel(x, y, color);
}for2
}for1
}
(1)画出程序流程图。
(2)画出N-S图。(先将for循环转化为do while循环)
(3)画出PAD图。(先将for循环转化为do while循环)
(4)画出控制流图,并计算这段程序的复杂度(3种方法)。
(此题在背面或另附纸作答)