软件工程概论第一次作业

【习题】

一、单项选择

1、软件是计算机系统中与硬件相互依存的另一部分,它是包括(  1 B )、(  2 A )及(  3 D )的完整集合。其中,(  1 B )是按事先设计的功能和性能要求执行的指令序列。(  2 A )是使程序能够正确操纵信息的数据结构。(  3 D  )是与程序开发、维护和使用有关的图文材料。

1 供选择的答案:

A. 数据         B. 程序   C. 用户使用手册        D. 图表

2 供选择的答案:

 A. 数据       B. 文档   C. 代码    D. 安装说明

3 供选择的答案:

A. 程序         B. 数据   C.   外设   D. 文档

 

2、从供选择的答案中选出与下列有关软件需求分析叙述相对应的正确答案,将其编号填入到相应的括弧(   )内。

有人将软件的发展过程划分为4个阶段:

第一阶段(1950~1950年代末)称为“程序设计的原始时期”,这时既没有(  A  ),也没有(  B  ),程序员只能用机器指令编写程序。

第二阶段(1950年代末~1960年代末)称为“基本软件期”。出现了(  A  ),并逐渐普及。随着(  B  )的发展,编译技术也有较大的发展。

第三阶段(1960年代末~1970年代中期)称为“程序设计方法时代”。这一时期,与硬件费用下降相反,软件开发费急剧上升。人们提出了(  C  )和(  D  )等程序设计方法,设法降低软件的开发费用。

第四阶段(1970年代中期~现在)称为“软件工程时期”。软件开发技术不再仅仅是程序设计技术,而是包括了与软件开发的各个阶段,如(  E  )、(  F  )、编码、单元测试、综合测试、(  G  )及其整体有关的各种管理技术。

供选择的答案:

A--D:① 汇编语言  ② 操作系统   ③ 虚拟存储器概念  ④ 高级语言  ⑤ 结构式程序设计  ⑥ 数据库概念 ⑦ 固件   ⑧ 模块化程序设计

E--G:① 使用和维护  ② 兼容性的确认  ③ 完整性的确认   ④ 设计   ⑤ 需求定义   ⑥ 图象处理

 

3、从供选择的答案中选出与下列有关软件需求分析叙述相对应的正确答案,将其编号填入到相应的括弧(   )内。

软件工程的最终目的是以较少的投资获得可维护的、可靠的、高效率的和可理解的软件产品。软件工程技术应遵循(  A  )、(  B  )、(  C  )、(  D  )、一致性、确定性、完备性、可验证性。

供选择的答案:

A--D:① 有效性   ② 合理性   ③ 局部化  ④ 协同性  ⑤ 实用性   ⑥ 模块化  ⑦ 抽象   ⑧ 信息隐蔽

 

4、软件产品的生产主要是 __C__。

A. 制造  B. 复制  C. 开发   D. 研制

5、个体手工劳动是__B__时代的软件生产方式。 

A. 程序系统   B. 程序设计  C. 软件工程  D. 程序编码

6、软件工程是一门__C__学科。

A. 理论性  B. 原理性  C. 工程性  D. 心理性

二、填空题

1、软件由计算机程序、数据和( 文档 )组成。

2、软件是一种(逻辑)产品,它与物质产品有很大的区别。

3、计算机系统由硬件、软件、使用计算机的人、数据库、(文档)和执行过程组成。

4、软件的发展,到现在为止,经历了三个阶段:(程序设计)、(程序系统)和软件工程。

5、程序设计时代的生产方式是(个体手工艺者),程序系统时代的生产方式是(手工作坊) ,软件工程时代的生产方式是(工程化)。

6、软件工程是一门综合性的交叉学科,它涉及计算机学科、(工程)学科、管理学科和(数学)学科。

7、计算机科学中的成果都可用于软件工程,但计算机科学着重于(理论和原理),软件工程着重于(建造软件系统)。

