文档库 最新最全的文档下载
当前位置:文档库 › 软件工程 课后习题答案

软件工程 课后习题答案

软件工程   课后习题答案
软件工程   课后习题答案

第一章

1.1什么是计算机软件?软件的特点是什么?

计算机软件是指计算机系统中的程序及其文档

软件的特点:

●软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算。

●软件是被开发的或被设计的,没有明显的制造过程,一旦开发成功,只需复制即可,

但其维护的工作量大。

●软件的使用没有硬件那样的机械磨损和老化问题。

1.2简述软件的分类,并举例说明

1.系统软件

系统软件居于计算机系统中最接近硬件的一层,其他软件一般都通过系统软件发挥作用。例如:编译软件、操作系统。

2.支撑软件

支撑软件是支撑软件的开发和维护的软件。例如:数据库管理系统、网络软件、软件工具、软件开发环境。

3.应用软件

应用软件是特定应用领域专用的软件。例如:工程/科学计算机软件、嵌入式软件、产品线软件、Web应用软件、人工智能软件。

1.3简述软件语言的分类,并举例说明。

1.需求定义语言

是用于书写软件需求定义的语言。例如:PSL/PSA。

2.功能性语言

是用于书写软件功能规约的语言,通常又称为功能规约语言。例如:广谱语言、Z 语言。

3.设计性语言

是用于书写软件设计规约的语言。例如:PDL。

4.实现性语言

也称为程序设计语言,是用于书写计算机程序的语言。例如:C、java、PROLOG、FORTRAN、COBOL、Modula。

5.文档语言

是用于书写软件文档的语言。通常用自然语言或半形式化语言书写。

1.4什么是软件工程?

软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本为目的。

1.5简述软件工程的基本原则。

软件工程原则包括围绕工程设计、工程支持和工程管理所提出的以下4条基本原则。

1.选取适宜的开发模型

必须认识需求定义的易变性,采用适宜的开发模型,保证软件产品满足用户的要求。

2.采用合适的设计方法

合适的设计方法有助于这些特征的实现,以达到软件工程的目标。

3.提供高质量的工程支撑

软件工程项目的质量与开销直接取决于对软件工程所提供的支撑质量和效用。

4.重视软件工程的管理

仅当软件过程予以有效管理时,才能实现有效的软件工程。

1.6软件工程生存周期分哪几个阶段?分别简述各个阶段的任务。

1. 计算机系统工程

计算机系统工程的任务是确定待开发软件的总体要求和范围,以及该软件与其他计算机系统元素之间的关系,进行成本估算,作出进度安排,并进行可行性分析。

2. 需求分析

需求分析主要解决待开发软件要“做什么”的问题,确定软件的功能、性能、数据、界面等要求,生成软件需求规约(也称软件需求规格说明)。

3. 设计

系统设计的任务是设计软件系统的体系结构,详细设计的任务是设计各个组成成分的实现细节,包括局部数据结构和算法。

4. 编码

编码阶段的任务是用某种程序设计语言,将设计的结果转换为可执行的程序代码。

5.测试

测试阶段的任务是发现并纠正软件中的错误和缺陷。

1.7简述CMM的5个等级。

1. 初始级

2. 可重复级

3. 已定义级

4. 已管理级

5. 优化级

1.8简述CMMI的连续式模型和阶段式模型。

1.阶段式模型的结构类同于软件CMM,它关注组织的成熟度,CMMI-SE/SW/IPPD 1.1版中有5个成熟度等级:初始的、已管理的、已定义的、定量管理的、优化的。

2.连续式模型关注每个过程域的能力,CMMI中包括6个过程域能力等级:未完成的、已执行的、已管理的、已定义的、定量管理的、优化的。

1.9简述各类软件过程模型的特点。

1. 瀑布模型:上一阶段的活动完成并经过评审才能开始下一阶段的活动,接受上一阶

段活动的结果作为本阶段活动的输入,依据上一阶段活动的结果实施本阶段应完成的活动,对本阶段的活动进行评审。

2. 演化模型:从结构初始的原型出发,逐步将其演化成最终软件产品的过程。演化模

型特别适用于对软件需求缺乏准确认识的情况。

3. 增量模型:将软件的开发过程分为若干个日程时间交错的线性序列,融合了瀑布模

型的基本成分(重复地应用)和演化模型的迭代特征,特别适用于需求经常发生变化的软件开发。

4. 原型模型:开发人员和用户在“原型”上达成一致,缩短了开发周期,加快了工程进

度,降低成本。

5. 螺旋模型:将原型实现的迭代特征与瀑布模型中控制的和系统化的方面结合起来,

不仅体现了这两种模型的优点,而且增加了风险分析。

6. 喷泉模型:各个阶段没有明显的界限,开发人员可以同步进行开发,可以提高软件

项目开发效率,节省开发时间,适应于面向对象的软件开发过程。

7. 基于构件的开发模型:利用预先包装的构件来构造应用系统。

8. 形式化方法模型:易于发现需求的歧义性、不完整性和不一致性,易于对分析模型、

设计模型和程序进行验证。

1.10敏捷软件开发的特点是什么?

1. 个体和交互胜过过程和工具

2. 可以工作的软件胜过面面俱到的文档

3. 客户合作胜过合同谈判

4. 响应变化胜过遵循计划

1.11简述敏捷软件开发的价值观。

1.个人和交互高于过程和工具

2.可运行软件高于详尽的文档

3.与客户协作高于合同(契约)谈判

4.对变更及时作出反应高于遵循计划

1.12简述敏捷软件开发的原则。

1.最优先的是通过尽早地和不断地交有价值的软件来使客户满意。

2.即使到了开发的后期,也欢迎改变需求。

3.以几周到几个月为周期,尽快、不断地发布可运行软件。

4.在整个项目过程中,业务人员和开发人员必须天天一起工作。

5.以积极向上的员工为中心建立项目组,给予他们所需要的环境和支持,对他们的工作予以充分的信任。

6.项目组内效率最高、最有效的信息传递方式是面对面的交谈。

7.测量项目进展的首要依据是可运行的软件。

8.敏捷过程提倡可持续的开发,项目发起者、开发者和用户应能长期保持恒定的速度。

9.应时刻关注技术上的精益求精和好的设计,以增强敏捷性。

10.简单化是必不可少的,这是尽可能减少不必要工作的艺术。

11.最好的构架、需求和设计出自于自我组织的团队。

12.团队要定期反思怎样才能更有效,并据此调整自己的行为。

1.13通过本章学习,请对敏捷软件开发作简要评价。

(略)

1.14简述CASE工具和环境的重要性。

CASE已被证明可以加快开发速度,提高应用软件生产率并保证应用软件的可靠品

质。计算机专业人员利用计算机使他们的企业提高了效率,企业的各个部门通过使用计算机提高了生产率和效率,增强了企业的竞争力并使之带来了更多的利润。

第二章

2.1简述系统工程的任务

1.识别用户的要求

识别用户对基于计算机的系统的总体要求,标识系统的功能和性能范围,确定系统的功能、性能、约束和接口。

2.系统建模和模拟

一个基于计算机的系统通常可考虑建立以下模型:硬件系统模型、软件系统模型、人机接口模型、数据模型。

3.成本估算及进度安排

开发一个基于计算机的系统需要一定的资金投入和时间约束(交互日期),需进行成本估算,并作出进度安排。

4.可行性分析

主要从经济、技术、法律等方面分析所给出的解决方案是否可行。

5.生成系统规格说明

作为以后开发基于计算机的系统的依据。

2.2基于计算机的系统由哪些元素组成?

1.软件

2.硬件

3.人员

4.数据库

5.文档

6.规程

2.3简述可行性分析的任务

1.经济可行性

a)成本

b)效益

c)货币的时间价值

d)投资的回收期

e)纯收入

2.技术可行性

a)风险分析

b)资源分析

c)技术分析

3.法律可行性

4.方法的选择和折衷

第三章

3.1需求工程的重要性是什么?

歧义的规约方案、确认规约以及将规约转换到可运行的系统时的管理要求。

3.2需求工程具体包括哪些步骤?每个步骤的具体任务是什么?

1.需求获取:系统分析人员通过与用户的交流、对现有系统的观察及对任务进行分析。

2.需求分析与协商:分析每个需求与其他需求的关系以检查需求的一致性、重叠和遗

漏的情况,并根据用户的需求对需求进行排序。

3.系统建模:通过合适的工具和符号系统地描述需求。

4.需求规约:给出对目标软件的各种需求。

5.需求验证:对功能的正确性、完整性和清晰性以及其他需求给予评价。

6.需求管理:对需求工程所有相关活动的规约和控制。

3.3一个系统分析员应该具备哪些思想素质和基本知识?请说明理由。

