软件工程教材习题答案

发布时间 : 星期六 文章软件工程教材习题答案更新完毕开始阅读

《软件工程——理论与实践》(第2版)习题答案

User Information

13.为什么说RUP与UML密切结合,能够开发出满足最终用户需要的高质量软件?

答:好的软件过程,是应用UML成功地进行软件开发的关键。在众多的软件开发过程中, RUP统一过程(Rational Unified Process)能够与UML最佳结合,不仅因为该过程的开发者也是UML的创立者,更因为RUP过程能够有效地测度工作进度,控制和改善工作效率。

RUP是最佳软件开发经验的总结,具有迭代式增量开发、使用实例驱动、以软件体系结构为核心的三个鲜明特点,还包括了软件开发中的6大经验:迭代式开发;管理需求;使用基于组件的软件体系结构;可视化建模;验证软件质量;控制软件变更。因此,RUP与UML密切结合,能够开发出满足最终用户需要的高质量软件。

14.分析RUP的二维开发模型,说明RUP的迭代开发过程。

答:在RUP中,软件开发生存周期根据时间和RUP的核心工作流划分为二维空间。横轴描述RUP开发过程的动态结构,纵轴描述RUP的静态组成部分。

⑴横轴把软件开发周期(Cycle)划分为起始(Inception)、演化(Elaboration)、构造(Construction)和提交(Transition) 四个连续的阶段(Pahse)。

⑵纵轴表示核心工作流。RUP中有商业建模、需求、分析和设计、实现、测试、部署、配置和变更管理、软件项目管理和环境9个核心工作流(Core Workflows):

RUP中的每个阶段都由一个或多个连续的迭代组成,每一个迭代都是一个完整的开发过程,产生一个可执行的产品版本,在每个阶段结束前都应有一个里程碑(MileStone)评估该阶段的工作,只有当阶段目标达到时才允许项目进入下一阶段,产生一个阶段里程碑。这是一种更灵活、风险更小的方法,是多次通过不同的开发工作流,这样可以更好地理解需求,构造一个健壮的体系结构,并最终交付一系列逐步完成的版本,称为一个迭代生存周期。

21

《软件工程——理论与实践》(第2版)习题答案

习题六答案

1.程序设计语言分为哪几类?

答:程序设计语言,按照语言级别可以分为两大类:低级语言和高级语言。

低级语言包括机器语言和汇编语言。低级语言依赖于特定的机器,其使用复杂、繁琐、费时、易出差错,因而程序编写也有一定的难度。

机器语言是表示成二进制形式的机器基本指令集,或者是操作码经过符号化的基本指令集,其存储由语言本身决定。汇编语言比机器语言更直观,是机器语言中地址部分符号化的结果,或进一步包括宏构造。

即便是现在汇编语言有着生产效率低、维护困难、容易出错的缺点,但是在实现与硬件系统接口部分时,仍然采用它,因为它易于实现接口,实现效率高。

高级语言的表示方法要比低级语言更接近于待解的问题,其特点是在一定程度上与具体机器无关,易学、易用、易维护。高级语言的实现极大地提高了软件的生产效率。

众多的高级语言根据不同的标准有不同的分类方式。 (1) 按照应用范围分为:通用语言与专用语言。

通用语言有:Pascal、C、C++、Java等;目标单一的语言称为专用语言,有:APT等。 (2) 按照用户的要求分为:过程式语言和非过程式语言。

过程式语言的主要特征是,用户可以指明一系列可执行的顺序运算,以表示相应的计算过程,如Pascal、C等;非过程式语言反之,较为著名的是Java。

(3) 按照使用方式分为:交互式语言和非交互式语言。

具有反映人机交互作用的语言成分的语言成为交互式语言,如BASIC等;不反映人机交互作用的语言称为非交互式语言,如Pascal、C等都是非交互式语言。

(4) 按照语言的内在特点分为:系统实现语言、静态高级语言、动态高级语言和块结构高级语言;

系统实现语言例如:C语言;静态高级语言例如:COBOL和FORTRAN语言;动态高级语言的特点是动态完成所有的存储管理,如Java;块结构高级语言,例如ALGOL和Pascal语言。

2. 程序设计语言的成分有哪些?

程序设计语言基本的组成成分如下: ①数据成分,用于描述程序所涉及的数据

(1) 程序名字声明:首先声明这个程序设计对象在这个程序中的名字,这样避免编译时出现错

误。例如,设计一个电子时钟,那么对于主程序完全可以对其名字声明为:clock,这样当后面进行编译的时候就能够识别这是已经声明了的对象,而不再报错。

(2) 数据类型声明:对程序实现时用到的各种数据的类型作一声明,如整型、浮点型、用户自

定义类型等。

②运算成分,用以描述程序中所包含的运算

(1) 初始化:程序设计实现时最常出现的一种错误就是没有对于要运算的数据初始化,即没有

赋予一个合适的初始数据,结果造成了编译或运行时出错。

(2) 运算对象:运算对象是程序执行时要运行的对象,包括一个算术表达式或者一个逻辑表达

