如何评测软件工程知识技能水平?

Posted zhangheng-cn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何评测软件工程知识技能水平?相关的知识,希望对你有一定的参考价值。

一 选择题

  1. 软件工程的基本目标是( B )。

    A. 消除软件固有的复杂性 B. 开发高质量的软件

    C. 努力发挥开发人员的创造性潜能 D. 更好地维护正在使用的软件产品

  2. 下面的( C )说法是正确的。

    A. 软件危机在 20 世纪 70 年代末期全面爆发

    B. 当前先进的软件工程方法已经解决了软件危机的问题

    C. 软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题

    D. 软件危机是指在软件产品中存在一系列的质量问题

  3. 软件过程的基本活动是( A )。
    A. 分析、设计、实现、测试、演化

    B. 沟通、计划、建模、构造、部署

    C. 计划、分析、设计、实现、调试

    D. 沟通、风险管理、度量、产品化、评审

  4. 软件开发的增量模型是( B )。

    A. 用于大型开发团队项目的最好方法

    B. 核心工作产品需要快速开发时使用的一种好方法

    C. 需求被明确定义时使用的一种合适方法

    D. 需求不明确时使用的一种合适方法

  5. 基于组件的开发模型是( C )。

    A. 只适用于计算机硬件设计

    B. 不能支持可重用组件的开发

    C. 在面向对象技术获得支持的情况下应用得更好

    D. 增加了开发风险和成本

  6. 基线(Baseline)是指在项目生命周期的不同时间点上,一个或一组配置项通过( C ) 而进入正式受控的一种状态。

    A. 存取控制 B. 质量控制

    C. 正式评审 D. 变更管理

  7. 内聚表示一个模块( B )的程度,耦合表示一个模块( D )的程度

    A. 可以被更加细化

    B. 仅关注在一件事情上

    C. 能够适时地完成其功能

    D. 联接其他模块和外部世界

  8. 下面的( D )界面设计原则不允许用户保持对计算机交互的控制。

    A. 允许交互中断

    B. 允许交互操作取消

    C. 对临时用户隐藏技术内部信息

    D. 只提供一种规定的方法完成任务

  9. 类的行为应该基于( C )进行测试

    A. 数据流图 B. 对象图

    C. 状态图 D. 用例图

  10. 逆向工程(Reverse Engineering)通常在软件生命周期的( D )阶段,它是从源代码或者目标代码中提取设计信息

    A. 需求分析 B. 软件设计

    C. 软件测试 D. 软件维护

二 简答题

  1. 一架客机由数百万个单独的部件组成,需要上千人组装。微软于 1989 年 11 月发布的 WindowsWord 最初版本,花费了 55 人年,生成了 149,000 行源代码,晚了 4 年交付使用。客机通常 都是按时并低于预算交付使用,而软件却非如此。请讨论一下开发客机与开发文字处理软件的 不同之处,分析并说明导致这种局面的原因。

    • 软件本质上具有复杂性,文字处理软件中数据,状态和逻辑关系的可能组合远比客机中各个单独部件之间的关联更为复杂,这种复杂性会对问题理解,人员沟通,系统描述,软件变更,功能扩充带来极大的困难

    • 软件具有不可见性,客机是有形的物体,易于准确的描述其结构,控制整个开发进度,文字处理软件是不可见的逻辑实体,很难准确地和完整地描述其结构,在开发完成之前无法直观的看到结果,因此难以控制整个开发进度

    • 软件开发通常是手工定制开发的,在开发过程中其设计需要随着需求和环境的变化而不断修改,而客机通常是通过已有的零件组装而成,其质量,成本,进度更加容易控制

  2. 软件生命周期主要包括哪些阶段?请简要说明各阶段的主要任务。

    软件的生命周期一般包括:分析,设计, 实现,测试,演化(或维护阶段

    • 分析阶段:分析,整理和提炼所收集到的用户需求,建立完整的分析模型,将其编写成软件需求规格说明和初步的用户使用手册
    • 设计阶段:设计人员依据软件的需求规格说明文档,确定软件的体系结构,进而确定每个模块的实现算法,数据结构和接口等,编写设计说明书,并组织进行设计审核
    • 实现阶段:将设计的各个模块编写成计算机可接受的程序代码
    • 测试阶段:在设计测试用例的基础上,测试软件各个组成模块,然后将各个模块集成起来,测试整个产品的功能和性能是否满足已有的规格说明
    • 演化阶段:为了改正错误,适应环境变化和增强功能,对软件进行一系列修订
  3. 下列需求描述是否存在问题?如果有问题,请说明所存在的问题并给出一种正确的描述。

    1. 软件应该易于使用。

      问题:需求描述不可验证

      改正:对于一个没有经验的用户而言,经过两小时的培训就可以使用系统的所有功能

    2. 系统通过 ADO 与图书资料数据库连接,并从图书资料数据表中获得图书资料的基本信息。

      问题:在需求描述中给出了实现细节

      改正:系统可以存取图书资料的基本信息

    3. 由于版权的限制,某些电子资料只能让用户浏览和打印而不能下载。

      正确

    4. ATM系统检验用户存取的合法性。

      问题:需求描述存在二义性

      改正:系统通过用户名和密码检验用户存取的合法性

    5. ATM 系统每周 7 天、每天 24 小时都可以使用。

      正确

  4. 经过代码审查和单元测试,单个组件的有效性已经得到全面验证,为什么还要进行集成测试? 在集成测试时,增量式集成方法为什么比一次性整体集成方法要好?
    • 单个组件正常工作并不意味着所有组件集成在- -起可以正常工作,因为组件相互连接时接口会引起许多新问题,集成测试正是将通过单元测试的各个组件组装在一-起进行综合测试,以便发现与接口有关的各种错误。整体一次性集成方法可能在测试时发现大量错误,造成定位和纠正错误十分困难;增量式集成方法通过逐渐加入组件,可以比较容易定位和纠正错误。

三 分析题

  1. 在本课程的实验项目中,你们经历了团队组织与开发管理的过程,并应用面向对象 技术进行软件的设计与实现。请结合该实验项目,回答以下问题:
    1. 你使用的配置管理工具是什么?其版本存取的控制流程是什么?
    2. 为什么需要定义软件需求的优先级?
    3. 为什么需要将整个系统划分成若干子系统?子系统的划分应符合什么原则?
    4. 分析类图与设计类图有什么不同?
    5. 在类设计中,你建议使用什么方法进行属性的设置和读取?这样做有什么好处?
  • 答案示例:

    1. 在VSS和CVS中选择其中之一进行回答:
      VSS: 开发人员从项目数据库中检出需要变更的配置对象,系统同时将配置库中的该对象进行加锁:开发人员完成修改并通过检测后,将修改后的对象登入配置库中,系统解除该版本的封锁,形成一个新的版本。

      CVS:开发人员从项目数据库中检出需要变更的配置对象;开发人员在自己的工作空间中进行修改,在通过检测后提交修改后的配置对象,并使用系统命令与原有版本进行合并,形成- -个新的版本。

    2. 软件开发很难在规定的时间内实现所有的需求,通过定义需求的优先级,可以在保证核心功能的前提下削减部分需求,从而将有限的开发力量投入到核心功能的开发上,同时确保了开发进度。

    3. 划分子系统可以降低系统的复杂性,也有利于开发的组织。子系统的划分应符合“高内聚低耦合”的原则。

    4. 分析类图是面向问题域建模,不关注技术实现问题;设计类图是面向实现域建模,它以分析类图为基础集中研究实现问题。
    5. 在类设计中,建议使用set方法和get方法进行进行属性的设置和读取;好处:降低类之间的耦合度。

参考来源: [清华2006软件工程期末试题]:https://wenku.baidu.com/view/4d696eec102de2bd96058859.html

以上是关于如何评测软件工程知识技能水平?的主要内容,如果未能解决你的问题,请参考以下文章

如何评测软件工程知识技能水平?

如何评测软件工程知识技能水平?

如何评测软件工程知识技能水平?

如何评测软件工程知识技能水平?

如何评测软件工程知识技能水平?

如何评测软件工程知识技能水平?