问答题 一、 软件生命期各阶段的任务是什么? 答: 软件生命期分为 7 个阶段: 1) 问题定义: 确定要解决的问题是什么; 2) 可 行性研究: 确定问题是否值得解, 技术可行性、 经济可行性、 操作可行性; 3) 需求分析: 确定该系统必须做什么; 4) 总体设计: 确定系统如何实现, 包括系 统设计和结构设计; 5) 详细设计: 具体实现设计的系统; 6) 实现: 编码和测试; 7)运行维护: 保证软件正常运行。 二、 如何理解模块独立性? 用什么指标来衡量模块独立性? 答: 模块独立的概念是模块化、 抽象、 信息隐蔽和局部化概念的直接结果。 模块的独立性很重要: 第一, 有效的模块化(即具有独立的模块) 的软件比 较容易开发出来。 第二, 独立的模块比较容易测试和维护。 模块的独立程度能 够由两个定性标准度量, 分别是内聚和耦合。 内聚衡量一个模块内部各个元素彼 此结合的紧密程度; 耦合衡量不同模块彼此之间互相依赖(连接)的紧密程度。 三、 软件重用的效益是什么? 答: 1) 软件重用能够显著地改进软件的质量和可靠性; 2) 软件重用能够极大 地提高软件开发的效率; 3) 节省软件开发的成本,避免不必要的重复劳动和 人力、财力的浪费。 四、 需求规约的作用是什么? 答: 需求规约的作用可概括为以下 4 点: 1) 需求规约是软件开发组织和用户之 间一份事实上的技术合同书, 是产品功能及其环境的体现。 2) 对于项目的其余 资料仅供参考 大多数工作, 需求规约是一个管理控制点; 3) 对于产品/系统的设计, 需求规 约是一个正式的、 受控的起始点; 4) 需求规约是创立产品验收测试计划和用户 指南的基础。 五、 简述建模过程及步骤? 答: 为了支持系统地使用信息来创立系统功能模型, 结构化分析方法给出了建模 的基本步骤, 该过程属于“自顶向下, 功能分解” 形式。 1. 建立系统环境图, 确定系统语境; 2. 自顶向下, 逐步求精, 建立系统的层次数据流图; 3. 定义数 据字典; 4. 描述加工。 六、 简述 RUP 中迭代增量式开发的概念以及规定的开发阶段。 答: RUP 中迭代增量式开发是指经过开发活动的迭代, 不断产生相应的增量。 1) 初始阶段; 2) 精化阶段; 3) 构造阶段; 4) 移交阶段 七、 简述结构化方法总体设计的任务。 答:结构化设计方法是将应用软件设计过程划分为总体设计和详细设计两个阶段。 总体设计的主要任务是要确定软件的整体结构, 其具体的任务是: 1) 将系统或 子系统分解为多个模块; 2) 确定模块之间传送的数据及其调用关系; 3) 评价 并改进模块结构的质量。 八、 简述变换设计与事务设计的区别及联系。 答:变换设计是在需求规约的基础上, 经过一系列设计步骤,将变换型数据流图 转换成系统的模块结构图。 其基本步骤是: 1. 设计准备——复审并精化系统模 型; 2. 确定输入、 变换、 输出这三部分之间的边界; 3. 第一级分解——系统 模块结构图顶层和第一层的设计; 4. 第二级分解——自顶向下, 逐步求精; 当 数据流图具有明显的事务型特征时, 也就是有一个明显的事务处理中心时, 则比 较适宜采用事务设计。 事务设计的基本步骤和变换设计大致相同。 事务设计的基本步骤如下: 1. 设计 准备——复审并精化系统模型; 2. 确定事务处理中心; 3. 第一级分解——系 统模块结构图顶层和第一层的设计; 4. “第二级分解” ——自顶向下, 逐步求 精。 九、 简述 CMMI 成熟度等级的概念、 划分及组成。 答: 成熟度等级是指达到预先定义的一组过程域所有目标的一种过程改进等级。 在 CMMI 中, 应用于一个组织过程改进的成熟度等级有 5 个: 1级: 初始级; 2 级: 以管理级; 3 级: 以定义级; 4 级: 以定量管理级; 5 级: 持续优化级; 十、 什么是状态? 什么是状态图? 简述实际应用中只用状态图的作用。 答: 状态是类目的一个实例在其生存中的一种条件或情况; 期间该实例满足这一 条件, 就执行某一活动或等待一个消息。 状态图是现实状态机的图, 强调从一个 状态到另一个状态的控制流。 从实际使用中状态图的作用: 创立一个系统的动态 图和创立一个场景的模型。 十一、简述详细设计任务及各阶级的目标。 答: 概要设计已经确定了每个模块的功能和接口, 详细设计的任务就是为每个模 块设计其实现的细节。详细设计阶段的根本目标是确定应该怎样具体地实现所要 求的系统, 得出对目标系统的精确描述。 详细设计阶段的内容为每个模块进行详 细的算法设计。 为模块内部的数据结构进行设计。 对数据库进行物理设计。 其它 详细设计工具主要包括程序流程图(系统流程图) 、盒图(N-S 图)、 PAD 图和伪 码(PDL)。 资料仅供参考 十二、简述测试与软件开发各阶段的关系。 答:测试与软件开发各阶段的关系 单元测试对程序中每一个程序单元进行测试, 检查各个模块是否争取实现规定的功能, 从而发现模块在编码中或算法中的错误, 该阶段涉及编码和详细设计文档。 集成测试是为了检查与设计相关的软件体系 结构的有关问题, 也就是检查概要设计是否合理有效。 确认测试主要是检查已 实现的软件是否满足需求规格说明书中已确定了的各种需求。 系统测试是把已 确认的软件与其它系统元素(如硬件, 其它支持软件、 数据、 人工等) 结合在一 起进行测试, 以确定软件是否能够支付使用 十三、软件质量与软件质量保证的含义是什么? 答:软件质量定义为: 与所确定的功能和性能需求的一致性;与所成文的开发标 准一致性; 与所有专业开发的软件所期望的隐含特性的一致性。 而软件质量保证 就是向用户及社会提供满意的高质量的产品, 确保软件产品从诞生到消亡为止的 所有阶段的质量的活动, 即确定、 达到和维护需要的软件质量而进行的所有有计 划、 有系统的管理活动。 十四、什么是数据流图? 其作用是什么? 其中的基本符号各表示什么含义? 答: 数据流图简称 DFD, 是 SA 方法中用于表示系统逻辑模型的一种工具。 它以图形的方式描述数据在系统中流动和处理的过程, 由于它只反映系统必 须完成的逻辑功能, 因此它是一种功能模型。数据流图有四种基本图形符号: “→” 箭头表示数据流;“○” 圆或椭圆表述加工;“=” 双杠表示数据存储;“” 方框表 示数据的源点或终点。 十五、软件维护的特点是什么? 答: 软件维护主要体现在三个方面: 1.非结构化维护和结构化维护。 软件的开发过程对软件的维护有很大的影响。 若不采用软件工程的方法开发软件, 则软件只有程序而无文档, 维护工作非常困 难,这是一种非结构化的维护。 若采用软件工程的方法开发软件, 则各阶段都有 相应的文档, 容易进行维护工作, 这是一种结构化的维护。 2.维护的困难性。 软件维护的困难性是由于软件需求分析和开发方法的缺陷。 软件生存周期中的开发阶段没有严格而有科学的管理和规划, 就会引起软件运行 时的维护困难。 3.软件维护的费用。 软件维护的费用在总费用中的比重是在不断增加的, 这 是软件维护有形的代价。 另外还有无形的代价, 即要占用更多的资源。 软件维护 费用增加的主要原因是软件维护的生产率非常低。 十六、 对软件开发环境的基本要求有哪些? 答: 对软件开发环境的基本要求有以下几点: ⑴软件开发环境应是高度集成的 一体化的系统; ⑵软件开发环境应具有高度的通用性; ⑶软件开发环境应易于定 制、裁剪或扩充以符合用户要求, 即软件开发环境应具有高度的适应性和灵活性; ⑷软件开发环境不但可应用性要好, 而且是易使用的、 经济高效的系统; ⑸软件 开发环境应有辅助开发向半自动开发和自动开发逐步过渡的系统 十七、制定软件项目进度表有哪两种途径。 答: 制定软件项目进度表有下列两种途径: 软件开发小组根据提供软件产品的最 后期限从后往前安排时间;软件项目开发组织根据项目和资源情况制定软件项目 开发的初步计划和交付软件产品的日期。 十八、简述说明结构化分析和面向对象分析的区别? 答:结构化分析建模的目标是创立各种表现形式, 以描述软件信息、 功能和行为 资料仅供参考 的需求 。 为实现这一目标, 可采用结构化分析和面向对象分析方法。 结构化分 析把软件看作信息装换器, 辅助软件工程师识别数据对象、 对象间的联系以及这 些数据对象流经软件处理功能时转换的方式。而面向对象分析就是检查定义为一 组用例的问题域, 尽量提取定义问题的类。 十九、一个良好的设计类需要满足四个特点, 请详细描述这四个特点? 答: 一个良好的设计类需要满足四个特点: 1) 完整性和充分性: 2) 原始性; 3) 高内聚性; 4) 低耦合性。 二十、简述模块独立性的原则。 答: 模块独立性是指软件系统中每个模块只涉及软件要求的具体子功能, 而和软 件系统中其它的模块接口是简单的, 模块独立性的概念是模块化、 抽象、 信息隐 蔽和局部话概念的直接结果, 由耦合和内聚 2 个标准度量。 二十一、 简述文档在软件工程中的作用。 答: 文档在软件工程中的作用如下: 1、 提高软件开发过程的能见度; 2、 实现 对软件开发的工程管理; 3、 提高开发效率; 4、 作为开发人员在一定阶段的工 作成果和结束标志; 5、 提供软件运行、 维护和培训有关资料; 6、 记录开发过 程中有关信息便于协调以后的软件开发使用和维护;7、便于用户了解软件功能、 性能。 二十二、 衡量模块独立的两个标准是什么? 它们各表示什么含义? 答: 两个定性的度量标准: 耦合与内聚性。 耦合性指软件系统结构中各模块间相互联系紧密程度的一种度量, 模块之间 联系越紧密, 其耦合性就越强, 模块的独立性则越差。 内聚性指模块的功能强度的度量, 即一个模块内部各个元素彼此结合的紧密 程度的度量, 模块内元素联系越紧密, 内聚性越高。 二十三、 简述白盒测试的思想, 并列举两种典型的测试技术。 答:白盒测试又称结构测试, 它把测试对象看作一个透明的盒子。 测试人员须了 解程序的内部结构和处理过程, 以检查处理过程的细节为基础,对程序中尽可能 多的逻辑路径进行测试, 检查内部控制结构和数据结构是否有错, 实际的运行状 态和预期的状态是否一致 典型测试技术: 逻辑驱动、 基本路径测试等 二十四、 什么是软件危机? 其产生的原因是什么? 答:当软件开发技术跟不上硬件技术的进步, 不能满足开发的要求时, 导致软件 开发中遇到的问题找不到解决的办法, 使问题积累起来, 形成了尖锐的矛盾, 从 而导致了软件危机。 原因: 软件的规模越来越大, 结构越来越复杂; 软件开发管理困难且复杂; 软件开发费用不断增加; 软件开发技术落后; 生产方式落后; 开发工具落后, 生 产效率缓慢。 二十五、 采用黑盒技术设计测试用例有哪几种方法? 这些方法各有什么特点? 答:㈠等价类划分。 等价类划分是将输入数据域按有效的或无效的(也称合理的 或不合理的) 划分成若干个等价类, 测试每个等价类的代表值就等于对该类其它 值的测试。 ㈡边界值分析。 该方法是将测试边界情况作为重点目标, 选取正好等于, 刚 刚大于或刚刚小于边界值的情况, 根据这些情况选择测试用例。 ㈢错误推测。 错误推测法没有确定的步骤, 凭检验进行。 它的基本思想是列 出程序中可能发生错误的情况, 根据这些情况选择测试用例。㈣因果图。 因果图 能有效的检测输入条件的各种组合可能会引起的错误。因果图的基本原理是经过 资料仅供参考 画因果图, 把用自然语言描述的功能说明转换为判定表, 最后为判定表的每一列 设计一个测试用例。
|