文档库 最新最全的文档下载
当前位置:文档库 › 软件工程每章复习重点

软件工程每章复习重点

软件工程每章复习重点
软件工程每章复习重点

考试题型:选择20` 填空20` 简答30` 分析30`

第一章概述

1.软件危机

软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题,如软件费用、软件可靠性、软件维护、软件生产、软件重用等。

2.软件生存周期

软件生存周期是指一个软件从提出需求开始直到该软件报废为止的整个时期。通常,软件生存周期包括可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等活动,可以将这些活动以适当方式分配到不同阶段去完成。

3.软件开发过程模型

a)瀑布模型

瀑布模型将软件开发过程划分为需求定义与分析、软件设计、软件实现、软件测试和运行维护等一系列基本活动,并且规定这些活动自上而下、相互衔接的固定次序。

b)快速原型模型

快速原型模型需要迅速建造一个可以运行的软件原型,以便理解和澄清问题,使开发人员与用户达成共识,最终在确定的客户需求基础上开发客户满意的软件产品。

c)增量模型

增量模型是一种非整体开发的模型,在增量模型中,软件被作为一系列的增量构件来设计、编码、集成和测试,从而适应用户逐步细化需求的形成过程。

d)喷泉模型

喷泉模型是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。

e)螺旋模型

螺旋模型将瀑布模型和快速原型模型结合起来,将软件过程划分为若干个开发回线,每一个回线表示开发过程的一个阶段。

f)型式化方法模型

型式化方法模型又称变换模型。该模型结合了形式化软件开发方法和程序自动生成技术,采用形式化需求规格说明和变化技术等技术手段,生产目标程序系统。

g)基于构件的开发模型

基于构件的开发过程模型是使用可重用的构件或商业组件建立复杂的软件系统,即在确定需求描述的基础上,开发人员首先进行构件分析和选择,然后设计或者选用已有的体系结构框架,复用所选择的构件,最后将所有的组件集成在一起,并完成系统测试。

4.软件开发的方法

a)结构化方法

结构化方法由结构化分析,结构化设计和结构化程序设计组成,是一种面向数据流的开发方法。该方法采用自顶向下、逐步求情的指导思想,应用较广,技术成熟。

b)Jackson方法

Jackson方法是一种面向数据结构的开发方法。Jackson方法是以数据结构为驱动的,适合于小规模的项目。c)维也纳开发方法

维也纳开发方法是一种形式化的开发方法,软件的需求用严格的形式语言描述,然后把描述模型逐步变换成目标系统。

d)面向对象开发方法

面向对象开发方法包括面向对象分析、面向对象设计和面向对象实现。面向对象开发方法有Booch方法、Coad 方法和OMT(Object Modeling Technology)方法等。为了统一各种面向对象方法的术语、概念和模型,1997年推出了统一建模语言,即UML语言。它是面向对象的标准建模语言,通过统一的语义和符号表示,使各种方法的建模过程和表示统一起来,将成为面向对象建模的工业标准。

第二章需求分析

1.可行性研究的任务

a)技术可行性

对要开发的项目的功能、性能和限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目是否能够实现。

b)经济可行性

进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发。

c)社会可行性

要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。

2.成本估算方法

a)自顶向下估算方法

估算人员参照以前完成的项目所耗费的总成本,来推算将要开发的软件总成本,然后把它们按阶段、步骤和工作单元进行分配。

b)自底向上估算方法

将待开发的软件细分,分别估算每一个子任务所需要的开发工作量,然后将它们加起来,得到软件的总开发量。

c)差别估算方法

将开发项目与一个或多个已完成的类似项目进行比较,找到与某个相类似项目的若干不同之处,并估算每个不同之处对成本的影响,导出开发项目的总成本。

d)专家判断技术

一个或多个专家根据所具有的专业知识和丰富经验,通过近似的猜测估计出项目成本。Delphi方法是最流行的专家评估技术。

e)类比估算法

一种比较科学的传统估算方法,它通过新项目与历史项目的比较得到规模估算。

3.成本估算模型

COCOMO模型(理解)书本P27

4.常用的需求分析的方法

面向数据流的结构化分析方法(SA)

面向数据结构的Jackson方法(JSD)

面向对象的分析方法(OOA) 等

5.结构化分析方法

结构化分析方法适合于数据处理类型软件的需求分析。具体来说,结构化分析方法就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。

a)数据流图

i.定义

数据流图(Data Flow Diagram,简称DFD)描绘系统的逻辑模型,是结构化系统分析的主要工具。数据流图(DFD)是描述软件系统中数据处理过程的一种有力的图形工具。由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。

ii.数据流图中的主要图形元素

iii.画数据流图步骤

1.首先画系统的输入输出,即先画顶层数据流图。顶层流图只包含一个加工,用以表示被开发的系统,然后

考虑该系统有哪些输入数据,这些输入数据从哪里来;有哪些输出数据,输出到哪里去。

2.画系统内部,即画下层数据流图。一般将层号从0开始编号,采用自顶向下,由外向内的原则。

iv.注意事项

1.命名。不论数据流、数据存储还是加工,合适的命名使人们易于理解其含义。

2.一般不画物质流。数据流反映能用计算机处理的数据,并不是实物,因此对目标系统的数据流图一般不要

画物质流

3.父图与子图的平衡。子图的输入输出数据流和父图相应加工的输入输出数据必须一致,此即父图与子图的

平衡。

4.局部数据存储。当某层数据流图中的数据存储不是由图中相应加工的外部接口,而只是本图中某些加工之

间的数据接口,则称这些数据存储为局部数据存储。

5.提高数据流图的易理解性。注意合理分解,要把一个加工分解成几个功能相对独立的子加工,这样可以减

少加工之间输入、输出数据流的数目,增加数据流图的可理解性。

v.数据流图的层次结构

为了表达数据处理过程的数据加工情况,需要采用层次结构的数据流图。按照系统的层次结构进行逐步

分解,并以分层的数据流图反映这种结构关系,能清楚地表达和容易理解整个系统。

vi.结构化分析方法步骤示例

●这个数据流图只是一个高层的系统逻辑模型,它反映了目标系统要实现的功能

●数据流图绘制步骤

1.首先确定系统的输入和输出

2.根据商店业务,画出顶层数据流图,以反映最主要业务处理流程

3.经过分析,商店业务处理的主要功能应当有销售、采购、会计三大项。主要数据流输入的源点和

输出终点是顾客和供应商。

4.然后从输入端开始,根据商店业务工作流程,画出数据流流经的各加工框,逐步画到输出端,得

到第一层数据流图。

vii.检查和修改数据流图的原则

1.数据流图上所有图形符号只限于前述四种基本图形元素。

2.数据流图的主图必须包括前述四种基本元素,缺一不可。

3.数据流图的主图上的数据流必须封闭在外部实体之间。

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

5.在数据流图中,需按层给加工框编号。编号表明该加工所处层次及上下层的亲子关系。

6.规定任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一

致。此即父图与子图的平衡。

7.可以在数据流图中加入物质流,帮助用户理解数据流图。

9.数据流图中不可夹带控制流。

10.初画时可以忽略琐碎的细节,以集中精力于主要数据流。

b)数据字典

i.定义

数据字典(Data Dictionary)是关于数据的信息的集合,通过数据字典对数据流程图中的各个元素作精确的定义与说明。它是数据流图的补充工具。

数据字典与数据流图配合,能清楚地表达数据处理的要求。二者构成需求规格说明书的主要部分。

词条描述——对于在数据流图中每一个被命名的图形元素,均加以定义,其内容有:名字,别名或编号,分类,描述,定义,位置,其它等。

ii.数据字典的内容及格式

数据字典是为分析人员和用户查找数据流图中有关名字的详细定义而服务的,因此也像其他任何字典一样,要把所有条目按一定次序排列起来,以便查阅。数据字典有以下四类条目:数据流、数据项、数据存储、基本加工。其中,数据项是组成数据流和数据存储的最小元素。

