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

2017年河北大学综合卷之软件工程复试仿真模拟三套题

  摘要

一、名词解释

1. 数据字典

【答案】数据字典(DD )是用来定义数据流图中的各个成分具体含义的。它以一种准确的、无二义性的说明方 式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。

二、简答题

2. 什么是“事务流”?

【答案】若某个加工将它的输入流分离成许多发散的数据流,形成许多加工路径,并根据输入的值选择其中一个路径来执行,这种特征的DFD 称为事务型的数据流图,这个加工称为事务处理中心,如图所示。

图 事务型的数据流图

3. 试说明主动服务与被动服务的区别。

【答案】(1)主动服务

主动服务是不需要接收消息就能主动执行的服务,它在程序实现中是一个主动的程序成分,例如用于定义进程或线程的程序单位。

(2)被动服务

被动服务是只有接收到消息才执行的服务,它在编程实现中是一个被动的程序成分,例如函数、过程、例程等。

(3)区别

被动对象的服务都是被动服务,主动对象应该有至少一个主动服务。在定义服务的过程中,对于主动对象应指出它的主动服务。

4. 软件生命期各阶段的任务是什么?

【答案】(1)问题定义

问题定义阶段必须回答的关键问题是:“要解决的问题是什么?”。通过对客户的访问调查,

系统分析员扼 要地写出关于问题性质、工程目标和工程规模的书面报告,经过讨论和必要的修改之后这份报告应该得到客户的确认。

(2)可行性研究

这个阶段要回答的关键问题是:“对于上一个阶段所确定的问题有行得通的解决办法吗? ”。

可行性研究阶 段的任务是研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。

(3)需求分析

这个阶段的任务是准确地确定“为了解决这个问题,目标系统必须做什么”。这个阶段的一项重要任务是用 需求规格说明书准确地记录对目标系统的需求。

(4)总体设计

这个阶段必须回答的关键问题是:“概括地说,应该怎样实现目标系统?”。用适当的表达工具描述和分析 每种方案,推荐一个最佳方案并制定出详细计划。另一项主要任务就是设计程序的体系结构。

(5)详细设计

“应该怎样具体地实现这个系统呢? ”。详细设计阶段的任务就是把解法具体化,也就是回答:

在这个阶段将详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。

(6)编码和单元测试

这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块。程序员把详细设计的结果翻译成用选定 的高级编程语言书写的程序,并且仔细测试编写出的每一个模块。

(7)综合测试

这个阶段的关键任务是通过各种类型的测试使软件达到预定的要求。应该用正式的文档资料把测试计划、详细测试方案以及实际测试结果保存下来,作为软件配置的一个组成部分。

(8)软件维护

维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。

5. 试述软件项目计划内容。

【答案】(1)范围

对该软件项目的综合描述,定义其所要做的工作以及性能限制,它包括项目目标、主要功能、性能限制、系统接口、特殊要求、开发概述等。

(2)资源

包括人力资源、硬件资源、软件资源及其他资源。

(3)进度安排

进度安排的好坏往往会影响整个项目的按期完成,因此这一环节是十分重要的。制定软件进度与其他工程没有很大的区别,其主要的方法有:工程网络图、Gantt 图、任务资源表等。

(4)成本估算

为使开发项目能在规定的时间内完成,且不超过预算,成本估算是很重要的。软件成本估算是一门不成熟的技术,国外已有的技术只能作为我们的借鉴。

(5)培训计划

为用户各级人员制定培训计划。

6. 需求分析方法应遵循的原则是什么?

【答案】(1)必须能够表达和理解问题的数据域及功能域

数据域包括数据流(即数据通过一个系统时的变化方式)、数据内容和数据结构,而功能域反映上述三方面的控制信息。

(2)可以把一个复杂问题按功能进行分解并可逐层细化

通常软件要处理的问题如果太大、太复杂就很难理解,划分成几部分,并确定各部分间的接口,就可完成整体功能。在需求分析过程中,软件领域中的数据、功能、行为都可以划分。

(3)建模

建立模型可以帮助分析人员更好地理解软件系统的信息、功能、行为,这些模型也是软件设计的基础。

7. 需求分析有哪些特点?

【答案】(1)用户与开发人员很难进行交流

需求分析是对用户的业务活动进行分析,明确在用户的业务环境中软件系统应该“做什么”。但是在开始时,开发人员和用户双方都不能准确地提出系统要“做什么?”。由于用户和开发人员互相不了解对方的工作,又缺乏共同语言,所以在交流时存在着隔阂。

(2)用户的需求是动态变化的

对于一个大型而复杂的软件系统,用户很难精确完整地提出它的功能和需求分析性能要求。一开始只能提出一个大概、模糊的功能,只有经过长时间的反复认识才逐步明确。有时进入到设计、编程阶段才能明确,更有甚 者,到开发后期还在提新的要求。

(3)系统变更的代价呈非线性增长

需求分析是软件开发的基础。在该阶段发现一个错误,解决它需要的代价要比等到设计、编程、测试和维护阶段解决小非常多。

三、综合应用题

8. 分析预测在下列系统交付使用以后,用户可能提出哪些改进或扩充功能的要求。如果由自己来开发这些系统,在设计和实现时将采取哪些措施,以方便将来的修改?

(1)储蓄系统

(2)机票预订系统

(3)患者监护系统

【答案】(1)储蓄系统

一般大型软件的维护成本远高于开发成本若干倍,所以在设计时就应该考虑到维护成本,而且在开发过程中 应该使用标准的程序设计语言和标准的操作系统接口,可以大大提高软件的可维