第一部分 软件工程概述(一)

第一部分 软件工程概述(一)

郑人杰 《软件工程概论》(第2版)第一部分 软件工程概述(一) 课后习题题解


第一章 软件与软件工程的概念

1、举出你所知道的传统应用软件的例子。

办公软件、游戏软件、财务软件、银行软件、人事管理软件、学籍管理软件等。

2、“软件就是程序,软件开发就是编程序。”这种观点是否正确?为什么?

认为“软件就是程序,软件开发就是编程序。”这种观点是错误的。

首先,软件是计算机系统中与硬件相互依存的另一部分,它包括程序、数据、及其相关文档的完整集合,程序只是软件的组成部分之一;其次,在软件开发中,编程只是软件开发过程中的一个阶段。

3、如果将软件开发比作高楼大厦的建造,可以将软件设计比做什么?

可以将软件的设计比作建筑设计,软件设计的成果相当于建筑设计的图纸。

4、简述软件的分类,并举例说明。

在《软件工程概论》第2版中,按照软件的作用,将软件分为系统软件、应用软件、支撑软件、可复用软件4类。

  • 系统软件:系统软件居于计算机系统中最靠近硬件的一层,其他软件一般通过系统软件发挥作用。系统软件与具体的应用领域无关。例如:操作系统、设备驱动程序、通信和网络处理程序。
  • 应用软件:应用软件是特定应用领域专用的软件。例如:工程、科学计算软件、Web应用软件、人工智能软件。
  • 支撑软件:支撑软件是支撑软件开发和维护的软件。例如:网络软件、软件工具、软件开发环境。
  • 可复用软件:在开发新的软件时,可以对已有的可复用构件稍加修改或不加修改,复用所需的属性或服务。例如:各种标准函数库。

5、请给出你所知道的互联网应用软件的例子。传统应用软件与互联网应用软件有哪些不同之处?

  • 与传统软件较长的软件生存周期相比,互联网软件的软件生存周期更短,要求开发者想办法在较短的时间内完成计划、分析、设计、编码、测试,及时向用户发布;
  • 与传统软件不同,一个互联网软件一般都有许多许多用户在同一时间访问,要求互联网软件能应对数量不明确的用户的访问和请求,支持并发;
  • 传统软件可能需要针对不同的应用平台发布不同的软件版本让不同平台上的用户能够使用,而互联网软件则能让不同平台用户能够通过Web浏览器方便地使用;
  • 不同于传统的、按一系列规划的时间间隔发布并进行演化的应用软件,互联网软件应不断地进行演化;
  • 互联网软件依赖于网络而存在,需要服务变化多样的客户群。它需要一定程度上的互联网的支持才能够正常运行,而且网络状况的好坏也对互联网软件的运行有着较大的影响;
  • 互联网软件是通过网络访问可达的,因此要限制终端用户的使用就比较困难。要保护软件的安全和稳定就必须采取有效的安全措施。

6、什么是软件危机?它有哪些典型表现?为什么会出现软件危机?

软件危机是指计算机软件开发、使用与维护过程中所遇到的一系列严重问题和难题。

典型表现有:

  • 对软件开发成本和进度的估计常常很不准确;
  • 软件产品的质量往往靠不住;
  • 用户对已完成的软件系统不满意的现象经常发生;
  • 软件常常是不可维护的;
  • 软件中没有适当的文档资料;
  • 软件成本在计算机系统总成本所占的比例逐年上升;
  • 软件开发生产率提高的速度,往往跟不上计算机应用迅速普及深入的趋势。

原因:

  • 软件本身独有的特点确实给开发和维护带来了困难;
  • 与软件开发和维护的许多错误认识和做法的形成有关;
  • 面对日益增长的软件需求,人们显得力不从心。

7、什么是软件工程?软件工程要解决核心问题是什么?

应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度,实现满足用户要求的软件产品的定义、开发、发布和维护的工程或进行研究的学科。

以较短的周期、较低的成本生产出高质量的软件产品,并最终实现软件的工业化生产。

8、简述软件生存期有哪些主要阶段组成,每个阶段的主要任务是什么?