1.数据流条目给出了DFD中数据流的定义,主要部分是列出该数据流的各组成数据项。在定义数据流及数据

存储组成时,通常要用到表2.4给出的符号。

2.数据存储条目是对数据文件内容的定义,主要内容举例如下:

数据存储名称:学生成绩库

别名:无

组成:学生学号+课程编码+成绩+备注

组织方式:以学号为记录关键字升序排列。

3.数据项条目给出某个数据单项的定义,内容通常为数据项的值类型、允许取值范围等,其定义结构与数据

流条目类似。

4.加工条目是用来说明DFD中基本加工的处理逻辑,对其他非基本加工则不必进行加工说明。加工条目主要

由输入数据、加工逻辑和输出数据等部分组成,加工逻辑描述把输入数据转换为输出数据的过程,是加工

条目的主体。

为了使加工逻辑直观易读,有几种常用的描述方法,它们是结构化语言、判定表和判定树。加工条目内容

举例如下:

加工名称:查阅库存

编号:1.2

输入:合格订单

输出:供货订单或缺货订单

加工逻辑:根据库存记录

IF 订单项目数量<该项目库存量的临界值

THEN 可供货处理

ELSE

此订单缺货,登记,待进货后再处理

ENDIF

iii.数据字典的实现

数据字典的建立可以用手工和自动两种方式实现。手工方式是指把每一个字典条目写在卡片上,由专人管理和维护。自动方式是借助数据字典处理程序,把字典条目输入到计算机中,用计算机对它进行检索和维护。

第三章系统设计

1.概要设计

a)基本任务

i.设计软件系统结构:

1.采用某种设计方法,将一个复杂的系统按功能划分成模块。

2.确定每个模块的功能。

3.确定模块之间的调用关系。

4.确定模块之间的接口,即模块之间传递的信息。

5.评价模块结构的质量.

ii.数据结构设计: 采用“逐步细化”的方法,如采用数据字典描述逐步细化。设计有效的数据结构(如队列,线性表,链表等),大大简化软件模块处理过程的设计。

b)编写概要设计文档:

i.概要设计说明书。

ii.数据库设计说明书:主要给出所使用的DBMS简介、数据库的概要模型、逻辑设计、结果。

iii.用户手册:对需求分析阶段编写的用户手册进行补充。

iv.修订测试计划,对测试策略、方法、步骤提出明确要求。

c)模块的独立性

小且接口是简单的.

ii.一般采用两个准则度量模块独立性。即模块间耦合和模块内聚

iii.耦合是模块之间的互相连接的紧密程度的度量。

iv.内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。

v.模块独立性比较强的模块应是高内聚低耦合的模块。

d)软件系统设计技术

2.详细设计

a)任务

i.确定每个模块的具体算法。

ii.确定每个模块的内部数据结构及数据库的物理结构。

iii.确定模块接口的具体细节。(即确定模块接口的详细信息,包括模块之间的接口信息、模块与系统外部的接口信息及用户界面等。)

iv.为每个模块设计一组测试用例。

v.编写文档,参加复审。

b)详细设计可采用的工具

i.(传统的)程序流程图

程序流程图是最早出现且使用较为广泛的算法表达工具之一,能够有效地描述问题求解过程中的程序逻辑结构。程序流程图中经常使用的基本符号如图所示。

ii.N-S图

N-S图又称为盒图,它是为了保证结构化程序设计而由Nassi和Shneiderman共同提出的一种图形工具。在N -S图中,所有的程序结构均使用矩形框表示,它可以清晰地表达结构中的嵌套及模块的层次关系。N-S图中,基本控制结构的表示符号如图所示。

由于N-S图中没有流程线,不可能随意转移控制,因而表达出的程序结构必然符合结构化程序设计的思想,有利于培养软件设计人员的良好设计风格。但当所描述的程序嵌套层次较多时,不仅影响可读性而且不易修改。

iii.PAD图

PAD(Problem Analysis Diagram,问题分析图)是继程序流程图和N-S图后,由日立公司在20世纪70年代提出的又一种用于详细设计的图形表达工具。它只能用于结构化程序的描述。PAD图采用了易于使用的树型结构图形符号,既利于清晰地表达程序结构,又利于修改。PAD图中所经常使用的基本符号如图所示。

PAD图具有的主要优点如下:

1.使用PAD图描述的程序结构层次清晰,逻辑结构关系直观、易读、易记、易修改。

2.PAD图为多种常用高级语言提供了相应的图形符号,每种控制语句都与一个专门的图形符号相对应,易

于PAD图向高级语言源程序转换。

3.支持自顶向下、逐步求精的设计过程。

4.既能够描述程序的逻辑结构,又能够描述系统中的数据结构。

iv.PDL语言

PDL (Process Design Language)语言即过程设计语言,是一种用于描述程序算法和定义数据结构的伪代码。PDL 语言的构成与用于描述加工的结构化语言相似,是一种兼有自然语言和结构化程序设计语言语法的“混合型”语言。

PDL语言与结构化语言的主要区别在于:由于PDL语言表达的算法是编码的直接依据,因此其语法结构更加严格并且处理过程描述更加具体详细。

PDL语言的主要特点如下:

1.各种定义语句及控制结构的表达都具有严格的语法形式,使程序结构、数据说明等更加清晰。

2.提供了数据说明机制,可用于定义简单及复杂的数据结构。

3.提供了模块的定义和调用机制,方便了程序模块化的表达。

4.用PDL写出的程序,既可以很抽象,又可以很具体。因此,容易实现自顶向下逐步求精的设计原则。

5.PDL描述可以直接作为注释插在源程序中,成为程序的内部文档。这对提高程序的可读性是非常有益

的。

6.PDL描述与程序结构相似,故PDL语言便于将详细设计的结果转换为源程序。

PDL的缺点是不如图形描述形象直观,因此常常将PDL描述与一种图形描述结合起来使用。

PDL语言的主要定义语句及基本控制结构的表达如下所示:

1.定义语句

1)数据定义:

DECLARE 属性变量名,…

属性包括:整型、实型、双精度型、字符型、指针、数组及结构等类型。

2)模块定义:

PROCEDURE模块名(参数)

……

RETURN

END

2.基本控制结构

v.判定表

当算法中包含多重嵌套的条件选择时使用。表示复杂的条件组合与相应的动作适宜。

vi.判定树

比判定表直观。

第四章系统实施

1.McCabe度量法

McCabe度量法是由Thomas McCabe提出的一种基于程序控制流的复杂性度量方法。McCabe复杂性度量又称环路度量。它认为程序的复杂性很大程度上取决于程序的复杂性。单一的顺序结构最为简单,循环和选择所构成的环路越多,程序就越复杂。这种方法以图论为工具,先画出程序图,然后用该图的环路数作为程序复杂性的度量值。

程序图是退化的程序流程图。也就是说,把程序流程图的每一个处理符号都退化成一个结点,原来连接不同处理符号的流线变成连接不同结点的有向弧,这样得到的有向图就叫做程序图。

根据图论,在一个强连通的有向图G中,环的个数V(G)由以下公式给出:V(G)=m-n+2p 其中,V(G)是有向图G中环路数,m是图G中弧数,n是图G中结点数,p是图G中强连通分量个数。在一个程序中,从程序图的入口点总能到达图中任何一个结点,因此,程序总是连通的,但不是强连通的。为了使图成为强连通图,从图的入口点到出口点加一条用虚线表示的有向边,使图成为强连通图。这样就可以使用上式计算环路复杂性了。

以图11-4所给出的例子示范,其中,结点数n=6,弧数m=9,p=1,则有V(G=m-n+2p=9-6+2=5 。即McCabe环复杂度度量值为5。这里选择的5个线形无关环路为(abefa),(beb),(abea),(acfa),(abcfa),其他任何环路都是这5个环路的

第五章软件测试

1.软件测试的方法

a)静态测试

指被测试程序不在机器上运行,而是采用人工测试和计算机辅助静态分析的手段对程序进行测试。包括:人工测试和计算机辅助静态分析测试.(发现30%~70%逻辑和编码错误)

