软件工程考试重点

软件工程考试重点
软件工程考试重点

软件工程

1.1软件危机

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

2、了解软件危机主要的一些典型表现。(P2)

3、出现软件危机的原因:

4、消除软件危机的途径:首先,我们要对计算机软件有一个正确的认识;更重要的是,必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严格、各类人员协同配合、共同完成的工程项目;最后,应该开发和使用更好的软件工具。

总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。

1.2软件工程

1、软件工程:采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。(熟记)

2、了解软件工程的本质特征:

1)、软件工程关注于大型程序的构造

2)、软件工程的中心课题是控制复杂性

3)、软件经常变化

4)、开发软件的效率非常重要

5)、和谐的合作是开发软件的关键

6)、软件必须有效地支持它的用户

7)、在软件工程的领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品

3、缺乏应用领域地相关知识,是软件开发项目出现问题的常见原因。

4、软件工程的基本原理:

1)、用分阶段的生命周期计划严格管理

2)、坚持进行阶段审评

3)、实行严格的产品控制

4)、采用现代程序设计技术

5)、结果应能清楚地审查

6)、开发小组的人员应该少而精

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

5、方法学(范型):在软件生命周期全过程中使用的一整套技术方法的集合。

6、软件工程方法学3要素:方法、工具和过程。

7、目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学

8、传统方法学也成为生命周期方法学或结构化范型。

9、面向对象方法学具有的4个要点。(P10)

1.3软件生命周期

1、概括地说,软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成,每个时期又进一步划分成若干个阶段。

2、软件定义时期的任务

3、软件定义时期通常进一步划分成3个阶段:问题定义、可行性研究、需求分析

4、维护时期的主要任务是使软件持久地满足用户的需要。

5、软件开发时期通常分成4个阶段:总体设计、详细设计、编码和单元测试、综合测试。前两个阶段又称为系统设计,后两个阶段又称为系统实现。

6、软件生命周期每个阶段的基本任务:问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试。

1.4软件工程

生命周期模型(过程模型):瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型。

(对各种模型要了解)

1.5小结(熟读,对本章系统地了解)

第2章可行性分析

可行性分析的目的:用最小的代价在尽可能短的时间内确定问题是否能够解决。

2.1可行性研究的任务

1、研究解法的可行性的三个方面:技术可行性、经济可行性、操作可行性。

2、可行性研究最根本的任务:对以后的行动方针提出建议。

3、可行性研究需要的时间长短取决于工程的规模。

2.2可行性研究过程

1、复查系统规模和目标

2、研究目前正在试用的系统

3、导出新系统的高层逻辑模型

4、进一步定义问题

5、导出和评价供选择的解法

6、推荐行动方针

7、草拟开发计划

8、书写文档提交审查

2.3系统流程图

1、系统流程图:概括地描绘物理系统的工具。

2、系统流程图的基本思想:用图形符号以黑盒子形式描绘组系统的每个部件(程序、文档、数据库、人工过程等)。

3、P39符号

4、系统流程图的习惯画法:使信息在图中从顶向下或从左向右流动。

5、面对复杂的系统时,一个比较好的方法时分层次地描绘这个系统。

2.4数据流图

1、数据流图(DFD):一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。

2、数据流图的四种基本符号P41

3、数据存储(静止状态)和数据流(运动)都是数据。

4、数据流图的基本要点是描绘“做什么”,而不是考虑“怎么做”。

5、星号(*)是数据流之间的“与”关系;加号(+)表示“或”关系;⊕号表示只能从中选一个(互斥关系)。

6、画数据流图的基本目的是利用它作为交流信息的工具。

2.5数据字典

1、数据字典应由对下列4类元素的定义组成:数据流、数据流分量(即数据元素)、数据存储、处理。

2、由数据元素组成数据的方式的三种基本类型:顺序、选择、重复。+可选

3、用以下符号描述由数据元素组成数据的关系:=意思是等价于(或定义为)、+意思是和(即连接两个分量)、[ }意思是或(通常用“|”号隔开供选择的分量)、{ }意思是重复、()意思是可选。

4、数据字典最重要的用途是作为分析阶段的工具。

2.6成本/效益分析

1、成本/效益分析的目的:从经济角度分析开发一个特定的新系统是否划算,从而帮助客户组织的负责人正确地作出是否投资于这项开发工程的决定。

2、软件开发成本:主要表现为人力消耗。

3、成本估算技术:代码行技术、任务分解技术、自动估计成本技术。

4、货币的时间价值:用利率的形式。

假设年利率为i,如果现在存入P元,则n年后的价值:F=P(1+i)^n

5、衡量一项开发工程的价值:投资回收期。

6、纯收入

7、投资回收率

2.7小结

三需求分析

4、需求分析是软件定义时期的最后一个阶段。

5、基本任务:准确地回答“系统必须做什么?”这个问题。

6、用于需求分析的结构化分析方法必须遵守下述准则:

(1)、必须理解并描述问题的信息域,根据这条准则应该应该建立数据模型。E-R图

(2)、必须定义软件应完成的功能,这条准则要求建立功能模型。数据流图(3)、必须描述作为外部事件结果的软件行为,这条准则要求建立行为模型。状态图

(4)、必须对描述信息、功能和行为的模型进行分解,用层次的方式展开细节。

3.1需求分析的任务

5、对软件系统的综合要求:功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、逆向需求、将来可能提出的要求。

6、需求分析的任务:确定对系统的综合要求

分析系统的数据要求

导出系统的逻辑模型

修正系统开发计划

3.2与用户沟通获取需求的方法

8、访谈、面向数据流自顶向下求精、简易地应用规格说明技术,快速建立软件原型。

9、结构化分析方法就是面向数据流自顶向下求精进行需求分析的方法。

10、快速建立软件原型是最准确、最有效、最强大的需求分析技术。

3.3分析建模与规格说明

9、需求分析过程应建立3种模型:数据模型、功能模型、行为模型。

10、数据流图是建立功能模型的基础。

11、状态转换图是行为建模的基础。

3.4实体-联系图(E-R)

E-R图中包含着实体(即数据对象)、关系和属性3种基本成分。

3.5数据规范化

第一范式:每个属性值都必须是原子值,即仅仅是一个简单值而不含内部结构。第二范式:满足第一范式的条件,而且每个非关键字都由整个关键字决定(而不是由关键字的一部分来决定)。

第三范式:符合第二范式的条件,每个非关键字属性都仅由关键字决定,而且一个非关键字属性不能仅仅是对另一个非关键字属性的进一步描述(即一个非关键字属性值不依赖于另一个非关键字属性值)。

3.6状态转换图

1、状态转换图(简称状态图):通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。

2、在状态图中定义的状态主要有:初态(即初始状态)、终态(即最终状态)和中间状态。在状态图中只能有一个初态,而终态则可以有0至多个。

3、事件就是引起系统做动作或(和)转换状态的控制信息。

4、在状态图中,初态用一对同心圆(内圆为实心圆)表示。中间状态用圆角矩形表示。如图:

状态名

状态变量的

名字和值

活动表

5、活动表的语法格式:事件名(参数表)/动作表达式

6、在活动表中通常使用的3种标准事件:

Entry事件指定进入该状态的动作

Exit事件指定退出该状态的动作

Do事件制定在该状态下的动作

7、状态转换:箭头指明的转换方向。

8、事件表达式的语法:事件说明【守卫条件】/动作表达式