8、软件工程研究的主要内容是(方法)、(过程)和(工具)等三个方面。

9、软件开发各阶段任务的划分应尽可能(相对独立),同一阶段任务的性质应尽可能(相同)。

三、判断题

1.A system is a collection of objects and activities.(F)

2.An abstraction is a description of the problem at some level of generalization that allows us to concentrate on the key aspects of the problem without getting mired in the details.(T)

四、问答题

1.什么是软件?它的特点是什么?

软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。其中,程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发,维护和使用有关的图文材料。

软件的特点是:

(1)、依赖性:软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。软件不能完全摆脱硬件单独活动。在开发和运行中必须以硬件提供的条件为依据。有的软件依赖于某个操作系统。

(2)、可移植性:为了解除这种依赖性,在软件开发中提出了软件移植的问题,并且把软件的可移植性做为衡量软件质量的因素之一。

(3)、复用性:软件的开发至今尚未完全摆脱手工艺的开发方式。由于传统的手工艺开发方式仍然占据统治地位,开发的效率自然受到很大的限制。为此,人们在软件技术方面做了许多卓有成效的工作,提出了许多新的开发方法,例如充分利用现成软件的复用技术、自动生成技术,也研制了一些有效的软件开发工具或软件开发环境。

(4)、复杂性:软件本身是复杂的。软件的复杂性可能来自它所反映的实际问题的复杂性,也可能来自程序逻辑结构的复杂性。软件开发,特别是应用软件的开发常常涉及到其它领域的专门知识,这对软件人员提出了很高的要求。

(5)、昂贵性:软件成本相当昂贵。软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,它的成本是比较高的。然而,也并非在所有软件开发上的花费都能获得成果。

(6)、社会性:相当多的软件工作涉及到社会因素。许多软件的开发和运行涉及机构、体制及管理方式等问题,甚至涉及到人的观念和人们的心理。它直接影响到项目的成败。

2.试比较软件发展的三个时期的特点,从软件所指、软件工作范围、软件开发组织、决定质量的因素、开发技术和手段等几个方面说明它们的差别。

3.软件工程是开发、运行、维护和修复软件的系统化方法,它包含哪些要素?试说明之。

软件工程包括三个要素:方法、工具和过程。

软件工程方法为软件开发提供了“如何做”的技术。它包括了多方面的任务,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计、算法过程的设计、编码、测试以及维护等。

软件工具是指为了支援软件人员的开发和维护活动而使用的软件。例如项目估算工具、需求分析工具、设计工具、编程和调试工具、测试工具和维护工具等。使用了软件工具后可以大大提高软件的生产率和质量。

软件工程的过程则将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。过程定义了方法使用的顺序、要求交付的文档资料、为保证质量和协调变化所需要的管理、及软件开发各个阶段完成的里程碑。

4.软件工程过程有哪几个基本过程活动?试说明之。

软件工程过程通常包含四种基本的过程活动:

P (Plan): 软件规格说明。规定软件的功能及其运行的限制;

D (Do):  软件开发。产生满足规格说明的软件;

C (Check): 软件确认。确认软件能够完成客户提出的要求;

A (Action):软件演进。为满足客户的变更要求,软件必须在使用的过程中演进。

5.软件产品的质量一直是用户高度重视的问题,简述有哪些评论质量的观点。

用户的观点:质量是恰好达到目的

制造的观点:质量是与需求说明的一致

产品的观点:质量是与产品的内在特性相联系的

基于价值的观点:质量取决于顾客愿意支付的金额

超越的观点:质量是可以认识而不能定义的

6.什么是软件质量?如何度量软件质量?

ANSI/IEEE Std 729-1983定义软件质量为"与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体"。M.J. Fisher 定义软件质量为"所有描述计算机软件优秀程度的特性的组合"。也就是说,为满足软件的各项精确定义的功能、性能需求,符合文档化的开发标准,需要相应地给出或设计一些质量特性及其组合,作为在软件开发与维护中的重要考虑因素。如果这些质量特性及其组合都能在产品中得到满足,则这个软件产品质量就是高的。