b)动态测试

指通过运行程序发现错误。大多测试采用动态测试。包括白盒测试法和黑盒测试法。

2.白盒测试

白盒测试属于结构测试,所以被测对象基本上是源程序,以程序的内部逻辑为基础来设计测试用例。白盒测试(White-box Testing,又称逻辑驱动测试,结构测试)是把测试对象看作一个打开的盒子。利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。

a)逻辑覆盖

以程序内部逻辑为基础的测试技术,属白盒测试。这一测试考虑测试用例对程序内部逻辑覆盖的程度。

语句、判定、条件、条件|判定、条件组合、路径

i.单循环

其中n为可允许执行循环的最大次数。设计以下情况的测试用例:

1.跳过循环。

2.只执行循环一次。

3.执行循环m次,其中m

4.执行循环n-1次,n次,n+1次。

ii.嵌套循环

1.置外循环处于最小循环计数值,对于内层进行单循环测试。

2.由里向外,进行下一层的循环测试。

b)基本路径测试

基本路径测试是在程序流程图的基础上,通过分析由控制构造的环路复杂性,导出基本路径集合,设计测试用例保证这些基本路径至少通过一次。

反映控制流程的有向图,其小圆圈称为结点,代表流程图中的处理,有向箭头代表控制流向,称为边或路径。

1.一个边必须终止于一个结点,在选择分支的汇合处即使没有语言也应该有汇聚点。

2.如果判断中的条件表达式是由一个或多个逻辑运算符(OR, AND, NAND, NOR) 连接的复合条件表达

式,则需要改为一系列只有单个条件的嵌套的判断。

ii.基本路径测试步骤

1.导出程序流程图的拓扑结构——程序图

2.计算程序图的环路复杂性:平面图中区域的个数+1

3.确定只包含独立路径的基本数据集;

4.设计测试用例,确保基本路径集合中每条路径至少执行一次。

3.黑盒测试

黑盒测试(Black-box Testing,又称为功能测试或数据驱动测试)是把测试对象看作一个黑盒子。利用黑盒测试

法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。黑盒测试注重于测试软件的功能性需求,也即黑盒测试使软件工程师派生出执行程序所有功能需求的输入条件。黑盒测试并不是白盒测试的替代品,而是用于辅助白盒测试发现其他类型的错误。

a)等价类划分法

它将输入数据域按有效的或无效的(也称合理的或不合理的)划分成若干个等价类,测试每个等价类的代表值就等于对该类其他值的测试。使用这一方法时,完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。使用这一方法设计测试用例要经历划分等价类(列出等价类表)和选取测试用例两步。

b)边界值分析法

经验表明:程序往往

在处理边界情况时发生错

误。边界情况指输入等价

类和输出等价类边界上的

情况。使用边界值分析法

设计测试用例时,一般与

等价类划分结合起来,将

测试边界情况作为重点目

标,选取正好等于、刚刚

大于或刚刚小于边界值的

测试数据。

c)错误推测法

错误推测法:根据经验或直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的测试用例。

d)因果图

通过画因果图,把用自然语言描述的功能说明转换为判定表,然后为判定表的每一列设计一个测试用例。它能有效的检测输入条件的各种组合可能会引起的错误。

e)综合策略

通常先用黑盒法设计基本的测试用例,然后用白盒法补充一些必要的测试用例。

1.在任何情况下都应使用边界值分析法。

2.必要时用等价类划分法补充一些测试用例。

3.再用错误推测法补充测试用例。

4.检查上述测试用例的逻辑覆盖程度,如未满足所要求的覆盖标准,再添加测试用例。

5.如需求说明中含有输入条件的组合情况,则一开始就可使用因果图法。

4.测试过程

a)软件测试过程概述

i.软件测试过程中的工作流

ii.软件测试步骤及与各开发阶段的关系

驱动模块(driver) ──相当于所测模块的主程序,主要用来接收测试数据,启动被测模块,打印测试结果。

桩模块(stub) ──又称为存根模块,用来代替所测模块调用的子模块,接收被测试模块的调用和输出数据。

b)单元测试

单元测试的目的在于发现各模块内部可能存在的各种差错。单元测试又称模块测试、逻辑测试或结构测试。测试的方法一般采用白盒法。单元测试需要从程序的内部结构出发设计测试用例,以路径覆盖为最佳准则,且系统内多个模块可以并行地进行测试。模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相联系的其它模块。

单元测试的内容:模块接口、局部数据结构、重要的执行路径、错误处理、边界测试

c)集成测试

集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图〕组装成为子系统或系统,进行集成测试。实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。

集成测试常用方法:非渐增式测试和渐增式测试

i.非渐增式测试:

首先对每个模块分别进行单元测试,然后再把所有模块按设计要求组装在一起,再进行整体测试,也称为一次性组装测试。

ii.渐增式测试:

逐个把未经过测试的模块组装到已经测试过的模块上去,进行集成测试。每加入一个新模块进行一次集成测试,重复此过程直至程序组装完毕。

1.自顶向下集成:

自顶向下集成是构造程序结构的一种增量式方式。它从主控模块开始,按照软件的控制层次结构,以深度优先或广度优先的策略,逐步把各个模块集成在一次。该方法不需要写驱动模块,只需编写桩模块。

2.自底向上集成:

自底向上集成是从软件结构最底层的模块开始组装测试,因测试到较高层模块时,所需的下层模块功能均已具备,所以该方法仅需编写驱动模块,不需编写桩模块。

d)确认测试

确认测试又称有效性测试。任务是验证软件的功能和性能及其它特性是否与用户的要求一致。对软件的功能和性能要求在软件需求规格说明书中已经明确规定。它包含的信息就是软件确认测试的基础。

确认测试阶段有两项工作:有效性测试测试、软件配置审查。

e)系统测试

系统测试,是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。系统测试的目的在于通过与系统的需求定义作比较,发现软件与系统的定义不符合或与之矛盾的地方。

测试类型:功能测试、性能测试、压力测试、安全性测试、恢复测试、安装测试

第六章系统运行与维护

1.软件维护的定义

软件维护是指在软件运行或维护阶段对软件产品所进行的修改,这些修改可能是改正软件中的错误,也可能是增加新的功能以适应新的需求,但是一般不包括软件系统结构上的中大改变。

2.软件维护的特点

a)非结构化维护与结构化维护

b)维护的困难性

ii.文档不合格:文档间不一致;文档必须可理解,且与源代码相一致。

iii.软件开发和软件维护在人员与时间上的差异。

iv.大多数软件在设计时没有考虑将来的修改。

v.维护不是一项吸引人的工作。

c)维护的代价

i.有形代价:

ii.无形代价:

占用资源以致延误开发;修改不及时引起用户不满;维护引入新错误,降低了软件质量;等等。

维护工作量的经验模型:M = P + Ke^(c-d)

其中:

M = 维护用的总工作量;

P = 生产性活动(如. 分析,评价,修改设计, 编码, 测试等);

K = 经验系数;

c = 复杂度(非结构化设计和缺少文档会增加复杂度)

d = 维护人员对软件的熟悉程度.

3.软件维护过程

本质上是修改和压缩了的软件定义和开发过程。

a)首先建立维护的机构

b)申明提出维护申请报告的过程及评价的过程

c)为每一个维护申请规定标准的处理步骤

d)建立维护活动的登记制度以及规定评价和评审的标准。

软件工程复习考试题库带答案完整版

