1、 武汉大学计算机学院 2008-2009 学年度第二学期 2007 级 软件工程期末考试试卷( A 卷) 专业: _ 姓名: _ 学号: _ 注意:请将所有答案均写在答题纸上,并标明题号 一单选题(共 20分,每小题 2 分) 二多选题(共 24 分,每小题 4 分) 1 2 3 4 5 6 A、 B、 C B、 C A、 B、 C、 D A、 B、 C、 D A、 B、 C、 D B、 D 三简答题(共 18 分,每小题 6 分) 1答: D 不合理 (2 分) ; 理由(4 分) 因为采用等价划分法设计测试用例时, 为了避免多个不合理的等价类交叉在一起影响测试效果,所以要求设计出的每个测试
2、用例只包含一个尚未被包含的不合理的等价类 。题中选用“ 4file_1”作为测试用例, 程序运行出错时,难以判断是由于文件名中的第一个字符不合法,还是由于其余的字符 中有不合理的字符引起的 。所以“ 4file_1”作为测试用例不合理。 2答: (2 分) 原型法更适合这个项目。 理由(4 分) 原型法的主要思想是 通过快速建立原型,启发、揭示、完善用户需求,统一用户和开发方对需求的理解 。因而 适用于对应用领域不熟悉的系统开发 , 通过和用户的反复沟通、修改、反馈,再修改、再反馈,直至准确理解需求为止,从而大大降低了由于需求问题带来的软件开发风险 。而 瀑布模型开发时,要求需求一步到位,开发
3、初期就确定下来,在进入设计之后尽量避免修改 。因为后期需求变动带来的修改,必为之付出巨大代价。所以 瀑布模型主要适用于需求很少变化、开发人员对领域很熟悉、用户使用环境稳定的系统开发 。而这个项目涉及不熟悉的领域知识,因此早期就确定并冻结全部需求是不现实的。 其次, 该项目的某些模块有类似软件可供参考,实际上就是现成的原型可供使用 。此外, 原型法具有快速开发的优势 ,而瀑布模型开发周期相对长,在“工期紧”的情况下不适用。 3答:略。 四综述题(共 16 分,每小题 8 分) 1 2 3 4 5 6 7 8 9 10 B A B C D B C B D C 1答:不正确(2 分) 理由: 首先,
4、 软件维护并非仅仅是改正程序中的错误,它还包括为了使软件适应变化了的环境而修改软件的活动,以及为了满足用户在使用软件的过程中提出的新需求而修改软件的活动,甚至包括为了提高软件未来的可维 护性或可靠性而主动地修改软件的活动。 实际上,为了消除程序中潜藏的错误而进行的改正性维护,仅 占全部维护活动的 20%左右。(4 分) 其次, “目前国外许多软件开发组织把 60%以 上的人力用于维护已有软件” , 指的是软件开发组织内人力分配的整体状况,至于具体到软件组织内的每位软件人员,则分工不同。有些人专职负责软件维护工作,他们的全部工作都花费在维护已有的软件产品的工作上,另一些人专职负责软件开发工作,他
5、们可能并不花费时间去维护已有的软件产品,还有一些人既要从事软件开发工作又要兼管软件维护工作。(1 分) 第三, 软件维护人员并非只负责维护自己开发的程序 ,通常,一名维护人员参与多个软件产品的维护工作。(1分) 2答: OO方法 提供了“对象”的概念,它把软件系统作为一系列离散的解空间对象的集合。而且,这些解空间对象与问题空间对象尽 可能一致。这些解空间对象彼此通过发送消息而相互作用,从而得到问题的解 。 采用面向对象方法开发的软件可维护性好。原因: 面向对象的软件稳定性比较好 (2 分) 传统的软件开发方法以算法为核心,开发过程基于功能分解。也就是用传统方法所建立起来的软件系统的结构紧密依赖
6、于系统所要完成的功能, 当功能需求发生变化时将引起软件结构的整体修改。事实上,用户需求变化大部分是针对功能的,所以,传统的方法建立起来的软件系统不稳定。 面向对象软件系统的结构是 根据问题领域结构的模型 建立起来,而 不是基于功能的分解 。所以,当 系统的功能需求变化时 ,并不会引起结构的整体变化, 只需局部性修改 。例如,可以从已有类派生出新的子类来实现功能扩充或修改,等。所以,以对象为中心构造的软件系统是比较稳定的。 面向对象的软件比较容易修改 (2 分) 面向对象方法所使用的对象中,操作和数据是相辅相成的, 对象具有很强的自含性 。另外,对象所固有的封装性和信息隐藏机制,使得 对象的内部
7、实现与外界隔离,具有较强的独立性 。另外,继承性机制使得子类不仅可以重用其父类的数据结构和程序代码,而且还可以 在父类代码的基础上方便地修改和扩充,而且这种修改不会影响对原有类的使用 。因而在面向对象方法下,软件的修改比较容易。 面向对象的软件比较容易理解 (2 分) 面向对象的设计方法的基本原理是:是 按照人们习惯的思维方式建立问题域的模型 ,开发出尽可能直观、自然地表现求解方法的软件系统。面向对象系统中广泛使用的对象,实际上是一种抽象数据类型的实例(数据抽象和过程抽象) 。另外, OO 方法中 通过建立类等级来获得继承特性,支持从一般到特殊的演绎思维过程 。这些 符合人们认识客观世界解决复杂问题时逐步深化的渐进过程 。因而面向对象方法建立的 软件系统的结构和问题空间的结构基本一致 ,易于理解。 面向对象的软件易于测试和调试 (2 分) 面向对象的软件的测试和调试工作 主要围绕新派生出来的类进行的 , 类是独立性很强的模块,对类的测试比较容易实现 ,如果发现 错误也往集中在类的内部,比较容易调试 。 五应用题(共22 分) 1答:数据流图需要画出处理:检验取款单与存折、登录储户存款数据库、修改存款数据、更新账卡、发出付款通知 数据字典需要定义:存折、取款单、反馈问题、账卡、储户存款数据库、付款通知 2答:与数据流图功能相一致。