当前位置:问答库>考研试题

2017年江西理工大学计算机软件与理论(理学)(加试)之软件工程导论复试实战预测五套卷

  摘要

一、名词解释

1. 模块化

【答案】模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起 来构成一个整体,可以完成指定的功能满足用户的需求。模块化是为了使一个复杂的大型程序能被人的智力所管理。

二、简答题

2. 有哪些主要的软件开发方法?

【答案】主要的软件开发方法有以下几种:

(1)结构化开发方法

结构化开发方法是用系统工程的思想和工程化的方法,按用户至上的原则,结构化、模块化、自顶向下地对系统进行分析和设计的方法。它是一种面向数据流的开发方法,其基本思想是软件功能的分解和抽象。

(2)Jackson (JSP 、JSD )方法

Jackson 方法从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其它细节,就可得到完整 的程序结构图。它是一种面向数据结构的软件设计方法,对输入、输出结构明确的中小型系统特别有效。

(3)原型化开发方法

原型化开发是软件开发的一种常用方法。开发人员对用户提出的问题进行总结,就系统的主要需求取得一致 意见后,开发出一个原型并运行之,然后反复对原型进行修改,使之逐步完善,直到用户对系统完全满意为止。

(4)维也纳开发方法(VDM )

VDM 是一个基于模型的方法,它的主要思想是将软件系统当作模型来给予描述,具体说就是把软件的输入 /输出看作模型对象,而这些对象在计算机内的状态可看作为该模型在对象上的操作。

(5)面向对象的开发方法

面向对象方法(Object-Oriented Method )是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系 统方法,简称OO (Object-Oriented )方法,是建立在“对象”概念基础上的方法学。

3. 什么是软件危机?软件危机表现在哪些方面?

【答案】(1)软件危机的定义

在计算机软件的开发和维护过程中所遇到的一系列严重问题,长期找不到解决这些问题的办法,使问题逐渐积累起来,形成了尖锐的矛盾,从而导致了软件危机。

(2)软件危机的表现

①对于软件开发的成本和进度的估计很不准确。由于缺乏软件开发的经验和软件开发数据的积累,使得很难制定出合理有效的开发工作计划。

②开发的软件产品不能完全满足用户要求,用户对已完成开发的软件系统不满意的现象常常发生。

③开发的软件可靠性差。

④软件的可维护性差。

⑤软件通常没有适当的文档。

⑥软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。

4. 什么是结构化维护?结构化维护的特点是什么?

【答案】(1)结构化维护的定义

若采用软件工程的方法开发软件,则各阶段都有相应的文档,容易进行维护工作,这是一种结构化的维护。

(2)结构化维护的特点

①有软件工程思想开发的软件具有各个阶段的文档,这对于理解和掌握软件功能、性能、系统结构、数据结构、系统接口和设计约束有很大作用。

②进行维护活动时,首先从评价需求说明开始,搞清楚功能、性能上的改变,然后对设计说明文档进行评价,对设计说明文档进行修改和复查;根据设计的修改,再进行程序的变动;其后根据测试文档中的测试用例进行回归测试;最后,把修改后的软件再次交付使用。这对于减少精力、减少花费、提高软件维护效率有很大作用。

5. 什么是软件工程?简述软件工程的基本原理及软件工程的目标。

【答案】(1)软件工程的定义

①软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门学科。

②软件工程采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术 和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。

(2)软件工程的基本原理

①用分阶段的生命周期计划严格管理。

①坚持进行阶段评审。

②实行严格的产品控制。

③采用现代程序设计技术。

④结果应能清楚地审查。

⑤开发小组的人员应该少而精。

⑥承认不断改进软件工程实践的必要性。

(3)软件工程的目标

软件工程的目标是在给定成本和进程的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性、可互操作性并满足用户需要的高质量软件产品。

6. 非渐増式测试与渐増式测试有什么区别?

【答案】(1)渐增式测试和非渐增式测试的定义

集成测试的方法主要有两种:非渐増式测试和渐増式测试。

①非渐增式测试

首先对每个模块分别进行单元测试,然后再把所有的模块按设计要求组装在一起进行测试。 ②渐增式测试

逐个把未经过测试的模块组装成到已经测试的模块上去,进行集成测试。每加入一个新模块进行一次集成测试,重复此过程直至程序组装完毕。

(2)渐增式测试和非渐増式测试的区别

①非渐增式方法把单元测试和集成测试分成两个不同的阶段,前一阶段完成模块的单元测试,后一阶段完成集成测试。而渐增式测试把单元测试与集成测试合在一起,同时完成。

②非渐增式测试需要更多的工作量,因为每个模块都需要驱动模块和桩模块,而渐增式利用已测试过的模块作为驱动模块或桩模块,因此工作量较少。

③渐增式可以较早地发现进口之间的错误,非渐增式最后组装时才发现。

④渐增式有利于排错,发生错误往往和最近加进来的模块有关,而非渐増式发现进口错误推迟到最后,很难判断是哪一部分接口出错。

⑤渐增式比较彻底,已测试的模块和新的模块再测试。

⑥渐增式占用的时间较多,但非渐增式需更多地驱动模块。桩模块也占用一些时间。

⑦非渐増式开始可并行测试所有模块,能充分利用人力,对测试大型软件很有意义。

7. 应该由谁来进行确认测试?是软件开发者还是软件用户?为什么?

【答案】(1)在对照需求做有效性测试和软件配置审查时,是由软件开发者在开发环境下进

行的测试。而接下来做验收测试时则以用户为主。软件开发人员和

输出结果,一般使用生产中的实际数据进行测试。

(2)如果软件是为多个用户开发的,则需要进行a 测试和p 测试。a 测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。软件在应该

一一质量保证)人员也应参加。由用户参加设计测试用例,使用用户界面输入测试数据,并分析测试的