一、选择题 1、白盒测试法是通过分析程序的(C)来设计测试用例的。 A.应用范围B.功能 C.内部逻辑 D.输入数据 2、风险预测从两个方面评估风险,即风险发生的可能性以及(D)。 A.风险产生的原因 B.风险监控技术 C.风险能否消除D.风险发生所产生的后果 3、极限编程(XP)由价值观、原则、实践和行为四部分组成,其中价值观包括沟通、简单性和(C)。 A.好的计划 B.不断的发布 C.反馈和勇气 D.持续集成 4、等价分类法的关键是(C)。 A.确定等价类的边界条件 B.按照用例来确定等价类 C.划分等价类 D.确定系统中相同和不同的部分 5、下列不属于黑盒测试的技术是(A)。 A.程序段或语句的功能 B.模块的接口 C.数据的名称和用途D.模块的功能 6、为了提高模块的独立性,模块之间最好是(D)耦合。 A.控制耦合 B.公共耦合 C.内容耦合D.数据耦合 7、一个软件开发过程描述了“谁做”,“做什么”,“怎么做”和“什么时候做”,RUP用(A)来表述“谁做”。 A.角色 B.活动 C.制品D.工作流 8、功能性注释嵌入在源程序内部,它是用来说明(A)。 A.程序段或语句的功能B.模块的接口 C.数据的名称和用途 D.模块的功能 9、在结构化分析方法中,数据字典是重要的文档。对加工的描述是数据字典的组成内容之一,常用的加工描述方法有( C )。 A.只有结构化语言B.有结构化语言和判定树 C.有结构化语言、判定树和判定表 D.有判定树和判定表 10、某银行为了使其网上银行系统能够支持信用卡多币种付款功能而进行扩充升级,这需要对数据类型稍微进行一些改变,这一状况需要对网上银行系统进行(B)维护。 A.正确性 B.适应性 C.完善性 D.预防性 11、软件危机的主要原因是(A)。 A软件本身特点与开发方法?B对软件的认识不够 C软件生产能力不足D软件工具落后 12、DFD是常用的进行软件需求分析的图形工具,其基本符号是(C)。 A.输入、输出、外部实体和加工

软件工程重点整理

软件工程重点 (吐血整理——林新发) 红色的是重点中的重点 前面数字是课本页码 第一章概论 1 什么是计算机软件 计算机软件指计算机系统中的程序及其文档 3软件的特点 (1)软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算 (2)软件是被开发的或被设计的,它没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大 (3)软件的使用没有硬件那样的机械磨损和老化问题 4软件的分类 (1)系统软件(如操作系统、编译程序等)、 (2)支持软件(如数据库管理系统、网络软件、软件开发环境等)、 (3)应用软件(如实时软件、嵌入式软件、科学和工程计算软件、事务处理软件、人工智能软件等) 6软件工程定义 软件工程是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法制作软件的工程 7生存周期 软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存周期 软件生存周期大体可分为如下几个活动:计算机系统工程、需求分析、设计、编码、测试、运行和维护 12能力成熟度模型CMM(了解一下) 初始级、可重复级、已定义级、已管理级、优化级 18瀑布模型(重) 系统工程、需求分析与规约、设计与规约、编码与单元测试、集成测试系统测试、运行与维护 第二章系统工程 41系统工程的任务 (1)识别用户的要求,确定待开发软件的总体要求和范围,

(2)系统建模和模拟 (3)进行成本估算,做出进度安排 (4)进行可行性分析,即从经济、技术、法律等方面分析待开发的软件是否有可行的解决方案,并在若干个可行的解决方案中作出选择。 (5)生成系统规格说明书 42可行性分析 (1)经济可行性(成本、效益、货币的时间价值、投资回收期、纯收入) (2)技术可行性(风险分析、资源分析、技术分析) (3)法律可行性 第三章需求工程 48软件需求 指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。 包括:功能需求、性能需求、用户或人的需求、环境需求、界面需求、文档需求、数据需求、资源使用需求、安全保密要求、可靠性需求、软件成本消耗与开发进度需求、其他非功能需求 50需求获取方法与策略(重) 建立顺畅的通信途径、访谈与调查、观察用户操作流程、组成联合小组、用况 51 图3.2 53 创建用况模型的主要步骤 (1)确定谁会直接使用该系统,即参与者(Actor) (2)选取其中一个参与者 (3)定义该参与者希望系统做什么,参与者希望系统作的每件事将成为一个用况 (4)对每件事来说,何时参与者会使用系统,通常会发生什么,这就是用况的基本过程 (5)描述该用况的基本过程 54需求分析原则(重) 1.必须能够表示和理解问题的信息域 2.必须能够定义软件将完成的功能 3.必须能够表示软件的行为(作为外部事件的结果) 4.必须划分描述数据、功能和行为的模型,从而可以分层次地揭示细节

软件工程 简答题复习题(带答案)

n n g a r 第一章 1,与计算机硬件相比,计算机软件有哪些特点? 软件的特点如下。 1)无法直接观察计算机软件的物理形态,只能通过观察它的实际运行情况来 了解它的功能、特性和质量等。 2)人们在分析、设计、开发、测试软件产品,以及在软件开发项目的管理过 程中,渗透了大量的脑力劳动。 3)不存在像硬件一样的磨损和老化现象,但存在着缺陷维护和技术更新的问 题。 4)软件的开发和运行必须依赖于特定的计算机系统环境。 5)具有可复用性。 3,什么是软件危机?什么原因导致了软件危机? 软件危机的现象如下。 1)预算,项目一再拖延。 2)需求,开发的软件不能满足用户的要求,项目成功率低。 3)软件工程方法,软件可维护性差、软件质量差、可靠性差。 4)开发工具落后,手工方式,开发效率低。 所有导致软件危机的原因,都与软件本身的产品特点相关。 1)软件是一个复杂的逻辑产品。如果没有解决复杂问题的有效方法,以及软 件产品的结构、质量、可维护性得不到保障,开发与维护费用就会持续升 高。 2)软件产品不能实现大规模复用,这导致了软硬件生产效率的不同。 3)软件生产是脑力劳动,它看不见、摸不着,开发成本、开发周期等都无法 做到准确估算,生产过程不易控制。 4)软件成本主要是由研发成本构成;而硬件的生产成本主要是材料和制造成 本,分摊的研发成本很少,即软件研发过程与硬件制造过程相比要复杂得 多。 5,请简述软件工程研究的内容。

n d A i 软件工程研究的内容包括软件开发方法、软件开发模型、软件支持过程和软件管理过程。 软件开发方法的内容涵盖市场调研、正式立项、需求分析、项目策划、概要设计、详细设计、编程、测试、试运行、产品发布、用户培训、产品复制、销售、实 施、系统维护、版本升级等。 常用的软件开发模型有瀑布模型、迭代模型、增量模型和原型模型等。软件支持过程由所支持的CASE 工具组成,常用的CASE 工具有Power Designer 和Rational Rose 等。 7,请简述软件工程的目标、过程和原则。 目标、过程和原则是一切工程的三维框架,这里是以工程的观点来看待软件开 发。 1)软件工程的目标:降低成本、及时交付高质量的软件产品(高质量、高效 率、高效益)。2)实现目标的过程即完成产品加工的过程,包括:基本过程、支持过程和组 织过程。 3)进行过程应遵守的原则:原则就是过程中的轨道约束,包括:选取适宜的 开发范型、采用合适的设计方法、提供高质量的工程支持、重视开发过程 的管理。 9,请简述现代软件工程与传统软件工程显著的区别和改进。 1)传统的软件工程是基于结构化的软件开发方法,而现代软件工程是以面向 对象技术为标志。 2)不仅在编程技术上有很大的改进,而且在分析、设计等整个开发过程中, 采用面向对象的思维方式,更加完整、自然地反映客观世界。3)采用架构技术,开发效率、产品质量得到了极大提高。 4)更注重团队开发和管理,融入更多、更新的管理理念和手段,如RUP 模型、 XP 模型、过程改进、能力成熟度模型、配置管理等。 第二章 1,如何理解软件生命周期的内在特征?

软件工程复习试题及答案

一、填空题(在下划线上填写正确的答案,每题2分,共20分) 1.等价划分是一种黑盒测试技术,这种技术把程序的输入域划分为若干个数。 2.数据流图和数据字典共同构成了系统的逻辑模型。 3.盒图也称为 N-S图。这种表达方式取消了流程线,它强迫程序员以结构化方式思考和解决问题。 4.软件有效性,指软件系统的时间和空间效率。 5.IPO 6.数据流图有四种基本成分:源、终点,处理,存储,数据流。 7. 其中数据项是组成数据流和数据存储的最小元素。 8.软件工程中的结构化分析SA是一种面向数据流的分析方法。 9.软件开发是一个自顶向下逐步细化和求精的过程,而软件测试是一个由下而上的过程。 10.耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚、低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。 1.常用的软件开发模型有瀑布模型、原型模型、增量模型、螺旋模型、喷泉模型。 2.软件生存周期一般可分为问题定义、可行性研究、需求分析、设计、编码、

