原理方法及应用课后习题2.docx

上传人:b****7 文档编号:10345690 上传时间:2023-02-10 格式:DOCX 页数:17 大小:50.52KB
下载 相关 举报
原理方法及应用课后习题2.docx_第1页
第1页 / 共17页
原理方法及应用课后习题2.docx_第2页
第2页 / 共17页
原理方法及应用课后习题2.docx_第3页
第3页 / 共17页
原理方法及应用课后习题2.docx_第4页
第4页 / 共17页
原理方法及应用课后习题2.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

原理方法及应用课后习题2.docx

《原理方法及应用课后习题2.docx》由会员分享,可在线阅读,更多相关《原理方法及应用课后习题2.docx(17页珍藏版)》请在冰豆网上搜索。

原理方法及应用课后习题2.docx

原理方法及应用课后习题2

软件工程——原理、方法与应用

绪论

1.什么是软件危机?

为什么会产生软件危机?

答:

软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。

(1).软件维护费用急剧上升,直接威胁计算机应用的夸大。

(2).软件生产技术进步缓慢

5.什么是软件工程环境?

谈谈你对环境重要性的认识。

答:

方法与工具相结合,再加上配套的软、硬件支持就形成环境。

例如在批处理时代,用户开发的程序是分批送入计算机中心的计算机的,有了错误,就得下机修改。

程序员对自己写的程序只能继续地跟踪,思路经常被迫中断,效率难于提高。

分时系统的使用,使开发人员从此能在自己的终端上跟踪程序的开发,仅此一点,就明显提高了开发的效率。

6.何谓面向对象软件工程?

简述它与传统软件工程在各型软件开发中的作用。

答:

以面向对象程序设计为基础。

7.软件按规模大小可分成哪几类?

简述软件工程中各型软件开发中的作用。

答:

按规模分为极小、小、中、大、甚大、极大。

(1)中小型软件:

软件工程对改进软件质量,提高程序员生产率和满足用户的需求,有很大的作用。

(2)大型软件:

这类软件必须从头至尾坚持软件工程的方法,严格遵守标准文档格式和正规的复审制度,才能避免或减少混乱,真正开发出大型的软件。

什么是软件?

软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据以及有关描述程序操作和使用的文档,简而言之“软件=程序加文档”。

什么是软件工程?

软件工程师一种用科学知识和技术原理来定义开发和维护计算机的一门学科。

目标:

能用较低的成本来开发软件且软件的性能。

软件生存周期与软件过程

1.什么是软件生存周期?

把生存周期划分为阶段的目的是什么?

答:

软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得交易控制和管理。

2.传统的瀑布模型把生存周期分为哪些阶段?

瀑布模型软件开发有哪些特点?

答:

瀑布模型在编码以前安排了分析阶段和设计阶段;阶段间具有顺序性和依赖性。

4.什么是快速原型法?

其快速表现在哪里?

答:

首先建立一个能够反映用户主要需求的原型,让用户实际看一看未来系统的概貌,以便判断哪些功能是符合需要的,哪些方面还需要改进。

然后将原型改进,最终建立完全符合用户要求的新系统。

它的快速表现在能够缩短开发周期的语言和工具,能在短时间内提供出成品,但不包括成品中的细节,然后让客户进行对比。

6.比较增量模型和螺旋模型的特点,有什么不同和相似的地方?

答:

增量模型是瀑布模型的顺序特征与快速原型法的迭代特征相结合的产物。

螺旋模型是一种迭代模型,每迭代一次,螺旋线就前进一周。

增量模型每个增量具有高内聚低耦合,高度的独立性。

而螺旋模型它在结合瀑布模型与快速原型的基础上还增加了风险分析。

11.可行性研究包含哪些内容?

答:

经济可行性,技术可行性,运行可行性,法律可行性。

12..为什么要进行风险分析?

软件的风险具有不确定性,可能发生也可能不发生,但一旦风险变成现实就会造成损失或者严重后果,风险分析的任务就是尽可能的量化不确定性的程序及每个风险导致的损失的程序,为软件开发的实施计划提供参考。