1.能够熟练地掌握计算机硬、软件的专业知识,具有一定的系统开发经验。

2.善于进行抽象的思维和创造性的思维,善于把握抽象的概念,并把它们重新整理成

为各种逻辑成分,并给出简明、清晰的描述。

3.善于从相互冲突或混淆的原始资料中抽出恰当的条目来。

4.善于进行调查研究,能够很快学习用户的专业领域知识,理解用户的环境条件。

5.能够倾听他人的意见,注意发挥其它人员的作用。

6.具有良好的书面和口头交流表达能力。

3.4列出在制定需求获取策略时的3种主要考虑因素。

1.功能需求。考虑系统要做什么,在何时做,在何时及如何修改或升级。

2.性能需求。考虑软件开发的技术性指标。

3.用户或人对因素。考虑用户的类型。

3.5(略)

3.6举例说明一个系统的3个不同类型的非功能需求

答:非功能性需求是指软件产品为满足用户业务需求而必须具有且除功能需求以外的特性。软件产品的非功能性需求包括系统的性能、可靠性、可维护性、可扩充性和对技术和对业务的适应性等。例如在银行管理系统中,由于银行数据量的庞大以及对银行账户的管理需求,用户对系统的性能、可靠性、可维护性要求很高。安全性是对银行用户个人信息保密的基本要求;在使用系统时,由于用户庞大,要求能快速安全的执行要求,这就对系统的性能有高需求;银行的用户的变动比较大,需求高要求的系统维护。

3.7(略)

3.8软件需求分析的操作性原则和需求工程的指导性原则是什么?

需求分析的操作性原则:

必须能够表示和理解问题的信息域。

●必须能够定义软件将完成的功能。

●必须能够表示软件的行为(作为外部事件的结果)。

●必须划分描述数据、功能和行为的模型,从而可以分层次地揭示细节。

●分析过程应该从要素信息转移向细节信息

需求工程的指导性原则:

●在开始建立分析模型之前应当先理解问题。如果问题没有很好理解就急于求成,常

常会产生一个解决错误问题的完美的软件。

●强力推荐使用原型。这样做可以使用户了解将如何与计算机交互,而人们对软件质

量的认识常常是基于对界面“友好性”的切身体会。

●记录每一个需求的起源和原因。这是建立对用户要求的可追溯性的第一步。

●使用多个视图,建立系统的数据、功能和行为模型。这样做可帮助分析员从多方面

分析和理解问题,减少遗漏,识别可能的不一致之处。

●给需求赋予优先级。因为过短的时限会减少实现所有软件需求的可能性。因此,对

需求排定一个优先次序,标识哪些需求先实现,哪些需求后实现。

●注意消除歧义性。因为大多数需求都是以自然语言描述,

造成遗漏和误解。采用正式的技术评审是发现和消除歧义性的好方法。

3.9软件需求规约主要包括哪些内容?

1.引言

2.信息描述

3.功能描述

4.行为描述

5.检验标准

6.参考书目

7.附录

3.10需求验证应该有哪些人参加?

分析人员、用户、开发部门的管理者、软件设计、实现、测试的人员。

第四章

4.1简述软件设计阶段的基本任务。

1.数据/类设计:将分析类模型变换成类的实现和软件实现所需要的数据结构。

2.体系结构设计:定义了软件的整体结构,由软件部件、外部可见的属性和他们之间

的关系组成。

3.接口设计:描述了软件内部、软件和协作系统之间以及软件同人之间的通信方式。

4.部件级设计:将软件体系结构的结构性元素变换为对软件部件的过过程性描述。

4.2软件设计与软件质量的关系是怎么样的?

设计是在软件开发中形成质量的阶段,设计提供了可以用于质量评估的软件表示,是将用户需求准确地转化为完整的软件产品或系统的主要途径。

4.3(略)

4.4简述模块、模块化及模块化设计的概念。

模块是数据说明、可执行语句等程序对象的集合,是单独命名的,并且可以通过名字来访问的。

模块化是指把软件按照规定原则,划分为一个个较小的,相互独立的但又相互关联的部件。

模块化设计就是程序的编写不是开始就逐条录入计算机语句和指令,而是首先用主程序、子程序、子过程等框架把软件的主要结构和流程描述出来,并定义和调试好各个框架之间的输入、输出链接关系。

4.5举例说明每种类型的模块耦合度和每种类型的模块内聚度。

a)内容耦合:当一个模块直接修改或操作另一个模块的数据,或者直接转入另一个模

块时就发生了内容耦合。此时,被修改的模块完全依赖于修改它的模块。如果发生

下列情形,两个模块之间就发生了内容耦合:

i.一个模块直接访问另一个模块的内部数据

ii.

iii.两个模块有一部分程序代码重叠(只可能出现在汇编语言中)

iv.一个模块有多个入口。

b)公共耦合:若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共

耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。

c)外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是

通过参数表传递该全局变量的信息,则称之为外部耦合。

d)控制耦合:如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择

另一模块的功能,就是控制耦合。

e)标记耦合:一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数

据结构的子结构,而不是简单变量。其实传递的是这个数据结构的地址。

f)数据耦合:一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制

参数、公共数据结构或外部变量) 来交换输入、输出信息的。

g)非直接耦合:两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控

制和调用来实现的

1.巧合内聚:讲几个模块中没有明确表现出独立功能的相同程序代码段独立出来建立

的模块称巧合内聚模块。

2.逻辑内聚:逻辑内聚是指完成一组逻辑相关任务的模块,调用该模块时,由传送给

模块的控制性参数来确定该模块应执行哪一种功能。

3.时间内聚:时间内聚是指一个模块中的所有任务必须在同一时间段内执行。

4.过程内聚:过程内聚是指一个模块完成多个任务,这些任务必须指定的过程执行。

5.通信内聚:通信内聚是指一个模块内所有处理元素都集中在某个数据结构的一块区

域中。

6.顺序内聚:顺序内聚是指一个模块完成多个功能,这些功能又必须顺序执行

7.功能内聚:功能内聚是指一个模块中各个部分都是为完成一项具体功能而协同工

作,

4.6耦合和软件可移植性的概念有何关系?

耦合性是2个或多个模块相关的程度,可移植性是指软件从一个平台/环境转移到另一个平台/环境的难易程度。

4.7描述信息隐蔽概念,并讨论信息隐蔽与模块独立两概念之间的关系。

1.信息隐蔽指在设计和确定模块时,使得一个模块内包含信息(过程或数据),对于不

需要这些信息的其他模块来说,是不能访问的。在面向对象方法中,信息隐蔽是通

过对象的封装性来实现的。

2.信息隐蔽的概念与模块的独立性直接相关

4.8什么是模块的独立性?设计中为什么模块要独立?如何度量独立性?模块功能独立有何优点?

1.模块独立性:

A.模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联

系最少且接口简单

B.模块独立性是指模块内部各部分及模块间的关系的一种衡量标准,由内聚和耦

合来度量。

2. A.具有独立的模块的软件比较容易开发出来。这是由于能够分割功能而且接口可以

简化,当许多人分工合作开发同一个软件时,这个优点尤其重要。

B.

作量比较小,错误传播范围小,需要扩充功能时能够"插入"模块。总之,模块独立

是优秀设计的关键,而设计又是决定软件质量的关键环节。

3.模块的独立程度可以由两个定性标准度量:内聚和耦合。

4. A.具有独立的模块的软件比较容易开发出来。这是由于能够分割功能而且接口可以

简化,当许多人分工合作开发同一个软件时,这个优点尤其重要。

B.独立的模块比较容易测试和维护。

4.9软件设计规约主要包括哪些内容?

1.工作范围

A.系统目标

B.运行环境

C.主要软件需求

D.设计约束/限制

2.体系结构设计

A.数据流与控制流复审

B.导出的程序结构

C.功能与程序交叉索引

3.数据设计

A.数据对象与形成的数据结构

B.文件和数据库结构:i.文件的逻辑结构;ii.文件逻辑记录描述;iii.访问方式

C.全局数据

D.文件/数据与程序交叉索引

4.接口设计

A.人机界面规格说明

B.人机界面设计规则

C.外部接口设计:i.外部数据接口;ii.外部系统或设备接口

D.内部接口设计规则

5.各部件的过程设计

A.处理与算法描述

B.接口描述

C.设计语言(或其他)描述

D.使用的部件

E.内部程序逻辑描述

F.注释/约束/限制

6.运行设计

A.运行部件组合

B.运行控制

C.运行时间

7.出错处理设计

A.出错处理信息

B.出错处理对策:i.设置后备;ii.性能降级;iii.恢复和再启动

8.安全保密设计

9.需求/设计交叉索引

10.测试部分

A.测试方针

B.集成策略

C.特殊考虑

11.特殊注解

12.附录

第五章