单元测试、运行与维护阶段。 3.软件测试的步骤:单元、集成、系统、验收。 4.数据流图的基本符号包括加工、数据流、数据存储文件、汇点。5.IPO图由输入、处理和输出三个框组成。这个图的特点是能够直观的显示三者之间的关系。 6.面向对象方法是一种运用类、实例、属性、重载、消息传送、多态性等概念来构造系统的软件开发方法。 7.分析已有的程序,寻求比源代码更高级的抽象表现形式,这就是软件的逆向工程。 8.程序测试是对编码阶段的语法错、语义错和运行错进行查找的编码执行活动。 9.为了获得较高的模块独立性,尽量设计出具有高内聚和低藕合性能的模块。 10.常用的测试方法有黑盒测试和白盒测试。 1.可行性研究,应从技术可行性、经济可行性、运行可行性和法律和 社会效益可行性等方面研究。 2.构化程序设计中程序主要的3种基本控制结构是顺序结构、选择结构、循环 结构。 3.软件生存周期中时间最长、花费精力和费用最多的一个阶段是维护 阶段。 4.需求分析阶段,分析人员要确定对问题的综合需求,其中最主要的是功 能需求。

软件工程知识点总结

软件工程(简要知识点) 一、. 软件过程五个模型对比(瀑布模型、快速原型、增量、螺旋、喷泉模型) 二、可行性研究: 1、任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。 2、四个方面:技术、经济、操作可行性、法律 3、数据流图四种成分:1、源点/终点2、处理3、数据存储 4、数据流 三、需求分析: 1、任务:确定系统必须完成哪些工作,对目标系统提出完整、清晰、具体的要求。 2、结构化方法就是面向数据流自顶向下逐步求精进行需求分析的方法。 3、实体联系图:1、数据对象2、属性3、联系(1:1、1:N、M:N) 四、总体设计: 1.任务:回答“概括的说,系统应该如何实现”,用比较抽象概括的方式确定系统如何完成预定的任务,也就是说应该确定系统的物理配置方案,并且进而确定组成系统的每个程序结构。 2.系统设计阶段(确定系统具体实施方案)、结构设计阶段(确定软件结构) 3.模块独立:内聚和耦合 4. 耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用松散耦合的系统

5. 内聚(Cohesion): 一个模块内各元素结合的紧密程度 6.面向数据流的设计方法:变换流和事务流 五、详细设计: 1.任务:确定应该怎样具体的实现所要求的系统,也就是说经过这个阶段的设计工作应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。 2.过程设计的工具(程序流程图、盒图、PAD图、判定表、判定树) 七、测试: 1、单元测试:又称模块测试。每个程序模块完成一个相对独立的子功能,所以可以对该模块进行单独的测试。由于每个模块都有清晰定义的功能,所以通常比较容易设计相应的测试方案,以检验每个模块的正确性。 2、集成测试: 在单元测试完成后,要考虑将模块集成为系统的过程中可能出现的问题,例如,模块之间的通信和协调问题,所以在单元测试结束之后还要进行集成测试。这个步骤着重测试模块间的接口,子功能的组合是否达到了预期要求的功能,全程数据结构是否有问题等。 3、白盒测试技术(逻辑覆盖、基本路经测试)

软件工程复习提纲(20160615)

软件工程复习提纲 Chapter1 1.开发文档都有哪些?用图来表示它们之间的关系。 2.说明软件工程研究的内容。 3.软件工程的7条基本原理有何现实意义。 4.怎样理解ISO9000的文档体系?质量手册、程序文件、质量记录三者有何联系和区别? 5.怎样理解CMMI,如何用CMMI去管理软件企业? 6.是否存在这一种现象:搞系统软件的公司不需要采用CMMI和ISO9000模式?CMMI和ISO9000 模式只适用于搞应用软件的企业?如果是,为什么,如果不是,又为什么? 7.软件工程与信息系统工程有何异同? 8.怎样理解元数据? Chapter2 1.为什么要选择软件开发模型?软件开发模型与软件生存周期有什么关系? 2.简述瀑布模型、增量模型、迭代模型、原型模型的优缺点。 3.软件公司的ISO9000或CMM管理体系与软件开发模型有关吗,为什么? 4.你对“生存周期模型裁剪指南”有什么看法? 5.“图书馆信息系统”的开发选用什么开发模型合适? Chapter3 1.立项的具体表现形式是什么? 2.立项建议书的编制者为什么主要是软件公司的市场销售人员,而不是开发人员? 3.什么叫风险分析,技能风险与技术风险有何区别? 3.合同、任务书、立项建议书三者有何异同?有何关系? 4.对软件项目和产品的“功能、性能、接口”三项指标如何理解? Chapter4 1.需求分析的目的是什么,需求分析的难点在哪里? 2.需求分析的理论基础有哪几条? 3.为什么说需求分析是面向流程的? 4.解释术语:元数据、实体、中间数据。 5.用户需求报告与需求规格书有何差异? 6.需求描述有哪几种工具?你喜欢哪一种,为什么?

软件工程复习题及答案

软件工程复习题(一) 一、选择题 1、瀑布模型本质上是一种() A、线性顺序模型 B、顺序迭代模型 C、线性迭代模型 D、及早见产品模型 2、使用程序设计的控制结构导出测试用例的测试方法是() A、黑盒测试 B、白盒测试 C、边界测试 D、系统测试 3、软件结构图的形态特征能反映程序重用率的是() A、深度 B、宽度 C、扇入 D、扇出 4、软件结构图中,模块框之间若有直线连接,表示它们之间存在() A、调用关系 B、组成关系 C、链接关系 D、顺序执行关系 5、需求分析最终结果是产生() A、项目开发计划 B、需求规格说明书 C、设计说明书 D、可行性分析报告 6、快速原型模型的主要特点之一是( ) A、开发完毕才见到产品 B、及早提供全部完整的软件产品 C、开发完毕后才见到工作软件 D、及早提供工作软件 7、若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0,1.0],现从输入的角度考虑一组测试用例:-1.001,-1.0,1.0,1.001。设计这组测试用例的方法是( ) A、条件覆盖法 B、等价分类法 C、边界值分析法 D、错误推测法 8、软件详细设计主要采用的方法是( ) A、模块设计 B、结构化设计 C、PDL语言 D、结构化程序设计 9、开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做( ) A、.软件工程 B、软件周期 C、软件危机 D、软件产生 10、按软件生命周期方法设计软件的过程中,画数据流图属于下面哪个阶段的工作() A、需求分析 B、概要设计 C、详细设计 D、软件维护 11、在快速原型模型的开发过程中,仅作为需求说明的补充形式的原型是() A、探索型模型 B、演化型模型 C、实验型模型 D、提交型模型 12、程序设计语言的工程特性之一为( ) A、软件的可重用性 B、数据结构的描述性 C、抽象类型的描述性 D、数据库的易操作性 13、软件按照设计的要求,在规定时间和条件下达到不出故障,持续运行的要求的质量特性称为( ) A、可用性 B、可靠性 C、正确性 D、完整性 14、模块设计中,最不希望的内聚是() A、功能内聚 B、通信内聚 C、过程内聚 D、偶然内聚 15、实施快速原型模型方法开发软件的关键在于() A、CASE工具的支持 B、如何开发演化型模型 C、项目主管的支持 D、开发人员的素质 16、程序流程图(框图)中的箭头代表( )。 A、数据流 B、控制流 C、调用关系 D、组成关系 17、一个只有顺序结构的程序,其环形复杂度是( )。 A、0 B、1 C、3 D、不确定的

