软件工程复习题(简答题) 下载本文

软件工程复习题(简答题)

五、简述题:

1,软件产品具有与硬件产品完全不同的特征是: 答:

(1)软件是一种逻辑实体,具有抽象性,我们可以把它们存储在介质上,但却不能直接看到软件的形态,因而必须通过运行,观察、分析、思考、判断才能了解软件的功能、性能及其他特性。软件产品具有明显的非可视性。

(2)软件的生产和硬件生产不同。软件是由开发或工程化而形成的,不是传统意义上的制造过程生产的。硬件在生产过程当中仍然可能引入质量问题,这种问题在软件生产中几乎是不存在的。软件的开发成本集中在开发过程上,硬件生产成本主要表现在原材料的消耗上。 (3)软件产品不会磨损。软件产品也会出现故障,所不同的是硬件产品的故障主要来自于外界条件造成的部件磨损或老化,软件故障都是由于设计开发过程中的隐患造成的,硬件故障通过更换零件来解决故障,软件则是通过软件维护修改来排除故障。 2、软件危机的具体表现是: 答:

(1)软件开发没有真正的计划性,对软件开发进度和软件开发成本的估计不准确,计划制定盲目、工期超时、成本失控。

(2)对软件需求信息获取不充分,产品不能满足用户的实际需求。 (3)缺乏良好的软件质量评测手段,导致软件质量不能保证。

(4)对可理解性、可维护性理解不够,产品可复用性和可维护性不如人意。

(5)软件开发过程没有实现规范化,缺乏必要的文档资料或这文档资料不合格、不准确、难以进行专业维护。

(6)软件开发的人力成本持续上升。

(7)缺乏自动化软件开发技术,软件开发生产率低下,不能满足急剧增长的需求。 3、产生软件危机的原因: 答:

从客观上来看,软件生产不同于硬件,它的生产过程和产品都具有明显的“不可视”特征,这就导致在完成编码并且运行之前,对软件开发过程的进展情况较难衡量,软件产品的质量也难进行先期评价,因此对软件开发过程进行管理和控制比较困难。

软件运行过程中发现错误,必然是遇到了在开发时期引入的,在检测过程中没有检查出来的故障。对这些故障的修改,就有可能修改早期的分析结果和设计结果,并调整编码。由于软件的不可视性,在客观上造成了软件难以维护的结果。

从主观上来看,忽视软件需求分析的重要性,忽视软件的可理解性,文档不完备,轻视软件的可维护性,过分强调编码技巧等。

4、简述软件“生命周期”三个阶段的主要工作: 答:

软件定义阶段,主要进行软件项目策划、可行性研究和软件需求分析工作,通过和用户交流,了解软件必须完成什么工作,和用户达成共识。

软件开发阶段,主要对软件的体系架构、数据结构和主要算法进行设计和编码实现。对于编码结果进行规范化测试之后,才能交付使用。

软件运行与维护阶段,分析和设计阶段遗留的问题和缺陷可能会逐步暴露出来,运行环境的变化也会对软件提出变更的要求,用户新的需求的提出常常要求扩充现有的软件功能和

改进性能。

5,解决软件危机的途径有: 答:

(1)从管理层面上考虑,应注意推广和使用在实践中总结出来的开发软件的成功的技术和方法,并且探索更好的、更有效的技术和方法,注意积累软件开发过程中的经验数据,逐步消除早期形成的错误的概念和做法。建立适合于本组织的软件工程规范;指定软件开发各个环节流程文件、工作指南和阶段工作产品模板;实施针对软件开发全过程的计划跟踪和质量管理活动;为每一项工程开发活动建立配置管理库;实施严格的产品基线管理斌建立组织的软件过程数据库和软件财富库;为各类员工及时提供必要的培训等。

(2)从技术层上考虑,应该开发和使用更好的软件开发工具,提高软件开发效率和开发工作过程的规范化程度。在计算机软件开发的各个阶段,都有大量的繁琐重复的工作要做,应该有适当的工具帮助完成。 6、软件工程的七项基本原则: 答:

(1)用分阶段的生命周期计划严格管理软件工程过程。 (2)坚持在软件工程过程中进行阶段性评审。 (3)实行严格的产品控制。

(4)采用现代化的开发技术进行软件的设计与开发。 (5)工作结果应该是能够清楚地审查的。 (6)开发小组的人员应该“少而精”。

(7)承认不断改进软件工程实践的必要性。 7、一个良好的软件工程过程应当具备的特点: 答:

(1)易理解性。 (2)可见性。 (3)可支持性。 (4)可接受性。 (5)可靠性。 (6)健壮性。 (7)可维护性。 (8)高效率。

8,软件工程过程所包含的基本的过程活动: 答:

(1)软件规格说明:规定软件的功能、性能及运行限制。

(2)软件开发:产生满足规格说明的软件,包括设计与编码等工作。 (3)软件确认:确认软件能够满足客户提出的要求,对应于软件测试。

(4)软件演进:为满足客户的变更要求,软件必须在使用的过程中演进,以求尽量延长软件的生存周期。

9,一个良好软件工程过程的特点: 答:

(1)易理解性:在软件工程过程的每一个环节上使得设计人员、开发人员、用户能够充分理解其含义和目的。

(2)可见性:每个过程都以得到明确的结果而告终,保证过程的进展对外可见。 (3)可支持性:容易得到CASE的支持。

(4)可接受性:比较容易被软件工程师接受和使用。

(5)可靠性:不会出现过程错误,或者出现的过程错误能够在产品出错之前被发现。 (6)健壮性:不受意外发生问题的干扰。

(7)可维护性:过程可以根据开发组织的需求的改变而改进。

(8)高效率:从给出软件规格说明开始,能够较快地完成开发而交付使用。 10、线性顺序模型的优缺点: 答:

它提供了一个模板,使得分析、设计、编码、测试与维护工作可以在该模板的指导下有序展开,避免了软件开发、维护过程中的随意性。采用这种模型曾成功地进行过许多大型软件工程的开发。直到目前,对于需求确定、变更较少的项目,线性顺序模型仍然是一种可以考虑采取的过程模型。

11、使用原型法必须具备的两个前提: 答:

(1)用户必须积极参与原型的建造,同时开发者和用户必须有共识:建造原型仅是为了定义需求,之后就必须全部抛弃,实际的软件必须考虑到软件的质量和可维护性之后才能开发。 (2)必须有快速开发工具可供使用。 12、软件成分重用的意义: 答:

(1)需求分析在软件工程中的地位举足轻重。一个完善的需求分析将指导我们走向成功之路,反之,错误的分析必将导致项目的彻底失败。在大部或局部雷同的项目中重复地使用已经被前驱项目证明是正确的部分分析结果,是提高分析工作效率、保证分析成功的一种有效的方法。

(2)设计结果重用在开发类同项目的软件,尤其是在软件移植过程中能够极大地减少工作量,提高工作效率。

(3)代码重用是最直接的重用,包括基于“宏”的重用,基于函数库的重用和基于继承的重用。

13、采用框架技术进行软件开发的主要特点: 答:

(1)领域内的软件结构一致性好; (2)建立了更加开放的系统;

(3)重用代码大大增加,软件生产效率和质量得到了提高; (4)软件设计人员要专注于对该领域的了解,使需求更充分;

(5)存储了经验,可以让经验丰富的人员去设计框架和领域构件,而不是设计低级编程; (6)允许采用快速原型技术;

(7)有利于在一个项目内多人协同工作;

(8)大粒度的重用使得平均开发费用降低,开发速度加快,开发人员减少,维护费用降低,而参数化框架使得适应性,灵活性增强。

14、计算机系统工程师在选择硬件元素时,应当考虑的特性: 答:

(1)从集成化的角度考虑,对各种元件打包形成单独的构件块。 (2)各个元件/构件块之间尽量采用标准接口。 (3)性能、成本、有效性相对比较容易确定。 (4)尽量提供多种可供权衡选择的硬件方案。 15、系统分析的目标: