软件工程-1.概述

来源:互联网 发布:大数据 课程 编辑:程序博客网 时间:2024/06/05 20:31

简介

最近在学习《软件工程》(高职版)这本书,现通过解答这本书的课后习题来进行知识的巩固,达到融会贯通的程度,也不枉看这本书所花的时间。
后续的软件工程系列文章都是这种模式,欲知更多内容可以去翻阅《软件工程》这本书。

一.选择题

1. 开发软件所需高成本和产品的低质量之间有尖锐的矛盾,这种现象称做()

A 软件工程          B 软件周期C 软件危机          D 软件产生

答案:C
见简答题10

2.软件是一种()

A 程序           B 数据C 逻辑产品      D 物理产品

答案:C
软件是逻辑性的产品,而非物理产品。

3.软件复杂性主要体现在

A 数据的复杂性    B 程序的复杂性C 控制的复杂性    D 问题的复杂性

答案:D
问题的复杂性导致了程序编写的复杂化。

4.瀑布模型本质是一种()

A 线性顺序模型    B 顺序迭代模型C 线性迭代模型    D 及早见产品模型

答案:A
详见简答题13

5.快速原型模型的主要特点之一是()

A 开发完毕才见到产品         B 及早提供全部完整的软件产品C 开发完毕后才见到工作软件      D 及早提供工作软件

答案:D

6.具有风险分析的软件生存周期模型是()

A 瀑布模型  B 喷泉模型C 螺旋模型  D 增量模型

答案:C
详见简答题13

7.瀑布模型的存在问题是()

A 用户容易参与开发  B 缺乏灵活性C 用户与开发者易沟通 D 适合可变需求

答案:B
详见简答题13

8.软件生命周期中所花费用最多的阶段是()

A 详细设计  B 软件编码C 软件测试  D 软件维护

答案:D

9.在软件开发的各种资源中,()是最重要的资源。

A 开发工具  B 方法C 硬件环境  D 人员

答案:D

二.简答题

10.什么是软件危机?它和软件工程有什么关系?

答:软件危机是指软件开发的高成本与软件产品低质量间的尖锐矛盾,原因是用户与开发人员间的沟通问题与手工作坊式开发。具体表现为

  1. 软件需求的增长得不到满足。系统规模大,逻辑功能复杂,手工式作坊开发无法完成任务。
  2. 软件开发和进度无法控制,为赶进度使用的权宜之计使用户感到不满。
  3. 软件生产开发成本高,价格昂贵,而且成为系统中最花钱的部分。
  4. 软件的可维护性差,当遇到新硬件环境与新用户需求就要重复开发。
  5. 软件没有足够的文档资料,以后维护要花费更多的精力。
  6. 软件的开发速度远远跟不上计算机的普及速度,软件产品供不应求,以致无法充分利用计算机硬件。
  7. 软件产品质量不易保证,无可靠的软件质量保证技术会导致软件产品质量低劣,出错率高,可靠性差。
  8. 软件的需求定义不准确,常偏离用户的需求,用户与开发人员有缺乏有效的沟通。

软件危机促成了软件工程的诞生,为解决软件危机,北约会议组织提出了软件工程概念,吸收机械工程和土木工程设计中成熟而严密的工程设计思想 ,进行规范性的开发。

11.简述软件和软件工程的定义以及这两个定义的形成过程。

答:软件是程序及程序设计发展到规模化和商品化逐渐形成的概念。它是程序的完善和发展,是经过严格的正确性检验和实际试用的,并具有相对稳定的文本和完整的文档资料的程序。
软件工程:软件工程是指导计算机软件开发和维护的一门工程学科,把经过时间考验而证明是正确的管理技术和当前能够用到的最好的开发方法结合起来,包括基础理论研究、应用研究、实际开发、管理学、经济学。

12.什么是软件生存周期?简述软件生存周期各个阶段的基本任务和工作结果。

答:软件生存周期指功能确定、设计、开发成功投入使用,并在使用中不断修改、增补和完善,直至被新的需要所替代而停止该软件的使用为止的全过程。
(1).软件的定义:解决待开发软件”做什么”这一问题。
系统分析阶段:确定待开发软件的总体要求和适用范围,以及软硬件支撑的要求。
系统项目计划阶段:确定待开发软件的目标,对其进行可行性分析,并对资源分配,进度安排等作合理计划。
需求分析阶段:确定系统的逻辑模型。
(2).软件的开发:解决该软件”怎么做”的问题
概要设计:模块分解,软件结构的确定,模块功能和模块间接口的设计,全局数据结构的设计。
详细设计:完成每个模块的实现细节和局部数据结构的设计。
编码和单元测试:选取一种适当的高级程序设计语言写出正确的容易理解,容易维护的程序模块,并且仔细测试编写的每一个模块。
综合测试阶段:通过各种类型的测试(及相应的高调试),使软件达到预定的要求,最基本的测试是集成测试和验收测试。