软件工程知识点汇总

软件工程知识点汇总 1 软件工程、软件工程方法学:三要素 1.1 软件工程:○1应用系统化的、规范化的、可度量的方法来开发、运行和维护软件,即将工 程应用到软件;○2对○1的各种方法的研究 1.2 软件工程是一门研究用工程化方法构建和维护有效的实用的和高质量的软件的学科 1.3 软件工程三要素是:方法、工具、过程 软件工程的方法:是指完成软件开发各项任务的技术方法 软件工具:是指为软件工程方法的运用提供自动半自动的软件支撑环境 软件工程过程:是指将软件工程方法和工具综合起来以达到合理、及时地进行计算机软件开发这一目的 2 软件工程的原则包括:模块化原则、信息隐蔽原则、抽象化原则、模块独立原则(内聚、耦合)、 依赖倒转原则、开闭原则等 2.1 模块化原则:指解决一个复杂问题时自顶向下逐层把软件系统划分为若干模块的过程。模 块是程序中相对独立的成分,一个独立的编程单位,应有良好的编程接口,模块的大小要 适中,模块过大会使模块内部的复杂性增加不利于模块的理解和修改,模块过小会导致整 个系统表示过于复杂,不利于控制系统的复杂性。 2.2 信息隐蔽原则:采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。 2.3 抽象化原则:抽取事物最基本的特性和行为,忽略非本质细节,采用分层次抽象,自顶向 下,逐层细化的办法控制软件开发过程的复杂性。 2.4 模块独立原则:是指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少 且接口简单。要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块间由松 散的偶合关系,模块内部有较强的内聚性,这有助于控制系统的复杂性。(即:高内聚低 耦合) 2.5 依赖倒转原则:抽象不应该依赖于细节,细节应该依赖于抽象。 2.6 开闭原则:软件实体应该是可扩展的,但是不可以修改。即对于扩展是开放的,对于更改 是封闭的。 3 软件开发模型:瀑布模型;快速原型;喷泉模型;各种模型的工作原理、阶段、每阶段任务、 特点、示意图; 软件开发模型(也称为软件过程模型):是从软件项目需求定义开始直至软件经使用后废弃为止,跨 越整个生命周期的系统开发、运行和维护所实施的全部过程、活动和任务的结构框架 3.1 瀑布模型(又称线性模型): 3.1.1工作原理:规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。 前一阶段的工作成果是后一阶段工作开始的基础.所以,每个阶段都必须交出合格的文档,必须对前阶段的工作进行评审,前一阶段的工作完成后才可以开始后一阶段的工作 3.1.2 阶段: 计划时期:问题定义、可行性研究 开发时期:需求分析、设计、编码、测试 运行时期:运行和维护 3.1.3 各阶段任务: 1.需求分析和定义 在软件项目进行过程中,需求分析是从软件定义到软件开发的关键步骤,是今后软件,开发的基本依据,同时也是用户对软件产品进行验收的基本依据。需求分析和定义是以用

软件工程期末复习知识点整理

复习整理 、绪论 1. 软件的定义 软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。(软件=程序+文档) 2.软件工程的定义 是指导计算机软件开发和维护的一门工程学科;采用工程化的原理与方法对软件进行计划、开发和维护;把证明正 确的管理技术和最好技术综合运用到软件开发中;研究经济地开发岀高质量的软件方法和技术;研究有效维护软件 的方法和技术。 3.软件危机的概念,及出现的原因 软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。 产生原因: ⑴软件规模越来越大,结构越来越复杂 ⑵软件开发管理困难而复杂。 ⑶软件开发费用不断增加。 ⑷软件开发技术落后。 ⑸生产方式落后,仍采用手工方式。 ⑹开发工具落后,生产率提高缓慢。 4.三种编程范型的特点 (1)过程式编程范型:把程序理解为一组被动的数据和一组能动的过程所构成;程序=数据结构 +算法;着眼于程序的过程和基本控制结构,粒度最小 (2)面向对象编程范型:数据及其操作被封装在对象中;程序=对象+消息;着眼于程序中的对 象,粒度比较大 (3)基于构件技术的编程范型:构件是通用的、可复用的对象类;程序=构件+架构;眼于适合 整个领域的类对象,粒度最大 二、软件生存周期与软件过程 1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么,有哪几个主要活动 定义:一个软件从开始立项起,到废弃不用止,统称为软件的生存周期 目的:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段, 给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。 主要活动:需求分析、软件分析、软件设计、编码、软件测试、运行维护( P19) 2、软件生命周期划分为哪几个阶段 软件生命周期分为三个时期八个阶段: 软件定义:问题定义、可行性研究; 软件开发:需求分析、概要设计、详细设计、编码、测试; 软件运行:软件维护

软件工程复习题及答案

一、画出实际的瀑布模型p16 三、画出增量模型p18 五、可行性研究的工作过程及内容p36 答:1).复查系统规模和目标; 2).研究目前正在使用的系统; 3).导出新系统的高层逻辑模型; 4).进一步定义问题; 5).导出和评价供选择的解法; 6).推荐行动方针;7).草拟开发计划;8.书写文档提交审查。 六、可行性研究的目的是什么?要如何进行?p35 答:目的:用最小的代价在尽可能短的时间内确定问题是否能够解决。 首先,需要进一步分析和澄清问题定义。之后,分析员应该导出系统的逻辑模型。从系统逻辑模型出发,探索若干可供选择的主要解决方法(即系统实现方案)。对每种解法都应该仔细研究它的可行性,一般来说,至少应该从下述三方面研究每种解法的可行性:(1)技术可行性;(2)经济可行性;(3)操作可行性。必要时还应该从法律、社会效益等更广泛的方面研究每种解法的可行性。 二、画出快速原型模型p17 四、画出简化的螺旋模型p20 软件工程考试复习题

七、需求分析的任务是什么?进行需求分析时要重点考虑哪些方面的问题?p56 答:1、确定对系统的综合要求:1).功能需求——指定系统必须提供的服务。通过需求分析应该划分出系统必须完成的所有功能。2).性能需求——性能需求指定系统必须满足的定时约束或容量约束,如速度(响应时间)、信息量速率、主存容量、磁盘容量、安全性等。3).可靠性和可用性需求——可靠性是指确保各应用及其相关的所有交易的完整性和一致性的能力;可用性是指一个系统应确保一项服务或者资源永远都可以被访问到。4).出错处理需求——说明系统对环境错误应该怎样响应。5).接口需求——描述应用系统与它的环境通信格式。6).约束——在设计或实现应用系统时应遵守的限制条件。常见的约束有:精度;工具和语言约束;设计约束;应该使用的标准;应该使用的硬件平台。7).逆向需求——说明软件系统不应该做什么。8).将来可能提出的要求——应该明确地列出那些虽然不属于当前系统开发范畴,但是据分析将来很可能会提出来的要求。 2、分析系统的数据要求。 3、导出系统的逻辑模型。 4、修正系统开发计划。 八、典型的总体设计过程包括哪些步骤?p92 答:典型的总体设计过程包括九个步骤: 1)、设想供选择的方案;2)、选取合理的方案;3)、推荐最佳方案;4)、功能分解;5)、设计软件结构;6)、设计数据库;7)、制定测试计划;8)、书写文档;9)审查和复查。 九、总体设计的主要任务是什么?总体设计的主要过程有哪些?p91 答:主要任务: 总体设计又称为概要设计或初步设计。通过这个阶段的工作将划分出组成系统的物理元素—程序、文件、数据库、人工过程和文档等等,但是每个物理元素仍然处于黑盒子级,这些黑盒子里的具体内容将在以后仔细设计。总体设计的另一项重要的任务是设计软件的结构,也就是要确定系统中每个程序是由哪个模块组成,以及这些模块相互间的关系。 主要过程: ①寻找实现目标系统的各种不同的方案。②从这些供选择的方案中选取若干个合理的方案,为每个合理的方案都准备一份系统流程图,列出组成系统的所有物理元素。③进行成本/效益分析,并且制定实现这个方案的进度计划。从中选出一个最佳方案。④进一步为这个最佳方案设计软件结构。⑤进行必要的数据库设计,确定测试要求并且制定测试计划。 十、何谓耦合?有哪些类型?软件设计应该取哪种类型?p97 答:耦合是对一个软件结构内不同模块之间互连程度的度量。 类型:数据藕合、控制藕合、公共环境藕合、内容耦合 设计原则:尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合。 十一、何谓内聚?有哪些类型?软件设计应该取哪种类型?p98 答:内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。 低内聚有如下几类:偶然内聚、逻辑内聚、时间内聚。中内聚主要有两类:过程内聚、通信内聚。高内聚也有两类:顺序内聚、功能内聚。 设计时应该力求做到高内聚,通常中等程度的内聚也是可以采用的,而且效果和高内聚相差不多;但是,低内聚很坏,不要使用。