1991年ISO发布的ISO/IEC9126质量特性国际标准定义了6个质量特性,即功能性、可靠性、可维护性、效率、可使用性、可移植性;并推荐了21个子特性,如适合性、准确性、互用性、依从性、安全性、成熟性、容错性、可恢复性、可理解性、易学习性、操作性、时间特性、资源特性、可分析性、可变更性、稳定性、可测试性、适应性、可安装性、一致性、可替换性,但不做为标准。

7.软件产品质量评价金三角“产品运行、产品修改、产品变迁”中的“产品变迁”包含哪些质量要素和与之对应的评价标准。

产品变迁包含的质量要素和与之对应的评价标准为:

可移植性:简单性、软件系统独立性、硬件独立性

可复用性:简单性、通用性、模块化、软件系统独立性、硬件独立性

互用性:模块化、通信通用性、数据通用性

8.什么是CMM-SEI能力成熟度模型?其五级成熟度水平是什么?

CMM-SEI能力成熟度模型(Capability Manurity Model for Software,CMM)是软件工程协会SEI(Software Engineering Institution)在卡内基.梅隆大学开发完成的对一个组织软件开发能力进行评价的标准,它侧重于对软件开发过程和开发方法论的考察。

CMM五级成熟水平:

初始级

可重复级:有纪律的过程

已确定级:标准一致的过程

已管理级:可预测的过程

优化级:不断改进的过程

9.解释系统(system)的概念。

 A system (系统)is a collection of things: a set of entities, a set of activities, a description of the relationships among entities and activities, and definition of the boundary of the system.。系统是一组事务的集合:实体的集合、活动的集合、实体和活动之间关系的描述以及系统边界的定义。

10. 软件工程要达到的基本目标是什么?

软件工程需要达到的基本目标是:付出较低的开发成本、达到要求的软件功能、取得较好的软件性能、开发的软件易于移植、需要较低的维护费用、能按时完成开发工作及时交付使用。

11.软件工程的基本原则有哪些?试说明之。

在软件开发过程中必须遵循下列软件工程原则。

抽象 : 采用分层次抽象,自顶向下、逐层细化的办法进行功能分解和过程分解,可以由抽象到具体、由复杂到简单,逐步得到问题的解。

信息隐蔽 : 遵循信息封装,使用与实现分离的原则,将模块设计成“黑箱”,可以将实现的细节隐藏在模块内部,使用者只能通过模块接口访问模块中封装的数据。

模块化 : 按模块划分系统的体系结构,使得各模块间有良好的接口。这样有助于信息隐蔽和抽象,有助于表示复杂的系统。

局部化 : 按抽象数据类型思想及问题域中的概念来建立模块,确保模块之间低耦合,模块内部高内聚。这有助于控制解的复杂性。

确定性 : 软件开发过程中所有概念的表达应是确定的、无歧义性的、规范的。这有助于人们之间的沟通,保证整个开发工作协调一致。

一致性 : 强调软件开发过程的标准化、统一化。包括文档格式的一致,工作流程的一致,内、外部接口的一致,系统规格说明与系统行为的一致等。

完备性 : 软件系统不丢失任何重要成分,可以完全实现系统所要求功能。

可验证性 : 开发大型的软件系统需要对系统自顶向下、逐层分解。系统分解应遵循系统易于检查、测试、评审的原则,以确保系统的正确性。

12B. W. Boehm有七条准则是确保软件产品质量和开发效率的原理的最小集合。简述B. W. Boehm的软件工程基本准则。

用分阶段的生命周期计划严格管理;

坚持进行阶段评审;

实行严格的产品控制;

采用现代程序设计技术;

结果应能清楚地审查;

开发小组的成员应该少而精;

承认不断改进软件工程实践的必要性。

第二章习题

一、单项选择

1、软件开发费用只占软件生存期全部费用的_B___。

A. 1/2  B. 1/3  C. 1/4  D. 2/3

2、在软件开发过程中大约要花费__C__%的工作量进行测试和调试。

A. 20  B. 30  C. 40   D. 50

3、准确地解决“软件系统必须做什么”是__B__阶段的任务。  A. 可行性研究   B. 需求分析  C. 软件设计  D. 程序编码

4、软件生存期中时间最长的是_D__ 阶段。

A. 需求分析 B. 软件设计 C. 软件测试 D. 软件运行/维护

5、在软件生存期的模型中,_D__适合于大型软件的开发,它吸收了软件工程中“演化”的概念。

A .喷泉模型  B. 基于知识的模型  C. 瀑布模型  D. 螺旋模型

6、在软件生存期中,用户的参与主要在_A___。

A. 软件定义阶段B. 软件开发阶段、C. 软件维护阶段、D. 整个软件生存期过程中

7、在软件开发过程中的每个阶段都要进行严格的__D___,以尽早发现在软件开发过程中产生的错误。

A. 检验  B. 验证  C. 度量  D. 评审

8、在软件开发和维护过程中需要变更需求时,为了保持软件各个配置成分的一致性,必须实施严格的__B___。 

A. 产品检验  B. 产品控制  C. 产品标准化  D. 开发规范

9、实践表明,采用先进的开发技术可提高软件开发的生产率,还可提高软件的 __D__      

A. 可靠性  B. 可使用性  C. 安全性  D. 可维护性

10、为了提高软件开发过程的___A_,有效地进行管理,应当根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准。

A.   可见性  B.   生产率   C.   安全性  D.   有效性

11、随着开发小组人数的___A__,因交流开发进展情况和讨论遇到的问题而造成的通信开销也急剧增加。

A. 增加   B. 降低   C. 稳定  D. 不稳定

12、为保证软件开发的过程能够跟上技术的进步,必须不断地灵活地改进软件工程__C__

A. 原则   B. 工具   C. 过程       D. 方法

二、填空题

1、瀑布模型是将各个活动规定为依(软件生存期)连接的若干阶段的模型。它规定了各阶段的活动由前至后,相互衔接的固定次序,如同瀑布流水,逐级下落。

2、螺旋模型将开发过程分为几个螺旋周期。在每个螺旋周期内分为四个工作步骤:(制定计划)、(风险分析)、开发实施、(用户评估)。

3、喷泉模型是一种以(用户要求)为动力,以(对象)为驱动的模型。它使开发过程具有迭代性和无间隙性,适用于(面向对象)开发方法。

三、判断题

1.We can think of a set of ordered tasks as a process: a series of steps involving activities constraints and recourses that produce an intended output of some kind. (T)

2.The software development process is sometimes called the software life cycle. (T)

四、问答题

1、the meaning of process  过程的含义

A process defines who is doing what, when and how, in order to reach a certain goal.   过程定义了谁在作什么,什么时间怎样作。以便完成一个确定的目标。

2、 What is Process?

A Series of steps involving activities, constraints, and resources that produce an intended output of some kind.一系列涉及到活动、约束和资源的步骤,他们产生某种类型的有目的的输出。

3、Process Characteristics?过程的特征

The process prescribes all of the major process activities 过程规定了所有主要过程活动

Process uses resources, subject to a set of constraints (such as schedule ),and produces intermediate and final products  过程使用资源、服从于一组约束(比如进度约束),产生中间结果和最终产品。

The process may be composed of subprocesses that are linked in some way. The process may be defined as a hierarchy of processes,  organized so that each subprocess has its own process model 可由子过程组成,这些子过程用某种方式链接起来。过程可以定义为分层的过程等级结构,以便每个子过程具有自己的过程模型。

Each process activity has entry and exit criteria , so that we know when the activity begins and ends. 每个过程活动具有有入口和出口标准,这样可以知道活动何时开始及何时结束。

The activities are organized in a sequence, so that it is clear when one activity is performed relative to the other activities. 活动以一定顺序组织,因此,一个活动相对于其他活动何时完成是很清楚的。

Every process has a set of guiding principles that explain the goals of each activity 每个过程具有一系列的指导原则,以解释每个活动的目标

Constraints or controls may apply to an activity, resource or product  约束与控制可以应用到任何活动、资源或产品中。

4、Why software process modeling?

Writes down a description of development process, forms a common understanding of the activities, resources, and constraints involved in software development. 形成对软件开发中涉及到的活动、资源和约束的共同理解。

Helps the development team find inconsistencies, redundancies, and omissions in the process and in its constituent parts. 有助于开发小组发现过程及其组织成分中的不一致、冗余和遗漏。

The model reflects the goals of development, such as building high-quality software finding faults early in development, and meeting required budget and schedule constraints. 反映开发的目标(如构建高质量软件、早期发现错误、满足预算和开发进度)。

Every process should be tailored for the special situation in which it will be used.根据每个过程将被使用的特殊情况对其进行裁剪。

5.试说明“软件生存期”的概念。

软件与任何一个事物一样,有它的孕育、诞生、成长、成熟、衰亡的生存过程。这就是软件的生存期。它分为6个阶段:

(1) 软件项目计划 :在这一步要确定软件工作范围,进行软件风险分析,预计软件开发所需要的资源,建立成本与进度的估算。根据有关成本与进度的限制分析项目的可行性。

(2) 软件需求分析和定义 :在这一步详细定义分配给软件的系统元素。可以用以下两种方式中的一种对需求进行分析和定义。一种是正式的信息域分析,可用于建立信息流和信息结构的模型,然后逐渐扩充这些模型成为软件的规格说明。另一种是软件原型化方法,即建立软件原型,并由用户进行评价,从而确定软件需求。

(3) 软件设计 :软件的设计过程分两步走。第一步进行概要设计,以结构设计和数据设计开始,建立程序的模块结构,定义接口并建立数据结构。第二步做详细设计,考虑设计每一个模块部件的过程描述。经过评审后,把每一个加细的过程性描述加到设计规格说明中去。

(4) 程序编码 :在设计完成之后,用一种适当的程序设计语言或CASE工具生成源程序。应当就风格及清晰性对代码进行评审,而且反过来应能直接追溯到详细设计描述。

(5) 软件测试 :单元测试检查每一单独的模块部件的功能和性能。组装测试提供了构造软件模块结构的手段,同时测试其功能和接口。确认测试检查所有的需求是否都得到满足。在每一个测试步骤之后,要进行调试,以诊断和纠正软件的故障。

(6) 软件维护 :为改正错误,适应环境变化及功能增强而进行的一系列修改活动。与软件维护相关联的那些任务依赖于所要实施的维护的类型。

6 List the stages of Waterfall model, and state the advantages and shortage of the Waterfall model.

Include stages of requirements analysis, system design, program design, coding, unit & integration testing, acceptance testing, operation & maintenance.

Merits of Waterfall model

Has been used to prescribe software development activities in a variety of contexts. 已被用于在各种情况下规定软件开发活动。

Is very useful in helping developers lay out what they need to do. 帮助开发人员明确需要做什么

Easy to explain to customers who are not familiar with software development易于向不熟悉开发的顾客作出解释

It makes explicit which intermediate products are necessary in order to begin the next stage. 易于向不熟悉开发的顾客作出解释

More complex models are really just embellishments of the waterfall. 更复杂的模型是它的修改。其他模型的基础

Shortage of Waterfall model

Does not reflect the way code is really developed.它不能反映实际的代码开发方式。

The model imposes a project management structure on system development. 这个模型给系统开发强加了一种项目管理结构

Fail to treat software as a problem-solving process. present a manufacturing view.没能把软件看成是一个问题解决的过程,仅表达了一种制造观点。