如果在可行性研究阶段就进行风险分析,重视风险,就可以更大限度减少风险的发生与损失。

风险分析包括:

风险识别,风险预测,风险驾驭(风险管理)

软件生存周期的主要活动:

需求分析,软件分析,软件设计,编码,软件测试,运行维护。

开发模型

特点

场合

瀑布模型

线性模型,每个阶段必须完成固定文档

需求明确的中小型软件开发

快速原型模型

用户介入早,通过迭代完善用户需求,应用快速开发工具

需求模糊的小型软件开发

增量模型

每次迭代完成一个增量,可用于OO开发

容易分块的大型软件开发

螺旋模型

典型迭代模型,重视风险分析,可用于OO开发

具有不确定性的大型软件开发

构件集成模型

软件开发与构件开发平行进行,主要用于OO开发

领域工程,行业的中型软件开发

转换模型

形式化的需求规格说明书,自动的程序变换系统

理想化的模型,尚无成熟工具支持

净室模型

形式化的增量开发模型,在洁净状态下实现软件的制作

开发团队熟悉形式化方法,中小型软件开发

结构化分析与设计

1.需求分析的任务是什么?

怎样理解分析阶段的任务是决定“做什么”,而不是“怎么做”?

答:

需求分析主要有两个任务:

第一是通过对问题及其环境的理解、分析和综合建立分析模型;第二是在完全弄清用户对软件系统的确切要求的基础上,用“软件需求规格说明书”把用户的需求表达出来。

需求分析的任务就是为了明确要开发的是一个什么样的系统,而不是去怎么去实现这个系统。

2.需求分析要经过哪些步骤?

答:

需求获取、需求提炼、需求描述、需求验证。

4.需求说明(或需求规格说明书)由哪些部分组成?

各部分的主要内容是什么?

答:

引言、信息描述、功能描述、行为描述、质量描述、接口描述、其他描述。

引言:

主要叙述在文体定义阶段确定的关于软件的目标与范围,简要介绍系统背景、盖帽、软件项目约束和按考资料等。

信息描述:

给出对软件所含信息的详细描述,包括信息的内容、关系、数据流向、控制流向和结构等。

功能描述:

对软件功能要求的说明,包括系统功能划分、每个功能的处理说明、限制和控制描述等。

行为描述:

包括对系统状态变化及事件和动作的描述,据此可以检查外部事件和软件内部的控制特征。

质量描述:

阐明在软件交付使用前需要进行的共更能测试和性能测试,并且规定源程序和文档应该遵守的各种标准。

接口描述:

包括系统的用户界面、硬件接口、软件接口和通信接口等的说明。

其他描述:

阐述系统设计和实现上的限制,系统的假设和依赖等其他需要说明的内容。

5.DFD和CFD有什么区别?

答:

DFD是数据流图,CFD是控制流图。

CFD主要表示程序的控制结构,DFD主要表示程序的数据结构。

结构化分析(工具:

DFD,PSPEC)分析模型(分层DFD图)+SRS

结构化设计(工具:

SC图)映射初始设计模型(初始SC图)

初始设计模型(初始SC图)优化最终设计模型(最终SC图)

SA的两项基本任务:

建立系统分析模型和编写软件需求规格说明书。

SD阶段把分析模型中的DFD图转为最终的SC图。

初始SC图

总体设计

软件设计最终SC图

详细设计:

完成模块说明

分解和细化历来是重要的软件设计策略,细化的实质是分解。

SA模型的组成:

数据字典处于模型的核心,他是系统涉及的各种数据对象的总和。

从DD出发可构建的三种图:

a.实体联系图(E-R图)用于描述数据对象间的关系,它代表软件的数据模型,在实体联系图中出现的每个数据对象的属性,均可用数据对象说明来描述。

b.数据流图(DFD)主要作用是指明系统中的数据时如何流动和变换的,以及描述使数据流进行变换的功能。

在DFD图中出现的每个功能,则可在加工规格说明中剪下描述,他们一起构成软件的功能模型。