5.1简述数据流图的主要思想,概述使用数据流图进行需求分析的过程。

数据流图描述输入数据流到输出数据流的变换(即加工),用于对系统的功能建模。

1.画出系统的输入和输出

A.确定源和宿

B.确定加工

C.确定数据流

D.顶层图通常没有文件

2.画出系统内部

A.确定加工

B.确定数据流

C.确定文件

D.确定源和宿

3.画出加工内部

4.重复第3步,直至每个尚未分解的加工都足够简单(即不必再分解)

5.2分别采用数据流方法中的哪些技术来完成用户需求的精确化、一致化和完全化任务?

1.父图和子图平衡

2.数据守恒

3.局部文件

4.一个加工的输入数据流不能与该加工的输入数据流同名

5.每个加工至少有一个输入数据流和一个输出数据流

6.在整套分层数据流中,每个文件应至少有一个加工读该文件,有另一个加工写该文

件。

7.分层数据流图中得每个数据流和文件都必须命名(除了流入或流出文件的数据流),

并且与数据字典一致。

8.分层DFD中的每个基本加工(即不再分解子图的加工)都应有一个加工规约。5.3(略)

5.4在数据流图中,可否将两个加工用一个数据流相连?可否将两个源用一个数据流相连?为什么?

两个加工可以直接用数据流相连,两个源不能直接用数据流相连。因为数据流由一组固定成分的数据组成。在DFD中,数据流的流向可以有以下几种:从一个加工刘向另一个加工,从加工流向文件(写文件),从文件流向加工(读文件),从源流向加工,从加工流向宿。

5.5(略)

5.6(略)

5.7采用结构化分析方法写出书店管理系统的需求文档,包括数据流图及数据字典。

2、数据字典

存书数据字典:

出版社数据字典:

销售数据字典:

会员信息数据字典:

5.8(略)

5.9(略)

5.10

第六章

6.1 简述面向数据结构方法的特点

答:特点如下:

1 以信息对象及其操作作为核心进行需求分析;

2 认为复合信息对象具有层次结构,并且可按顺序,选择,重复3种结构分解为成员对象信息;

3 提供由层次信息结构映射为程序结构的机制,从而为软件设计奠定良好的基础。

6.2 采用Jackson图表示下面的文件结构:

第七章(略)

第八章

8.1什么是构件?

答:

根据pressman书中的定义

构件是某系统中有价值的、几乎独立的并可替换的一个部分,它在良好定义的体系结构语境内满足某种清晰的功能。

根据brown的定义

构件是一个独立发布的功能部分,可以通过其接口访问它的服务。

根据《计算机科学技术百科全书(第二版)》中的定义

软件构件是软件系统中具有相对独立功能,可以明确标识,接口由规约指定,与语境有明显依赖关系,可独立部署,且多由第三方提供的可组装软件实体。

软件构件须承载有用的功能,并遵循某种构件模型。可复用构件是指具有可复用价值的构件。在基于构件的软件开发中经常会使用到的商用成品构件,是指由第三方开发的满足一定构件标准并且可组装的软件构件。

8.2 简述基于构件的软件开发过程。

基于构件的软件开发过程:

领域工程的步骤:

1 领域分析

2 建立领域特定的基准体系结构模型

3 标识候选构件

4 泛化和可变性分析

5 构件重构

6 构件的测试

7 构件的包装

8 构件入库

应用系统工程的步骤:

1 建立应用系统的体系结构模型;

2 寻找候选构件;

3 评价和选择合适的构件;

4 构件的修改和特化;

5 开发未被复用的不分;

6 构件的组装;

7 集成测试;

8 评价被复用的构件,并推荐可能的新构件。

第九章(略)

第十章(略)

第十一章

11.1软件测试的目的是什么?

软件测试的目的是发现软件中的错误和缺陷,并加以纠正。

11.2什么是白盒测试?什么是黑盒测试?

白盒测试又称结构测试,这种方法把测试对象看做一个透明的盒子,测试人员根据程序内部的逻辑结构及有关信息设计测试用例,检查程序中所有逻辑路径是否都按预定的要求正确地工作。白盒测试主要用于对程序模块的测试。包括:

●程序模块中的所有独立路径至少执行一次。

●对所有逻辑判定的取值(“真”与“假”)都至少测试一次。

●在上下边界及可操作范围内运行所有循环

●测试内部数据结构的有效性等

黑盒测试又称行为测试,这种方法吧测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符和它的功能需求。黑盒测试可用于各种测试,它试图发现以下类型的错误:

●不正确或遗漏的功能

●接口错误,如输入输出参数的个数、类型等

●数据结构错误或外部信息(如外部数据库)访问错误

●性能错误

●初始化和终止错误

11.3

解:判定覆盖:(1)X=85,Y=85

(2)X=70,Y=95

(3)X=30,Y=95

条件覆盖:(1)X=85,X=85

(2)X=70,Y=75

(3)X=95,Y=50

(4)X=50,Y=95

(5)X=40,Y=40

判定条件覆盖:(1)X=85,X=85

(2)X=70,Y=75

(3)X=95,Y=50

(4)X=50,Y=95

(5)X=40,Y=40

(6)X=20,Y=95

(7)X=95,Y=20

条件组合覆盖:(1)X=85,X=85

(2)X=65,Y=85

(3)X=85,Y=65

(4)X=70,Y=75

(5)X=95,Y=50

(6)X=50,Y=95

(7)X=40,Y=40

路径覆盖:(1)X=85,Y=85

(2)X=70,Y=95

(3)X=30,Y=70

11.4(略)

11.5分别简述单元测试、集成测试、确认测试和系统测试的任务。

1.单元测试:又称模块测试,着重对软件设计的最小单元——软件构件或模块进行验

证。单元测试根据设计描述,对重要的控制路径进行测试,已发现构建或模块内部

的错误,通常采用白盒测试,并且多个构件或模块可以并行测试。单元测试的主要

内容:接口、局部数据结构、边界条件、独立路径和错误处理路径。

2.集成测试:也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照要求

(如根据结构图)组装成为子系统或系统,进行集成测试。使用黑盒测试方法测试

集成的功能,并且对以前的集成进行回归测试。

3.确认测试:经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,

接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是确认测

试的任务,即软件的功能和性能如同用户所合理期待的那样。

4.系统测试:将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,

进行信息系统的各种组装测试和确认测试,系统测试是针对整个产品系统进行的测

试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾

的地方,从而提高更加完善的方案。

11.6什么是α测试?什么是β测试?

1.α测试时由一个用户在开发者的场所进行的测试,软件在开发者对用户的“指导下”

进行测试。经过α测试后的软件成为β版软件。

2.β测试是指软件开发公司组织各方面的典型用户在日常工作中实际使用β版本,并

要求用户报告异常情况、提出批评意见,然后软件开发公司再对β版本进行改错和

完善。

11.7什么是回归测试?

回归测试就是对已经进行过的测试的子集的重新执行,以确保对程序的改变和修改,没有传播非故意的副作用。

11.8简述边界值分析方法的作用。

长期的测试工作经验告诉我们,大量的错误时发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。

第十二章(略)

第十三章

13.1请讨论时软件维护成本居高不下的因素。如何尽可能降低这些因素的影响?

1.

a)软件的维护周期长;

b)需要维护的软件往往没有文档、或文档资料严重不足、或软件的变化未在相应

的文档中反映出来;

c)维护活动占用了其它软件开发可用的资源,使资源的利用率降低;

d)一些修复或修改请求得不到及时安排,使得客户满意率下降;

e)维护的结果把一些新的潜在的错误引入软件,降低了软件质量;

f)将软件人员抽调到维护工作中,使得其他软件开发过程受到干扰。

2.

a)确定质量管理目标和优先级;

b)使用提高软件质量的技术和工具;

c)选择可维护性高的程序设计语言;

d)完善程序文档;

e)进行质量保证审查

13.2(略)

13.3软件维护过程是如何进行的?为什么要进行软件可维护性分析?

1.软件维护过程包括:建立维护组织;确定维护过程;保管维护记录;进行维护评价

等四个阶段。

2.可维护性是指理解、改正、调整和改进软件的难易程度。进行可维护性分析有利于

做出正确的决定,进而采取相应的方法应对客户的需求,对确实不能或者没有进行

维护的价值的软件坚决不进行维护,对于可以维护的软件来说,可维护性分析有助

于我们了解软件情况,从而做出相应的维护措施

13.4(略)

13.5(略)

13.6(略)

13.7在重构和正向工程之间存在的细微不同是什么?

重构是指在统一抽象级别上转换系统的描述形式;正向工程过程应用软件工程的原理、概念、技术和方法来重新开发某个现有的应用系统。从概念可以看出,重构是从一个系统环境转换到另一个系统环境,而正向工程则是重新开发,从零开始,没有一定基础的。