式,或者是一个完整的语言,例如:赋值语句等。 ③控制成分,用以描述程序中所包含的控制。

(1) 顺序控制结构:顺序执行的语句构成了顺序结构。

(2) 循环控制结构:常见的循环控制结构有for语句和while语句,至于它们的基本使用以及表

达形式这里不再赘述。

22

《软件工程——理论与实践》(第2版)习题答案

(3) 分支控制结构:常见的分支控制结构有if语句和switch-case语句两种,另外if语句中又分

为带else和不带else语句两种。

④传输成分,用以表达程序中数据的传输。传输成分包括基本的输入和输出。

3.程序设计语言的选择对应用程序的开发有什么样的影响?

答:通常应根据软件系统的应用特点,程序设计语言的内在特性以及系统的性能要求等方面来进行选择。程序设计语言的选择应该考虑以下因素:

? 项目的应用领域。应尽量选取适合某个应用领域的语言。例如,选择Visual Basic来开发数

据库应用就比选择Visual C++要容易一些。 ? 算法和计算复杂性。要根据不同语言的特点来选取能够适应软件项目算法和计算复杂性的

语言。例如,对于科学计算较多的应用一般会考虑选择FORTRAN语言。 ? 软件的执行环境。要选取机器上能运行且具有相应支持软件的语言。例如,在嵌入式系统

中(这类系统的硬件资源往往较少),软件开发语言多为C/C++、Java。 ? 性能因素。应结合工程具体性能来考虑,例如实时系统对响应速度有特殊要求,就应选择

汇编语言、C语言等。 ? 数据结构的复杂性。要根据不同语言构造数据结构类型的能力选取合适的语言。C++、Java

这样的高级语言显然比汇编语言的表达能力要强。 ? 软件开发人员的知识水平以及心理因素。知识水平包括开发人员的专业知识,程序设计能

力;心理因素是指开发人员对某种语言或工具的熟悉程度。从技术的层面来讲,大多数的任务用任何一门高级语言都可以完成,所以选择开发者熟悉的语言是可以提高效率的。为此,要尽量避免受外界的影响,盲目追求高、新的语言。

4.结构化程序设计的特点是什么?为什么要采用结构化程序设计?

答:结构程序设计的概念最早是由E. W. Dijkstra提出来的,他指出:“可以从高级语言中取消GOTO语句,程序质量与程序中所包含的GOTO语句的数量成反比”。并指出结构程序设计并非简单的取消GOTO语句,而是创立一种新的程序设计思想、方法和风格,以显著提高软件生产率和质量。

提高程序可读性的关键是使程序结构简单清晰,结构化程序设计(SP)方法是达到这一目标的重要手段。

结构化程序设计是一种程序设计技术,它采用自顶向下,逐步求精的程序设计方法和单入口和单出口的控制结构。具体来说,结构化程序设计技术主要具有以下特点:

(1)自顶而下,逐步求精

这种逐步求精的思想符合人类解决复杂问题的普遍规律,从而可以显著提高软件开发的效率。而且这种思想还体现了“先全局,后局部”、“先抽象,后具体”的方法,使开发的程序层次结构清晰,易读、易理解还易验证,因而提高了程序的质量。

将程序自顶向下逐步细化的分解过程用一个树状结构来描述,如下图所示。

23

《软件工程——理论与实践》(第2版)习题答案

(2)单入口和单出口的控制结构

结构化的程序是由且仅由顺序、选择、循环三种基本控制结构组成,既保证了程序结构清晰,又提高了程序代码的可重用性。这三种基本结构可以组成所有的各种复杂程序。

结构化程序设计的基本原理中一个重要的概念是“模块化”。因为要实现结构化的程序设计总体的思想是:自顶向下,逐步求精,分而治之。相应的结构化程序设计的步骤如下图所示。

模块是由边界元素限定的相邻的程序元素的序列,而且有一个总体标志符来代表它。

提出和分析问题 确定数学模型 模块化编程 程序整个编译、运行 设计算法

所谓模块化,即是将一个大任务分成若干个较小的任务,较小的任务又细分为更小的任务,直到更小的任务只能解决功能单一的任务为止,一个小任务称为一个模块。各个模块可以分别由不同的人编写和调试。把大任务逐步分解成小任务的过程可以称为是“自顶向下,逐步细化”的过程。

对于模块的设计和实现有以下5条基本的标准: ? 可分解性 ? 可组装性 ? 可理解性 ? 连续性 ? 保护性

遵循以上标准是进行结构化程序设计时运用模块化原理的基本准则,这样设计出来的程序不但软件结构清晰,而且代码也有很好的可读性和可维护性。

5.对比面向对象程序设计,结构化程序设计有什么样的优势和劣势? 答:略。

6.算法转换的指导原则是什么?

答:转换过程中的指导原则是:

(1) 在编码前,尽可能化简有关的算术表达式和逻辑表达式。

(2) 仔细检查算法中嵌套的循环,尽可能将某些语句或表达式移到循环外面。 (3) 尽量避免使用多维数组。

(4) 尽量避免使用指针和复杂的表。

24

联系合同范文客服:xxxxx#qq.com(#替换为@)