The model tells us nothing about the typical back-and-forth activities that lead to creating   a final product. 模型没告诉我们开发最终产品所需的典型的不断改进的活动。

7.试说明螺旋模型软件开发方法的基本过程,比较它的优点和缺点。

螺旋模型是一种风险驱动的模型。在软件开发中存在各种风险。项目越复杂,设计方案、资源、成本、进度等因素的不确定性越大,项目开发的风险也就越大。及时对风险进行识别、分析,采取对策,可消除或减少风险的损害。螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相吻合。在每个螺旋周期内按四个象限,分为四个工作步。第一,制定计划:确定软件目标,选定实施方案,明确项目开发的限制条件;第二,风险分析:分析所选方案,识别风险,通过原型消除风险;第三,开发实施:实施软件开发;第四,客户评估:评价开发工作,提出修正建议,建立下一个周期的计划。

螺旋模型的优点:

实质上相当于在瀑布模型的每个阶段开始前引入风险分析,并由客户对阶段性产品做出评审,这对保证软件产品质量十分有利;

由于引入风险分析等活动,测试活动的确定性增强了;

螺旋模型最外层代表维护,开发与维护采用同样方式,使维护得到与开发同样的重视。

螺旋模型的缺点:

主要适合内部开发,否则风险分析必须在签订合同前完成,或者争取客户的最大理解;

只适合大型软件项目的开发,否则,每个阶段的风险分析将占用很大一部分资源,增加成本;

对开发人员的风险分析能力是极大的考验,否则,模型将退化到瀑布模型,甚至更糟。

8 List at least 6 typical process models

Waterfall model                             瀑布模型

Prototyping                                原型化模型

V-model                                   V-模型

Operational specification                     操作说明模型

Transformational model                      变换模型

Phased development:  increments and iteration   阶段化开发:增量和迭代模型

Spiral model                                螺旋模型

9、列举出5个以上的经典过程模型,详细阐述增量和迭代模型的原理、用途和开发难点。

瀑布模型、原型化模型、V-模型、操作说明模型、变换模型、螺旋模型

增量开发:定义发布时首先是定义一个小的、具有一定功能的子系统,然后在每一个新的发布中增加新的功能。

迭代开发:是在一开始就移交一个完整的系统,然后在每一个新的发布版本中改变每一个子系统的功能。

用途

培训可以在早期的版本中开始;

可以为那些以前从未实现的功能提前开拓市场 ;

当在使用的系统中有未预料的问题报告时,在新版本中开发人员可以全面快速修正这些问题;

开发小组可以把不同的发布版本针对不同的领域。

难点

在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经  开发出的产品;

必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便,也就是说,软件体系结构必须是开放的。

10、列举出5个以上的经典过程模型,详细阐述v模型原理、优点和缺点。

瀑布模型、原型化模型、V-模型、操作说明模型、变换模型、螺旋模型

v模型是瀑布模型的变种,增加了测试活动与分析和设计的关系

强调测试活动与分析和设计之间的关联:

用单元测试和集成测试来校验程序设计;

用系统测试来校验(verify)系统设计;

用验收测试来确认(validate)需求;

与瀑布模型关注文档和工作产品不同,V模型的关注点是软件开发各阶段的活动以及正确性,因此V模型是以活动驱动的。

优点与缺点

本质是把瀑布模型中一些隐含的迭代过程明确出来,使开发活动和验证活动的相关性更加明显;

V模型使抽象等级的概念也更明显:所有从需求到实现部分的活动关注的是建立更多的系统详细表述,而所有从实现到交付运行的活动关注的是对系统的验证和确认。

和瀑布模型一样,都是对软件开发过程过份简单、理想化的抽象,对需求变化的适应性差。   

 

发布了58 篇原创文章 · 获赞 22 · 访问量 9861

猜你喜欢

转载自blog.csdn.net/zsd0819qwq/article/details/103792508