问题定义与可行性研究:问题定义必须回答的关键问题是:“要解决的问题是什么”。可行性研究要回答的关键问题是:“在成本和时间的限制条件下能否解决问题?是否值得做?”。
需求分析:这个阶段的任务仍然不是具体地解决客户的问题,而是准确的回答“目标系统必须做什么”这个问题。
软件设计:本阶段要回答的关键问题是“目标系统如何做?”为此,必须在设计阶段中制定设计方案,把已确定的各项需求转换成相应的软件体系架构。结构中的每一组成部分都是有意义明确的构件,此即所谓概要设计。进而具体描述每个构件所要完成的工作,为源程序编写打下基础,此即所谓详细设计。
程序编码和单元测试:本阶段要解决的问题是“正确地实现已做的设计”,为此,需要选择合适的编程语言,把软件设计转换成计算机可以接受的程序代码,并对程序结构中的各个模块进行单元测试,然后运用调试的手段排除测试中发现的错误。
集成测试和系统测试:集成测试的任务是将已测试过的模块按设计规定的顺序组装起来,在组装的过程中检查程序连接的问题。系统测试的任务是根据需求规格说明的要求,对必须实现的各项需求,逐项进行确认,判定已开发的软件是否符合用户需求,能否交付用户使用。
运行维护:已交付的软件投入正式使用,便进入运行维护阶段。这一阶段可能持续若干年。软件在运行中可能由于多方面的原因,需要对它进行维护。通常有四种类型的维护:改正性维护、适应性维护、完善性维护和预防性维护。

9、区分单元测试、集成测试和系统测试。

区分单元测试、集成测试和系统测试

10、软件工程的三种基本要素是什么?各自什么作用?

方法、工具和过程。

  • 软件工程方法为建造软件提供技术上的解决方法;
  • 工具为方法的运用提供自动或半自动的软件支撑环境;
  • 过程是获得高质量软件所需完成的一系列人物的框架,它规定了完成各项任务的工作步骤。

11、简述传统方法和面向对象方法的特点。

传统方法:

  • 传统方法也称为生命周期方法或结构化范型。
  • 它采用结构化技术来完成软件开发的各项任务。每一个阶段的开始和结束都有严格的标准,对于任何两个相邻的阶段而言,前一阶段的结束标准就是后一阶段开始的标准。
  • 传统方法的主要缺点是在适应需求变化方面不够灵活,另外,结构化方法要么面向行为,要么面向数据,缺乏使两者有机结合的机制。

面向对象方法的特点:

  • 面向对象方法把数据和行为看成同等重要,是将数据核对数据的操作紧密地结合起来的方法,这也是面向对象方法与传统方法的重要区别。
  • 面向对象方法的出发点和原则,是尽量模拟人类西噶UN的思维方式,是开发软件的方法和过程尽可能接近人类认识问题和解决问题的方法与过程,从而使描述问题空间与其解空间在结构上尽可能一致。
  • 对于大型、复杂及交互操作比较强的系统,使用面向对象方法更具优势。

12、形式化方法的特点是什么?

形式化方法的特点:

  • 软件需求规格说明被细化为用数学记号表达的详细的形式化规格说明。
  • 设计、实现和单元测试等开发过程由一个变换开发过程代替。通过一系列变换将形式的规格说明细化成为程序。

13、软件开发过程中的常用软件有哪些?

  • 需求分析和设计工具。如:Rational Rose、Microsoft Office Visio等。
  • 编码工具与排错工具。如:Visual C++ 6.0、Eclipse等。
  • 测试工具。如:xUnit、IBM Rational Functional Tester、IBM Rational Robot等。

14、在软件工程知识体系中,将软件工程划分划分为哪些知识域?

SWEBOK指南将软件工程体系划分为15个知识域,这些知识域又划分为三类:

  • 软件工程基础类:软件工程经济学、计算基础、工程基础、数学基础。
  • 软件生存期过程类:软件工程模型和方法、软件需求、软件设计、软件构造、软件测试、软件维护。
  • 软件工程管理类:软件工程过程、软件工程管理、软件配置管理、软件质量、软件工程专业实践。

学习所得,资料、图片部分来源于网络,如有侵权,请联系本人删除。

才疏学浅,若有错误或不当之处,可批评指正,还请见谅!


Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×