事件说明与守卫条件同时使用时,则当且仅当事件发生且布尔表达式为真时,状态转换才发生;如果只有守卫条件没有事件说明则只要守卫条件为真,状态转换就发生。

9、守卫条件是一个布尔表达式。

10、动作表达式是一个过程表达式,当状态表达式开始时执行该表达式。

3.7其他图形

层次方框图、warnier图、IPO图(输入、处理、输出图的简称)

3.8验证软件需求

从四个方面进行验证:一致性、完整新、现实性、有效性

3.9小结

五总体设计

5.1设计过程

第3章总体设计过程通常有两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件的结构。

第4章典型的总体设计过程包括下述9个步骤:

1)、设想宫选择的方案

需求分析阶段得出的数据流程图是总体设计的极好的出发点。

2)、选择合理的方案

对每个合理的方案,分析员都应准备下列四份材料:

A.系统流程图

B.组成系统的物理元素清单

C.成本/效益分析

D.实现各个系统的进度计划

3)、推荐最佳方案

4)、功能分解

5)、设计软件结构

软件结构可以用层次图或结构图来描绘。

6)、设计数据库

7)、制定测试计划

8)、书写文档

这个阶段完成的文档有:系统说明、用户手册、测试计划、详细的实现计划、数据库设计结果。

9)、审查和复查

5.2设计原理

1、模块化、抽象、逐步求精、信息隐藏和局部化、模块独立

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

3、模块是构成程序的基本构件。

4、模块化就是把程序分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。

5、抽象:把相似的方面集中和概括起来,暂时忽略它们之间的差异,或者说,抽出事物的本质特性而暂时不考虑它们之间的细节。

6、逐步求精是人类解决复杂问题时采用的基本方法,也是许多软件工程技术的基础。定义:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。

7、信息隐藏原理指出:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。

8、局部化:把一些关系密切的软件元素物理地放得彼此靠近。

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

10、模块独立化重要性的原因:第一,有效地模块化的软件比较容易开发出来;第二,独立的模块化比较容易测试和维护。

11、模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。

12、耦合是对一个软件结构内不同模块之间互连程度的度量。

13、耦合的强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。

14、如果两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据,那么这种耦合称为数据耦合。

15、如果传递的信息中有控制信息(尽管有时这种控制信息以数据的形式出现),则这种耦合称为控制耦合。

16、数据耦合是低耦合。

17、公共环境耦合、

18、最高程度的耦合式内容耦合。

19、内聚标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。

20、偶然内聚、逻辑内聚、时间内聚

21、低内聚、中内聚、高内聚的分类。

5.3启发规则

11、/软件结构提高模块独立性

12、模块规模应该适中

13、深度、宽度、扇出和扇入都应适当

14、模块的应用域应该在控制域之内

15、力争降低模块接口的复杂程度

16、设计单入口单出口的模块

17、模块功能应该可以预测

5.4描绘软件结构的图形工具

7、层次图和HIPO图

8、结构图

5.5面向数据流的设计方法

7、面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法。

8、信息流分成两种类型:变化流、事物流(概念)

9、变换分析是一系列设计步骤的总称,经过这些步骤吧具有变换流特点的数据流图按预先确定的模式映射成软件结构。

10、变换分析的设计步骤。

5.6小结

第6章详细设计

目标:1.确定应该怎样具体的实现所要求的系统

2.设计出程序的“蓝图”

3.详细设计的结果基本决定了最终的程序代码的质量

6.1 结构程序设计

1.概念:结果程序设计是一种设计程序的技术,它采用自顶向下逐步求精的的设计方法和单入口但出口的控制结构。

2.三种基本控制结构:

1)顺序结构:相当于“A、B”

2)选择结构:相当于“If exp then A else B endif;”

3) 循环结构:相当于“While exp do A”

3.扩充的两种控制结构:

1)多分支结构:相当于“Case I of I=1:C1;……I=n:Cn;”

2)UNTIL循环结构:相当于“Repeat A until exp;”

4.结构程序设计的种类:

1)经典的结构程序设计:只允许使用顺序、IF_THEN

_ELSE型分支和DO_WHILE型循环;

2)扩展的结构程序设计:除了三种基本控制结构,还使用DO_CASE型多分支结构和DO_WHILE型循环结构;

3)修正的结构程序设计:除了三种基本控制结构和两种扩充结构,还使用LEA VE(或BREAK)结构。

6.2 人机界面设计

6.2.1 设计问题

1.系统响应时间

2.用户帮助设施

3.出错信息处理

4.命令交互

6.2.2 设计过程

6.2.3 人机界面设计指南

1.一般交互指南

2.信息显示指南

3.数据输入指南

6.3 过程设计的工具

6.3.1 程序流程图

程序流程图:是一种描述程序的控制结构流程和指令执行情况的有向图。

程序流程图的主要缺点:

1)程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的

全局结构。

2)程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转

移控制。

3)程序流程图不易表示数据结构。

6.3.2 盒图

盒图特点:

1)功能域明确,可以从盒图上一眼就看出来。

2)不可能任意转移控制。

3)很容易确定局部和全程数据的作用域。

4)很容易表现嵌套关系,也可以表示模块的层次结构。

6.3.3PAD图

是一种问题分析图。

PAD图优点:

1)使用表示结构化控制结构的PAD符号所设计出来的

程序必然是结构化程序

2)PAD图所描绘的程序结构十分清晰。图中最左面的

竖线是程序的主线,即第一层结构。随着德程序层

次的增加,PAD图逐渐向右延伸,每次增加一个层

次,图形向右扩展竖线。PAD图中竖线的总条数就

是程序的层次数。

3)用PAD图表现程序逻辑,易懂、易读、易记。PAD

图是二维树形结构的图形,程序从图中最左竖线上

端的结点开始执行,自上而下,从左向右顺序执行,

遍历所有结点。

4)容易将PAD图转换成高级语言源程序,这种转换可

用软件工具自动完成,从而可省去人工编码的工作,

有利于提高软件可靠性和软件生产率。

5)即可用于表示程序逻辑,也可用于描绘数据结构。

6)PAD图的符号支持自顶向下、逐步求精方法的使用。

开始时设计者可以定义一个抽象的程序,随着设计

工作的深入而使用def符号逐步增加细节,直至完成

详细设计。

6.3.4判定表

判定表由四部分组成:

左上部列出所有条件

左下部是所有可能做的动作

右上部是表示各种条件组合的一个矩阵

右下部是和每种条件组合相对应的动作

6.3.5 判定树

判定树是判定表的变种。

6.3.5过程设计语言

过程设计语言(PDL)也称为伪码。

PDL的优点:

1)可以作为注释的直接插在源程序中间

2)可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDl的书写和编辑工作

3)已经有自动处理PDL的程序存在,而且可以自动由PDL生成程序代码。

PDL缺点:不如图形工具形象直观。

6.4面向数据结构的设计方法

6.4.1Jackson图

1)顺序结构

2)选择结构

3)重复结构

6.4.2改进的Jackson图

6.4.3Jackson方法

Jackson结构程序设计方法基本上由5个步骤组成:

1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。

2)找出输入数据结构和输出数据结构中有对应关系的数据单元。

3)用下述3条规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson图。

第一,为每对有对应关系的数据单元,按照它们在数据

结构图中的层次在程序结构图的相应层次画一个

处理框。

第二,根据输入数据结构中剩余的每个数据单元所处的

层次,在程序结构图的相应层次分别为它们画上

对应的处理框。

第三,根据输入数据结构中剩余的每个数据单元所处的

