软件工程考试简答题
1. 有人认为软件开发时,一个错误发现得越晚,为改正它所付出的代价越大。提出你的观点并解释原因?
(1)在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;
(2)在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;
(3)在软件“已经完成”时在引入变动,付出的代价更高。
2.你认为一个好的软件开发人员应该具备哪些基本素质?
(1)掌握计算机软件的基本知识和技能;
(2)善于分析综合问题,具有严密的逻辑思维能力;
(3)工作踏实细致,遵循标准和规范,具有严格的科学作风;
(4)工作有耐心、有毅力、有责任心;
(5)善于听取别人的意见,善于与周围人员团结协作,建立良好的人际关系;
(6)具有良好的书面核口头表达能力。
3.在校园里设置自动售货机是否可行,请大家说明理由。
建议自己百度
我的小意见就是要用到软件工程的思想的话就要从可行性分析去分析这个问题,经济可行性、操作可行性、法律可行性、技术可行性
4.以学生选课系统为例,谈一谈如何进行界面设计
一. 用户的帮助设施: 学生选课系统要给用户提供帮助信息,如学生选课的操作流程可以提示信息
二. 系统的响应:学生进行操作是的响应应该在0.5内,尽量在不影响用户操作体验。
三. 错误信息处理:当学生操作异常时,系统自动的给出出错提示,如选课的时候,学生选择相同的课程,可以给出重复提示。
四.命令交互:选课系统的界面应该提供良好的命令交互。例如,提供菜单项、窗口界面等。 五.输入输出:输入尽量简单,输出形式多样化。例如让学生选课的时候可以采用下拉的方式来学生来选择课程,学生的选择的课程可以采用图表形式展示。
5. 如何将数据流图映射成软件结构图?
按照我自己的思维来说我觉得就是先判断是事务流还是交换流
不管是这两种的哪一种最上面都是写这是一个什么系统
事务流的话就是分为输入和处理两个部分去画出软件结构图
交换流就是分为三个部分输入、处理、输出来画出软件结构图
在这两个部分中数据是用空心圆箭头,控制信息是用实心圆箭头、正方形用来写模块和操作
6.有人认为“软件工程过于耗费时间,并且妨碍开发人员的编程效率。”你是否认同这种观点?请阐述理由。
答:这一观点是不正确的。
软件开发远不只是编程,管理不当导致的混乱、工作重复、交流不畅等才是大多软件项目效率低下的主要原因。虽然直接编程在开发前期看来效率高,但是不完整的、不清晰的或错误的需求和设计将导致在开发后期反复地修改程序,反而降低了整个开发效率,其质量也无法保证,甚至导致软件开发最终失败的结果。
软件工程是帮助人们在有限的时间、金钱预算和人力、物力资源的约束下开发出质量尽量高的软件的一系列理论和工具,虽然它在编程之外的工作上花费了大量时间,但所耗费的时间与精力并不像其表面上所看起来的那样冗余与低效,而是从总体上做好整个体系的设计与把握,全方位地规划开发过程,对节省成本、提高效率、保证最终产品质量起到了事半功倍的作用。
7.软件工程是以系统的、可控的、有效的方式产生高质量的软件,请说明你对“高质量软件”含义的理解。
软件质量是软件产品与明确的和隐含的需求相一致的程度,它通常由一系列的质量特性来进行描述,包括正确性、可靠性、有效性、可用性、复用性、可维护性、可移植性等。例如,除了要求软件正确运行之外,人们可能还希望软件运行的响应时间符合要求、软件使用方便快捷、程序代码易于理解等,而“程序代码易于理解”往往是一种用户没有明确提出的需求,但却是影响软件演化的重要因素。
9. (简答题) 机票预定系统中涉及的状态是机票的状态。当新的航空公司入驻之后,系统管理员会向数据库中添加机票相关信息,该机票进入审核状态,当该机票审核通过后,则处于待售状态;在销售过程中,如果该机票全部销售完毕,则进入售罄状态;销售过程中,如果航班取消,机票会进入下架状态,机票售罄或下架后,管理员清空机票信息,机票会进入退出流通状态,最后管理员删除机票。请根据上述描述画出相应的状态转换图。
状态转换图的符号表示
- 初态用实心圆表示,终态用一对同心圆(内圆为实心圆)表示。
- 中间状态用圆角矩形表示,可以用两条水平横线把它分成上、中、下3个部分。上面部分为状态的名称,这部分是必须有的;中间部分为状态变量的名字和值,这部分是可选的;下面部分是活动表,这部分也是可选的。
- 状态图中两个状态之间带箭头的连线称为状态转换,箭头指明了转换方向。状态变迁通常是由事件触发的,在这种情况下应在表示状态转换的箭头线上标出触发转换的事件表达式;如果在箭头线上未标明事件,则表示在源状态的内部活动执行完之后自动触发转换。
做题的过程很简单就是看开始是什么时候,先写下开始事件到横线上,可以很好的看见题目中都会告诉你状态是什么,例如:审核状态、待售状态、售罄状态这些写在圆角矩形中
10.复印机的工作过程大致如下∶未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入│闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告,等待维修人员来排除故障,故障排除后回到闲置状态。
试用状态转换图描绘复印机的行为。
活动表也就是在状态的时候会发出什么情况
数据流图需要的东西就是四个东西:
11. (其它) 某图书馆借阅系统有如下功能:
(1)借书:根据读者的借书证查询读者档案,若借书数目未超过规定数量,则办理借阅手续,修改库存记录及读者档案,超过规定数量不予借阅。对于第一次借阅者则直接办理借阅手续。
(2)还书:根据读者书中的条形码,修改库存记录及读者档案,若借阅超过规定期限则罚款给图书管理员。
请根据要求画出该问题的数据流图。
数据流图(需求分析阶段是使用的工具)转化为软件结构图(概要设计阶段是使用的工具)有两种:
1.事务流:输入信息、处理
2.交换流:输入、处理、输出三部分
分辨方式:1.事务流一般有两个对象,而交换流只有一个对象,输出是要返回给对象的
软件结构图需要的东西:
12. (其它)某火车售票系统的数据流程图如下所示:请根据数据流图转换成软件结构图。
13.将下列数据流图转换成SC软件结构图。
分析题目:又题目可以很清楚的就知道这是一个变化流的数据流图,因为可以看到分为三个模块分别是输入、加工、输出
答案:
软件测试中基本路径测试法
1.画出流程图(根据程序写,并且要表上顺序)
2.画出控制流图(把顺序连接)
3.计算圈复杂度(小题也可能考,考的是需要几个测试用例)
- 给定流图G的圈复杂度V(G),定义为V(G)=Area,Area是流程图中的区域数量(即为封闭区域数量+1);
- 推荐:给定流图G的圈复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流 图中结点的数量;
- 给定流图G的圈复杂度V(G),定义为V(G)=P+1,P是流图G中判定结点的数量。
4.导出测试用例(把所有的路都写一次)
5.准备测试用例(每一条路写一个测试用例)
14.案例
分析下面的代码段,设计一组满足基本路径覆盖的测试用例。
案例步骤
- 分析代码,画出程序流程图;
- 根据程序流程图画出控制流图;
- 计算圈复杂度;
- 导出测试用例;
- 准备测试用例。
代码段
public void function(int x, int y, int z)
{
if ((y > 1) && (z == 0))
{
x = x/y;
}
if ((y == 2) || (x > 1))
{
x = x+1;
}
y = x + z;
}
流程图
步骤1:导出过程的控制流图:根据流程图分析结点:
(1)结点1:开始;
(2)(y>1)&&(z==0)为逻辑运算符 AND连接的复合条件表达式,需要改为单条件的判定,分解为2个结点,结点2:z==0;结点3:y>1;
(3)结点4:x=x/y;
(4)(y==2)||(x>1)为逻辑运算符 OR连接的复合条件表达式,需要改为单条件的判定,分解为2个结点,结点5:y==2;结点6:x>1;
(5)结点7:x=x+1;
(6)结点8:y=y+z
(7)结点9:结束。
步骤2:确定环形复杂性度量V(G):
(1)V(G)= 5 (个区域)[区域1:2-3-5;区域2:3-4-5;区域3:5-6-7;区域4:6-7-8;区域5:外部];
推荐(不会出错):(2)V(G)=E–N+2=12–9+2=5;其中E为流图中的边数,N为结点数;
(3)V(G)=P+1=4+1=5;其中P为判定结点的个数。在流图中,结点2、3、5、6是判定结点。
步骤3:确定基本路径集合(即独立路径集合)。于是可确定5条独立的路径:
路径1:1-2-5-6-8-9
路径2:1-2-5-7-8-9
路径3:1-2-5-6-7-8-9
路径4:1-2-3-5-6-8-9
路径5:1-2-3-4-5-6-8-9
步骤4:为每一条独立路径各设计一组测试用例,以便强迫程序沿着该路径至少执行一次。
(1)路径1(1-2-5-6-8-9)的测试条件:z≠0,y≠2,x
(2)路径2(1-2-5-7-8-9)的测试条件:z≠0,y=2;
(3)路径3(1-2-5-6-7-8-9)的测试条件:z≠0,y≠2,x>1;
(4)路径4(1-2-3-5-6-8-9)的测试条件:z=0,y(5)路径5(1-2-3-4-5-6-8-9)的测试条件:z=0,y>1&&y≠2,x
等价分类法
1.划分合理不合理等价类
输入条件
合理等价类
不合理等价类
2.写测试用例表
测试数据
测试范围
预期结果
15.变量的命名规则一般规定如下:变量名的长度不多于40个字符,第一个字符必须为英文字母,其他字母可以英文字母、数字以及下划线的任意组合。请用等价分类法设计测试用例。
判定树和判断表
1.分析需求:列出所有的条件桩(条件是什么)和条件项(一般都是T or F)
2.分析需求:列出所有组合产生的动作(情况)
3.简化判定表、树(把相同的结果合并)
16.为了节约能源,制定如下两套水费收费方案。如果选择固定费率收费,每人每月用水量少于3吨的用户,水费为5元/吨;超出的用水量,按照费率表A的费率收费。如果选择可变费率收费,则每人每月用水量少于6吨的用户,按照费率表A的费率收费,超出的用水量按照费率表B的费率收费。请用下面方法设计上述水费费用的判断过程。
(1)
条件桩
条件项
用水量
超过/不超过
收费方案
固定费率收费/可变费率收费
(2)
动作:水费为5元/吨、超出的用水量,按照费率表A的费率收费、按照费率表A的费率收费、超出的用水量按照费率表B的费率收费
收费方案
固定费率收费
固定费率收费
可变费率收费
可变费率收费
用水量
不超过
超过
不超过
超过
水费为5元/吨
T
水费为5元/吨;超出的用水量,按照费率表A的费率收费
T
按照费率表A的费率收费
T
按照费率表A的费率收费,超出的用水量按照费率表B的费率收费。
T