13.8(略)

第十四章

14.1何谓软件项目管理?软件项目管理与传统项目管理的不同点与相同点?

软件项目管理的对象是软件工程项目。它所涉及的范围覆盖了整个软件工程过程。

为使软件项目开发获得成功,关键问题是必须对软件项目的工作范围、可能风险、需要资源(人、硬件/软件)、要实现的任务、经历的里程碑、花费工作量(成本)、进度安排等做到心中有数。

项目管理的思想是共同的,不过,碰到不同的行业会有不同的管理方式。软件的项目管理是个特例,更倾向与对人工的管理,人工成本是构成软件项目成本的主要因素。

传统行业项目管理中,人、材、机都是构成项目成本的重要因素。

14.2(略)

14.3(略)

14.4何谓软件项目管理过程?其目的是什么?

软件项目管理过程从项目计划活动开始,而第一项计划活动就是估算:需要多长时间、需要多少工作量、以及需要多少人员。此外,我们还必须估算所需要的资源(硬件及软件)和可能涉及到的风险。

加强软件项目管理,就是以软件工程的各个环节为管理主线,将动态项目管理贯穿其中,通过对软件开发的项目范围、项目进度、项目质量、项目沟通、人力资源、项目成本六大核心要素的集成管理,实现软件开发管理效能的最大化,从而大大提高软件的开发质量。

14.5(略)

14.6如何理解任务分解及复杂性控制。

将一个项目分解为更多的工作细目或者子项目,使项目变得更小、更易管理、更易操作,此过程称为任务分解。

14.7软件项目启动前应完成哪些活动?

在软件项目启动前,必须对该项目进行可行性分析,明确项目的目标和范围,并在

此基础上选择候选的解决方案及可采用的软件过程模型,估算新系统可能的开发和运行成本及其效益,同时给出该项目在技术和管理上的要求。

14.8(略)

14.9(略)

14.10(略)

14.11(略)

14.12(略)

14.13(略)

14.14(略)

14.15什么是间接测量?为什么在软件度量工作中经常用到这类测量?

测量与被测量有确定函数关系的量,由函数关系表达式运算,得到所需的被测量。产品的间接测量包括功能、质量、复杂性、有效性、可靠性、可维护性等。构造软件所需的成本和工作量、生产的代码行数、以及其他直接测量是相对容易收集到的,然而,软件的质量和功能或其功效或可维护性是更难于评估的,只能间接测量。

14.16(略)

14.17(略)

14.18描述“已知风险”和“可预测风险”之间的差别。

已知风险,是通过仔细评估项目计划、开发项目的商业及技术环境、以及其它可靠的信息来源(如:不现实的交付时间,没有需求或软件范围的文档、恶劣的开发环境)之后可以发现的那些风险。

可预测风险,能够从过去项目的经验中推测出来(如:人员调整,与客户之间无法沟通,由于需要进行维护而使开发人员精力分散)。

14.19(略)

软件工程试题及答案34385

软件工程期末试卷(A) 说明:本试卷为04级计算机专业(专升本)软件工程期末试卷,总计100分,时间100分钟 一、选择题:(每题1分,共20分)(将答案写在题号前的()中) ( C )1. 软件是()。 A. 处理对象和处理规则的描述 B. 程序 C. 程序及其文档 D. 计算机系统 ( B )2. 软件需求规格说明的内容不应包括()。 A. 主要功能 B. 算法的详细描述 C. 用户界面及运行环境 D. 软件的性能 ( B )3. 程序的三种基本控制结构是()。 A. 过程、子程序和分程序 B. 顺序、选择和重复 C. 递归、迭代和回溯 D. 调用、返回和转移 ( D) 4. 面向对象的分析方法主要是建立三类模型,即( )。 A) 系统模型、ER模型、应用模型 B) 对象模型、动态模型、应用模型 C) E-R模型、对象模型、功能模型 D) 对象模型、动态模型、功能模型 ( C ) 5. 在E-R模型中,包含以下基本成分( )。 A) 数据、对象、实体 B) 控制、联系、对象 C) 实体、联系、属性 D) 实体、属性、操作 ( A ) 6. 各种软件维护的类型中最重要的是( )。 A) 完善性维护B) 纠错性维护C) 适应性维护D) 预防性维护 ( B ) 7.软件测试的目标是()。 A. 证明软件是正确的 B. 发现错误、降低错误带来的风险 C. 排除软件中所有的错误 D. 与软件调试相同 ( D )8.软件生命周期中所花费用最多的阶段是() A.详细设计 B.软件编码 C.软件测试 D.软件维护 ( C )9.若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0, 1.0],现从输入的角度考虑一组测试用例:-1.001, -1.0, 1.0, 1.001.设计这组测试用例的方法是()A.条件覆盖法 B.等价分类法 C.边界值分析法 D.错误推测法 ( D )10、详细设计的基本任务是确定每个模块的( )设计 A.功能 B.调用关系 C.输入输出数据 D.算法 ( A )11.设函数C(X)定义问题X的复杂程序,函数E(X)确定解决问题X需要的工作量(时间)。对于两个问题P1和P2,如果C(P1)>C(P2)显然E(P1)>E(P2),则得出结论E(P1+P2)>E(P1)+E(P2)就是:() A.模块化的根据B.逐步求精的根据C.抽象的根据D.信息隐藏和局部化的根据 ( D )12.下面几种白箱测试技术,哪种是最强的覆盖准则() A.语句覆盖B.条件覆盖C.判定覆盖D.条件组合覆盖

软件工程习题及参考答案

软件工程习题及部分参考答案 判断题 ?软件也会磨损和老化。(X) ?完善性维护是提高或完善软件的性能。(√) ?数据字典是对数据流图中的数据流,加工、数据存储、数据的源和终点进行详细定义。 (X) ?软件是指用程序设计语言(如PASCAL ,C,VISUAL BASIC 等)编写的程序,软件开发实际上就是编写程序代码。(X) ?软件模块之间的耦合性越弱越好。(√) ?如果通过软件测试没有发现错误,则说明软件是正确的。(X) ?快速原型模型可以有效地适应用户需求的动态变化。(√) ?模块化,信息隐藏,抽象和逐步求精的软件设计原则有助于得到高聚,低耦合度的软件产品。(√) ?集成测试主要由用户来完成。(X) ?确认测试计划应该在可行性研究阶段制定(X) ?白盒测试无需考虑模块部的执行过程和程序结构,只要了解模块的功能即可。(X) ?软件概要设计包括软件系统结构设计以及数据结构和数据库设计。(√) ?软件工程采用的生存周期方法就是从时间角度对软件的开发和维护这个复杂问题进行分解,将软件生存的时期分为若干阶段。(√) ?系统流程图表达的是部件的信息流程,还表示对信息进行加工处理的控制过程。(╳)?模块越多,开发成本越小。(╳) ?软件测试的目的就是证明软件没有错。(╳) ?PAD图在设置了五种基本的控制结构后,还允许递归使用。(√) ?在进行了可行性分析后,需求分析就只需要解决目标系统的设计方案。(×) ?SA法是面向数据流,建立在数据封闭原则上的需求分析方法。(√) ?HIPO 法既是需求分析方法,又是软件设计方法。(√) ?在面向对象的需求分析方法中,建立动态模型是最主要的任务。(×) ?加工小说明是对系统流程图中的加工进行说明。(×) ?判定表的优点是容易转换为计算机实现,缺点是不能够描述组合条件。(×) ?需求分析的主要方法有SD 法、OOA 法及HIPO 法等。(×) ?分层的DFD 图可以用于可行性分析阶段,描述系统的物理结构。(×) ?信息建模方法是从数据的角度来建立信息模型的,最常用的描述信息模型的方法是E-R 图。(√) ?用于需求分析的软件工具,应该能够保证需求的正确性,即验证需求的一致性、完整性、现实性和有效性。(√) ?PDL经常表现为一种"混杂"的形式,他不允许自然语言如英语的词汇与某种结构化程序设计语言(如Pascal,C,Ada等)的语法结构交织在一起.(X) ?设计阶段的输出是编码阶段的输入.(√) ?通过软件测试,可以发现软件中所有潜伏的错误.(X) ?非结构化维护用于软件的配置中只有源代码维护.(√) ?系统规格说明是系统分析和定义阶段生成的一种文档.(√) ?数据流图的分解速度应保持较高.通常一个加工每次可分解为10~20个子加工.(X)

软件工程试题及答案

