软件工程

简答题

1. 社会、健康、安全、法律、文化、环境对软件工程有什么影响?(举例子说明)

答:

2. 以下是否是软件需求项?什么类别的需求项?

  • 目标软件必须用Java语言实现。
    约束性需求
  • 目标软件必须有一个主控模块和分别移动、照相和岩石采集控制的三个子模块组成。
  • 目标软件必须在0.5秒内响应外部事件。
    非功能需求-性能需求
  • 当目标软件与用户交互时,必须使用特定的菜单和对话框。

3. 比较黑盒测试和白盒测试的优缺点。
答:

  • 黑盒测试的优点
  1. 比较简单,不需要了解程序内部的代码及实现。
  2. 与软件的内部实现无关。
  3. 从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题。
  4. 基于软件开发文档,所以也能知道软件实现了文档中的哪些功能。
  5. 在做软件自动化测试时较为方便。
  • 黑盒测试的缺点
  1. 不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量的30%。
  2. 自动化测试的复用性较低。
  • 白盒测试的优点
  1. 帮助软件测试人员增大代码的覆盖,提高代码的质量,发现代码中隐藏的问题。
  • 白盒测试的缺点
  1. 程序运行会有很多不同的路径,不可能测试所有的运行路径。
  2. 测试基于代码,只能测试开发人员做的对不对,而不能知道设计的正确与否,可能会漏掉一些功能需求。
  3. 系统庞大时,测试开销会非常大。

4. 软件生存期模型各个模型的适用范围
答:

  • 瀑布模型
    适用范围:需求明确,小规模软件开发。

  • 快速原型模型
    适用范围:用户需求不明确,需要通过构建原型来清楚地了解用户的真实需求。

  • 增量模型
    适用范围:软件开发周期较长的软件,有持续的合作。

  • 螺旋模型
    适用范围:内部软件开发的大规模软件项目。

  • 喷泉模型
    适用模型:面向对象的软件开发过程。

5. 为什么要进行软件项目管理
参考:
任何项目都需要管理,只有认真地管理才能使项目成功地达到预期的目标。
预期的目标应该包括以下方面:

  1. 达到项目预期的软件产品功能和性能要求,使用户认为这样的软件产品正是自己所期待的,也就是说软件产品达到了用户已认可的需求规格说明的要求。
  2. 时限要求。
  3. 项目开销限制在预算之内。

同时软件项目管理涉及的几个主要方面是人员、产品、过程和项目,即所谓的4P(People、Produce、Process、Project).

  1. 开发人员
    项目管理是对软件工作的管理,但归根结底是对人员行为的管理,就是对人员的管理。人的因素是软件工程的核心因素,对于这一核心因素的把握决定着项目的成败。
    在项目的人员管理上需要考虑的几个问题是:
    1). 利益相关方
    2). 团队负责人
    3). 团队集体

  2. 产品
    软件工程是软件项目的成果和预期的目标,然而,软件这种无形的产品在开发出来以前,要想准确地描述它的规模、工作量,甚至他的功能和性能是困难的。除此以外,软件需求的稳定性问题更增加了项目工作的难度。

  • 产品的工作环境
  • 产品的功能和性能
  • 产品工作处理的是什么数据,经他处理后得到什么数据。
  1. 过程
    过程在软件工程项目中是重要的因素,它决定着项目中开展哪些活动以及对活动的要求和开展活动的顺序。

  2. 项目
    项目管理的任务是如何利用已有的资源,组织实施既定的项目,提交给用户适用的产品。在此我们将项目管理要开展的主要工作分为3类:
    1). 计划与计划管理,其中包括:项目策划及计划制定;项目估算;风险分析及风险管理;进度管理;计划跟踪与监督。
    2). 资源管理,包括:人员管理;成本管理。
    3). 成果要求管理,包括:需求管理;配置管理;质量管理。

从开发人员、产品、过程、项目四个方面进行论述

6. 为什么软件维护的费用一直那么高
参考:
软件维护不仅针对程序代码,而且还针对软件定义、开发的各个阶段生成的文档。而软件在设计阶段很难预料到这个软件交给谁,在什么时候进行什么样的维护工作。软件维护的依据只能靠软件文档和有关的设计信息。这样,软件维护人员不得不花费大量的劳动,用于软件系统的再分析和对软件信息的理解。因此软件的维护费用也就一直高居不下。

7. 软件生命周期,各个过程主要工作
答:

  • 可行性分析(研究)与计划阶段
    要确定该软件的开发目标和总的要求,要进行可行性分析、投资收益分析、制定开发计划,并完成可行性分析报告、开发文档等文档(输出)。
  • 需求分析阶段
    由系统分析人员对被设计的系统进行系统分析,确定对该软件的各项功能、性能需求和设计约束,确定对文档编制的要求,作为本阶段工作的结果,输出有:软件需求规格说明(也称为:软件需求说明、软件规格说明)、数据要求说明和初步的用户手册应该编写出来。
  • 设计阶段
    系统设计人员和程序设计人员应该在反复理解软件需求的基础上,提出多个设计,分析每个设计能履行的功能并进行相互比较,最后确定一个设计,包括该软件的结构、模块(或CSCI)的划分、功能的分配,以及处理流程。
    系统比较复杂的情况下,设计阶段应分解成概要设计阶段和详细设计阶段两个步骤。在一般情况下,完成的文档包括:结构设计说明、详细设计说明和测试计划初稿。
  • 实现阶段
    要完成源程序的编码、编译(或汇编)和排错调试得到无语法错的程序清单,要开始编写进度日报、周报和月报(是否要有日报或周报,取决于项目的重要性和规模),并且要完成用户手册、操作手册等面向用户的文档的编写工作,还要完成测试计划的编制。
  • 测试阶段
    该程序将被全面地测试,已编制的文档将被检查审阅。一般要完成测试分析报告。作为开发工作的结束,所生产的程序、文档以及开发工作本身将逐项被评价,最后写出项目开发总结报告。
  • 运行与维护阶段
    软件将在运行使用中不断地被维护,根据新提出的需求进行必要而且可能的扩充和删改、更新和升级。软件维护分为改正性维护、适应性维护和预防性维护,分别对应于前面的三个问题。
    改正性维护就是修改原有的缺陷、适应性维护就是使软件适应新的软硬件环境,预防性维护就是把今天的技术用在昨天的软件上,以期软件在明天还能使用。

8. 为什么程序员在进行单元测试时多以白盒测试为主,而软件测试工程师在进行系统集成测试多以黑盒测试为主?
参考:
白盒测试方法按照程序内部的结构测试程序,检验程序中的每条通路是否都能按预定要求正确工作,而不顾它的功能。

黑盒测试并不涉及程序的内部结构和内容特性,主要根据规格说明,只依靠被测试程序的输入和输出之间关系或程序的功能来设计测试用例。

论述题

1. 用户最终要执行的使用的最终产品写出来的代码,只要在开发阶段做的好,产品就是一定成功的?

2. 软件在交付的时候,如果软件在运行的时候没有问题就是高质量的软件

3. 从用户得到的原始需求不用分析就可以作为软件设计阶段的依据。