c.状态变换图(STD)用于指明系统在外部事件的作用下将如何动作,表明系统的各种状态以及状态间的变换(变迁)从而构成行为模型的基础.

DD的作用:

对软件中的每个数据规定一个定义条目。

包括数据流,数据文件,数据项。

加工规格说明书包括结构化语言,判定树或者判定表。

模块划分的原则:

模块的总行数应控制在10~100行的范围内,最好为30~60行;模块位置应否变更,应视对计算机处理是否方便而定。

高扇入/低扇出原则要会判断:

扇入高则上级模块多,能够增加模块的利用率;扇出低表示下层模块少,可以减少模块调用和控制的复杂度。

传统的软件工程将软件技术分成两步走:

总体(或结构)设计---用最终SC图表示;模块设计---用逐步细化的方法来实现。

伪代码和PDL语言:

伪代码属于文字形式的表达工具,他形式上与代码相似,但并非真正的代码,也不能在计算机上执行。

4.面向对象与UML

1.面向对象有哪些特征?

封装,继承,抽象,多态

3.UML中提供了哪9种图?

试述每种图所描述的内容?

1、用例图

   描述角色以及角色与用例之间的连接关系。

说明的是谁要使用系统,以及他们使用该系统可以做些什么。

一个用例图包含了多个模型元素,如系统、参与者和用例,并且显示了这些元素之间的各种关系,如泛化、关联和依赖。

2、类图

   类图是描述系统中的类,以及各个类之间的关系的静态视图。

能够让我们在正确编写代码以前对系统有一个全面的认识。

类图是一种模型类型,确切的说,是一种静态模型类型。

3、对象图

   与类图极为相似,它是类图的实例,对象图显示类的多个对象实例,而不是实际的类。

它描述的不是类之间的关系,而是对象之间的关系。

4、活动图

   描述用例要求所要进行的活动,以及活动间的约束关系,有利于识别并行活动。

能够演示出系统中哪些地方存在功能,以及这些功能和系统中其他组件的功能如何共同满足前面使用用例图建模的商务需求。

5、状态图

   描述类的对象所有可能的状态,以及事件发生时状态的转移条件。

可以捕获对象、子系统和系统的生命周期。

他们可以告知一个对象可以拥有的状态,并且事件(如消息的接收、时间的流逝、错误、条件变为真等)会怎么随着时间的推移来影响这些状态。

一个状态图应该连接到所有具有清晰的可标识状态和复杂行为的类;该图可以确定类的行为,以及该行为如何根据当前的状态变化,也可以展示哪些事件将会改变类的对象的状态。

状态图是对类图的补充。

6、序列图(顺序图)

   序列图是用来显示你的参与者如何以一系列顺序的步骤与系统的对象交互的模型。

顺序图可以用来展示对象之间是如何进行交互的。

顺序图将显示的重点放在消息序列上,即强调消息是如何在对象之间被发送和接收的。

7、协作图

   和序列图相似,显示对象间的动态合作关系。

可以看成是类图和顺序图的交集,协作图建模对象或者角色,以及它们彼此之间是如何通信的。

如果强调时间和顺序,则使用序列图;如果强调上下级关系,则选择协作图;这两种图合称为交互图。

8、构件图(组件图)

   描述代码构件的物理结构以及各种构建之间的依赖关系。

用来建模软件的组件及其相互之间的关系,这些图由构件标记符和构件之间的关系构成。

在组件图中,构件时软件单个组成部分,它可以是一个文件,产品、可执行文件和脚本等。

9、部署图(配置图)

   是用来建模系统的物理部署。

例如计算机和设备,以及它们之间是如何连接的。

部署图的使用者是开发人员、系统集成人员和测试人员。

几种图的区别:

一:

这九种模型图各有侧重,

1:

用例图侧重描述用户需求,

2:

类图侧重描述系统具体实现;

二:

描述的方面都不相同,

1:

类图描述的是系统的结构,

2:

序列图描述的是系统的行为;

三:

抽象的层次也不同,

1:

构件图描述系统的模块结构,抽象层次较高,

2:

类图是描述具体模块的结构,抽象层次一般,

3:

对象图描述了具体的模块实现,抽象层次较低。

什么是面向对象?

面向对象=对象+分类+继承+消息通信。

5.需求工程与需求分析

3.有哪两种主要的需求模型?

它们各由哪些部分组成?

1.结构化需求模型

该模型主要由3部分组成:

即包括数据流图和加工规格说明书的功能模型;主要由数据字典和E-R图组成的数据模型;由状态转换图,控制图和控制规格说明书等组成的行为模型。

2.面向对象需求模型

由三部分组成:

用例模型,补充规约和术语表。

其中用例模型包括用例图跟用例规约。

4基于用例的面向对象的需求建模包括哪些步骤?

1.画用例图a.确定参与者b.确定用例c.绘制和检查用例图

2.写用例规约a.用例规约的内容b.用例规约示例c.用例模型的检查

3.描述补充规约4.编写术语表5.调整用例模型

5.建立用例模型时,如何确定参与者用例?

参与者泛指所有存在于系统外部并与系统进行交互的人,硬件或其他系统。

通俗地讲,参与者主要是待开发系统的使用者,寻找参与者可从以下问题入手:

a.系统开发完成后,有那些人会使用这个系统?

b.系统需要从那些人或其他系统中获取数据?

c.系统会为纳西尔或者其他系统提供数据?

d.系统会与哪些其他系统相关联?

e.系统是由谁来维护和管理?

6.需求规格说明书由哪些部分组成?

各部分主要内容?

第三章第四题一样

7.用例规约包括哪些内容?

什么是基本流和备选流?

他们有什么区别?

简要说明:

简要介绍该用例的作用和目的。

事件流:

包括基本流和备选流。

表示出所有可能的活动及流程

特殊需求:

描述与该用力相关的非功能性需求和设计约束

前置条件和后置条件。

基本流指该用例最正常的一种场景。

在基本流中,系统执行一系列活动来响应参与者提出的服务要求。

每个步骤都需要用数字编号,以清楚地标明步骤的先后顺序。

每个步骤的主要内容用一句简朴的标题来概括,使用读者可通过浏览标题快速的了解用例的主要步骤。

整个用例模型基本稳定之后,在针对每个步骤详细描述参与者和系统之间的交互。

备选流:

用于描述用例执行过程中的异常或偶尔发生的情况,他和基本流组合起来,能够覆盖该用例所有可能发生的场景。

起点:

该备选流从事件流的哪一步开始。

条件:

在什么条件会触发该备选流。

动作:

系统在该备选流中会采取哪些动作。

恢复:

该备选流结束后,该用例应如何继续执行。

备选流的描述格式可与基本流一致,即需要编号并以标题概述其内容,编号前可加一个字母前缀“A”,以示与基本流的区别。

需求工程与需求分析的定义

需求工程是指应用已证实有效的技术,方法进行需求分析,确定客户需求,帮助分析人员理解问题并定义目标系统的所有外部特征的一门学科。

需求分析:

对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。

6.面向对象分析

2.软件需求和软件分析有哪些异同?

用户一般只注重软件的外在表现,即所谓的软件需求,而开发者更加关注软件的内部逻辑结构。

通常称之软件分析。

前者从软件的使用者角度出发,后者则是从软件开发者的角度出发的

3.软件分析模型包含哪些内容?

他们之间有什么联系?

4.什么事面向对象分析?

其主要思想是什么?

 

7.面向对象设计

1.面向对象设计的任务是什么?

设计阶段的主要任务是数据设计,体系结构设计,接口设计和过程设计

2.解释下列名词:

(1)模块;

(2)模块化;(3)模块化设计。

答:

模块是一个拥有明确定义的、输出和特性的程序实体。

模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。

每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。

模块化设计是把大型软件按照规定的原则划分成一个个较小的、相对独立但又相互关联的模块。

但又相互关联的模块。

3.什么是模块独立性?

用什么度量?

答:

模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。

模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。

独立性可以从两个方面来度量:

模块本身的内聚性(Cohesion)和模块之间的耦合(Coupling)。

4.系统架构设计包含哪些内容?

系统高层结构设计,确定设计元素,确定任务管理策略,实现分布式机制,设计数据存储方案,人机界面设计

信息隐藏:

把系统分解成模块时应遵守的指导思想。

高内聚,低耦合。

内聚:

从功能的角度对模块内部聚合能力的量度。

耦合:

对软件内部块间联系的度量。

8编码与测试

11.多模块程序的测试有哪些层次?

各层测试主要解决什么问题?

单元测试

测试的层次集成测试确认测试

高级测试

系统测试

单元测试发现错误,是整个测试的基础;集成测试经过单元测试的模块逐步组装成具有良好一致性的完整程序;确认测试在于确认组装完毕的程序是否满足软件需求规格说明书的要求;系统测试检查把确认合格的软件安装到系统中以后,能否与系统的其余部分协调运行,并实现SRS的要求。

12.集成测试有哪几种实施策略?

试比较他们的优缺点。

自顶向下,由底向上,混合方式测试

由顶向下的优点,能较早显示整个程序的轮廓,向用户展示程序的概貌,取得用户的理解和支持,其主要缺点是,当测试上层模块时因使用桩模块较多,很难模拟出真实模块的全部功能,使部分测试内容被迫推迟,只能等到换上真实模块后再补充测试。

在低层次上的替身模块多,也会增加设计测试用例的难度。

由底向上测试从下层模块开始,设计测试比较容易,但是在测试的早期不能显示出程序的轮廓。

混合测试的优点,正在于扬长避短,总和以上两种策略的长处。

13.面向对象的测试策略跟传统测试策略有何区别?

OO软件是基于类/对象的;传统软件则基于模块。

a.单元测试:

OO的类测试等价于传统软件的单元测试。

两者区别在于,在传统的单元测试中,单元指的是程序的函数,过程或完成某一特定功能的程序块,而对于OO软件而言,单元是封装的类和对象

b.集成测试:

传统的集成测试是采用自顶向下或由底向上测试或二者混合的两头逼近策略,通过用渐增方式继承功能模块进行测试,但OO集成测试主要关注系统的结构和内部的相互作用,以便发现仅当各类相互作用时才会产生的错误。

c.确认与系统测试:

OO的确认与系统测试忽略类连接的细节,主要采用传统的黑盒法对OOA的用力所描述的用户交互进行测试。

14.面向对象的测试的基本单位是什么?

如何设计测试用例?

 

编码:

俗称编程序。

编码的目的是使用选定的程序设计语言,把设计模型翻译为用该语言书写的源程序(或源代码)。

实现源程序的文档化的目的是为了提高程序的可维护性,源代码也需要实现文档化。

软件测试是动态查找程序代码中的各类错误和问题的过程。

测试的目的与任务:

目的:

发现程序的错误。

任务:

通过计算机上执行层序,暴露程序中潜在的错误。

纠错的目的与任务:

目的:

定位和纠正错误。

任务:

消除软件保障,保证程序的可靠运行。

静态分析通过对被测程序的静态审查,发现代码中潜在的错误。

黑盒测试根据程序的功能来设计测试

白盒测试根据被测程序的内部结构设计测试用例,测试者需事先了解被测程序的结构。

黑盒测试

1等价测试

把输入数据的可能值划分为若干个等价类,使每类中的任何一个测试用例,都能代表同一等价类中的其它测试用例。

采用等价测试注意以下两点:

划分等价类不仅要考虑代表“有效”输入值的有效等价类,还要考虑代表“无效”输入值得无效等价类;每一无效等价类至少要用一个测试用例,不然可能漏掉某一类错误,但允许若干个有效等价类合用一个测试用例,以便进一步减少测试的次数。

2边界值分析法

程序员在处理边界情况时很容易因疏忽或考虑不周产生编码错误。

3错误猜测法

猜错就是猜测被测程序放在哪些地方容易出错,然后针对可能的薄弱环节来设计测试用例。

一般先用等价分类法和边界值分析法设计测试用例,然后用猜错法补充一些例子作为辅助的手段。

白盒测试

1逻辑覆盖测试:

用流程图来设计测计用例。

主要考察的重点是图中的判定框(选择或循环)。

按照被测试程序所作测试的有效程度,逻辑测试可由弱到强区分5种覆盖标准:

语句覆盖:

每条语句至少执行一次。

判定覆盖:

每一判定的每个分支至少执行一次。

条件覆盖:

每一判定中的每个条件,分别按“真”、“假”至少各执行一次。

判定/条件覆盖:

同时满足判定覆盖和条件覆盖的要求。

条件组合覆盖:

求出判定中所有条件的各种可能组合值,每一可能的条件子和至少执行一次。

覆盖标准

程序结构举例

测试用例应满足的条件

语句覆盖

AB=.T.

判定覆盖

AB=.T.,AB=.F.

条件覆盖

A=.T.,A=.F.

B=.T.,B=.F.

判定/条件覆盖

AB=.T.,AB=.F.

A=.T.,A=.F.

B=.T.,B=.F.

条件组合覆盖

A=.T.B=.T.

A=.T.B=.F.

A=.F.B=.T.

A=.F.B=.F.

②路径测试法

程序图:

是一种简化的流程图。

对程序图中每一条可能的程序执行路径至少测试一次。

如果程序中含有循环(在程序中表现为环),则每个循环至少执行一次。

路径测试具有如下特征:

满足结构测试的最低要求。

语句覆盖加判定覆盖是对白盒测试的最低要求,同时满足这两种标准的覆盖为“完全覆盖”。

从对路径测试的要求可见,它本身就包含了语句覆盖和判定覆盖(在程序图上分别为点覆盖与边覆盖)。

 

9软件维护

1.为什么说软件维护是不可避免的?

答:

满足用户对已开发产品的性能与运行环境不断提高的需要,进而达到延长软件的寿命。

2.纠错和纠错性维护有哪些异同?

答:

纠错的目的是定位和纠正错误;纠错的任务是软件故障,保证程序的可靠运行。

纠错性维护是由于软件测试的不彻底性,任何大型软件交付使用后,都会继续发现潜在的错误,对它们进行诊断和改正。

目的在于纠正在开发期间未能发现的遗留错误。

4.怎样避免维护的副作用?

5.什么是软件配置?

说明搞好维护时期配置的意义与方法。

答:

软件配置是一个软件在生存周期内,它的各种形式、各种版本的文档与程序的总称。

对软件配置进行科学的管理,是保证软件质量的重要手段。

配置管理贯穿于整个生存周期,在运行和维护时期,其任务尤为繁重。

为了方便对多种产品和多种版本进行跟踪和控制,常常借助于自动的配置管理工具:

配置管理数据库工具和版本控制库工具。

软件维护是指软件系统交付使用以后,为了改正或满足新的需要而修改软件的过程。

软件可维护性是衡量维护容易程度的一种软件的属性

维护的副作用:

a.修改编码的副作用。

较多的产生在对变量标识符,语句标号或子程序进行修改或删除的时候。

修改逻辑运算符,修改打开或关闭文件的语句,也容易引入错误。

当修改设计代码主要部分,或者为了修改程序性能而对代码进行修改时,尤其要警惕引入新的错误和问题;b.修改数据的副作用。

维护中修改数据结构或其中的某些数据项,是常有的事情,稍有不慎,修改后的数据就可能与软件设计不再适应,从而产生错误。

在设计文档中对数据结构做完整的描述,建立各个模块对各数据的交叉引用表,都将有助于减少这类的副作用;c.修改文档的副作用。

文档与程序是软件的组成部分。

任何对程序的修改,都应及时反映到有关的文档上,如果只改程序而未修改有关文档,必将在当今的使用和维护中造成混乱

软件的再工程将新技术和新工具应用于老的软件的一种较“彻底”的预防性维护。

软件维护:

完善性维护,适应性维护,纠错性维护。

9软件复用

1.什么是软件复用?

为什么要软件复用?

答:

在构造新的软件系统的过程中,对已存在的软件人工制品的使用技术。

7.当前流行的构件技术有哪几种?

COM/OLE,CORBA,OpenDoc

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1