4. 面向对象的分析方法主要是建立三类模型,即( D )。 A) 系统模型、ER模型、应用模型 B) 对象模型、动态模型、应用模型 C) E-R模型、对象模型、功能模型D) 对象模型、动态模型、功能模型 5. 在E-R模型中,包含以下基本成分( )。 A) 数据、对象、实体B) 控制、联系、对象C) 实体、联系、属性 D) 实体、属性、操作 9.若有一个计算类型的程序,它的输入量只有一个X,其范围是[, ],现从输入的角度考虑一组测试用例:, , , . 设计这组测试用例的方法是( c ) A.条件覆盖法 B.等价分类法C.边界值分析法 D.错误推测法 10、详细设计的基本任务是确定每个模块的( d )A.功能B.调用关系C.输入输出数据 D.算法 11.设函数C(X)定义问题X的复杂程序,函数E(X)确定解决问题X需要的工作量(时间)。对于两个问题P1和P2,如果C(P1)>C(P2)显然E(P1)>E(P2),则得出结论E(P1+P2)>E(P1)+E(P2)就是:( a ) A.模块化的根据 B.逐步求精的根据 C.抽象的根据 D.信息隐藏和局部化的根据13.面向数据流的设计方法把( D )映射成软件结构。 A.数据流 B.系统结构 C.控制结构 D.信息流 14.内聚程度最低的是( A.偶然 )内聚A.偶然 B.过程 C.顺序 D.时间 15.确定测试计划是在( D )阶段制定的.A.总体设计 B.详细设计 C.编码 D.测试 16.需求分析的产品是( D ) A.数据流程图案 B.数据字典 C.判定表D.需求规格说明书 17.数据字典是软件需求分析阶段的最重要工具之一,其最基本的功能是( C ) A.数据库设计 B.数据通信 C.数据定义 D.数据维护 18.( D )引入了“风险驱动”的思想,适用于大规模的内部开发项目。 A.增量模型 B.喷泉模型 C.原型模型D.螺旋模型 (×)2、系统测试的主要方法是白盒法,主要进行功能测试、性能测试、安全性测试及可靠性等测试。 (×)4、软件需求分析的任务是建立软件模块结构图。 (√)5、尽可能使用高级语言编写程序(×)6、以结构化分析方法建立的系统模型就是数据流图。 (×)7、进行总体设计时加强模块间的联系。(×)8、编码时尽量多用全局变量. (√)9、用CASE环境或程序自动生成工具来自动生成一部分程序.(×)10、软件测试是要发现软件中的所有错误。 1. 软件生命期各阶段的任务是什么答:软件生命期分为7个阶段:1、问题定义:要解决的问题是什么 2、可行性研究:确定问题是否值得解,技术可行性、经济可行性、操作可行性 3、需求分析:系统必须做什么 4、总体设计:系统如何实现,包括系统设计和结构设计 5、详细设计:具体实现设计的系统 6、实现:编码和测试 7、运行维护:保证软件正常运行。 2、软件重用的效益是什么?

软件工程部分课后练习题答案

第一章 1.计算机系统是由计算机硬件系统和软件系统这两个密不可分的部分组成的。 2.计算机软件系统通过运行程序来实现各种不同应用,包括用户为自己的特定目的编写的程序、检查和诊断机器系统的程序、支持用户应用程序运行的系统程序、管理和控制机器系统资源的程序等。 3.在软件工程学中,软件开发技术包括软件开发方法学、软件工具和软件工程环境。 4.在软件工程层次结构中,包括工具层、方法层、过程、技术层和质量保证层。 5.在面向对象概念中,消息传递是其与外部世界相互关联的唯一途径。 第三章 1.软件需求分析,可以把软件功能和性能的总体概念描述为具体的软件需求规格说明,进而建立软件开发的基础。 2.软件需求工作基本上包括收集用户、市场等方面对项目的需要,经过分析建立解题模型,细化模型,抽取需求。 3.结构化分析方法的基本步骤是采用由顶向下对系统进行功能分解,画出分层数据流图;由后向前定义系统的数据和加工,绘制数据词典和加工说明;最终写出软件需求和规格说明书。 4.面向对象分析方法总是从理解系统的“使用实例”开始,基本步骤是:定义系统的用例,在领域分析的基础上建立问题域的类(对象模型),然后开始建立对象——关系和对象——行为模型。 5.需求分析评审过程由以下5个步骤组成:规划、准备、召开审查大会、修改缺陷、重审。 第四章 1.与软件需求分析一样,软件设计也有两种主要设计方法:以结构化设计为基础的结构化软件设计和面向对象方法指导的面向对象软件设计。 2.传统的软件设计任务通常分两个阶段完成。第一个阶段是概要设计,包括体系结构设计

和接口设计,并编写概要设计文档;第二阶段是详细设计,其任务是确定各个软件的数据结构和操作,产生描述各软件组件的详细设计文档。 3.结构化的软件设计方法是一种面向数据流的设计方法,在面向数据流的方法中,数据流是考虑一切问题的出发点。 4.在数据流图中所代表的结构化设计模型中,所有系统均可纳入两种典型的形式,因此系统结构图也有两种类型:变换型系统结构图,事务型系统结构图。 5.Jackson表示法包括图形描述(Jackson图)和文本描述(Jackson伪代码)两种形式。 第五章 1.与结构化设计一样,面向对象设计也是将分析阶段所建立的分析模型转变为软件设计模型,应用数据设计(对象属性设计)、接口设计(消息模型开发)以及过程设计(子系统级设计)。 2.当两个子系统相互通信时,可以建立客户机/服务器连接或端对端连接。 3.系统设计不仅包括主要的业务需求子系统设计,还包括用户界面子系统设计、任务管理子系统设计、数据管理子系统设计。 4.对象设计强调从问题域的概念转换成计算机领域的概念,通过对象的描述、算法和数据结构设计、程序构件和接口,实现相关的类、关联、属性和操作。 5.在面向对象设计中系统设计的主要目标是表示软件体系结构。对象设计着重于对象及其交互的描述 第八章 1.软件程序测试的目的是发现程序中的错误,其主要任务是通过在计算机上执行程序,暴露

软件工程课后习题参考答案

1.简述软件开发的本质。 答:软件开发的本质就是实现问题空间的概念和处理逻辑到解空间的概念和处理逻辑之间的映射。P19 2.简述实施软件开发的基本途径。 答:实施软件开发的基本途径是系统建模。所谓系统建模,是指运用所掌握的知识,通过抽象,给出该系统的一个结构——系统模型。P19 3.简述何谓模型以及软件开发中所涉及的模型。 答:模型是一个抽象。该抽象是在意图所确定的角度和抽象层次对物理系统的一个描述,描述其中的成分和成分之间所具有的特定语义的关系,还包括对该系统边界的描述。 软件开发中所涉及的模型可分为两大类,一类称为概念模型,描述了系统是什么;另一类统称为软件模型,描述了实现概念模型的软件解决方案。 4.简述软件开发所涉及的两大类技术。 答:软件开发所涉及的两大类技术为:一是求解软件的开发逻辑,二是求解软件的开发手段。 5、简述需求与需求规约的基本性质。 答:需求的基本性质:1) 必要的,该需求是用户所要求的。2)无歧义的,该需求只能用一种方式解释。3)可测的,该需求是可进行测试的。4)可跟踪的,该需求可从一个开发阶段跟踪到另一个阶段。5)可测量的,该需求是可测量的。 需求规约的基本性质:1)重要性和稳定性程度:按需求的重要性和稳定性,对需求进行分级。2)可修改的:在不过多地影响其他需求的前提下,可以容易地修改一个单一需求。 3)完整的:没有被遗漏的需求。4)一致的:不存在互斥的需求。 6、简述软件需求的分类。

答:软件需求可以分为两大类:一类是功能需求,一类是非公能需求,而非公能需求可 7、举例说明功能需求和非功能需求之间的基本关系。 答: 非功能需求可作用于一个或多个功能需求,例如 非功能需求可作用于一个或多个功能需求 其中,非功能需求1作用于功能需求1和功能需求3等;非功能需求2作用于功能需求2等。P24 8、有哪几种常用的初始需求发现技术 答:有5种常用的需求发现技术:自悟、交谈、观察、小组会和提炼。P26 9、简述需求规约的3种基本形式。 (1) 非形式化的需求规约。非形式化的需求规约即以一种自然语言来表达需求规约,如同使用一种自然语言写了一篇文章。(2) 半形式化的需求规约。半形式化的需求规约即以半形式化符号体系(包括术语表、标准化的表达格式等)来表达需求规约。(3)形式化的需求规约。形式化的需求规约即以一种基于良构数学概念的符号体系来编制需求规约,一般往往伴有解释性注释的支持。 P29 10、简述软件需求规约的内容和作用。 答:软件需求规约的内容有:引言、总体描述、特定需求、附录、索引。P28 需求规约的作用可概括为以下4点:1)需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现。2)对于项目的其余大多数工作,需求规约是一个管理控制点。3)对于产品/系统的设计,需求规约是一个正式的、受控的起始点。4)需求规约是创建产品验收测试计划和用户指南的基础。P31 11、简述需求规约在项目开发中的基本作用。 答:需求规约的作用可概括为以下4点:1)需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现。2)对于项目的其余大多数工作,需求

