2018年西安理工大学水利水电学院864软件工程考研基础五套测试题
● 摘要
一、简答题
1. 列举出几种情况下运用整体一部分结构而实现或支持的复用。
【答案】(1)在两个或更多的对象类中都有一组属性和服务描述这些对象的一个相同的组成部分。把它们分离出来作为部分对象,建立整体一部分结构,这些属性和服务就被多个类复用,从而简化了它们的描述。
(2)系统中已经定义了某类对象,在定义其他对象时,发现其中一组属性和服务与这个已定义的对象是相同的,那就不必再重复地定义这些属性与服务,只需建立它与前一类对象之间的整体一部分结构。
(3)通过整体一部分结构提取可复用构件,以支持领域范围的复用问题。如果一个对象类中有一组属性和服务描述了该对象的一个独立部分,即使从本系统看并不需这样一个部分对象,只要它是一种在本领域经常使用的对象,就可把它从整体中分离出来作为部分对象,使它的类定义成为一个应用范围较广的可复用构件。
2. 软件生命期各阶段的任务是什么?
【答案】(1)问题定义
问题定义阶段必须回答的关键问题是:“要解决的问题是什么?”。通过对客户的访问调查,系统分析员扼 要地写出关于问题性质、工程目标和工程规模的书面报告,经过讨论和必要的修改之后这份报告应该得到客户的确认。
(2)可行性研究
这个阶段要回答的关键问题是:“对于上一个阶段所确定的问题有行得通的解决办法吗? ”。
可行性研究阶 段的任务是研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。
(3)需求分析
这个阶段的任务是准确地确定“为了解决这个问题,目标系统必须做什么”。这个阶段的一项重要任务是用 需求规格说明书准确地记录对目标系统的需求。
(4)总体设计
这个阶段必须回答的关键问题是:“概括地说,应该怎样实现目标系统?”。用适当的表达工具描述和分析 每种方案,推荐一个最佳方案并制定出详细计划。另一项主要任务就是设计程序的体系结构。
(5)详细设计
“应该怎样具体地实现这个系统呢? ”。详细设计阶段的任务就是把解法具体化,也就是回答:
在这个阶段将详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。
(6)编码和单元测试
这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块。程序员把详细设计的结果翻译成用选定 的高级编程语言书写的程序,并且仔细测试编写出的每一个模块。
(7)综合测试
这个阶段的关键任务是通过各种类型的测试使软件达到预定的要求。应该用正式的文档资料把测试计划、详细测试方案以及实际测试结果保存下来,作为软件配置的一个组成部分。
(8)软件维护
维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。
3. 需求分析有哪些特点?
【答案】(1)用户与开发人员很难进行交流
需求分析是对用户的业务活动进行分析,明确在用户的业务环境中软件系统应该“做什么”。但是在开始时,开发人员和用户双方都不能准确地提出系统要“做什么?”。由于用户和开发人员互相不了解对方的工作,又缺乏共同语言,所以在交流时存在着隔阂。
(2)用户的需求是动态变化的
对于一个大型而复杂的软件系统,用户很难精确完整地提出它的功能和需求分析性能要求。一开始只能提出一个大概、模糊的功能,只有经过长时间的反复认识才逐步明确。有时进入到设计、编程阶段才能明确,更有甚 者,到开发后期还在提新的要求。
(3)系统变更的代价呈非线性增长
需求分析是软件开发的基础。在该阶段发现一个错误,解决它需要的代价要比等到设计、编程、测试和维护阶段解决小非常多。
4. 有限状态机有哪些优缺点?
【答案】(1)优点
有限状态机的优点在于简单易用,状态间的关系能够直观看到。
(2)缺点
任何时刻系统只能有一个状态,无法表示并发性,不能描述异步并发的系统。另外,在系统部件较多时,状态数随之增加,导致复杂性显著增长。
二、综合设计应用题
5. 下面叙述对一个计算机辅助设计(CAD )软件的需求:该CAD 软件接受由工程师提供的二维或三维几何图形数据。工程师通过用户界面与CAD 系统交互并控制它,该用户界面应该表现出良好的人机界面特征。几何图形数据及其他支持信息都保存在一个CAD 数据库中。开发必要的分析、设计模块,以产生所需要的输出,这些输出将显示在各种不同的图形设备上。应该适当地设计软件,以便与外部设备交互并控制它们。所用的外部设备包括鼠标、数字化扫描仪和激光打印机。
(1)进一步精化上述要求,把CAD 软件的功能分解成若干个子功能;
(2)用代码行技术估算每个子功能的规模;
(3)用功能点技术估算每个子功能的规模;
(4) 从历史数据得知,开发这类系统的平均生产率是如果软件工程师的平均
试估算开发本系统的工月薪是8000元,试估算开发本系统的工作量和成本; 如果从历史数据得知,(5)开发这类系统的平均生产率是
作量和成本。
【答案】(1)经过对需求的进一步精化,分解出软件的下述7个主要的子功能。
①用户界面及控制机制。
②二维几何图形分析。
③三维几何图形分析。
④数据库管理。
⑤计算机图形显示机制。
⑥外部设备控制。
⑦设计分析模块。
(2)为了用代码行技术估算软件规模,应该针对每个子功能都分别估计出下述3个值:乐观值(即最小规模)、悲观值(即最大规模)和可能值(即最可能规模)。然后用加权平均法计算每个子功能的规模,结果如表1所示。
表1 代码行技术的估算表
(3)使用功能点技术估算软件规模时,对软件的分解是基于信息域特性而不是基于软件功能。
①表2给出了对5个信息域特性的估计值。为了计算未调整的功能点数,假设每个信息域特