(3).软件的维护:

  1. 改正性维护,诊断和改正在使用过程中发现的错误。
  2. 适应性维护,修改软件以适应环境的变化。
  3. 完善性维护,根据用户的要求改进或扩充软件使它更完善。
  4. 预防性维护,修改软件为将来的维护活动预先做准备。

13.常用的软件开发模型有几种?简述它们的基本思想和优缺点。

  1. 瀑布模型
    基本思想:该模型将软件生存周期的各项活动规定为依固定顺序连接的苦干阶段工作,上一阶段完成后才能进入下一阶段,整个过程就像流水下泻。
    优点:保证了软件的质量,严格控制软件开发项目的进度。支持结构化软件开发、控制软件开发的复杂性,促进软件开发工程化起着显著作用。
    缺点:缺乏灵活性,无法通过开发活动澄清本来不够确切的软件需求,可能导致开发出的软件并不是用户真正需要的,进行返工和纠正偏差会付出高额的代价,带来不必要的损失。
  2. 演化模型
    基本思想:主要针对事先不能定义出完整的软件需求的开发。首先开发核心系统,当投入运行后,用户试用后提出精化系统、增强系统能力的需求,软件开发人员根据用户反馈,实施开发的迭代过程,每一迭代均由需求、设计、编码、测试、集成等阶段组成,为整个系统增加一个可定义的、可管理的子集。
    优点:有的需求不能满足用户的要求,可在下一次迭代中予以修正,演化模型在一定程度上减少了软件开发活动的盲目性。
  3. 螺旋模型
    基本思想 :在瀑布模型和演化基础的基础上,加入风险分析所建立的一种软件开发模型。沿着螺线旋转,在笛卡尔坐标的4个象限上分别表达了4个方面的活动。
    制定计划,风险分析,实施工程,客户评估。
    优点:适合于大型软件的开发,特别适合于对安全性和保密性需求极高的系统开发。
    缺点:要求许多客户接受和相信演化方法并不容易,该模型的使用需要具有相当丰富的风险评估经验和专门知识,只能经过特殊训练的专家才能完成,很难用形式化的方法来描述,比如用户接口。如果项目风险较大,又未能及时发现,势必造成重大损失。此外,螺旋模型不如瀑布模型普及,难以让广大软件人员和用户接受。
  4. 增量模型
    基本思想:不是一次性交付一个系统,开发和交付被分解成多个分量,每个分量交付部分需求功能,用户需求被划分并被赋予一定的优先顺序,具有最高优先权的服务被首先交付。一旦一个开发分量被交付,客户就能将其派上用场,为稍后的增量准备的需求分析不断的进行。
    优点:客户无须等到整个系统的实现,就可满足他们大多数关键的需求,项目总体性失败风险较低,最实现的系统服务接受了最多的测试。
  5. 喷泉模型
    基本思想:体现了软件创建所固有的迭代和无间隙的特征。这一模型表明了软件刻画活动需要多次的重复。
    优点:主要用于支持面向对象开发过程。

14.简述文档在软件工程中的作用。

答:使软件工程开发标准化,保证软件工程的质量与高效率。

15.软件开发的工程化方法有哪些特点?

答:
1.明确软件系统的基本开发步骤,包括每一阶段的条件、目的,结果以及注意事项
2.件描述的文件格式。
3.软件的评价标准。

16.在软件开发过程中软件工具有什么作用?

答:提高软件生产率,改进软件的质量,,减少软件开发对人的依存度,促进软件生产的自动化。

17.软件工程环境由哪些部分组成?你怎样理解软件工程环境这个概念?

答:软件工程环境组成部分
1.宿主层:包括基本宿主硬件和基本宿主软件
2.核心层:一般包括工具组,环境数据库,通信设施和运行时刻支撑设施。
3.基本层:一般包括最少限度的一组工具,如编译程序,调试程序,连接程序,装配程序。
4.应用层:以特定的基本层为基础,但可包括一些补充工具,借以更好地支持各种应用软件的研制。
软件工程环境是用来辅助软件开发的大型程序系统,软件工具的有机集合,按照一定的软件开发方法或遵循一定的软件生产和维护模型组织起来,在一定的领域所使用。

18.你认为一个好的软件开发人员应具备哪些基本素质?

答:应以软件的质量为第一目标,生产率是次要的,并且要善于运用软件工程方法进行规范式开发,编写开发文档。

0 0
原创粉丝点击