软件工程考试题带答案

一、选择题 1.软件开发瀑布模型中的软件定义时期各个阶段依次是:(B) A) 可行性研究,问题定义,需求分析。 B) 问题定义,可行性研究,需求分析。 C) 可行性研究,需求分析,问题定义。 D) 以上顺序都不对。 2.可行性研究主要从以下几个方面进行研究:(A) A)技术可行性,经济可行性,操作可行性。 B)技术可行性,经济可行性,系统可行性。 C)经济可行性,系统可行性,操作可行性。 D)经济可行性,系统可行性,时间可行性。 3 耦合是对软件不同模块之间互连程度的度量。各种耦合按从强到弱排列如下:(C) A) 内容耦合,控制耦合,数据耦合,公共环境耦合。 B) 内容耦合,控制耦合,公共环境耦合,数据耦合。 C) 内容耦合,公共环境耦合,控制耦合,数据耦合。 D) 控制耦合,内容耦合,数据耦合,公共环境耦合。4.在详细设计阶段所使用到的设计工具是:(A) A) 程序流程图,PAD图,N-S图,HIPO图,判定表,判 定树. B) 数据流程图,Yourdon 图,程序流程图,PAD图, N-S图,HIPO图。 C) 判定表,判定树,PDL,程序流程图,PAD图,N-S 图。 D) 判定表,判定树,数据流程图,系统流程图,程序流程 图,层次图。 5 按照软件工程的原则,模块的作用域和模块的控制域之间的关系是:(A) A)模块的作用域应在模块的控制域之内。 B)模块的控制域应在模块的作用域之内。

C)模块的控制域与模块的作用域互相独立。 D)以上说法都不对。 6在软件生命周期中,能准确确定软件系统的体系结构的功能阶段是(C) A.概要设计 B.详细设计 C.需求分析 D.可行性分析 7下面不是软件工程的3个要素的是(C) A过程 B.方法 C.环境 D.工具 8.下面不属于软件的组成的是(B) A程序 B.记录 C.文档 D.数据 9在瀑布模型中,将软件分为若干个时期,软件项目的可行性研究一般归属于(C) A.维护时期 B.运行时期 C.定义时期 D.开发时期 10.在瀑布模型中,下面(C)是其突出的缺点。 A.不适应平台的变动 B.不适应算法的变动 C.不适应用户需求的变动 D.不适应程序语言的变动 11下面不属于软件的特点的是(D)。 A软件是一种软件产品 B软件产品不会用坏,不存在磨损、消耗问题 C软件产品的生产主要是研制 D软件产品非常便宜 12 软件开发工具是协助开发人员进行软件开发活动所使用的软件或环境。下面不是软件开发工具的是(A)。 A.维护工具 B.编码工具 C.测试工具 D.需求分析工具 13.下列叙述中不属于软件生命周期模型的是(D)。 A.原型模型 B.瀑布模型 C.螺旋模型 D.快速组装模型 14.软件设计中,用抽象和分解的目的是(B)。 A.提高易读性 B.降低复杂性 C.增加内聚性 D.降低耦合性 15软件生命周期中所花费用最多的阶段是(D)。 A.详细设计 B.软件编码 C.概要设计 D.软件测试和维护 16.开发软件时对提高开发人员工作效率至关重要的是(B)。

软件工程基础知识点总结

软件工程基础部分知识点总结 知识点一软件工程的基本概念 1、软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。 1)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。 2)数据是使程序能够正常操作信息的数据结构。 3)文档是与程序开发、维护和使用有关的图文资料。 国标(GB)计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。 2、软件特点: 1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分; 2)软件的生产与硬件不同,它没有明显的制作过程; 3)软件在运行、使用期间不存在磨损、老化问题; 4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题; 5)软件复杂性高,成本昂贵; 6)软件开发涉及诸多的社会因素 3、软件的分类: 按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件)

1)应用软件是为解决特定领域的应用而开发的软件。 2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。 3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。 4、软件危机:是指在软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要体现在以下几个方面: ①软件开发的实际成本和进度估计不准确 ②开发出来的软件常常不能使用户满意 ③软件产品的质量不高,存在漏洞,需要经常打补丁 ④大量已有的软件难以维护 ⑤软件缺少有关的文档资料 ⑥开发和维护成本不断提高,直接威胁计算机应用的扩大 ⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长 5、软件工程:此概念的出现源自软件危机。软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。 1)研究软件工程的主要目的就是在规定的时间、规定的开发费用内开发出满足用户需求的高质量的软件系统(高质量是指错误率低、好用、易用、可移植、易维护等)。 2)软件工程的三个要素:方法、工具和过程。 ①方法:完成软件工程项目的技术手段;

软件工程复习知识点

1.软件危机的概念,内容,原因及消除的途径;软件危机的概念: 软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。概括地说,软件危机包含两方面问题: 如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。软件危机产生的原因: 软件本身的复杂性、难衡量的特点; 2. 软件开发与维护的方法不正确。消除软件危机的途径: (1)对计算机软件应当有一个正确的认识; (2)应当有组织、有计划、通过严格的管理手段进行软件的开发; (3)及时总结软件开发的成功技术和方法并加以推广; (4)开发和使用更好的软件工具; 总之,为了解决软件危机,既要有技术措施,又要有必要的组织管理措施。 2.软件工程的定义,基本原理;定义:软件工程是指导计算机软件开发和维护的一门工程学科。基本原理:软件工程的7 条基本原理: (1)用分阶段的生命周期计划严格管理 (2)坚持进行阶段评审 (3)实行严格的产品控制 (4)采用现代程序设计技术 (5)结果应能清楚地审查 6)开发小组的人员应该少而精 7) 承认不断改进软件工程实践的必要性 3.软件工程方法学的基本概念、内容;基本概念:把在软件生命周期全过程中使用的一

整套开发和管理技术方法的集合成为软件工程方法学,也称为范型。软件工程方法学包含3 个要素:方法、工具和过程。 内容:目前使用得最广泛地软件工程方法学,分别是传统方法学和面向对象方法学。传统方法学也称为生命周期方法学或结构化范型。 4.软件生命周期的具体内容,每一个阶段的任务是什么?结合具体的工程例子来理解做 软件项目主要分那几个个阶段。 ①问题定义:确定要求解决的问题是什么 ②可行性研究:决定该问题是否存在一个可行的解决办法 ③需求分析:深入了解用户的要求,在要幵发的目标系统必须做什么问题和用户取得完全一致的看法。 ④概要设计:概括回答怎样实现目标系统。概要设计又叫逻辑设计、总体设计、高层设计。 ⑤详细设计:把解法具体化,设计出程序的详细规格说明。详细设计也叫模块设计、底层设计。 ⑥编码和单元测试:编写程序的工作量只占软件幵发全部工作量的10沧20%。 ⑦综合测试:软件测试的工作量通常占软件幵发全部工作量的40沧50%。 ⑧软件维护:软件维护的费用通常占软件总费用的55 %-70% ①②③为软件定义时期,④⑤⑥⑦为软件幵发阶段。④⑤为系统设计,⑥⑦为系统实现。 5.理解几个典型软件过程的内容及其优点与缺点:瀑布模型、增量模型、快速原型模型、 螺旋模型、喷泉模型等;瀑布模型内容:瀑布模型是带“反馈环”的。优点:(1)可强迫开发人员采用的规范的方法(结构化技术)。 (2)严格地规定了每个阶段必须提交的文档。