层次,在程序结构图的相应层次分别为它们画上

对应的处理框。

4)列出所有操作和条件,并且把它们分配到程序结构图的适当位置。

5)用伪码表示程序。

6.5程序复杂程度的定量度量

6.5.1McCabe方法

1.流图

“退化了的”程序流程图,它仅仅描绘程序的控制流程,完

全不表现对数据的具体操作以及分支或循环的具体条件。

2.计算环形复杂度的方法

1)环形复杂度等于流图中的区域数。

2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数的,N是结点数。

3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。

3.环形复杂度的用途

它是对测试难度的一种定量度量,也能对软件最终的可靠性

给出某种预测。

实践表明,模块规模以V(G)<=10为宜。

6.5.2 Halstead

根据程序中运算符和操作数的总数来度量程序的复杂程度。

N=N1+N2

程序总长度:N

运算符出现的总次数:N1

操作数出现的总次数:N2

Halstead给出的预测程序长度的公式:

log2n1+n2log2n2

H=n

1

预测程序中包含错误的个数的公式:

E=Nlog2(n1+n2)/3000

第七章实现

概念:编码和测试统称为实现。

编码:把软件设计结果翻译成程序。

测试:检测程序并改正错误的过程。

7.1编码

7.1.1选择程序设计语言

1.计算机程序设计语言基本上可以分为两大类:

1):汇编语言

2):高级语言

2.选择语言时应考虑的实用标准:

1)系统用户要求

2)可以使用的编译程序

3)可以得到的软件工具

4)工程规模

5)程序员的知识

6)软件可移植性要求

7)软件的应用领域

7.1.2编码风格

1.程序内部的文档

2.数据说明

3.语句构造

4.输入输出

5.效率

7.2软件测试基础

7.2.1 软件测试的目标

1.有关测试的一些规则:

1)测试是为了发现程序中的错误而执行程序的过程

2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试

3)成功的测试是发现多了至今为止尚未发现的错误的测试

7.2.2软件测试准则

1)所有测试都应该追溯到用户要求

2)应该远在测试开始之前就制定出侧是计划

3)把Pareto原理应用到软件测试中

4)应该从“小规模”测试开始,并逐步进行“大规模”测试

5)穷举测试是不可能的

6)为了达到最佳的测试效果,应该由独立的第三方从事测试工作

7.2.3测试方法

1.黑盒测试

2.白盒测试

7.2.4测试步骤

1.模块测试

2.子系统测试

3.系统测试

4.验收测试

5.平行运行

7.2.5测试阶段的信息流

7.3单元测试

7.3.1测试重点:

1.模块接口

2.局部数据结构

3.重要的执行通路

4.出错处理通路

5.边界条件

7.3.2代码审查

7.3.3计算机测试

7.4集成测试

7.4.1自顶向下集成

自顶向下集成是一种递增的装配软件结构的方法,这种应用

方法非常广泛。它需要存根程序,不需要驱动程序。

7.4.2自底向上集成

自底向上集成是从软件结构最底层模块开始进行组装和测

试,它与自顶向下结合方法相反,需要驱动程序,但是不需

要存根程序。

7.4.3不同集成测试策略的比较

7.4.4回归测试

包括3类不同的测试用例

1)检测软件全部功能的代表性测试用例

2)专门针对可能受修改影响的软件功能的附加测试

3)针对被修改过的软件成分的测试

7.5确认测试

7.5.1 确认测试的范围

确认测试的两种可能的结果:

1)功能和性能与用户要求一致,软件是可以接受的

2)功能和性能与用户要求有差距

7.5.2软件配置复查

7.5.3Alpha和Beta测试

Alpha测试由用户在开发者的场所进行,并且在开发者

对用户的“指导”下进行测试。

Beta测试由软件的最终用户在一个或多个客户场所进

7.6白盒测试

7.6.1逻辑覆盖

1.语句覆盖

2.判定覆盖

3.条件覆盖

4.判定/条件覆盖

5.条件组合覆盖

6.点覆盖

7.边覆盖

8.路径覆盖

7.6.2控制结构测试

1.基本路径测试:

步骤:1)根据过程设计结果画出相应的流图

2)计算流图的环形复杂度

3)确定线性独立路径的基本集合

4)设计可强制执行基本集合中每条路径的

测试用例

2.条件测试

3.循环测试

方法:1)简单循环

2)嵌套循环

3)串接循环

7.7 黑盒测试技术

7.7.1 等价划分

7.7.2 边界值分析

7.7.3 错误推断

7.8 调试

7.8.1 调试过程

7.8.2 调试途径

1.蛮干法

2.回溯法

3.原因排除法

7.9软件可靠性

7.9.1基本概念

1.软件可靠性的定义

2.软件的可用性

7.9.2估算平均无效故障时间的方法

1.方法

2.基本假定

3.估算平均无故障时间

4.估算错误总数的方法

第8章维护

8.1 软件维护定义

软件维护就是在软件已经交付使用之后,为了改正错误或满足

新的需要而修改软件的过程。

维护的种类:

1)改正性维护

2)适应性维护

3)完善性维护

4)预防性维护

8.2软件维护的特点

8.2.1结构化维护与非结构会维护差别巨大

8.2.2维护的代价高昂

8.2.3维护的问题很多

8.3软件维护过程

1.维护组织

2.维护报告

3.维护的事件流

4.保存维护记录

5.评价维护活动

8.4软件的可维护性

8.4.1决定软件可维护性的因素

1.可理解性

2.可测试性

3.可修改性

4.可移植性

5.可重用性

8.4.2文档

是影响软件可维护性的决定因素。

包括:1)用户文档

2)系统文档

8.4.3 可维护性复审

8.5 预防性维护

8.6 软件再工程过程

1.库存目录分析

2.文档重构

3.逆向工程

4.代码重构

5.数据重构

6.正向工程

第9章面向对象方法学引论

9.1 面向对象方法学概述

9.1.1 面向对象方法学的要点

1)认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以有比较简单的对象以某种方式组

合而成

2)把所有对象都划分成各种对象类,每个类定义了一组数据和一组方法

3)按照子类与父类的关系,把若干个对象类组成一个层次结构的系统。

4)对象彼此之间仅能通过传递消息互相联系。

9.1.2面向对象方法学的优点

1.与人类习惯的思维方法一致

2.稳定性好

3.可重用性好

4.轻易开发大型软件产品

5.可维护性好

9.2面向对象的概念

9.2.1对象

1.对象的形象标识

2.对象的定义

对象是封装了数据结构及可以施加在这些数据上的操

作的封装体,这个封装体有可以唯一的表示它的名字,

而且向外界提供一组服务。

3.对象的特点:

1)以数据为中心

2)对象是主动的

3)实现了数据封装

4)本质上具有并行性

5)模块独立性好

9.2.2其它概念

1.类:是具有相同属性和行为的一个或多个对象的描述

2.实例

3.消息

由3部分组成:1)接收消息的对象

2)消息选择符

3)零个或多个变元

4. 方法

是对象所能执行的操作

5. 属性

6. 封装

7. 继承

8.多态性

9. 重载

9.3 面向对象建模

9.4 对象模型

9.4.1 类图的基本符号

1.定义类

2.定义属性

3.定义服务

9.4.2 表示关系的符号

1.关联

1)普通关联

2)关联角色

3)限定关联

4)关联类

2.聚集

1)共享聚集

2)组合聚集

3.泛化

1)普通泛化

2)受限泛化

4.依赖和细化

1)依赖关系

2)细化关系

9.5动态模型

表示瞬时的、行为化的系统的“控制”性质,它规定了对

象型中的对象的合法变化序列。

9.6功能模型

表示变化的系统的“功能”性质,它指明了系统应该“做

什么”,因此更直接地反映了用户对目标系统的需求。9.6.1用例图

1.系统

2.用例

特征:1)用例代表某些用户可见的功能,实

现一个具体的用户目标

2)用例总是被行为者启动,并向行为

者提供可识别的值

3)用例必须是完整的

3.行为者

4.用例之间的关系9.6.2用例建模

1.寻找行为者

2.寻找用例

9.7 3种模型之间的关系

软件工程期末考试重点

软件工程期末考试重点 《软件工程》期末复习重点 第一章软件工程 1. 什么是软件工程。 A.把系统化的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;b.研究a中提到的途径。2. 软件工程的三要素:方法、工具和过程。 第二章软件过程 1. 软件生命周期分为哪几个阶段?每个阶段的基本任务是什么? a.软件定义:确定软件开发工程必须完成的总目标问题定义:要解决的问题是什么 可行性研究:上阶段所确定的问题是否有可行的解决办法?需求分析:目标系统必须做什么 b.软件开发:具体设计和实现在前一个时期定义的软件。概要设计:怎样宏观地解决问题 详细设计:应如何具体地实现这个系统 编码和单元测试:写出正确的、易理解、易维护的程序综合测试:通过各类型测试使达到预定要求。 c.运行维护:修正错误,使软件持久地满足用户需要。改正性维护:诊断和改正使用中的错误适应性维护:修改

以适应环境变化 完善性维护:根据用户的要求改进和扩充以完善预防性维护:修改以为将来的维护作准备 2. 常用的过程模型有哪些?各自的特点及不足。如:瀑布模型的不足是不能适应需求的动 态变更。 A.瀑布模型 特点: 可强迫开发人员采用规范化的方法。严格地规定了每个阶段必须提交的文档。要求每个阶段交出的所有产品都必须是经过验证的。 缺点:太理想化,于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。如果需求规格与用户需求之间有差异,就会发生这种情况。只适用于项目开始时需求已确定的情况。 B.快速原型模型 特点:快速 软件产品开发基本上是线性顺序进行。降低了规格说明文档变化的可能性。减少了后续阶段错误的可能性。 c.增量模型 1 优点: 人员分配灵活,刚开始不用投入大量人力资源。

软件工程考试题(带答案)..

一、选择题 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)。

软件工程重点整理

软件工程重点 (吐血整理——林新发) 红色的是重点中的重点 前面数字是课本页码 第一章概论 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.必须划分描述数据、功能和行为的模型,从而可以分层次地揭示细节

软件工程期末试题(含答案)解析

一、填空题(每空1分,共25分) 1.软件生存周期一般可以划分为,问题定义、可行性研究、需求分析、设计、编码、测试和运行 和维护。 2.基于软件的功能划分,软件可以划分成___系统软件_、支撑软件、应用软件__三种。 3.可行性研究,应从经济可行性、技术可行性、运行可行性、法律可行性和开放方 案可行性等方面研究。 4.系统流程图是描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子 形式描绘系统里面的每个部件 5.数据流图的基本四种成分:数据输入的源点和数据输出汇点、加工、数据流和数据存储文 件。 6.结构化分析方法是面向_数据流_进行需求分析的方法。结构化分析方法使用_数据流图DFD_与_ 数据字典_来描述。 7.继承性是自动地共享类、子类和对象中的方法和数据的机制。 8.软件详细设计工具可分为3类,即_图示工具_、_设计语言_和_表格工具_。 9.为了在软件开发过程中保证软件的质量,主要采取下述措施:_审查__、复查和管理复审、___ 测试_。 10.大型软件测试包括单元测试、集成测试、确认测试和系统测试四个步骤。 二、单项选择题(每小题2分,共20分) 1.软件设计中划分模块的一个准则是(C )。 A、低内聚低耦合 B.低内聚高耦合C.高内聚低耦合 D.高内聚高耦合 2.Jackson设计方法是由英国的M. Jackson提出的,它是一种面向( C )的软件设计方法。 A、对象 B.数据流 C.数据结构 D.控制结构 3.试判断下列叙述中,哪个(些)是正确的( C )。 a、软件系统中所有的信息流都可以认为是事务流 b、软件系统中所有的信息流都可以认为是变换流 c、事务分析和变换分析的设计步骤是基本相似的 A、a B、b C、c D、b和c 4.( A )是用户和设计交换最频繁的方法。 A、原型化方法 B、瀑布模型方法 C. 螺旋模型方法D、构件组装模型 5.软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证 是( C )。 A、硬件环境 B、软件开发的环境 C.软件开发工具和软件开发的环境 D、开发人员的素质 6.20世纪50年代以来,出现了许多不同的程序设计语言,下列语言中哪个语言是低级语言 ( D )。 A、PASCAL B、 VISUAL BASIC C. C++ D、汇编语言 7.软件测试的目的是?( D ) A、证明软件的正确性 B.找出软件系统中存在的所有错误 C.证明软件系统中存在错误 D.尽可能多的发现软件系统中的错误 8.使用白盒测试方法时,确定测试数据应根据( A )和指定的覆盖标准。 A、程序的内部逻辑 B、程序的复杂程度 C、该软件的编辑人员 D、程序的功能 9.软件维护工作的最主要部分是( C )。 A、校正性维护 B、适应性维护 C.完善性维护 D、预防性维护

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

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

软件需求工程复习题

需求工程练习题 一、单选题(每空1分,共20分,请在备选答案中选择唯一一个正确的选项) 1、产品特性可以称为质量属性,在众多质量属性中,对于开发人员来说重要的属性有哪些 (B ) A 有效性、效率、灵活性、互操作性 B 可维护性、可移植性、可重用性、可测试性 C 完整性、可靠性、健壮性、可用性 D 容错性、易用性、简洁性、正确性 2、需求包括11个方面的内容,其中网络和操作系统的要求属于(B),如何隔离用户之间的数据属于(C),执行速度、相应时间及吞吐量属于(D),规定系统平均出错时间属于(A )。 A 质量保证 B环境需求 C安全保密需求 D 性能需求 3、需求分析过程应该建立3种模型,它们分别是数据模型、功能模型、行为模型。以下几种图形中,(B)属于功能模型,(A)属于数据模型,(C)属于行为模型。 A 实体-联系图(ERD) B 数据流图(DFD) C 状态转换图(STD) D鱼骨图 4、常用的需求分析方法有:面向数据流的结构化分析方法(SA),面向对象的分析方法(OOA),下列(D)不是结构化分析方法的图形工具。 A决策树 B数据流图 C数据字典 D快速原型 5、软件开发中,原型是软件的一个早期可运行的版本,它反映最终系统的部分重要特性。其中,(B)和(C)用完就可以丢弃,而(A)围绕原型修改、增加。 A 进化型 B 探索型 C实验型 D 以上都是 6、(D)用于描述数据的处理过程。 A 数据字典 B决策树 C决策表 D 数据流图 7、DFD的基本符号不包括下列哪种(A) A 数据字典 B 加工 C 外部实体 D 数据流 E 数据存储文件 8、DD的主要字典条目包括以下哪种(E) A数据流 B文件 C 数据项 D加工 E以上都是 9、常用的动态分析方法不包括以下哪种(B) A 状态迁移图 B 层次方框图 C时序图 D Petri网 10、需求分析阶段的文档包括以下哪些(E) A 软件需求规格说明书 B数据要求说明书 C初步的用户手册 D修改、完善与确定软件开发实施计划 E以上都是 11、需求验证应该从下述几个方面进行验证:(C) A 可靠性、可用性、易用性、重用性B可维护性、可移植性、可重用性、可测试性 C一致性、现实性、完整性、有效性 D 功能性、非功能性 12、风险管理的要素包括哪项(D) A风险评价 B风险避免 C风险控制 D以上都是 13、下列描述中错误的是(D) A每一个集成的需求变更必须能跟踪到一个经核准的变更请求。 B变更过程应该做成文档,尽可能简单,当然首要的是有效性。 C所有需求变更必须遵循过程,按照此过程,如果一个变更需求未被采纳,则其后过程不再予以考虑。 D可以从数据库中删除或修改变更请求的原始文档

《软件工程》期末考试及答案

《软件工程》 期末考试试卷 考生注意:1.本试卷共有五道大题,满分100分。 2.考试时间90分钟。 3.卷面整洁,字迹工整。 4.填写内容不得超出密封线。 一、名词解释题(每小题3分,共15分) 1.软件生存周期模型 2.数据字典DD

3.内聚性 4.JSP方法 5.多态性 二、填空题(每空2分,共20分) 1.在软件开发过程中要产生大量的信息,要进行大量的修改,能协调软件开发,并使混乱减到最低程度。

2.规定功能的软件,在一定程度上对自身错误的作用具有屏蔽能力,则称此软件具有的软件。 3.McCall提出的软件质量模型包括个软件质量特性。 4.软件可维护性度量的七个质量特性是可理解性、可测试性、可修改性、可靠性、、可使用性和效率。 5. 为了便于对照检查,测试用例应由输入数据和预期的两部分组成。 6. 程序设计语言的心理特性主要表现在、简洁性、传统性、局部性和顺序性。 7. 软件结构是以为基础而组成的一种控制层次结构。 8. 使用类创建对象的过程实际上是类的过程。 9. 结构化语言是介于自然语言和之间的一种半形式语言。 10.若年利率为i,不计复利,n年后可得钱数为F,则现在的价值P= 。 三、简答题(每小题5分,共20分)

2.以G.J.Myers的观点,简述对软件测试的目的。 3.就程序设计语言的工程特性而言,对程序编码有哪些要求? 4.模块的内聚性包括哪些类型?

四、理论应用题(每小题15分,共30分) PDL语言描述在数组A(1)~A(10)中找最大数的算法。 2.根据下列条件使用等价类划分法设计测试用例。某一8位微机,其八进制常数定义为:以零开头的数是八进制整数,其值的范围是-177~177,如05,0127,-065。

软件工程(清华钱乐秋版)期末复习重点

1、什么是软件工程 在《计算机科学技术百科全书》中软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。 2、软件生存周期分哪几个阶段分别简述各个阶段的任务。 答:软件生存周期有计算机系统工程、需求分析、设计、编码、测试、运行和维护6个阶段。 A 计算机系统工程的任务是确定待开发软件的总体要求和范围,以及该软件与其他计算机 系统元素之间的关系,进行成本估算,做出进度安排,并进行可行性分析,即从经济、技术、法律等方面分析待开发的软件是否有可行的解决方案,并在若干个可行的解决方案中做出选择。 B 需求分析主要解决待开发软件要“做什么”的问题,确定软件的功能、性能、数据、界面 等要求,生成软件需求规约。 C 软件设计只要解决待开发软件“怎么做”的问题。软件设计通常可分为系统设计和详细设 计。系统设计的任务是设计软件系统的体系结构,包括软件系统的组成成分、各成分的功能和接口、成分间的连接和通信,同时设计全局数据结构。详细设计的任务是设计各个组成成分的实现细节,包括局部数据结构和算法等。 D 编码阶段的任务是用某种程序设计语言,将设计的结果转换为可执行的程序代码。 E测试阶段的任务是发现并纠正软件中的错误和缺陷。测试主要包括单元测试、集成测试、确认测试和系统测试。 F软件完成各种测试后就可交付使用,在软件运行期间,需对投入运行的软件进行维护,即可发现了软件中潜藏的错误或需要增加新的功能或使软件适应外界环境的变化等情况出现时,对软件进行修改。 3、简述各类软件过程模型的特点。 答:典型的软件过程模型有:瀑布模型、演化模型(增量模型、原型模型、螺旋模型)、喷泉模型、基于构件的开发模型和形式方法模型等。 A瀑布模型中,上一阶段的活动完成并经过评审后才能开始下一阶段的活动,其特征是: 接受上一阶段活动的结果作为本阶段活动的输入; 依据上一阶段活动的结果实施本阶段应完成的活动; 对本阶段的活动进行评审; 将本阶段活动的结果作为输出。 B 增量模型将软件的开发过程分成若干个日程时间交错的线性序列,每个线性序列产生软 件的一个可发布的增量版本,后一个版本是对前一个版本的修改和补充,重复增量发布的过程,直至产生最终的完善产品。 C 原型方法从软件工程师与客户的交流开始,其目的是定义软件的总体目标,标识需求。 然后快速制定原型开发的计划,确定原型的目标和范围,采用快速设计的方式对其建模,并构建模型。被开发的原型应交付给客户使用,并收集客户的反馈意见,这些反馈意见可在下

软件工程考试题库

软件工程概述 一单项选择 1.软件生命周期一般包括:软件开发期和软件运行期,下述(D )不是软件开发期所应包含的内容。 A需求分析 B 结构设计C程序编制D软件维护 2.软件是一种逻辑产品,它的开发主要是(A )。 A研制B拷贝C再生产D复制 3.以文档作为驱动,适合于软件需求很明确的软件项目的生存周期模型是( C )。 A喷泉模型 B 增量模型C瀑布模型D螺旋模型 4.在软件生存周期中,(B )阶段必须要回答的问题是“要解决的问题是做什么?”。 A详细设计 B 可行性分析和项目开发计划C概要设计D软件测试 5.软件产品与物质产品有很大区别,软件产品是一种(C )产品 A有形 B 消耗C逻辑D文档 6.(C )把瀑布模型和专家系统结合在一起,在开发的各个阶段上都利用相应的专家系统来帮助软件人员完成开发工作。 A 原型模型 B 螺旋模型 C 基于知识的智能模型 D 喷泉模型 7.( B )阶段是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。A概要设计 B 详细设计 C 编码 D 测试 8.下列软件开发模型中,适合于那些不能预先确切定义需求的软件系统的开发的模型是(A )。 A 原型模型 B 瀑布模型 C 基于知识的智能模型 D 变换模型 9.下列软件开发模型中,以面向对象的软件开发方法为基础,以用户的需求为动力,以对象来驱动的模型是( C )。 A 原型模型 B 瀑布模型 C 喷泉模型 D 螺旋模型 10.下列软件开发模型中,支持需求不明确,特别是大型软件系统的开发,并支持多种软件开发方法的模型是( D )。 A 原型模型 B 瀑布模型 C 喷泉模型 D 螺旋模型 11.软件特性中,使软件在不同的系统约束条件下,使用户需求得到满足的难易程度称为(C )。 A可修改性B可靠性C可适应性 D 可重用性 12.软件特性中,一个软件能再次用于其他相关应用的程度称为(B )。 A可移植性B可重用性 C 容错性 D 可适应性 13.软件特性中,(A )是指系统具有清晰的结构,能直接反映问题的需求的程度。 A可理解性B可靠性C可适应性 D 可重用性 14.软件特性中,软件产品交付使用后,在实现改正潜伏的错误、改进性能、适应环境变化等方面工作的难易程度称为( B )。 A可理解性 B 可维护性C可适应性 D 可重用性 15.软件特性中,软件从一个计算机系统或环境移植到另一个上去的难易程度指的是(C ). A可理解性B可修改性C可移植性 D 可重用性 16.软件特性中,在给定的时间间隔内,程序成功运行的概率指的是( D )。 A有效性B可适应性C正确性 D 可靠性 17.软件特性中,允许对软件进行修改而不增加其复杂性指的是(A )。 A可修改性B可适应性C可维护性 D 可移植性 18.软件特性中,多个软件元素相互通讯并协同完成任务的能力指的是(B )。 A可理解性B可互操作性C可维护性 D 可追踪性 19.软件特性中,根据软件需求对软件设计、程序进行正向追踪,或根据程序、软件设计对软件需求进行逆向追踪的能力指的是( C )。

需求工程期末复习

第一章:需求工程导论 1.需求工程定义: 是所有需求处理活动的和,它收集信息、分析问题、整合观点、记录需求并验证其正确性,最终反映软件被应用后与其环境互动形成的期望效应。 2.需求工程的基本活动: 1)需求开发:需求获取,需求分析,需求规格说明,需求验证 2)需求管理 3.各个活动的目的: 1)需求获取的目的是从项目的战略规划开始建立最初的原始需求; 2)需求分析的目的是保证需求的完整性和一致性; 3)需求规格说明的目的是将完整、一致的需求与能够满足需求的软件行为以文档的方式明确地固定下来; 4)需求验证的首要目的是保证需求及其文档的正确性,即需求正确的反映了用户的真实意图;另一个目标是通过检查和修正,保证需求及其文档的完整性和一致性; 5)需求管理的主要工作是跟踪后继阶段中的需求实现与需求变更情况,确定需求得到了正确的理解并被正确的是想到了软件产品中。 4.软件需求规格说明定义: 软件需求开发用来确定系统需求中应该由软件满足的部分,将其映射为软件行为,产生软件需求规格说明。 第二章:需求基础 5.软件系统能够与问题域进行交互和相互影响的原因在于,软件系统中的某些部分对问题域中的某些部分具有模拟特性。 6.需求分类: 1)功能需求:业务需求,用户需求,系统需求 2)性能需求 3)质量属性 4)对外接口 5)约束 第三章:(不考) 第四章:需求获取概述 7.需求工程需要获取的内容主要有三种: 1)需求 2)问题域描述 3)环境与约束 8.需求获取信息的主要来源: 1)涉众 2)硬数据 3)相关产品 4)重要文档 5)相关技术标准和法规 9.获取信息的方法: 1)传统方法:问卷调查,面谈,文档分析,文档检查,需求剥离 2)集体获取方法:头脑风暴,专题讨论会,JAD,JRP 3)原型

软件工程期末试题(部分答案)

选择题 . 开发软件的高成本和产品的低质量之间有着尖锐的矛盾,这称作()。.软件投机.软件危机.软件工程.软件产生 . 软件工程学是应用科学理论和工程上的技术指导软件开发的学科,其目的是()。 .引入新技术提高空间利用率.用较少的投资获得高质量的软件.缩短研制周期扩大软件功能.硬软件结合使系统面向应用 . 瀑布模型把软件生存周期划分为软件定义、软件开发和()三个阶段,而每一阶段又可细分为若干个更小的阶段。 .详细设计.可行性分析.运行及维护.测试与排错 . 一个软件项目是否进行开发的结论是在()文档中作出的。 .软件计划.可行性报告.测试报告.需求分析说明书 . 常用的成本估计技术不包括()。 .任务分解.自动估计成本.代码行.投资回收估算 . 需求分析说明书不能作为()。 .可行性研究的依据.用户和开发人员之间的合同.系统概要设计的依据.软件验收测试的依据 . 需求分析需要确定的系统基本需求不包括()。 .开发语言.功能.性能.接口 . 状态图中定义的状态不包括()。 .初态.终态.中间状态.事件 . 验证软件正确性不包括()。 .一致性.易操作性.完整性.有效性 . 软件的()设计主要任务是建立软件系统的总体结构。 .总体.抽象.逻辑.规划 . 下面()不是模块化设计的目的。 .可采用结构化设计方法.降低复杂度 .有利于信息隐蔽.描述系统的功能与性能 . 模块内部的算法设计在结构化方法的()阶段进行。 .系统分析.概要设计.详细设计.可行性分析 . ()先于任何技术活动之前开始,贯穿于软件的整个生命周期中。 .项目计划.风险评估.软件测试.软件项目管理 . 实现包括编码和()两个阶段。 .选择开发工具.测试.数据库设计.程序复杂度计算

山东大学-软件工程复习重点整理

第一章 1.1软件工程(SE)的定义、向、作用: SE:在将有关软件开发与应用的概念科学体系化的基础上,研究如有计划、有效率、经济的开发和利用能在就算机上正确运行的软件的理论和技术的工程法学,一些开发和维护软件的法、过程、原则。是一个系统工程,既有对技术问题的分析与综合,也有对开发过程和参与者的管理。 SE的向:面向对象模式,结构化模式,基于过程的模式等 SE的作用:付出较低的开发成本,达到要求的软件功能,取得较好的软件性能,开发的软件易于移植,需要较低的维护费用,能按时完成开发工作,及时交付使用。 1.2开发模式:软件开发的全部过程,活动和任务的结构框架,它能直观的表达的表达软件开发全过程,明确要完成的主要活动,任务和开发策略。 1.3说明错误、故障和失效的含义及联系(并举例): 错误:是在软件生产过程中人为产生的错误(需求说明中的错误,代码中的错误) 故障:是在功能实现过程中产生的问题;是错误导致的结果,是在软件中一个错误的表现(一个错误可能产生多个缺陷,静态存在的) 失效:是相对于系统指定行为的偏离,系统违背了它应有的行为(动态存在的) 联系:当一个开发者编写程序时,会在代码中出现错误。当这个程序被编译或集成到一个系统中时,系统就存在故障。当你运行这个系统时,可能会导致失效,即人们产生错误,故障是错误的结果(部观角:从开发者的角度看待问题),当故障执行时出现失效(外部视角:从用户角度看到的问题)。并不是所有的错误会导致故障,并非每个缺陷都对应相应的失败。1.4软件质量应从哪几个面衡量,论述之: (1产品的质量)(2过程的质量)(3商业环境背景下的质量) (1)产品的质量:用户从失败的数目和类型等外部特征进行评价,如果软件具有足够的功能并且易于学习和使用,用户就断定软件是高质量的;开发者从缺陷的数目和类型等部特征来作为产品质量的依据。 (2)过程的质量:有很多过程都会影响到最终的产品质量,只要有活动出了差错,产品的质量就会受到影响;开发和维护过程的质量与产品的质量是同等重要的。 (3)商业环境背景下的软件质量:将技术价值和商业价值统一起来。 1.5软件系统的系统组成(系统的要素有哪些):对象(实体)+ 活动+ 关系+ 系统边界活动:活动是发生在系统中的某些事情,通常描述为由某个触发器引发的事件,活动通过改变属性把一个事物变成另一个事物。 对象:活动中涉及的元素称为对象。 关系:是指活动与对象之间的关系。 系统边界:即系统包含的功能与系统不包含的功能之间的界限。 1.6现代软件工程大致包含几个阶段及各个阶段的文档: (1)需求分析:主要包括问题定义、可行性分析、需求分析《需求规格说明书》

软件需求工程选择题

选择题 1.软件生命周期包括哪些阶段A A. 需求、设计、编码、单元测试、接收测试和维护阶段。 B. 设计、编码、单元测试、接收测试和维护阶段。 C. 需求、设计、编码、单元测试和接收测试阶段。 D. 需求、设计和编码阶段。 2. 好的软件需求具有哪些特性A A. 一致性和全面性。 B. 易读性和充分性。 C.充分性。 D.易读性。 3.RUP的十大要素是:开发一个前景、达成计划、标识和减小风险、分配和跟踪任务、检 查商业理由、设计组件构架、对产品进行增量式的构建和测试、验证和评价结果、_________和_________。A A. 管理和控制变化及提供用户支持。 B. 迭代的开发和提供用户支持。 C. 迭代的开发和管理和控制变化。 D. 建立模版和迭代的开发。 4.下列哪个不是RUP的核心工作流C A. 业务建模 B. 分析和设计 C. 用户需求了解。 D. 需求 5.RAD的缺点不包括___D______。 A. 如果用户不能持续地参与整个生命周期中,最终产品会受到负面影响。 B. 要求系统能适当模块化,如果没有可重用的组件,它的效率就会下降。 C. 盲目应用时,会缺乏成本概念和项目完成的时间限制。项目有永远不能完结的风险。 D. 工作重点从文档转为构建,所见即所得。 6.螺旋模型的优点不包括____C______。 A. 能够及时找到项目存在的风险,避免因为克服不了的困难而造成大的损失。 B. 使用户能够尽早将信息经常反馈给开发人员,保证了产品的正确性和高质量。 C. 大量的中间阶段会产生额外的内外部文档。 D. 可以方便地评估和验证每次迭代的成果;实现从开发到维护的无缝连接。 7.迭代方法中的常见问题不包括___B________。 A. 过分详细的规划 B. 项目收敛 C. 回避棘手问题 D. 不同的小组按自己的进度进行工作 8.用户故事的书写遵循一定的原则,其中不包括___C_____。 A. 作为(系统的一个涉众) B. 我想要(做一件事) C. 是什么(用户的需求是什么) D. 从而(达到一个商业价值)

软件工程期末试题及答案

软件工程期末试题及答案 选择题 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.软件测试用例主要由输入数据和()两部分组成。 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)编码

软件工程考试题

1、(可行性研究)得目得就就是用最小代价在尽可能短得时间内确定该软件项目就是否能够开发、就是否值得开发。 2、可行性研究得目得不就是就是开发一个软件项目,而就是研究这个项目就是否(就是否做值得)。 3、可行性研究需要从(经济)可行性、(技术)可行性、(操作)可行性与(社会)可行性四个方面分析研究每种解决方案得可行性。 4、技术可行性就是对开发项目得(功能、性能、限制条件)进行分析,确定现有资源条件下,技术风险有多大,项目就是否能实现。 5、经济可行性一般要考虑得情况包括:(成本与效益)。 6、社会可行性所涉及得范围包括(合同、责任、侵权)用户组织得管理模式、范围以及其她一些技术人员常常不了解得陷阱。 7、典型得可行性研究有以下步骤:确定项目得规模与目标、(研究正在运行得系统)、(建立新系统得高层逻辑模型)、导出与评价各种方案、推荐可行得方案与编写可行性研究报告。 8、系统效益=经济效益+(社会效益)。 9、效益分有型效益与(无形)两种。 10、可行性研究得第一个步骤就是(确定项目得规模与目标)。 11、数据字典就就是用来定义数据流图中得(各个成分得具体含义)得。它与数据流图共同构成了系统得(逻辑模型),就是(需求说明书)得主要组成部分。 12、由于数据流就是流动中得数据,所以必须有(流向)。除了与(数据存储)之间得数据流命名外,数据流应该采用名词或名词短语。 七、选择题 1、研究开发资源有效性就是进行( D )可行性研究得一个方面 A、技术 B、经济 C、社会 D、操作 2、在软件可行性研究中、可以从不同得角度对软件进行研究,其中从软件得功能可行性角度考虑得就是( B )可行性 A、经济 B、技术 C、操作 D、社会 3、在遵循软件工程原则开发软件过程中,计划阶段应该依次完成( B ) A、可行性研究、需求分析、问题定义 B、问题定义、可行性研究、需求分析 C、需求分析、问题定义、可行性研究 D、可行性研究、问题定义、需求分析 4、可行性研究要进行得需求分析与设计应就是( C )。 A、详细得 B、全面得 C、简化得 D、彻底得 七、填空题 1、需求分析得基本任务就是要准确地定义(扇新系统得目标),为了满足用户需求,回答系统必须(做什么)得问题。 2、在需求分析阶段,首先进行问题识别,即双方确定对问题得综合需求,这些需求包括:(功能)需求、(性能)需求、(环境)需求、(用户界面)需求。另外还有可靠性、安全性、保密性、可移植性、可维护性等方面得需求。 3、需求分析得困难主要体现在4个方面:问题得复杂性、(交流障碍)、(不完备性与不一致性)、需求易变性。 4、在需求分析阶段进行以下几个方面得工作:识别系统综合要求、(分析系统得数据要求)、导出软件逻辑模型、(编写文档)。

软件需求期末考试资料整理

软件需求工程期末考试复习资料 第一讲 1.什么是需求分层?为什么要进行需求分层?【P6~P9】 一些基本术语和概念,需求,软件需求工程,需求分析 (1)软件需求包括三个不同的层次—业务需求、用户需求和功能需求,除此之外,每个系统还有各种非功能需求。 业务需求( business requirement)反映了组织机构或客户对系统、产品高层次的目标要求,它们在前景和范围文档中予以说明。 用户需求(user requirement) 文档描述了用户使用产品必须要完成的任务,这在使用实例(use case)文档或方案脚本(scenario)说明中予以说明。 功能需求(functional requirement)定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。 所谓特性(feature)是指逻辑上相关的功能需求的集合,给用户提供处理能力并满足业务需求。 (2)需求具有多个视图,从不同的角度定义不同项目涉众所关注的相同问题。软件需求的层次划分可以满足需求的多视图需要。 具体而言,管理人员或市场营销人员负责定义软件的业务需求,以提高公司的运营效率(对信息系统而言)或产品的市场竞争力(对商业软件而言)。 所有的用户需求都必须符合业务需求,需求分析员从用户需求中推导出产品应具备哪些对用户有帮助的功能。 开发人员则根据功能需求和非功能需求设计解决方案,在约束条件的限制范围内实现必需的功能,并达到规定的质量和性能指标。 2.需求开发和需求管理是按照什么来划分的?它们各自包含哪些活动?【P9~P10】 按照需求基线来划分的,即:按照某一时刻,对特定版本中已达成一致的需求内容为界限。 它们各自包含的活动有:【参见课本】 3.好的需求是什么样的?【P15~P16】 单条需求(即需求声明)的特点:【P15】 SRS作为整体应具备的特点:【P16】 4.如何去理解需求签约以及如何认识?【P25】 客户和开发人员之间合作伙伴关系的核心是就产品的需求达成一致,很多组织把在需求文档上签字作为客户认可需求的标志。 “签字”的核心在于建立需求协议的基线,即某一时刻需求的瞬态图。在需求规格说明书上签字表示,同意这份文档所描述的系统能够满足客户的需求,进一步的变更将在此基础上,依照项目定义的变更过程进行。 在实务操作中,“签字”常出现如下问题:一是客户代表把在需求文档上签字当做毫无意义的仪式;二是开发经理把签字当做冻结需求的方法。这些都是需要规避的,即不能把“签字”当做武器,而应该将之视为项目的一个里程碑,对于签字之前应进行哪些活动,以及签字对将来变更的影响,各方应形成明确一致的理解。

软件工程期末考试复习题及答案

(4分) 变换型结构的数据流呈() A. 线性形状 B. 辐射状 C. 椭圆形 D. 阶梯形 得分: 0 知识点: 软件工程,软件工程作业题展开解析 .答案 A .解析..2. (4分) 可行性研究阶段使用的图形工具是() A. DFD图 B. N-S图 C. PAD图 D. Warnier图 得分: 0 知识点: 软件工程,软件工程作业题展开解析 .答案 A .解析..3. (4分) 软件的开发模式有() A. 面向过程模式、面向对象模式、混合模式 B. 变换模式、渐增模式、瀑布模式 C. 自顶向下模式、自底向上模式、关系模式 D. 分步模式、渐增模式、非渐增模式 得分: 0 知识点: 软件工程,软件工程作业题展开解析 .答案 B .解析..4. (4分) 模块的初始化工作和模块处理意外故障均属于() A. 时间内聚 B. 顺序内聚 C. 功能内聚 D. 逻辑内聚 得分: 0 知识点: 软件工程作业题,软件工程展开解析 .答案 A .解析..5. (4分) HIPO的含义是()

A. 层次、输入、处理、输出 B. 高速、信息、程序、目标 C. 顶层的IPO图 D. 关于输入、处理、输出的层次 得分: 0 知识点: 软件工程,软件工程作业题展开解析 .答案 A .解析..6. (4分) 数据字典和数据流图共同构成系统的() A. 物理模型 B. 结构模型 C. 设计说明书 D. 逻辑模型 得分: 0 知识点: 软件工程作业题,软件工程展开解析 .答案D .解析..7. (4分) 好的软件结构它的外观形状一般呈() A. 线性 B. 扇形 C. 椭圆形 D. 层次型 得分: 0 知识点: 软件工程,软件工程作业题展开解析 .答案 C .解析..8. (4分) CMU/SEI推出的()将软件组织的过程能力分为五个成熟度级别,每一个级别定义了一组过程能力目标,并描述了要达到这些目标应该具备的实践活动。 A. CMM B. PSP C. ISO-9000 D. RUP 得分: 0 知识点: 软件工程,软件工程作业题展开解析 .答案 A .解析..9. (4分) 若要保证开发出来的软件局部优化,而且能尽早发现设计上的错误,应采用()

软件工程期末试卷答案全解

软件工程试题一 一.单项选择题 1. 以下不是软件危机的典型表现的是:( D ) 。 A. 对软件开发成本和进度的估计常常很不准确 B. 用户对“已完成的”软件系统不满意的现象经常发生 C. 软件产品的质量往往靠不住 D. 采用面向对象方法开发软件 3. 下列哪个不是软件工程方法学中的要素( C )。 A. 方法 B. 工具 C. 程序 D. 过程 4. 下列模块的独立性的耦合方式中,最好的是( C ) A.公共耦合 B. 控制耦合 C. 数据耦合 D. 内容耦合 5.概要设计中,开发人员要解决的最重要的问题是( D ) 。 A. 要让软件做什么 B. 要给该软件提供哪些信息 C. 要求软件工作效率怎样 D. 要让该软件模块具有何种结构 6. 为了提高模块的独立性,模块内部最好是( C ) 。 A. 逻辑内聚 B. 时间内聚 C. 功能内聚 D. 通信内聚 7. 程序的三种基本控制结构的共同特点是( C ) 。 A. 不能嵌套使用 B. 只能用来写简单程序 C. 只能一个入口和一个出口 D. 已经用硬件实现 8. 以下说法错误的是( ) 。 A A. 面向对象分析与面向对象设计的定义没有明显区别 B. 从面向对象分析到面向对象设计,是一个逐渐扩充模型的过程 C. 在实际的软件开发过程中,面向对象分析与面向对象设计的界限是模糊的 D. 面向对象分析和面向对象设计活动是一个多次反复迭代的过程 9. 软件测试过程中的确认测试主要是为了发现( A ) 阶段的错误。 A. 需求分析 B. 概要设计 C. 详细设计 D. 编码 10. 在面向对象的高层设计体系结构中,( C ) 是用来描述用户一般使用软件习惯的部分 A. 人机交互界面 B. 问题论域 C. 系统交互界面 D. 数据管理 11. 为适应软硬件环境变化而修改软件的过程是( B ) 。 A. 校正性维护 B. 适应性维护 C. 完善性维护 D. 预防性维护 12. 在UML的各类图中,( A )图是描述软件功能的。 A 用例图 B 类图 C 活动图 D 顺序图 13.( D )不属于OO三要素。 A.对象 B. 继承 C.封装 D.多态 14.(C )在ATM机系统中,下列哪个不能在面向对象设计中被定义为类。C A 中央计算机 B 柜台事务 C 拨号 D 营业厅15.在黑盒测试中,作为相关黑盒测试有效补充的测试方法是( B ) 。 A. 等价类划分法 B. 边界值分析法 C. 错误推测法 D. 因果图法二.判断题(本大题共__15__题,每题___1___分,共___15_____分。 1.软件简单的说就是程序和相关的数据及文档。T

软件工程期末复习要点归纳总结精编WORD版

软件工程期末复习要点归纳总结精编W O R D 版 IBM system office room 【A0816H-A0912AAAHH-GX8Q8-GNTHHJ8】

第一章软件工程学概论 1、软件危机产生的原因 软件本身的特点:难于维护、逻辑复杂 软件开发与维护的方法不正确:忽略需求分析重要性、轻视软件维护 课本表述: 1、软件不同于硬件,它是计算机中的逻辑部件而不是物理部件 2、软件不同于一般程序,它的一个显着特点是规模庞大,而且程序的复杂性将规模 的增加而呈现指数上升。 3、软件本身特有的特点确实给开发和维护带了一些客观困难 4、软件开发与维护有关的许多错误认识与做法有关(忽略需求分析,轻视软件维 护) 5、对用户要求没有完整准确的认识就匆忙开始着手编写程序 6、在软件不同阶段进行修改需要付出的代价是很不相同的 2、软件危机的表现(什么是软件危机) (1)、成本高: (2)、软件质量得不到保证:软件质量问题导致失败的软件项目非常多 (3)、进度难以控制:

●项目延期比比皆是 ●由于进度问题而取消的软件项目较常见 ●只有一小部分的项目能够按期完成 (4)、维护十分困难: ▼软件维护的多样性 ▼软件维护的复杂性 ▼软件维护的副作用 3、克服软件危机 (1)、管理的角度: 软件开发过程的研究、文档的标准化以及人员的交流方式等 (2)、软件开发方法的研究 结构化软件开发方法, 面向对象的开发 4、软件工程的定义 概括的说,软件工程师指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。

相关文档
最新文档