《软件工程》试题及参考答案(第6套)

第一部分选择题 一、单项选择题(本大题共20小题,每小题1分,共20分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1、()是软件生存期中的一系列相关软件工程活动的集合,它由软件规格说明、软件设计与开发、软件确认、软件改进等活动组成。 A 软件过程 B 软件工具 C 质量保证 D 软件工程 2、在各种不同的软件需求中,功能需求描述了用户使用产品必须要完成的任务,可以在用例模型或方案脚本中予以说明,()是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的额外要求。 A 业务需求 B 功能要求 C 非功能需求 D 用户需求 3、软件测试计划开始于需求分析阶段,完成于()阶段。 A 需求分析 B 软件设计 C 软件实现 D 软件测试 4.下面关于面向对象方法中消息的叙述,不正确的是( )。 A. 键盘、鼠标、通信端口、网络等设备一有变化,就会产生消息 B.操作系统不断向应用程序发送消息,但应用程序不能向操作系统发送消息 C. 应用程序之间可以相互发送消息 D.发送与接收消息的通信机制与传统的子程序调用机制不同 5.美国卡内基—梅隆大学SEI提出的CMM模型将软件过程的成熟度分为5个等级,以下选项中,属于可管理级的特征是( )。 A.工作无序,项目进行过程中经常放弃当初的计划 B.建立了项目级的管理制度 C.建立了企业级的管理制度 D.软件过程中活动的生产率和质量是可度量的 6.在McCall软件质量度量模型中,()属于面向软件产品修改。 A.可靠性B.可重用性C.适应性 D.可移植性 7.软件生命周期中所花费用最多的阶段是() A.详细设计 B.软件编码 C.软件测 试 D.软件维护 8.需求分析阶段的任务是确定() A.软件开发方法 B.软件开发工具 C.软件开发费 D.软件系统的功能

软件工程课后习题(含答案)

第一章练习题 一、填空题 1、软件工程三要素是:方法、工具、过程。 2、软件开发方法是指软件开发过程中所应遵循的方法和步骤。 二、名词(术语)解释: 1、可靠性---是指在给定的时间间隔内,程序成功运行的概率。可靠性是衡量软件质量的一个重要目标。 2、可理解性---指系统具有清晰的结构,能直接反映问题的需求。可理解性有助于控制软件系统的复杂性,并支持软件的维护、移植和重用。 三、问答题 1、面向对象方法的优点是什么? 答:(1)将现实世界问题向面向对象解空间直接映射,实现对现实世界的直接模拟。 (2)以数据为中心,而不是基于对功能的分解,使得软件结构相对稳定,软件的重用性、可靠性、可维护等特性都较好。 2、可视化开发方法的优点有哪些? 答:(1)简化了图形用户界面的设计和编码工作,将开发的注意力主要集中在程序的执行逻辑和工作流程上。 (2)软件开发简单,易学、易上手。 (3)专业或非专业人员都能参与软件开发活动。 第二章练习题 一、填空题: 1、软件工程过程是:为获得软件产品,在软件工具支持下由软件人员完成的一系列软件工 程活动。 2、一个软件从定义、开发、使用和维护,直到最终被废弃,所经历的生存过程经历的生存过程称为软件生存期或叫生命期。 3、软件生命周期的阶段划分为3个时期是:定义时期、开发时期、维护时期。 4、软件工程标准的5个层次是:国际标准、国家标准、行业标准、企业规范、项目规范。 二、简答题: 1、瀑布模型的优点有哪些? 答:1、强迫开发人员采用规范的技术方法; 2、严格地规定了每个阶段必须提交的文档; 3、每个阶段结束前必须正式进行严格的技术审查和管理复审。 2、瀑布模型的缺点是什么? 答:1、在软件开发的初期阶段就要求做出正确、全面、完整的需求分析对许多应用软件来说是极其困难的。 2、在需求分析阶段,当需求确定后,无法及时验证需求是否正确、完整。 3、作为整体开发的瀑布模型,由于不支持产品的演化,缺乏灵活性,对开发过程中很 难发现的错误,只有在最终产品运行时才能暴露出来,从而使软件产品难以维护。

软件工程试题及答案

综合练习一答案 一.选择题: 1.软件危机出现于____,为了解决软件危机,人们提出了用____的原理来设计软件,这是软件工程诞生的基础。 A.50年代末 B.60年代初C.60年代末 D.70年代初 A.运筹学B.工程学 C.软件学 D.软件学 E.数字 2.开发软件需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作____。 A.软件投机B.软件危机C.软件工程D.软件产生 3.产生软件危机的原因有如下几点,除了______。 A、软件开发过程未经审查 B、软件开发不分阶段,开发人员没有明确的分工 C、所开发的软件,除了程序清单外,没有其他文档 D、采用工程设计的方法开发软件,不符合软件本身的特点 4.软件工程学是应用科学理论和工程上的技术指导软件开发的学科,其目的是____。 A.引入新技术提高空间利用率B.用较少的投资获得高质量的软件 C.缩短研制周期扩大软件功能D.硬软件结合使系统面向应用 5.请按顺序写出软件生命期的几个阶段____,____ ,____,____,____,____。 A.维护 B.测试 C.详细设计 D.概要设计 E.编码 F.需求分析6.瀑布模型把软件生存周期划分为软件定义、软件开发和____三个阶段,而每一阶段又可细分为若干个更小的阶段。 A.详细设计B.可行性分析C.运行及维护D.测试与排错7.划分软件生存周期的阶段时所应遵循的基本原则是_____。 A、各阶段的任务尽可能相关性 B、各阶段的任务尽可能相对独立 C、各阶段的任务在时间上连续 D、各阶段的任务在时间上相对独立 8.一个软件项目是否进行开发的结论是在______文档中作出的。 A、软件开发计划 B、可行性报告 C、需求分析说明书 D、测试报告 9.分析员是____。 A.用户中系统的直接使用者B.用户和软件人员的中间人 C.软件的编程人员 D。用户和软件人员的领导 10.下列叙述中,_______不属于数据字典的作用。 A、作为编码阶段的描述工具 B、为用户与开发人员之间统一认识 C、作为概要设计的依据 D、为需求分析阶段定义各类条目 11.使用结构化分析方法时,采用的基本手段是____。 A.分解和抽象 B.分解和综合C.归纳与推导D.试探与回溯12.结构化系统分析主要是通过____进行分析的。 A.算法分解B.控制结构分解 C.数据结构分解D.处理功能分解13.分层数据流图是一种比较严格又易于理解的描述方式,它的顶层描述了系统的____。 总貌B.细节C.抽象D.软件的作者 13.变换型和事务型是程序结构的标准形式。从某处获得数据,再对这些数据作处理,然后将结果送出是属于____。 A.变换型 B 事务型 14.需求分析说明书不能作为______。

-软件工程习题答案参考

软件工程 绪论 1.什么是软件危机?为什么会产生软件危机? 答:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。(1).软件维护费用急剧上升,直接威胁计算机应用的夸大。 (2).软件生产技术进步缓慢 2.什么是软件生产工程化?工程化生产方法与早期的程序设计方法 主要差别在哪里? 答:结构化程序设计地出现,使许多产业界认识认识到必须把软件生产从个人化方式改变为工程化。采用工程的概念、原理、技术和方法开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程,同时这也是工程化生产方法。 3.分别说明(1)软件开发方法与开发工具;(2)软件技术与软件管 理的相互关系。 答:(1)工具和方法,是软件开发技术的两大支柱,它们密切相关。当一种方法提出来并证明有效后,往往随之研制出相应的工具,来帮助实现和推行这种方法。新方法在推行初期,总有人不愿接受和采用。若将新方法融合于工具之中,使人们通过使用工具来了解新方法,就能更快促进新方法的推广。(2)在工业生产中,即使有先进的技术和设备,管理不善的企业也不能获得良好的效益。软件在生产中不能按质按时完成计划,管理混乱往往是其中的重要原因。所以对于一

个理想的软件工程环境,应该同时具备技术和管理两个方面。 4.试从你的亲身实践,谈谈软件工具在软件开发中的作用。 答:用C++开发一个软件,是校园一卡通的模块。首先,要在编辑程序支持下在计算机中输入源程序。然后编译程序,把源程序翻译成目标程序。如果发现错误,就重新调入编辑程序对源程序进行修改。编译通过后,再调用连接程序吧所有通过了编译目标程序连同与之有关的程序连接起来,构成一个能在计算机上运行的可执行软件。编译程序,编辑程序,连接程序以及支持他们的计算机操作系统,都属于软件工具。离开这些工具,软件开发就是去了支持,变得十分困难和低效,甚至不能运行。 5.什么是软件工程环境?谈谈你对环境重要性的认识。答:方法与工具相结合,再加上配套的软、硬件支持就形成环境。例如在批处理时代,用户开发的程序是分批送入计算机中心的计算机的,有了错误,就得下机修改。程序员对自己写的程序只能继续地跟踪,思路经常被迫中断,效率难于提高。分时系统的使用,使开发人员从此能在自己的终端上跟踪程序的开发,仅此一点,就明显提高了开发的效率。 6. 何谓面向对象软件工程?简述它与传统软件工程在各型软件开发中的作用。 答:以面向对象程序设计为基础。 7. 软件按规模大小可分成哪几类?简述软件工程中各型软件开发中的作用。 答:按规模分为极小、小、中、大、甚大、极大。(1)中小型软件:

软件工程试题库集及答案

综合练习一答案 选择题: 1.软件危机出现于____,为了解决软件危机,人们提出了用____的原理来设计软件,这是软件工程诞生的基础。 A.50年代末B.60年代初C.60年代末D.70年代初 A.运筹学B.工程学C.软件学D.软件学E.数字2.开发软件需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作____。 A.软件投机B.软件危机C.软件工程D.软件产生 3.产生软件危机的原因有如下几点,除了______。 A、软件开发过程未经审查 B、软件开发不分阶段,开发人员没有明确的分工 C、所开发的软件,除了程序清单外,没有其他文档 D、采用工程设计的方法开发软件,不符合软件本身的特点 4.软件工程学是应用科学理论和工程上的技术指导软件开发的学科,其目的是____。 A.引入新技术提高空间利用率B.用较少的投资获得高质量的软件 C.缩短研制周期扩大软件功能D.硬软件结合使系统面向应用5.请按顺序写出软件生命期的几个阶段____,____ ,____,____,____,____。 A.维护B.测试C.详细设计D.概要设计E.编码F.需求分析6.瀑布模型把软件生存周期划分为软件定义、软件开发和____三个阶段,而每一阶段又可细分为若干个更小的阶段。 A.详细设计B.可行性分析C.运行及维护D.测试与排错7.划分软件生存周期的阶段时所应遵循的基本原则是_____。 A、各阶段的任务尽可能相关性 B、各阶段的任务尽可能相对独立 C、各阶段的任务在时间上连续 D、各阶段的任务在时间上相对独立 8.一个软件项目是否进行开发的结论是在______文档中作出的。 A、软件开发计划 B、可行性报告 C、需求分析说明书 D、测试报告 9.分析员是____。 A.用户中系统的直接使用者B.用户和软件人员的中间人 C.软件的编程人员D。用户和软件人员的领导

《软件》课后习题答案

第一章 1.什么是程序,程序有哪些特性? 程序:是一个用计算机语言描述的某一问题的解决步骤,它的表示是静态的。 特性:静态与动态属性,由程序语言抽象的符号表达,是对数据施行算法的过程,是分层嵌套的。2.软件有哪些特性? 特性:功能、性能相对完备的程序系统,具有使用性能的软设备,软件是信息商品,易大批量生产、成本低,是极具竞争性的商品,投入的资金主要是人工费,是只有过时而无“磨损”的商品。 3.什么是群件,目前常见的群件产品有哪些? 群件:是近几年开发的一种基于电子邮件的应急系统软件,它拓 宽了电子邮件的的内涵,涵盖了很多通信协调功能。目前常见的群件产品有:IBM公司的lotus Note、Microsoft公司的Exchange Server 、Novell公司的Group Wise等 4.计算机的软件是由哪几部分组成的,各自的作用是什么? 软件由:软件程序(解题步骤)+数据(描述事物的属性和状态)+文档(功能性能的说明性信息)组成。 5.什么是程序开发环境,常见的开发环境有那些? 程序开发环境:即现在作用到的编程语言,一般以一个集成环境的形式出现。 此环境中包含了语言编辑器,调试工具,编译工具,运行工具,图标图像制作工具等。 6.常见的Internet工具有哪些? Web服务器软件、web浏览器、文件传送工具FTP、远程访问工具Telnet、邮件软件、网络聊天、多媒体等。 7.操作系统的作用(功能)是什么? 1、处理器管理 2、存储器管理 3、设备管理 4、文件管理 5、作业管理。 8.文件系统足以支持程序运行,数据库的作用是什么? 克服文件系统的缺陷。 9.软件开发的核心是编制可运行的程序,还有比这跟重要的工作么? 系统分析和数据分析。 10.程序设计语言本身是软件么? 是,而且是系统软件。 第二章 1.程序设计语言有哪两种实现方式,各有什么优缺点? 方式一:编译(优:可进行优化,目标码效率很高。缺:费时)方式二:解释(优:可以逐句读入源代码,比较灵活,小巧。解释器不大,工作空间也不大,且能根据程序的执行情况决定下一步需做什么。缺:一句一句的难于优化,效率低) 2.结构化程序设计语言有那几种基本控制结构? 顺序、选择、循环。 3.为什么要引进过程,过程和函数的区别有哪些? 引进了过程或函数可以让程序语言更清晰,可以多次调用。使用过程还可以降低程序的复杂性,使程序结构变得清晰明了。过程是不带返回值,函数是带返回值。 4.什么是全局变量,什么是局部变量? 全局变量:出了程序便失去定义,作用范围,整个程序。 局部变量:局部的程序块中有定义。 5. 什么是指针变量? 指向数据的地址的变量。 6.过程参数传递的方式有哪几种,各有什么特点? 传值:优:很安全,不会改变全局变量的值。缺:占用双倍存储单元,传值时不能带回值。 引用:优:能带返回值,存储空间小。缺;局部有可能改变全局变量的值。

软件工程课后习题答案

软件工程课后习题答案 第一章 一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。软件危机的典型表现: (1) 对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些都降低了开发商的信誉,引起用户不满。 (2) 用户对已完成的软件不满意的现象时有发生。 (3) 软件产品的质量往往是靠不住的。 (4) 软件常常是不可维护的。 (5) 软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。

(6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。 (7) 开发生产率提高的速度远跟不上计算机应用普及的需求。软件危机出现的原因: (1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。 (2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。 (3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。 二、假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改, 不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。

软件工程考试试题(含答案)

一、填空题(每空1分,共25分) 1.软件生存周期一般可以划分为,问题定义、____________、____________、设计、 编码、测试和____________。 2.基于软件的功能划分,软件可以划分成__________、__________、__________三种。 3.可行性研究,应从、技术可行性、运行可行性、和开 放方案可行性等方面研究。 4.系统流程图是描绘的传统工具。它的基本思想是用图形符号以 描绘系统里面的每个部件。 5.数据流图的基本四种成分:数据输入的源点和数据输出汇点、、 和。 6.结构化分析方法是面向________________进行需求分析的方法。结构化分析方法使 用________________与________________来描述。 7.是自动地共享类、子类和对象中的方法和数据的机制。 8.软件详细设计工具可分为3类,即________________、________________和 ________________。 9.为了在软件开发过程中保证软件的质量,主要采取下述措施:________________、 复查和管理复审、________________。 10.大型软件测试包括、、确认测试和 四个步骤。 1、可行性研究需求分析运行与维护 2、系统软件支撑软件应用软件 3、经济可行性法律可行性 4、物理系统黑盒子形式 5、加工数据流数据存储文件 6、数据流数据流图DFD 数据字典DD 7、继承性 8、图示工具、设计语言表格工具 9、审查测试 10、单元测试集成测试系统测试 二、单项选择题(每小题2分,共20分) 1 2 3 4 5 C C C A C 6 7 8 9 10 D D A C B 1.软件设计中划分模块的一个准则是()。 A、低内聚低耦合 B、低内聚高耦合 C、高内聚低耦合 D、高内聚高耦合 2.Jackson设计方法是由英国的M. Jackson提出的,它是一种面向()的软件 设计方法。

软件项目管理课后习题参考答案

第一章项目管理概述 一.选择题 1.项目是(D)。 A.一个实施相应工作围的计划 B.一组以协作式管理、获得一个期望结果的主意 C.创立独特的产品或服务所承担的临时努力 D.必须在规定的时间、费用和资源约束条件下完成的一次性任务 2.你刚被指派在你的公司的一个不同的部门中管理一个大的项目。你正试图了解项目是关于什么的,谁是主要的项目干系人,为了管理好此项目,你首先应该做(C)。 A.所有的项目计划 B.会见以前的项目经理,以找出他离开的原因 C.与你的老板见面,了解他对项目的看法 D.与你的新项目团队见面,认识他们和了解他们对项目的看法 3.不属于项目的活动是(B )。 A.一种新型罐头产品的开发 B.罐头产品的生产 C.罐头产品的试制 D.罐头产品的营销策划 4.项目是一个特殊的将被完成的有限任务,它是在一定的时间,满足一系列特定目标的多项相关工作的总称。此定义实际包含的含义有(D)。 A.项目是一项有待完成的任务,且有特定的环境与要求 B.在一定的组织机构,利用有限资源(人力、物力、财力等)在规定时间完成任务C.任务要满足一定性能、质量、数量、技术指标等要求

D.项目的实施具有一定的风险

第二章项目实施的环境与过程 一.选择题 1.项目管理中应用最广泛的组织形式是(C )。 A.项目式B.职能式C.矩阵式D.网络式 2.下面有关矩阵式组织环境的描述,不正确的是( A )。 A.项目的经理必须是职能部门领导,这样才能取得公司总经理对项目的信任B.项目经理和职能经理必须就谁占主导地位达成共识 C.矩阵式项目组织能够充分利用人力资源 D.矩阵式项目组织能够对客户的要求作出快速响应 3.在下列组织结构形式中,团队建设最困难的是( C )。 A.直线式结构B.职能式结构C.矩阵结构D.项目结构4.职能式项目组织形式中项目经理的权限( A )。 A.很小B.有限C.中等D.很高 5.项目在哪种组织中最不被重视(D)。 A.平衡矩阵型B.强矩阵型C.项目协调员型D.职能型6.下面各种类型的组织中,哪种最常发生冲突( B )。 A.职能型组织B.矩阵型组织 C.项目型组织D.项目协调员型组织 7.传统组织结构的不利因素是(B)。 A.与客户接触渠道单一B.对客户需求反应缓慢 C.项目领导拥有太多的正式权力D.直接项目报告太多

软件工程课后习题答案第五版

软件工程课后习题答案第五版 《软件工程导论》课后习题答案 第一章软件工程概论 1.什么是软件危机? 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题表现在以下几个方面: (1)用户对开发出的软件很难满意。 (2)软件产品的质量往往靠不住。 (3)一般软件很难维护。 (4)软件生产效率很低。 (5)软件开发成本越来越大。 (6)软件成本与开发进度难以估计。

(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。 2.为什么会产生软件危机? (1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。 (2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。 (3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。 3.怎样克服软件危机? (1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。

(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。 (3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。 总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。 4.构成软件项目的最终产品: 应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。 5.什么是软件生存周期? 软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。 6.软件生存周期为什么划分成阶段? (1) 任何一个阶段的具体任务不仅独立,而且简单,便于不同人员分工协作,从而降低整个软件开发工作的困难程度。

软件工程试题及答案

1. 软件生命期各阶段的任务是什么? 答:软件生命期分为7个阶段: 1、问题定义:要解决的问题是什么 2、可行性研究:确定问题是否值得解,技术可行性、经济可行性、操作可行性 3、需求分析:系统必须做什么 4、总体设计:系统如何实现,包括系统设计和结构设计 5、详细设计:具体实现设计的系统 6、实现:编码和测试 7、运行维护:保证软件正常运行。 2、软件重用的效益是什么? 答:1、软件重用可以显著地改善软件的质量和可靠性。 2、软件重用可以极大地提高软件开发的效率。 3、节省软件开发的成本,避免不必要的重复劳动和人力、财力的浪费。 3、自顶而下渐增测试与自底而上渐增测试各有何优、缺点? 答: ①自顶而下渐增测试 优点:不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,而且能够尽早发现上层模块的接口错误。 缺点:需要存根程序,底层错误发现较晚。 ②自底而上渐增测试 优点与缺点和自顶而下渐增测试相反。 4 、提高可维护性的方法有哪些? 答:在软件工程的每一阶段都应该努力提高系统的可维护性,在每个阶段结束前

的审查和复审中,应着重对可维护性进行复审。 在需求分析阶段的复审中,应对将来要扩充和修改的部分加以注明。在讨论软件可移植性问题时,要考虑可能要影响软件维护的系统界面。 在软件设计的复审中,因从便于修改、模块化和功能独立的目标出发,评价软件的结构和过程,还应对将来可能修改的部分预先做准备。 在软件代码复审中,应强调编码风格和内部说明这两个影响可维护性的因素。 在软件系统交付使用前的每一测试步骤中都应给出需要进行预防性维护部分的提示。 在完成每项维护工作后,都应对软件维护本身进行仔细认真的复审。 为了从根本上提高软件系统的可维护性,人们正试图通过直接维护软件规格说明来维护软件,同时也在大力发展软件重用技术。 简述软件测试要经过哪几个步骤,每个步骤与什么文档有关。 【解答】 测试过程按 4 个步骤进行,即单元测试(模块测试)、集成测试(子系统测试和系统测试)、确认测试(验收测试)和平行运行。 单元测试集中对用源代码实现的每一个程序单元进行测试,与其相关的文档是单元测试计划和详细设计说明书。 集成测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。与其相关的文档是集成测试计划和软件需求说明书。 确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。与其相关的文档是确认测试计划和软件需求说明书。 平行运行把已经经过确认的软件纳入实际运行环境中,与其他系统成份组合在一起进行测试。与其相关的文档:用户指南、使用手册等。 36.简述容错技术的四种主要手段,并解释。

软件工程课后参考答案

第一章课后参考答案 1.什么是软件危机?它们有哪些典型表现?为什么会出现软件危机? “软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”。这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。 它们有以下表现: (1)对软件开发成本和进度的估计常常很不准确; (2)用户对“已完成的”软件系统不满意的现象经常发生; (3)软件产品的质量往往靠不住; (4)软件常常是不可维护的; (5)软件通常没有适当的文档资料; (6)软件成本在计算机系统总成本中所占的比例逐年上升; (7)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。 出现软件危机的主要原因 (1)与软件本身的特点有关 (2)与软件开发和维护过程中使用的方法不正确有关

2.假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”时在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。 3.什么是软件工程?它有哪些本质特征?怎么用软件工程消除软件危机? 软件工程是指导知道计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。 本质特征: (1)软件工程关注于大型软件的构造 (2)软件工程的中心课题是控制复杂性 (3)软件经常变化

软件工程课后习题答案

第一章 1.1举出至少5个例子来说明“意外效应法则”在计算机软件方面的应用。 答:典型的例子包括使用“数字汽车仪表板”的软件,赋予高科技,高品质的图像的软件;如广泛的消费类电子产品的软件;个人电脑,工业仪器仪表和机器的软件。软件分化出的在电子商务方面的应用。 1.2举例说明软件对社会的影响(包括正面影响和负面影响)。 答:这是一个很好的课堂讨论问题(如果时间允许),而不是专注于老生常谈的(但很重要)隐私问题,生活质量等问题。您可能想要讨论关于”技术恐惧“方面的问题,软件也许会使它恶化但也可能减少”技术恐惧“。另一个有趣的方面是使用诺依曼的“风险”列在SEN中做重点讨论。你也可以考虑基于软件的“现金”经济,新模式的互动娱乐,虚拟现实,电子商务等方面来思考软件对社会的影响。 1.3针对1.1节提出的5个问题,请给出你的答案,并与同学讨论。 答:软件需要如此长的开发时间: a)设施不上线 b)开发工具并不如预期般运作 c)客户提出的新要求,需要重新设计和返工 d)产品依赖于政府的规定,被意外更改。 e)严格的要求,与现有系统的兼容性需要超过预期更多的测试,设计和实现。 f)多个操作系统下运行的任务需求比预期需要更长的时间。 g)软件项目风险管理比预期需要更多的时间。 h)依赖的技术仍处于开发阶段,从而延长日程安排。 开发成本高: a)比当时预期低得令人无法接受的质量,需要进行更多的测试,设计和实施工作。 b)制定了错误的软件功能需要重新设计和实施。 c)开发错误的用户界面,而导致重新设计和实施。 d)开发了不需要的额外的软件功能而延长了开发日程安排。 在将软件交付顾客使用之前,我们无法找到所有错误: a)产品依赖于政府监管,意外而改变。 b)产品技术标准草案,会意外更改。 c)有时会在项目后期添加新的开发人员。 d)因为团队内的冲突有时会导致沟通不畅,而产生糟糕的设计。 e)破坏高效调度产生的项目管理成果和无效的规划 f)有时装备部件质量差,导致额外的测试,设计和集成工作和管理额外的客户关系。 软件开发和维护的过程仍旧难以度量: a)有时该项目的目的是不明确。 b)有大量的业务所涉及的风险。 c)如果产品内置没有装好。 d)我们需要不断检讨我们的工作。 e)进行维护检查的时间。 f)在整个软件开发过程中要彻底组织项目团队。 1.4在交付最终用户之前,或者首个版本投入使用之后,许多应用程序都会有频繁的变更。

相关文档
相关文档 最新文档