高级软件工程师月考试试题A卷带答案

高级软件工程师考试试题(A卷)1、下哪种命名空间中的类型用于创建Windows GUI应用程序。(选择1项) D、 2、判断这PL/SQL 代码块:(选择1项) BEGIN FOR i IN 1..6 LOOP IF i = 2 OR i = 3 THEN null; ELSE INSERT INTO example(one) VALUES (i); END IF; ROLLBACK; END LOOP; COMMIT; END; 有多少行被插入到表 EXAMPLE ? A、0 B、1 C、2 D、3 3、链表具有的特点是:(选择3项) A、不必事先估计存储空间 B、可随机访问任一元素 C、插入删除不需要移动元素 D、所需空间与线性表长度成正比 4、序列图描述对象是如何交互的并且将重点放在消息序列上。(选择1项) A、正确 B、不正确

5、一个XML必须有DTD或Schemas。(选择1项) A、正确 B、不正确 6、动态网站需要的技术为。(选择3项) A、CGI B、HTTP C、ASP D、PHP 7、Linux 文件名的长度不得超过( )个字符?(选择1项)。 A、64 B、128 C、256 D、512 8、在Struts中实现页面跳转主要通过什么方法来实现?(选择1项) A、 B、 C、 D、 9、EJB的优点有哪些?(选择2项) A、技术领先 B、价格低廉 C、性能优越 D、强大的容器支持 10、在使用匿名登录ftp时,用户名为( )? (选择1项) A、login users B、anonymous C、root D、guest 11、你判断下面语句,有什么作用?(选择1项)

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

软件工程考试题 简答题 1、什么叫软件? 软件就是计算机系统中与硬件相互依存的另一部分,它就是包括程序,数据及其相关文档的完整集合 2、什么叫软件危机?软件危机包含哪两点?软件危机产生的原因就是什么? 软件危机就是指在计算机软件开发与维护过程中所遇到的一系列严重问题。包括两点: (1)如何开发软件,以满足对软件日益增长的需求; (2)如何维护数量不断膨胀的已有软件。 软件开发与维护过程中存在的许多严重问题,一方面与软件本身的特点有关,另一方面也与软件开发与维护的方法不正确有关。具体表现如下: (1)软件就是逻辑部件而不就是物理部件。 (2)软件的规模越来越大,复杂性越来越大。 (3)轻视需求分析的重要性,轻视软件维护的错误观点与方法。 3、什么叫软件工程? 1968年在第一届NATO会议上的早期定义: “建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法”。 1993年IEEE的定义: “①软件工程就是:把系统的、规范的、可度量的途径应用于软件开发、运行与维护过程,也就就是把工程应用于软件;②进而研究①实现的途径”。 我们国家最近定义:软件工程就是指导计算机软件开发与维护的工程学科。它采用工程的概念、原理、技术与方法来开发与维护软件,把经过时间考验而证明正确的管理技术与当前能够得到的最好的技术方法结合起来。 4、两种软件工程方法学开发软件时要建立哪些模型? 软件工程方法学包括:传统方法学与面向对象方法学。常用的开发模型有: 瀑布模型(需求稳定,而且可以预先指定) 原型模型(需求模糊或者随时间变化) 增量模型(分析员先作出需求分析与概要设计,用户参与逐步完善) 螺旋模型(将瀑布模型与原型化模型结合起来,并加入了风险分析) 喷泉模型(使开发过程具有迭代性与无间隙性) 5、软件过程模型有哪些?简述它们的特点。 过程模型分为五大类:1、管理过程模型。2、瀑布模型(又称为生命周期模型)。3、增量过程模型:包括增量模型,,RAD模型。4、烟花过程模型:包括原型开发模型,螺旋模型,协同开发模型。5、专用过程模型:包括机遇构建的开发模型,形式化方法模型,面向方面的软件开发模型。 6、什么就是软件生命周期? 一个软件从定义,开发,使用与维护,直到最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长时期称为生命周期 7、软件生命周期有哪几个阶段与步骤? 三个阶段:定义、开发、维护 八个步骤:问题定义、可行性研究、需求分析;总体设计、详细设计、编码与单元测试、综合测试;运行维护。 8、计算机软件的开发经过哪三个大阶段? 三个阶段:定义、开发、维护 9、软件开发的各阶段的任务就是什么? 定义阶段:问题定义--任务:关于规模与目标的报告书;可行性研究--任务:系统的高层逻辑模型:数据流图,成本/效益分析;需求分析--任务:系统的逻辑模型:数据流图,数据字典,算法描述。 开发阶段:总体设计--任务:系统流程图,成本/效益分析,推荐的系统结构:层次图/结构图;详细设计--任务:HIPO图或PDL 图;编码与单元测试--任务:源程序清单,单元测试方案与结果;综合测试--任务:综合测试方案,结果集成测试,验收测试,完整一致的软件配置。 维护阶段:软件维护--任务:维护记录以及改正性维护,适应性维护,完整性维护与预防性维护

软件工程导论第五版复习重点(必考题)

(最后部分为每年必考题) 第一章 1. .软件工程的定义:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的. 2. 软件危机的概念:软件危机是指计算机软件的开发和维护过程中所遇到的一系列严重的问题。 3. 产生软件危机的原因:(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。 (2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。 4. 面向对象方法学的四个要点:1.把对象作为融合了数据及在数据上的操作行为的统一的软件构件 2.把所有对象都划分成类3.按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。4.对象彼此间仅能通过发送消息互相联系。 5. 软件生命周期:软件定义(问题定义,可行性研究,需求分析)、软件开发(总体设计,详细设计,编码,单元测试,总体测试)、运行维护(持久地满足用户的需要) 6. 瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型,概念.方法.优缺点.区别。 7. 微软过程把软件生命周期划分为成5个阶段:规划阶段,设计阶段,开发阶段,稳定阶段,发布阶段。 第二章 1.可行性包括:技术可行性,经济可行性,操作可行性。 2. 系统流程图是概括地描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形势描绘组成系统的每个部件(程序,文档,数据库,人工过程等)。系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据加工处理的控制过程,因此尽管系统流程图的某些符号和程序流程图的符号形式相同,但是它却是物理数据流图而不是程序流程图。4. 书库流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。在数据流图中没有任何具体的物理部件,它只描绘数据在软件中流动和被处理的逻辑过程。数据流图是系统逻辑功能的图形表示。 5. 用系统流程图描绘一个系统时,系统的功能和实现每个功能的具体方案是混在一起的。有数据元素组成的数据的方式只有下述3种基本类型:顺序(即以确定次序连接两个或多个分量)。选择即从两个或多个可能的元素中选取一个重复即把指定的分量重复零次或多次

软件工程复习资料与答案

一、单项选择题(每题1分,共20 分) 1. “软件危机”是指( ) A. 计算机病毒的出现 B. 利用计算机进行经济犯罪活动 C. 软件开发和维护中出现的一系列问题 D. 人们过分迷恋计算机系统 2. DFD 中的每个加工至少需要( ) A. 一个输入流 B. 一个输出流 C. 一个输入或输出流 D. 一个输入流和一个输出流 3. 为了提高模块的独立性,模块之间最好是( ) A. 控制耦合 B. 公共耦合 C. 内容耦合 D. 数据耦合 4. 下面关于PDL语言不正确的说法是() A. PDL 是描述处理过程怎么做 B. PDL 是只描述加工做什么 C. PDL 也称为伪码 D. PDL 的外层语法应符合一般程序设计语言常用的语法规则 5. 详细设计与概要设计衔接的图形工具是( ) A. DFD 图 B. 程序图 C. PAD 图 D. SC 图 6. 不适合作为数据处理与数据库应用的语言是( ) A. SQL B. Cobol C. 4GL

D. Lisp 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. 可理解性与可读性

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