简答题。
1. 什么是软件工程?请分析软件工程的目标是什么?
答案:软件工程是:① 将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护过程,也就是说将工程化应用于软件开发和管理之中;② 对①中所选方法的研究”。
软件工程旨在开发满足用户需要、及时交付、不超过预算和无故障的软件,其主要目标如下:
a) 实现预期的软件功能,达到较好的软件性能,满足用户的需求。
b) 增强软件过程的可见性和可控性,保证软件的质量。
c) 提高所开发软件的可维护性,降低维护费用。
d) 提高软件开发生产率,及时交付使用。
e) 合理预算开发成本,付出较低的开发费用。
2. 什么是软件危机?软件危机表现在哪几个方面?
由于软件特点和长期以来一直没有发明一种高效的开发方法,导致软件生产效率非常低,交付期一拖再拖,最终交付的软件产品在质量上很难保障。这种现象早在20世纪60年代被定义为“软件危机”。它的具体表现如下:
a) “已完成”的软件不满足用户的需求。
b) 开发进度不能保障,交付时间一再拖延。
c) 软件开发成本难以准确估算,开发过程控制困难造成开发成本超出预算。
d) 软件产品的质量没***,运算结果出错、操作死机等现象屡屡出现。
e) 软件通常没有适当的文档资料,或文档与最终交付的软件产品不符,软件的可维护程度非常低。
3. 根据相关的法律,对于侵犯软件著作权的行为,根据情节应当给予什么处罚?
答案:对于侵犯软件著作权的行为,要根据情况承担停止侵害、消除影响、赔礼道歉、赔偿损失等民事责任;损害社会公共利益的,由著作权行政管理部门责令停止侵权行为,没收违法所得,没收、销毁侵权复制品,并处罚款;情节严重的,著作权行政管理部门可以没收用于制作侵权复制品的材料、工具、设备等;触犯刑律的,依法追究刑事责任。
4. 根据你的理解,列举出职业化软件工程师要注意的三个主要问题,请给出理由。
答案:没有唯一答案。
a) 不遵守标准和规范:职业化的重要特征是遵守行业标准,不能肆意按照自己的想象来发挥。自从人们认识到软件危机以来,总结软件开发的失败教训和成功经验,并把它们总结成为最佳实践,进而形成标准,要充分利用这些最佳实践和标准来指导软件过程。
任何闭门造车、想当然的行为都是不被提倡的,注定要走弯路。
b) 对待计划不严肃:软件工程强调计划性,计划的内容包括:设备资源、进度安排、人力资源、任务分配等等。
在项目的进行中要跟踪计划执**况,记录计划执行过程中的偏差,对任何变更都要经过评审和批准才能付诸行动。
c) 不主动与人沟通:软件不可见的特性,需要软件工程师进行大量书面的、口头的或面对面的沟通,沟通的目的是为了使相关的人员了解项目的进展、遇到的问题、应用的技术、采用的方法。
5. 软件工程为什么要强调规范化和文档化?
答案:软件工程强调规范化和文档化。规范化的目的是使众多的开发者遵守相同的规范,使软件生产摆脱个人生产方式,进入标准化、工程化的生产方式。
文档化是将软件的设计思想、设计过程和实现过程完整地记录下来,以便于后人的使用和维护,在开发过程中各类相关人员借助于文档进行交流和沟通。另外,在开发过程中产生的各类文档使得软件的生产过程由不可见变为可见,便于管理者对软件生产进度和开发过程进行管理。在用户最终验收时可以通过对提交的文档进行技术审查和管理审查,保证软件的质量。
6. 请简单说明结构化分析的主要步骤。
答案:根据用户的需求画出初始的数据流程图,写出数据字典和初始的加工处理说明(ipo图),实体关系图。以初始数据流程图为基础,从数据流程图的输出端开始回溯。
在对数据流程图进行回溯的过程中可能会发现丢失的处理和数据,应将数据流程图补充完善。对软件性能指标、接口定义、设计和实现的约束条件等逐一进行分析。系统分析人员与用户一起对需求分析的结果进行复查。
根据细化的需求修订开发计划。编写需求规格说明书和初始的用户手册,测试人员开始编写功能测试用的测试数据。
7. 设计类的属性时必须要定义是哪两项?
答案:设计类的属性时必须要定义的内容:
1) 属性的类型:设计属性时必须要根据开发语言确定每个属性的数据类型,如果数据类型不够,设计人员可以利用已有的数据类型定义新的数据类型。
2) 属性的可见性。在设计属性时要确定公有属性、私有属性、受保护属性。
8. 请简单分析顺序图和活**的区别。
答案:活**反映系统中从一个活动到另一个活动的流程,强调对象间的控制流程。活**特别适合描述工作流和并行处理过程。
具体地说活**可以描述一个操作过程中需要完成的活动;描述一个对象内部的工作;描述如何执行一组相关的动作,以及这些动作如何影响它们周围的对象;说明一个业务活动中角色、工作流、组织和对象是如何工作的。
顺序图用于描述一组交互对象间的交互方式,它表示完成某项行为的对象和这些对象之间传递消息的时间顺序。
9. 根据你的理解,为下面的数据流程图加上箭头,并把下列数据流添加到合适的位置:用户名/密码、用户输入预订信息、保存预订信息、查询预订信息、登录确认、图书信息、查询条件、查询结果。
答案:10. 请用判定表描述产品出库量的计算方法:
当库存量大于等于提货量时,以提货量作为出库量;当库存量小于提货量,但是库存量大于等于提货量的50%时,以实际库存量作为出库量;否则,出库量为0,不能提货。
答案:11. 公司为本科以上学历的员工重新安排工作,原则如下:
①如果年龄不满23岁,学历是本科,一律考研生;②如果年龄在23岁至50岁之间,学历本科,任项目经理;③如果年龄在50岁以下,学历硕士,任命为中层领导;④如果年龄超过50岁,不做调整,要求画出判定表。
答案:12. 请举例说明什么是变换型数据流程图?什么是事务型数据流程图?
答案:没有唯一答案。
变换型数据流程图。
事务型数据流程图。
13. 下面程序**,编程人员误把if ((a=2) or (x>1)) 条件写成了if ((a=2) or (x<1)),用a=2,b=0,x=3和a=2,b=1,x=1这两组测试用例不能发现错误,请你添加足够多的测试用例,以发现程序中的错误。
begin
if ((a>1) and (b=0)) then do
x:=x/a;
if ((a=2) or (x>1)) then do
x:=x+1;
end答案:用a=2,b=0,x=3测试用例可以发现错误,因为按照测试用例的预计的输出x=4,而错误的输出是x=3。
14. 面向对象的分析通常要建立三个模型,请问三个模型的作用?
答案:a)功能模型:表达系统的详细需求,为软件的进一步分析和设计打下基础。在面向对象方法中,由用例图和场景描述组成。
b)对象模型:表示静态的、结构化的系统“数据”性质。描述现实世界中实体的对象以及它们之间的关系,表示目标系统的静态数据结构。在面向对象方法中,类图是构件对象模型的核心工具。
c)动态模型:描述系统的动态结构和对象之间的交互,表示瞬时的、行为化的系统的“控制”特性。面向对象方法中,常用状态图、顺序图、合作图、活**构件系统的动态模型。
15. 面向对象的设计活动中,有构架师、用例工程师和构件师参加,他们每个角色的职责是什么?
答案:构架设计的目的是要勾画出系统的总体结构,这项工作由经验丰富的构架设计师主持完成。该活动以用例模型、分析模型为输入,生成物理构架、子系统及其接口、概要的设计类(即设计阶段定义的类)。
根据分析阶段产生的高层类图和交互图,由用例设计师研究已有的类,将它们分配到相应的用例中。检查每个用例的功能,这些功能依靠当前的类能否实现,同时检查每个用例的特殊需求是否有合适的类来实现。细化每个用例的类图,描述实现用例的类及其类之间的相互关系,其中的通用类和关键类可用粗线框区分,这些类将作为项目经理检查项目时的重点。
经过前面两个活动,构架设计师已经将系统的构架建立起来,用例设计师按照用例的功能将每个类分配给相应的用例。现在要由构件工程师详细设计每个类的属性、方法和关系。
16. qq软件的用户分为游客和登陆会员,登陆会员分为群成员和非群成员,群成员分为群主和群普通成员、群管理员,请用类的继承关系描述qq用户群。
17. 先将下列**用规范的格式重写,然后画出对应的程序流程图。
start
input x,n
dimension a(n),f(n)
do i=1 to n
input f(i)
end do
k=0do while (ka(k)=0
do j=1 to n-k
a(k)=a(k)+f(j)*f(j+k)/(n-k+1)
end do
print k*x,a(k)
k=k+1end do
stop答案:
start
input x, n
dimension a(n),f(n)
do i=1 to n
input f(i)
end do
k=0do while (ka(k)=0
do j=1 to n-k
a(k)=a(k)+f(j)*f(j+k)/(n-k+1)
end do
print k*x, a(k)
k=k+1end do
stopa) **的大小写问题 b)缩进 c)画程序流程图。
18. 修改下面的程序片段的格式,使它的可阅读性更好,并且画出该程序段的程序流程图。
while p do
if a>o then a1 else a2 endif;
s1;if b>0 then b1;
while c do s2;s3 endwhile;
else b2
endif;
b3endwhile;
答案:while p do
if a>o then
a1 else
a2 endif;
s1;if b>0 then
b1;while c do
s2;s3
endwhile;
else b2
endif;
b3endwhile;
19. 提高程序可读性有哪些招数?对你来讲比较灵验的是哪些?
答案:a) 源程序文件头说明,函数应有函数头说明,内容包括:程序标题;有关该模块功能和目的说明;主要算法说明;接口说明,包括调用形式、参数描述、子程序清单、有关数据的说明。
软件工程复习
单选填空简答思考题。1 传统的软件瀑布生命模型包括哪六个方面?需求 分析 设计 实现 交付后维护 退役2 传统瀑布生命模型的中交付后维护包括哪三种?改正性维护 适应性维护 完善性维护3 现代维护和传统维护的观点有何不同?1 传统维护的观点是先开发后维护。2 现代维护的观点是无论是在软件安装前还是安装...
软件工程复习
软件工程复习资料。备注 1.老师反复强调我们之前做过的作业要熟练掌握 需求陈述 实验课画的模型 自己画。的数据流图 2 蓝颜色的字都是老师上课补充的,还有很多需要自己去补充,欢迎修正完善。核心问题 在考试做大是要表述清楚详细,关。键词要有 问题定义 专用名词表要解决的问题是什么?达要准确,不能更改 ...
软件工程 复习
1.概念 软件危机是指在计算机软件开发 使用与维护过程中遇到的一系列严重问题。2.为什么会产生软件危机?当软件开发技术的进步不能跟上硬件技术的进步,未能满足发展的要求,致使软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。3.软件危机的表现 经费预算经常突破...