文档库 最新最全的文档下载
当前位置:文档库 › 软件工程复习资料 (1)

软件工程复习资料 (1)

软件工程复习资料 (1)
软件工程复习资料 (1)

第一章概述

1.什么是软件危机?产生的原因。

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

原因:软件本身的特点、软件开发与维护方法不正确

2软件的概念(*):软件是计算机系统中与硬件相互依存的另一部分,它包括程序、数据及相关文档的完整集合。

特点:软件是一种逻辑实体,缺乏“可见性”。

在软件的开发过程中没有明显的制造过程

软件在运行和使用过程期间,没有硬件那样的机械磨损、老化问题。但维护一般需要修改设计

软件成本相当昂贵。

文档的作用:描述如何使用这个系统;描述怎么安装和管理这个系统;描述系统需求

3、软件工程原理:1.用分阶段的生命周期计划严格管理软件开发。2.坚持进行阶段评审。3.实行严格的产品版本控制。4.采用现代程序设计技术。

5.结果应能清楚地审查。文档要有严格要求。

6.开发小组的成员要少而精。

7.要不断地改进软件工程实践的经验和技术。

4.软件工程方法学(传统方法学、面向对象方法学)三要素:方法、工具、过程

结构化方法/面向对象方法(4个要点)(*)

●把对象作为融合了数据及在数据上的操作行为的统一的软件构件

●把所有的对象都划分为类

●按照父类和子类的关系,把若干个相关类组成一个层次结构的系统

●对象彼此间仅能通过发送消息互相联系

在分析、设计、实现中用到“对象、类、继承、消息通信”这四个基本概念,就是面向对象的方法

5.软件生存周期各阶段(*)

1. 问题定义:要解决什么问题?

2. 可行性研究:有可行的方法吗?

3. 需求分析:目标系统必须做什么?

4. 总体设计:怎样实现目标系统?

5. 详细设计

6. 编码和单元测试:实现

7. 综合测试:系统达到预定目标了吗?

8. 软件维护

第二章可行性研究

1.可行性研究的目的:用最少的代价在最短的时间内确定问题是否能够解决。

任务:(1)分析和澄清问题

目标、规模、限制、约束

(2)导出系统逻辑模型

(3)探索可供选择的解决方案并研究可行性

技术可行性:使用现有的技术能实现这个系统吗?

经济可行性:这个系统的经济效益能超过它的开发成本吗?

操作可行性:系统的操作方式在这个用户组织内行得通吗?

法律、社会效益可行性:要开发的项目是否存在侵权、妨碍等社会责任问题。

(4)给出行动方案建议,制定初步项目计划

2.可行性研究过程(*)

(1)确定系统的规模和目标(2)分析现有系统(3)设计新系统的高层逻辑模型(4)评审系统模型(5)设计和评价解决方案(6)制定行动方案(7)草拟开发计划(8)书写文档提交审查

3.方法和工具

(1)系统流程图符号表示略

(2)数据流图(*) p42 例子

(3)数据字典(*) P54. 5题

数据字典是关于数据的信息的集合。数据字典提供关于数据的描述

数据字典内容:四类元素:数据流、数据元素、数据存储、处理

定义数据的方法:对数据进行自顶向下分解,分解为最基本的数据元素。

四种基本组合方式:顺序+ 字母字符+数字字符

选择[ ] [ 字母字符|数字字符]

重复{ } 2{a}5

可选( ) (a)

第三章需求分析

1.需求分析的任务和难点书P56

任务:①画出目标系统的组织结构图与列出各部门的岗位角色表(组织机构模型) ②画出目标系统的业务操作流程图③画出目标系统的数据流程图,掌握业务规则,获得初步数据模型。④列出目标系统的功能点列表(功能模型) ⑤列出系统的性能点列表(性能模型) ⑥列出目标系统的接口列表(接口模型) ⑦确定目标系统的运行环境(环境模型) ⑧目标系统的界面约定(界面模型) ⑨对目标系统的开发工期、费用、开发进度、系统风险等问题进行分析与评估。

软件工程的两大难点:软件需求、项目管理

2、需求过程(*) 1)需求获取②分析建模③需求说明书④需求验证

3、需求获取方法:访谈、调查表、学徒、搜集资料、用例分析、原型方法

4、分析建模方法(*)

(1)结构化分析方法(面向数据流分析)(*):就是面向数据流自顶向下逐步求精进行需求分析的方法。

(2)ER图(*):实体联系模型是用户对数据和加工的需求用实体联系图(即E-R图)表达出来,明确描述应用系统的概念结构数据模型。

●实体(数据对象):是对软件必须理解的复合信息的抽象。

复合信息:具有一系列不同性质和属性的事物。如:外部实体、事物(例如单据、报表)、事件(存款)、角色、单位、地点等。

●属性:定义了实体的性质。特殊属性-标识符

●联系:实体之间的关系。1 : 1 , 1 : M , M : N 联系也可有属性

(3)数据规范化(第一二三范式)

(4)状态图

(5)用例分析

5、《需求规格说明书》与需求验证

?《软件需求规格说明书》是需求分析阶段的主要文档。

?通常用自然语言完整、准确、规范、具体地描述系统的功能要求、性能要求、数据要求、约束等。

?软件设计的输入

?是验收的依据。

第五章总体设计

1.设计的目标和任务

目标:软件设计的目标就是构造一个高内聚低耦合的软件模型。

任务:1) 划分出组成系统的物理元素----程序、文件、数据库、人工过程和文档等,但是每个物理元素仍处于黑盒子级,这些黑盒子的具体内容将在以后详细设计。

2)设计软件的结构,也就是要确定系统中每个程序是由那些模块组成的,以及这些模块相互之间的关系。

2、总体设计过程:1)设想供选择的方案2)选取合理的方案3)推荐最佳方案4)功能分解5)设计软件结构6)设计数据库7)制定测试计划8)

3、设计原理(*):模块化、抽象、逐步求精、信息隐藏和局部化、模块独立(耦合和内聚)

模块化(*):就是将软件系统划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体。

抽象可分为控制抽象、过程抽象、数据抽象三种。

逐步求精:为了能够集中精力解决主要问题而尽量推迟对问题细节的考虑。与抽象互补。

信息隐藏和局部化:信息隐藏是一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说是不能访问的。自顶向下逐步求精是进行软件结构设计的常用途径。局部化是指把一些关系密切的软件元素物理地放得彼此靠近。局部化有助于实现信息隐藏。

模块化可使软件结构清晰,便于理解,便于修改。模块化有助于软件开发工程的组织管理。

模块独立是设计的关键模块独立性度量:耦合和内聚

耦合程度由高到低(模块独立性由弱到强):内容耦合、公共耦合、控制耦合、数据耦合

内聚性由高到低(模块独立性由强到弱):功能内聚、顺序内聚、通信内聚、过程内聚、时间内聚、逻辑内聚、偶然内聚

●对于低内聚的模块,可通过重新分解来实现模块的修改与优化,这样提高了模块内部的紧凑性,必然会降低块间联系,确保从整体上提高模

块的独立性。

●对于高耦合度的模块,则通过功能重组,将联系紧密的部分组成新的模块,这样可以防止系统僵化,提高模块的可维护性。

4、软件结构优化的启发式规则(*)

?改进软件结构提高模块独立性

?模块规模应该适中

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

?模块的作用域应该在控制域之内

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

?设计单入口单出口的模块

?模块功能应该可以预测

5、总体设计方法和工具

结构化方法指导思想(*)

? 1. 改进软件结构提高模块独立性

? 2. 模块规模应该适中

? 3. 深度、宽度、扇出和扇入都应适当

? 4. 模块的作用域应该在控制域之内

? 5. 力争降低模块接口的复杂程度

? 6. 设计单入口单出口的模块

?7. 模块功能应该可以预测

面向数据流的的设计方法(*)面向数据流的设计方法,即通常所说的结构设计法(简称SD方法),是根据需求阶段对数据流的分析(一般用数据流图和数据字典表示)设计软件结构。目标是给出设计软件结构的一个系统化的途径。

变换分析步骤1:复审基本系统模型

?步骤2:复审并细化数据流图。

?步骤3:确定数据流图中含有变换特征还是事务特征

?步骤4:确定输入流和输出流的边界,从而孤立出变换中心。

?步骤5:完成第一级分解

?步骤6:完成第二级分解

?为每一个输入模块、输出模块、变换模块设计它们的从属模块

?步骤7:利用设计度量和启发式对第一次分割得到的软件结构进一步精化。

事务分析与变换分析设计步骤大部分相同或类似,主要差别仅在于由数据流图得到软件结构的映射方法不同。

?描述软件结构的工具(可能是绘图题详见课本P102--104)

?层次图和HIPO图(P102 --103)

?结构图(P103---P104)

第6章详细设计

1、详细设计的目标和任务

答:主要任务:为每一模块确定算法;确定每一模块使用的数据结构;确定模块的外部接口和用户界面;为每一模块设计一组测试用例;编写文

设计的质量目标:逻辑正确、性能满足要求、易理解、可维护

2、结构程序设计的基本控制结构:顺序结构选择结构循环结构

3.人机界面设计要解决四个设计问题:1.系统响应时间 2. 用户帮助设施3. 出错信息处理

4. 命令交互人机界面设计指南:1. 一般交互指南2. 信息显示指南3. 数据输入指南

4.过程设计工具有:

(1)程序流程图:流程图是用图形化的方式,表示程序中一系列操作及执行的顺序

名称图例说明

终结符表示流程的开始和结束

处理表示程序的计算步骤或处理过程,在方框内填写处理的名称或程序语句

判断表示逻辑判断或分支,用于决定执行后续的路径,在菱形框内填写判断的条件

输入/输出获取待处理的信息(输入),记录或显示已处理的信息(输出)

连线连接其它的符号,表示执行顺序或数据流向

(2)结构化流程图(NS图):N-S图是流程图的另一种表达形式,简称N-S图。与流程图对应的三种结构:顺序,分支,循环

(3)PAD图—问题分析图

(4)过程设计语言PDL:程序设计语言也称结构化英语或伪代码,它使用结构化编程语言的风格描述程序算法,但不遵循特定编程语言的语法。程序设计语言允许你在比源代码更高的层次上进行设计,通常省略与算法无关的细节,例如,交换两个变量的操作。

(5)判定表和判定树(*)决策表用于以紧凑的形式描述复杂的逻辑。决策表与if-else、switch-case语句类似,将条件判断与执行的动作联系起来。决策表通常分成四个区域,如右图所示。

条件条件选择

动作动作选择

决策树是决策表的图形形式。

例分房问题:1、一般职工婚后5年可参加分房

2、中级以上职称的职工婚后3年可参加分房

3、符合正常分房条件的职工,若再符合晚婚条件可优先分房

1 2 3 4 5 6 说明

条件

婚龄>5年3-5年<3年(-) 表示任意

(Y) 条件满足

(N) 条件不满足中级职称----------- Y N -----

晚婚Y N Y N ---- -----

顺序结构

块1

块2

块3

块4

条件

T

块1 块2

选择结构

Case I=1,2,3

T

块1 块2

多分支选择结构

F

块3

当条件成立时

当型循环

直到条件成立时

直到型循环

策 正常分房

*

* 不分房

*

*

决策树

5、程序复杂度的度量:McCabe 方法:流图(程序图)和环形复杂度计算 流图:把程序流程图映射成流图;由PDL 翻译成流图;包含复合条件的

PDL 计算环形复杂度的方法

① 流图中的区域数

② V(G)=E-N+2,

E:边数 N :结点数 ③

V(G)=P+1, P :流图中判定节点的数目 环形复杂度的用途 V(G) ≦ 10 第7章 实现

1、编码(理解)详见P146--148

编程语言选择的因素:系统用户的要求;可以使用的编译程序;可以得到的软件工具;工程规模;程序员的知识;软件可移植性要求;软件的应用领域。

编码风格:逻辑简明清晰、易读易懂。 2、软件测试的目标

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

– 一个好的测试用例是指很可能找到迄今为至尚未发现的错误的测试用例 –

一个成功的测试是指揭示了迄今为至尚未发现的错误的测试

3、软件测试准则(理解)

1.)所有的测试都应可追溯到客户需求

2.)应该在测试工作真正开始前的较长时间就进行测试计划

3.)Pareto 原则:测试中发现的80%的错误可能来自于20%的程序代码

4.)测试应从“小规模”开始,逐步转向“大规模”

5.)穷举测试是不可能的

6.)为了达到最有效的测试,应由独立的第三方来承担测试 其他的测试原则:

1.)在设计测试用例时,应包括合理的输入条件和不合理的输入条件

2.)严格执行测试计划,排除测试的随意性

3.)应当对每一个测试结果做全面检查

4.)妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便

5.)检查程序是否做了应做的事仅是成功的一半,另一半是检查程序是否做了不该做的事

6.)在规划测试时不要设想程序中不会查出错误 4、测试方法分类:静态/动态,黑盒/白盒,测试用例

中 级 职 称

不 分 房 分房 决策

> 5年

3-5 年

< 3年

优先分房 非中 级职称

正常分房 正常分房 晚 婚 非晚婚

晚 婚

非晚婚 优先分房 不 分 房

1)动态测试:通过运行程序开展测试工作,即测试人员通过使用软件来找出问题。

2)静态测试:不通过运行程序来开展测试工作。这里并不局限于直接阅读、检测代码,还包括阅读和检测文档。 5.测试过程(理解)

答:单元测试:测试重点:模块接口、局部数据结构、重要的执行通路、出错处理通路、边界条件

/测试依据:详细设计描述和源程序清单

常用测试方法:人工测试和计算机测试,主要使用白盒测试技术

集成测试:测试重点:在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;一个模块的功能是否会对另一个模块的功能产生不利的影响;各个子功能组合起来,能否达到预期要求的父功能;全局数据结构是否有问题; 单个模块的误差累积起来,是否会放大,从而达到不能接受的程度

/测试依据:要找出集成后的子系统与系统需求规格说明之间的不一致。

/渐增式测试:首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统;在集成的过程中边连接边测试,以发现连接过程中产生的问题; 通过增殖逐步组装成为要求的软件系统。主要有自顶向下和自底向上两种集成策略。

确认测试:测试重点:验证软件的功能和性能及其它特性是否与用户的要求一致

/测试依据:对软件的功能和性能要求在软件需求规格说明书中已经明确规定。它包含的信息就是软件确认测试的基础。

/软件配置复查:软件配置复查的目的是保证软件配置的所有成分都齐全;各方面的质量都符合要求;具有维护阶段所必需的细节; 而且已经编排好分类的目录。应当严格遵守用户手册和操作手册中规定的使用步骤,以便检查这些文档资料的完整性和正确性。 6.白盒测试技术.:逻辑覆盖(*)/基本路径测试/环形复杂度

答:逻辑覆盖主要考察使用测试数据运行被测程序时对程序逻辑的覆盖程度。通常希望选择最少的测试用例来满足所需的覆盖标准。主要的覆盖标准有:语句覆盖、 判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖、 路径覆盖。

语句覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个可执行语句都至少执行一次。欲使每个语句都执行一次,只需执行路径L1(sabcde )即可。

判定覆盖(也称分支覆盖)是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定的所有可能结果都至少执行一次(即判定的每个分支至少经过一次)。欲使每个分支都执行一次,只需执行路径L3(sacde ,a 为“f ”且c 为“t ”)和L4(sabce ,a 为“t ”且c 为“f ”) 即可。 或者,执行路径L1(sabcde ,a 为“t ”且c 为“t ”)和L2(sace ,a 为“f ”且c 为“f ”). 满足判定覆盖标准的测试用例也一定满足语句覆盖标准。

条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定中的每个条件的所有可能结果都至少出现一次。条件覆盖通常比判定覆盖强,但有时虽然每个条件的所有可能结果都出现过,但判定表达式的某些可能结果并未出现。

判定/条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定的所有可能结果都至少执行一次,并且,每个判定中的每个条件的所有可能结果都至少出现一次。显然,满足判定/条件覆盖标准的测试用例一定也满足判定覆盖、条件覆盖、语句覆盖标准。 条件组合覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定中条件结果的所有可能组合都至少出现一次。显然,满足条件组合覆盖标准的测试用例一定也满足判定覆盖、条件覆盖、判定/条件覆盖、语句覆盖标准。条件组合覆盖是上述五种覆盖标准中最强的一种,然而,条件组合覆盖仍不能保证程序中所有可能的路径都被覆盖。

路径覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每条可能执行到的路径都至少经过一次(如果程序中包含环路,则要求每条环路至少经过一次)。路径覆盖实际上考虑了程序中各种判定结果的所有可能组合,但它未必能覆盖判定中条件结果的各种可能情况。因此,它是一种比较强的覆盖标准,但不能替代条件覆盖和条件组合覆盖标准。

控制结构测试包括基本路径测试、条件测试、循环测试。基本路径测试是Tom McCabe 提出的一种白盒测试技术,这种方法首先根据程序或设计图画出流图,并计算其区域数,然后确定一组独立的程序执行路径(称为基本路径),最后为每一条基本路径设计一个测试用例。

流图由结点和边组成。流图中由结点和边组成的闭合部分称为一个区域(region ),在计算区域数时,图的外部部分也作为一个区域。独立路径是指程序中至少引进一个新的处理语句序列或一个新条件的任一路径,在流图中,独立路径至少包含一条在定义该路径之前未曾用到过的边。在基本路径测试时,独立路径的数目就是流图的区域数。

软件测试的 策略和方法

静态测试方法

动态测试方法

计算机辅助静态分析方法 白盒测试方法

黑盒测试方法

代码审查

①流图中的区域数

②V(G)=E-N+2, E:边数 N:结点数

③V(G)=P+1, P:流图中判定节点的数目

7.黑盒测试技术:等价类划分(*)/边界值分析/错误推测

答:等价类划分方法将所有可能的输入数据划分成若干个等价类,然后在每个等价类中选取一个代表性的数据作为测试用例。等价类划分方法把输入数据分为有效输入数据和无效输入数据。在确定输入数据等价类时,常常还要分析输出数据的等价类,以便根据输出数据等价类导出输入数据等价类。等价类划分设计测试用例的步骤:确定等价类、设计测试用例。

确定等价类的规则:

(1) 如果输入条件规定了取值范围,则可以确定一个有效等价类(输入值在此范围内)和两个无效等价类(输入值小于最小值及大于最大值)

(2) 如果输入条件规定了值的个数,则可以确定一个有效等价类(输入值的个数等于规定的个数)和两个无效等价类(输入值的个数小于规定的个数和大于规定的个数)

(3) 如果输入条件规定了输入值的集合(即离散值),而且程序对不同的输入值做不同的处理,那么每个允许的值都确定为一个有效等价类,另外还有一个无效等价类(任意一个不允许的值)。

(4) 如果输入条件规定了输入值必须遵循的规则,那么可确定一个有效等价类(符合此规则)和若干个无效等价类(从各个不同的角度违反此规则)。

(5) 如果输入条件规定输入数据是整型,那么可以确定三个有效等价类(正整数、零、负整数)和一个无效等价类(非整数)。

(6) 如果输入条件规定处理的对象是表格,那么可以确定有效等价类(表有一项或多项)和一个无效等价类(空表)。

利用等价类设计测试用例的步骤:

(1) 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;

(2) 为每个无效等价类设计一个新的测试用例。

边界值分析也是一种黑盒测试方法,是对等价类划分方法的补充。针对各种边界情况设计测试用例,其揭露程序中错误的可能性就更大。由于边值分析方法所设计的测试用例更有可能发现程序中的错误,因此经常把边值分析方法与其它设计测试用例方法结合起来使用。

边界值分析方法选择测试用例的规则如下:

1.如果输入条件规定了值的范围,则选择刚刚达到这个范围的边界的值以及刚刚超出这个范围的边界的值作为测试输入数据。例如,规定输入的考试成绩在0~100之间,则取0,100,-1,101作为测试输入数据。

2.如果输入条件规定了值的个数,则分别选择最大个数、最小个数、比最大个数多1、比最小个数少1的数据作为测试输入数据。例如,规定一个运动员的参赛项目至少1项,最多3项,那么,可选择参赛项目分别是1项、3项、0项、4项的测试输入数据。

3.对每个输出条件使用第1条。例如,输出的金额值大于等于0且小于104 ,则选择使得输出金额分别为0、9999、-1、10000的输入数据作为测试数据。

4.对每个输出条件使用第2条。例如,规定输出的一张发票上,至少有1行内容,至多有5行内容,则选择使得输出发票分别有1行、5行、0行、6行内容的输入数据作为测试数据。

5.如果程序的输入或输出是个有序集合,例如,顺序文件、表格,则应把注意力集中在有序集的第1个元素和最后一个元素上。

6.如果程序中定义的内部数据结构有预定义的边界,例如,数组的上界和下界、栈的大小,则应选择使得正好达到该数据结构边界以及刚好超出该数据结构边界的输入数据作为测试数据。例如,程序中数组A的下界是10,上界是20,则可选择使得A的下标为10、20、9、21的输入数据作为测试数据。

7.发挥你的智慧,找出其他可能的边界条件。

错误推测是一种凭直觉和经验推测某些可能存在的错误,从而针对这些可能存在的错误设计测试用例的方法。这种方法没有机械的执行步骤,主要依靠直觉和经验。错误推测法的基本思想是:列举出程序中所有可能的错误和容易发生错误的特殊情况,然后根据这些猜测设计测试用例。

8、调试(理解)

答:测试的目的是发现错误,调试(也称排错)的目的是确定错误的原因和准确位置,并加以纠正。调试方法:蛮力法、回溯法、原因排除法(可分为归纳法和演绎法)

蛮力法是一种最省脑筋但又最低效的方法。它通过在程序中设置断点,输出寄存器、存储器的内容,打印有关变量的值等手段,获取大量现场信息,从中找出错误的原因。

这种方法效率低,输出的信息大多是无用的,通常在其他调试方法未能找到错误原因时,才使用这种方法。可以采用二分法来逐步缩小出错的范围

回溯法是从错误的征兆出发,人工沿着控制流程往回跟踪,直至发现错误的根源。这种方法适用于小型程序,对大型程序,由于回溯的路径太多,难以彻底回溯。

演绎法从一般原理或前提出发,假设所有可能出错的原因,排除不可能正确的假设,最后推导出结论。

9、可靠性:定义,MTTF MTTR的含义

答:定义:软件可靠性是在给定的时间间隔内,按规格说明书的规定成功地运行的概率。

MTTF指软件的平均无故障时间,是一个重要的质量指标,是系统按规格说明书规定成功地运行的平均时间,它主要取决于系统中潜伏的错误的数目,和测试的关系十分密切。

MTTR平均维修时间,是修复一个故障平均需要的时间,它取决于维护人员的技术水平和对系统的熟悉程度,也和系统的可维护性有重要关系。

10、与错误数的关系,测试时间估算(*)

平均无故障时间与单位长度程度中剩余的错误数成反比

MTTF=1/K(ET/IT-EC(£)/IT)ET代表测试之前程序中的错误总数;IT程序长度

EC(£) 0至£期间发现的错误数 K为常数,它的值根据经验选取,典型值为200.

EC= ET- IT/(K*MTTF)

第8章维护

1、软件维护的四种类型:

(1)纠错性维护:为了改正软件系统中的错误,使软件能够满足预期的正常运行状态的要求而进行的维护

(2)适应性维护:为了使软件适应内部或外部环境变化,而去修改软件的过程

(3)完善性维护:满足使用过程中用户提出增加新功能或修改已有功能的建议维护,这种维护一般占维护工作的大部分。

4)预防性维护:为了提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础而修改软件的活动。

2、软件维护的特点

1)非结构化维护:如果不采用软件工程方法开发软件,软件只有程序而欠缺文档,则维护工作将变得十分困难

(2)结构化维护:采用软件工程的方法进行软件开发,保证每个阶段都有完整且详细的文档

维护时,开发人员从分析需求规格说明开始,明白软件功能和性能上的改变,对设计说明文档进行修改和复查,再根据设计修改进行程序变动,并用测试文档中的测试用例进行回归测试,最后将修改后的软件再次交付使用。

3、软件维护的问题(副作用)

(1)理解别人的代码通常是非常困难的,而且难度随着软件配置成分的缺失而迅速增加

(2)需要维护的软件往往没有文档、或文档资料严重不足、或软件的变化未在相应的文档中反映出来

(3)当软件要求维护时,不能指望由原来的开发人员来完成或提供软件的解释。由于维护持续时间很长,因此当需要解释软件时候,往往开发人员已经不在附近了

(4)绝大多数软件在设计时没有考虑到将来的修改问题

(5)软件维护这项工作毫无吸引力。一方面是因为软件维护,看不到什么“成果”,但工作量很大,更重要的是维护工作难度大,软件维护人员经常遭受挫折。

4、影响软件可维护性的因素:

可维护性指理解、改正、调整和改进软件的难易程度。

对软件可维护性影响的主要因素有:可理解性、可测试性、可修改性、可移植性、可重用性

文档程序文档对提高程序的可理解性有着重要的作用。

对程序编制人员的意图进行重新修改,并对今后可能出现的变化估计,缺少文档的帮助也将很难实现。另一方面,对于程序文档一定要能及时反映程序的变化,否则将对后续维护人员产生误导。

可维护性复审,软件配置复审目的(*)

可维护性是所有软件都应该具备的基本特点,必须在开发阶段保证软件具有可理解性、可测试性、可修改性、可移植性、可重用性。在软件过程的每一个阶段都应该考虑并努力提高软件的可维护性,在每个阶段结束前的技术审查和管理复审中,应着重对可维护性进行复审。

软件配置复审的目的是保证软件配置的所有成分是完整的、一致的和可理解的,而且为了便于修改和管理已经编目归档了。

第9章面向对象方法引论

1、面向对象方法学的要点(*)4个:

OO = objects + classes + inheritance +communication with messages

2、面向对象方法学的优点(*)

(1)与人类习惯的思维方法一致。对象是对现实世界实体的正确抽象

(2)稳定性好。现实世界中的实体是相对稳定

(3)可重用性好。创建类的实例,,派生新类

(4)较易开发大型软件产品

(5)可维护性好

3、面向对象的概念(*):

(1)对象:对象是一个封装体,封装了数据结构及可以施加在这些数据结构上的操作。

(2)类:类是对具有相同数据属性和相同操作的一个或一组(集合)相似对象的描述,是一个抽象的概念。

(3)实例:实例就是由某个特定的类所描述的一个具体的对象,实际上类是建立对象时使用的“样板”。

(4)消息:对象之间相互请求相互协作的途径。

(5)封装:封装即把数据和实现操作的代码放在对象内部,外界通过对象提供的接口来使用它,不需知道内部数据结构细节和实现操作的算法。(6)继承:继承指能够直接获得已有的性质和特征,而不必重复定义它们。是子类自动地共享基类中定义的数据和方法的机制。

(7)多态:多态是指在类等级的不同层次中,相同的消息,被不同类的对象接收,产生了不同的行为。

(8)重载:有两种重载:函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;

运算符重载是指同一个运算符可以施加于不同类型的操作数上面。

4、面向对象建模的三种模型及作用(*):

(1)对象模型:描述系统数据结构

(2)动态模型:描述系统控制结构

(3)功能模型:描述系统功能

对象模型是最重要、最基本、最核心的。

5、对象模型(*)(类图,UML如何表达)

对象模型是表示静态的结构化的系统的“数据”性质。

类图描述类与类之间的静态关系。类图是一种静态模型,它是创建其他UML图的基础。

UML如何表达

UML提供的用例图是进行需求分析和建立功能模型的强有力工具。在UML中把用用例图建立起来的系统模型称为用例模型。

用例模型描述的是外部行为者(actor)所理解的系统功能。用例模型的建立是系统开发者和用户反复讨论的结果,它描述了开发者和用户对需求规格所达成的共识。

用例模型描述外部执行者(Actor)所理解的系统功能。即待开发系统的功能需求。它驱动了需求分析之后各阶段的开发工作,还被用于验证和检测所开发的系统, 影响了UML 的各个模型。用例模型由若干个用例图构成,用例图中主要描述执行者和用例之间的关系。在UML中,构成用例图的主要元素是用例和执行者及其它们之间的联系。

建立系统用例模型的过程就是对系统进行功能需求分析的过程。

6、对象之间的关系:关联/聚集/泛化/依赖(*)

1)关联是类之间的连结,分为:

普通关联、多元关联、有序关联、限定关联、关联类

2)聚集是一种特殊的关联,它指出类间的“整体-部分”关系。

共享聚集、组合聚集

3)泛化指出类之间的“一般与特殊关系”,即继承关系。父类与子类之间构成类的分层结构。

4)依赖关系描述两个模型元素(类、用例等)之间的语义连接关系:其中一个模型元素是独立的,另一个模型元素不是独立的,它依赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于它的模型元素。

7、动态模型包括四类图:序列图/活动图/协作图/状态图(理解)

(1)状态图:描述某个对象,子系统,系统的生命周期。

(2)活动图:描述操作实现中完成的工作以及用例实例或对象中的活动,活动图是状态图的一个变种。

(3)顺序图:是一种交互图,描述对象之间的动态合作关系以及合作过程中的行为次序,常用来描述一个用例的行为。

(4)合作图:用于描述相互合作的对象间的交互关系,它描述的交互关系是对象间的消息连接关系。

8、功能模型:用例和用例建模,用例图(*)

(1)用例:从本质上讲,一个用例是用户与计算机之间的一次典型交互作用。在UML中,用例被定义成系统执行的一系列动作(功能)。

(2)用例建模技术,用于描述系统的功能需求。在宏观上给出模型的总体轮廓。通过对典型用例的分析,使开发者能够有效地了解用户的需求。(3)用例图实例:

例1 建立项目与资源管理系统的Use case图。

系统的主要功能是:包括项目管理,资源管理和系统管理三大管理功能。

1. 项目管理包括项目的增加、删除、更新。

2. 资源管理包括对资源和技能的添加、删除和更新。

3.系统管理包括系统的启动和关闭,数据的存储和备份等功能。说明:技能表示人力资源。

过程:1. 分析确定系统的执行者(角色):项目管理员、资源管理员、系统管理员、备份数据系统。

2. 确定用例:项目管理,资源管理和系统管理。

3. 对用例进行分解,画出下层的Use case图:对上层的用例进行分解,并将执行者分配到各层次的Use case图中。还应画出相应的执行者描述模板及用例描述模板。

第十章面向对象分析

1、对象模型的5个层次:主题层/类与对象层/结构层/属性层/服务层

2、建立对象模型的5种活动

1、类的识别

2、确定关联

3、划分主题, 包图

4、确定属性

5、识别继承关系

3、三种模型的建立过程和方法(理解)对象模型(*)动态模型/功能模型

——对象模型建立过程和方法

一)确定类和对象。1、找出候选的类和对象;2、筛选出正确的类和对象。方法:名词识别法、系统实体识别法、利用分解与抽象技术二)确定关联。1、初步确定关联2、筛选3、进一步完善。方法:问题陈述中抽取可能的关联(动词词组)、隐含的动词词组

三)划分主题。方法:按问题领域划分主题,按照使用不同主题内的对象相互间依赖和交互最少的原则来确定主题。

四)确定属性。1、分析2、选择、

五)识别继承关系。方法:自底向上自顶向下

六)反复修改

——动态模型建立过程和方法

一)编写典型交互行为的脚本。

二)从脚本中提取事件,确定出发每个事件的动作对象及接受事件的目标对象。

三)排列事件发生的次序,确定每个对象可能有的状态以及状态间的转换关系,并用状态图描绘它们。

四)比较各个对象的状态图,检查他们之间的一致性,确保时间之间的匹配。

——功能模型的建立过程及方法

一)画出基本系统模型图

二)画出功能级数据流图。

三)描述处理框功能。

——采用的UML图(*)

?动态模型: 描述系统的行为。

动态建模用来描述系统的动态行为,显示对象在系统运行期间不同时刻的动态交互。

?UML中用状态图、活动图、顺序图和协作图来建立动态模型。

——迭代过程(PPT没有)

第十一章面向对象设计

1、设计准则(结合第5章)(*)

面向对象设计

?面向对象分析是提取、整理用户需求并建立问题域精确模型的过程。

?面向对象设计则是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。

?从面向对象分析到面向对象设计是一个逐渐扩充的过程,主要是增加各种组成部分,在实际开发过程中二者的界限是模糊的。

?许多分析结果可以直接映射成设计结果,在设计过程中又往往加深了对系统的理解,进一步补充和完善分析的结果,因此分析和设计是

什么是优秀的设计?1. 满足用户需求2. 易维护3. 易扩充4. 高质量5. 总体成本低(全生命周期)

面向对象设计的准则:1. 模块化2. 抽象3. 信息隐藏4. 弱耦合5. 强内聚6. 可重用

2、设计类结构的改进和优化(*)(多继承转单继承,继承转聚合,多对多关联转一对多)

a)确定优先级

用对象实现关联

b)提高效率的几项技术:1. 增加冗余关联以提高访问效率2. 调整查询次序3. 保留派生属性——计算列

c)调整继承关系:1. 抽象与具体2. 为提高继承程度而修改类定义(1)不能违背领域知识和常识(2)应该确保现有类的协议(接口)不变3. 利用委托实现行为共享

3、系统分解

分而治之

面向对象设计模型由主题、类与对象、结构、属性、服务5个层次组成。

人机交互部分/问题域部分/任务管理部分/数据管理部分

1)子系统之间的两种交互方式(1) Client/Server (2)Peer to Peer

2)组织系统的两种方案(1) 层次组织(2)块状组织

3)设计系统的拓扑结构

管道形/树形/星形

子系统之间的交互简单

4、各子系统设计过程(理解)---范式与数据库设计

设计数据管理子系统步骤:

1、选择数据存储管理模式

1). 文件管理系统

2). 关系数据库管理系统①提供最基本的数据管理功能中断恢复、并发、事务支持、等②标准接口和语言ODBC,JDBC,SQL③存储和使用分离减少程序对数据依赖

3). 面向对象数据库管理系统

2、设计数据管理子系统

1)设计数据格式

(1)文件系统。①定义第一范式表:列出每个类的属性表;把属性表规范成第一范式,从而得到第一范式表的定义。②为每个第一范式表定义一个文件③测定性能和需要的存储容量④修改原设计的第一范式,以满足性能和存储的需要。

(2)关系数据库管理系统①定义第三范式表:列出每个类的属性表;把属性表规范成第三范式,从而得到第三范式表的定义。②为每个第三范式表定义一个数据库表③测定性能和需要的存储容量④修改原设计的第一三范式,以满足性能和存储的需要。

(3)面向对象数据库管理系统

2)设计相应的服务对象存储的服务的两种方法:(1)每个对象自己保存自己(2)由数据管理子系统负责存储对象

12章面向对象实现

1、面向对象测试与传统测试的不同以及对测试策略和测试用例设计的影响。

面向对象的测试在许多方面需要借鉴传统软件测试方法中可适用部分,并且在软件开发的具体实践中,也经常混合使用面向对象的开发方法和结构化的开发方法,因此,二者存在一些相通之处。但是,与传统方法相比,面向对象开发方法和软件又有许多新的内容和特点,从而导致二者的相异。表现在测试的单元不同,集成环境测试不同,系统构成不同三个方面。

面向对象测试对测试策略和测试用例设计的影响:1、封装对测试的影响:封装是类的基本特性之一。封装将类得所有数据和操作作为一个整体对

扩散。但同时,它们也给程序的测试带来了一定的问题。2、对于面向对象的测试,信息隐藏带来的主要问题则是对象状态的观察问题。3、从继承的不足可以看出,测试变得更加重要了,但对于测试来说,继承却增加了测试的复杂性。4、在测试时,需要考虑接口包含的行为与类的行为是否相符合。5、多态性和动态绑定使得传统测试实践中的静态分析法遇到了不可逾越的障碍,同时它们也增加了系统运行中可能的执行路径,加大了测试用例的选取难度和数量。这种不确定性和骤然增加的路径组合给测试覆盖率的满足带来了挑战。 第13章 软件项目管理 1、软件质量的定义:

ISO/IEC 9126:与软件产品满足明确或隐含需求的能力有关的特征和特性的总和

GB/T 13423:软件产品中能满足给定需求的性质和特性的总和,例如符合规格说明的程度;软件具有所期望的各种属性的组合程度;客户或用户觉得软件满足其综合期望的程度;软件的综合特性,它确定软件在使用中将满足客户预期要求的程度 2、McCall 软件质量要素:软件产品的运行、修改和迁移三个方面 11个软件质量要素(书上13条)

3、软件质量保证活动:评审: 走查/审查、测试、程序正确性证明

软件质量保证活动由两类不同的角色承担:(1)负责技术工作的软件工程师:通过采用可靠的技术方法和措施、进行正式的技术评审、计划周密的软件测试来考虑质量问题,并完成软件质量保证和质量控制活动(2)负责质量保证工作的SQA (Software Quality Assurance)小组:辅助软件工程小组得到高质量的最终产品

SQA:通过确保软件过程的质量来保证软件产品的质量。 4、SQA 小组的活动(CMU SEI): (1)为项目准备SQA 计划

(2)参与开发该项目的软件过程描述

(3)评审各项软件工程活动、对其是否符合定义好的软件过程中的相应部分进行核实 (4)审计指定的软件工作产品、对其是否符合定义好的软件过程中的相应部分 (5)确保软件工程及工作产品中的偏差已被记录在案,并根据预定规程进行处理 (6)记录所有不符合的部分并报告给高级管理者。

(7)此外,SQA 小组还需要协调变化的控制和管理,并帮助收集和分析软件度量信息 5、软件项目管理的关注点(3P/4P):

(1)人员(People):人员是软件工程项目的基本要素和关键因素

在对人员进行组织时,有必要考虑参与软件过程(及每一个软件项目)的人员类型

(2)产品(Product,Problem):定义项目范围,其中包括建立产品的目的和范围、可选的解决方案、技术或管理的约束等 (3)过程(Process):通常将项目分解为任务—子任务等,其分解准则是基于软件工程的过程 (4)项目(Project) :采用科学的方法及工具对项目基本内容进行管理 6、软件项目管理过程: 软件修正性

软件转移性

软件运行性

可维护性灵活性可测试性

可移植性可复用性可互操作性正确性完整性

可靠性可用性

效率

7、项目估算和进度计划方法与工具(理解)

(1)项目估算是制定项目计划的基础:项目所需的人力(以人月为单位)、项目持续时间(以年份或月份为单位)、成本(以元为单位)等

(2)参照以前类似项目中的相关数据进行估算:若存在类似历史项目则可进行类比估算,若缺少可类比的项目数据则采用特定的估算技术(例如功能点估算方法等)

(3)通常采用多种估算技术进行交叉检查

常用的估算方法:(1)基于已经完成的类似项目进行估算,这是一种常用的也是有效的估算方法(2)基于分解技术进行估算:问题分解是将一个复杂问题分解成若干个小问题,通过对小问题的估算得到复杂问题的估算;过程分解指先根据软件开发过程中的活动(分析、设计、编码、测试等)进行估算,然后得到整个项目的估算值。(3)基于经验估算模型的估算。典型的经验估算模型有CoCoMo 模型和Putnam 模型。 上述方法可以组合使用以提高估算的精度。

8、软件配置管理:软件配置管理是在软件的生命期内管理变化的一组活动。

– 标识变化 – 控制变化

– 确保适当地实现了变化

想需要知道这类信息的人报告变化

9、配置项:软件配置项(Software Configuration item ,SCI):为配置管理设计的软件的集合,它在配置管理过程中作为单个实体对待 (1)计算机程序(源代码和可执行程序)(2)文档(3)数据

基线(baseline):已经过正式评审的规格说明或中间产品,可用作下一步开发的基础,并且只有通过正式的变更控制过程才能改变. 发布(Release):一项配置管理行为,它说明某配置项的一个特定版本已准备好用于特定的目的(例如发布测试产品) 变更控制(change control):变更控制是指提议作一项变更并对其进行评估、同意或拒绝、调度和跟踪的过程。 10、软件配置管理的主要活动

(1)版本控制:对系统不同版本进行标识和跟踪的过程

演化图:描述对象的变更历史。在一个配置项被确定为基线前,它可能会变更很多次,甚至在建立基线后,变更也可能经常发生 选择项目

标识项目的范围和目的

标识项目基础设施

分析项目的特征选择软件过程模型标识项目的产品和活动估计

活动的资源评审

较低层次

的细节标识

活动的风险分配资源较低层次的

策划评审发布计划

执行计划

对于每个活动

启动软件项目建立项目组织

(2)变更控制:变更控制结合人的规程和自动化工具以提供一个管理变更的机制

主要过程:变更请求提交后的评估,评估对象包括技术指标、潜在副作用、对其他配置对象和系统功能的影响以及变更的成本等;评估的结果以变更报告的形式给出,该报告由变更授权人(change control authority ,CCA)审核批准;对被批准的变更生成工程变更工单(描述了将要进行的变更、必须注意的约束以及评审和审计的标准);将被修改的对象检出(check out)并通过合适的SQA 活动进行修改;修改完成后对象检入,并使用版本控制机制建立软件的下一个版本。

(3)访问控制和同步控制:通过检出(check out)和检入(check in)实现配置项的访问控制和同步控制。在配置项变成基线之前,开发者可以进行非正式的变更控制;一旦配置项已经经过正式的技术审评并创建了配置项的基线,则要实施项目级的变更控制(为了对其进行修改,开发者必须获得项目管理者的批准(如果变更是“局部的”)或此配置项的变更授权人的批准(如果该变更影响到其他配置项))

12、什么是CMM? CMM 的五个等级

软件能力成熟度模型CMM(Capability Maturity Model )

CMM 侧重于软件开发过程的管理及工程能力的提高与评估,是国际上流行的软件生产过程标准和软件企业成熟度等级认证标准,它更代表了一种管理哲学在软件企业中的应用。

1.初始级(Initial )

2.可重复级(Repeatable )

3.已定义级(Defined )

4.已管理级(Managed )

5.优化级(Optimizing )

对象

对象

对象

对象

对象

对象

对象

对象

对象

1.0

1.1

1.2

1.4

1.3

1.1.2

1.1.1

2.0

2.1

配置对象

(修改后版本)

审计信息

配置对象(提取版本)

配置对象(基线版本)

所有权信息

配置对象(基线版本)

软件工程师

提交

解锁加锁

访问控制

提取

项目数据库

软件工程复习资料

软件概念:与计算机系统操作有关的程序、数据以及相关文档的完整集合 软件特点:逻辑实体、智力产品,制造即拷贝2无磨损和老化,不遵循“浴盆曲 线”,但存在退化问题3尚未摆脱手工方式,软件移植的需要,复杂(问题复杂性/ 程序结构复杂性),软件开发的性质如成本、进度、质量等难以估计控制,维护困难,可复用性软件分类:按功能:系统软件/支撑软件/应用软件2按工作方式:实时处理/分时/交互/批处理3按服务对象:项目 / 产品(定制 / 通用)4按失效影响:关键/ 非关键5规模:微型、小型、中型、大型、甚大型、极大型 软件危机的表现:软件开发成本和进度失控,维护代价高2用户不满意3软件 质量不可靠4软件不可维护 5无文档资料6 计算机系统中软件成本比重加大7软件开发生产率提高不能满足要求软件危机的原因软件的规模和复杂性2人类智力的局限性3协同工作的困难性4缺乏方法学和工具5用户描述不精确、二义、遗漏,双方理解有偏差缓解软件危机的途径组织管理、协同配合的工程2软件工程的理论模型、技术方法3软件工具 软件工程的三要素1过程:管理部分2方法:技术手段3工具:自动或半自 动地支持软件的开发和管理三要素的关系:相互关联与支持 软件生命周期:可行性研究-需求分析-概要设计-详细设计-实现-集成测试-确认 测试-使用与维护-退役 软件开发和测试活动之间的关系软件 开发和软件测试都是软件生命周期中的重要组成部分,软件测试是保证软件开发产物 质量的重要手段。测试是贯穿于整个开发流程了,而不是在编码完成才开始。 瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工 作,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。最终得到软件产品优点是使用时间最长、应用面比较广泛的开发模型2是其他一些开发模型的基础3当前一阶段完成后,只需要去关注后续阶段缺点不能适应用户需求的变化2到最后阶段才能得到可运行的软件版本适用场合:对于规模较小,软件需求较为稳定的项目,采用模型能够显著提高软件开发的质量和效率 演化模型(原型模型)演化模型是一种全局的软件(或产品) 生存周期模型。属于 迭代开发方法。该模型可以表示为:第一次迭代(需求->设计->实现->测试->集成)->反馈->第二次迭代(需求->设计->实现->测试->集成)->反馈->……优点:1支持需求的动态变化2有助于获取用户需求,便于用户对需求的理解3尽早发现软件中的错误缺点1需要为系统的每个新版本交付文档,不划算2新需求的不断增加,使系统结构退化,变更成本上升3不支持风险分析 螺旋模型1将瀑布模型与原型模型进行有机结合2增加风险分析步骤优点1支持 需求的动态变化2有助于获取用户需求,便于用户对需求的理解3尽早发现软件中的错误4支持风险分析,可降低或者尽早消除软件开发风险5适合于需求动态变化、开发风险较大的系统缺点建设周期长适用场合在需求不明确的情况下,适合用螺旋模型进行开发,便于风险控制和需求变更。特别适合于大型复杂的系统 喷泉模型:软件复用与生命周期中多项开发活动集成,主要支持面向对象的开发 方法优点1软件系统可维护性较好2各阶段相互重叠,表明了面向对象开发方法各阶段间的交叉和无缝过渡3整个模型是一个迭代的过程,包括一个阶段内部的迭代和跨阶段的迭代4模型具有增量开发特性,即能做到“分析一点、设计一点、实现一点,测试一点”,使相关功能随之加入到演化的系统中5模型由对象驱动,对象是各阶段活动的主体,也是项目管理的基本内容6该模型很自然地支持软部件的重用缺点由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。 OO 为什么好oo 解决问题的思路是从现实世界中的客观对象入手,运用人类的 自然思维方式来构造软件系统,而传统的结构化方法从功能入手和信息工程化方法从信息入手。在面向对象方法中,把一切都看成是对象。OO 方法用类和对象作为系统的基本构成单位。对象对应问题域中的事物,其属性与操作刻画了事物的静态特征和动态特征,它们之间的继承关系、聚合关系、消息和关联如实地表达了问题域中事物之间实际存在的各种关系面向对象方法的特点(1)从现实世界中客观存在的事物出发来建立软件系统,强调直接以问题域中的事物为中心来思考问题、认识问题,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。这可以使系统直接映射问题域,保持问题域中事物及其相互关系的本来面貌(对象) (2)用对象的属性表示事物的状态特征;用对象的操作表示事物的动态特征(属性与操作)(3)对象的属性与操作结合为一体,成为一个独立的、不可分的实体,对外屏蔽其内部细节(封装)(4)对事物进行分类。把具有相同属性和相同操作的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例(分类)(5)复杂的对象可以用简单的对象作为其构成部分(聚集:一个(较复杂的)对象由其他若干(较简单的)对象作为其构成部分,称较复杂的对象为聚集,称较简单的对象为成分,称这种关系为聚集)(6)通过在不同程度上运用抽象的原则,可以得到较一般的类和较特殊的类。特殊类继承一般类的属性与操作,从而简化系统的构造过程及其文档,有利于复用(继承:特殊类拥有其一般类的全部属性与操作,称作特殊类对一般类的继承)(7) 类具有封闭性,把内部的属性和服务隐藏起来,只有公共的服务对外是可见的(类的封闭性)(8) 对象之间通过消息进行通讯,以实现对象之间的动态联系(消息)(9) 通过关联表达类之间的静态关系(关联) 自顶向下,逐步求精:从顶层开始逐层向下分解,直至系统的所有模块都小 到易于掌握为止 抽象从事物中舍弃个别的非本质的特征,而抽取共同的、本质特征的做法叫抽象。 过程抽象:将完成一个特定功能的动作序列抽象为一个函数名和参数表(模块)例: 比较字符串: int Compare (CString, CString)。数据抽象:将诸多数据对象的定义(描述)抽象为一个数据类型名,以后可通过该数据类型名来定义多个具有相同性质的数据对象例:Eg: 1, 2, 3,—>Integer ;软件工程书;人工智能书—>书类 封装把对象的属性和操作结合成一个独立的系统单位,并尽可能隐蔽对象的内部 细节。只是向外部提供接口,降低了对象间的耦合度使对象能够集中完整地描述并对应一个具体事物。意义:体现了独立性,使对象外部不能随意存取对象的内部数据,使其所含的信息对那些不需要这些信息的模块不可访问。对象的内部的修改对外部的影响很小,减少了修改引起的“波动效应”。公开静态的、不变的操作,而把动态的、易变的信息隐藏起来。 模块化将一个软件划分为一组具有相对独立功能的部件,每个部件称为一个模 块;当把所有的模块组装在一起时,便可获得满足用户需求的软件系统。为什么要进行模块化:模块化体现了“分而治之”的问题分析和解决方法。模块化的目的①进行功能分解,把复杂的大的功能划分成简单的小的子功能,尽量降低每个模块的成本。②尽量使每个模块间的接口不能太多,太多会使接口成本增加。兼顾二者可取得最佳的划分状态,确保软件总成本最低模块设计原则1信息隐藏2高内聚度(强)3低耦合度(松)什么是信息隐藏(1)模块应该设计得使其所含的信息(过程和数据)对那些不需要这些信息的模块不可访问(2)模块之间仅仅交换那些为完成系统功能所必须交换的信息信息隐藏的优点(1)支持模块的并行开发(设计和编码)(2)模块的独立性更好(3)便于系统功能的扩充(4)便于测试和维护,减少修改影响向外传播的范围模块化、信息隐藏,局部化是什么关系局部化与信息隐藏是一对密切相关的概念。局部化就是指将一些使用上密切相关的元素尽可能放在一起。对一个模块来说,局部化是期望模块所使用的数据尽可能是在模块内部定义的。因此,局部化意味着减少模块之间的联系,有助于实现模块之间的信息隐藏。在软件测试和维护期间经常需要修改一些模块的内容。信息隐藏和局部化降低了模块之间的联系,使得在修改一个模块时对其他模块的影响降到最低。“隐藏”的意思是,有效的模块化通过定义一组相互独立的模块来

软件工程期中考试以及答案

1、瀑布模型下,采用结构化的方法,在它的生命周期各个阶段中,那个阶段出错对软件的 影响最大() A、概要设计阶段 B、维护阶段 C、测试排错阶段 D、需求分析阶段 2、UML是软件开发过程中的重要工具之一,它主要用于那种开发方法() 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、DFD图 D、SC图 10、顺序图反映对象之间发送信息的时间顺序,它与()是同构的。 A、类图 B、状态图 C、协助图 D、活动图 11、下面说法错误的是() A、该图是对象图 B、borrowbook()是方法 C、name是属 D、该图是类图

12、下图中描述“聚合关系”的是() A 、 B 、 C 、 D 、 13、下面的顺序图问号所代表的是() 级专业: 题 ) … … 封 … … … … … … … … … … … … … … … 线 … … … … … … … … … … … … … …

软件工程复习资料2012秋(1)

软件工程复习题一 一、选择题,请从四个可选项中选择正确答案。 1.以下哪一项不是软件危机的表现形式() A.成本高 B.生产率低 C.技术发展快 D.质量得不到保证 2.哪种模型分批地逐步向用户提交产品,每次提交一个满足用户需求子集的可运行的产品。() A.演化模型 B.喷泉模型 C.原型模型 D.螺旋模型 3.可行性研究的目的不包括() A.分析开发系统的必要性 B.确定系统建模的方案 C.分析系统风险 D.确定是否值得开发系统 4.可行性分析研究的费用大约是项目总经费的()。 A.2% B.8% C.20% D.50% 5.在E-R 模型中,包含以下基本成分()。 A.数据、对象、实体 B.控制、联系、对象 C.实体、联系、属性 D.实体、属性、联系 6.软件需求分析产生一个重要文档是()。 A.软件维护说明书 B.需求规格说明书 C.可行性报告 D.初步用户手册 7.内聚程度较低的是()。 A.通信内聚 B.过程内聚 C.顺序内聚 D.时间内聚 8.概要设计是软件系统结构的总体设计,以下选项中不属于概要设计的是() A.把软件划分成模块 B确定模块之间的调用关系 C.确定各个模块的功能 D.设计每个模块的伪代码 9.UML 语言支持的建模方式不包括有()。 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.要求软件做什么 B.要给软件提供哪些信息 C.要求软件工作效率如何 D.要求软件具有什么样的结构 16.DFD中的每个加工至少需要() A.一个输入流 B.一个输出流 C.一个输入或输出流 D.一个输入流和一个输出流 17.PDL是描述处理过程()。 A.做什么 B.为什么做 C.怎么做 D.对谁做 18.当一个模块直接使用另一个模块的内部数据,这种模块之间的耦合为()A.数据耦合 B.公共耦合 C.标记耦合 D.内容耦合 19.按照模块独立性,耦合程度由弱至强正确的顺序是()。 A.数据耦合、控制耦合、外部耦合、内容耦合 B.控制耦合、数据耦合、内容耦合、外部耦合 C.内容耦合、外部耦合、控制耦合、数据耦合 D.外部耦合、内容耦合、数据耦合、控制耦合 20.UML 中,包图是一种()。 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.Ariane 5火箭发射失败的事例告诉我们 A.(2)软件后备系统可以通过复制生成 B.(3)软件重用必须重新进行系统论证和系统测试 C. 选项(1)和(3) D.(1)系统环境的变化可能影响软件采集数据的精度、范围和对系统的控制

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.正确 15、可行性研究可行性研究需要的时间长短和所研究系统的规模关系不大。 A. 正确 B.错误 16、把可行性研究各个步骤的工作结果写成清晰的文档,请用户、客户组织的负责人及评审组审查,以决定是否继续这项工程及是否接受分析员推荐的方案。 A.正确 B.错误 17、结构化分析方法遵守的准则之一——定义软件需要完成的功能,需要建立的模型是 A.功能模型 B.数据模型 C.行为模型 D.动态模型 18、下列叙述中,()不属于数据字典的作用。 A.为用户与开发人员之间统一认识 B.为需求分析阶段定义各类条目

软件工程期末考试题含答案

一、选择题 1.瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和_。 ( C ), A .详细计划 B .可行性分析 C .运行阶段 D.测试与排 错 2.在结构化的瀑布模型中,哪一个阶段定义的标准将成为软件测试年勺系统测试阶段的目标( A ) A .需求分析阶段 B .详细设计阶段 C.概要设计阶段 D .可行性研究阶段, 3.软件工程的出现主要是由于(C ) , A.程序设计方法学的影响 B.其它工程科学的影响 C.软件危机的出现 D.计算机的发展, 4.软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实旅的主要保证是(C) A.硬件环境 B.软件开发的环境 C.软件开发工具和软件开发的环境 D.开发人员的素质 5.软件开发常使用的两种基本方法是结构化和原型化方法,在实际的应用中,它们之间的关系表现为(B) A.相互排斥B相互补充C独立使用 D.交替使用 是软件开发中的一个重要工具,它主要应用于哪种软件开发方法(C) A.基于瀑布模型的结构化方法 B.基于需求动态定义的原型化方法 C.基于对象的面向对象的方法 D.基于数据的数据流开发方法 7.在下面的软件开发方法中,哪一个对软件设计和开发人员的开发要求最高(B) A.结构化方法B原型化方法C面向对象的方法 D.控制流方法 8.结构化分析方法是一个预先严格定义需求的方法,它在实施时强调的是分析对象的(B) A.控制流 B.数据流 C.程序流 D.指令流 9.软件开发的结构化生命周期方法将软件生命周期划分成(A) A.计划阶段.开发阶段.运行阶段 B.计划阶段.编程阶段.测试阶段 C.总体设计.详细设计.编程调试 D.需求分析.功能定义.系统设计 10.软件开发的瀑布模型,一般都将开发过程划分为:分析、设计、编码和测试等阶段,一般认为可能占用人员最多的阶段是(C) A.分析阶段 B.设计阶段 C.编码阶段 D.测试阶段

软件工程知识点总结

软件工程(简要知识点) 一、. 软件过程五个模型对比(瀑布模型、快速原型、增量、螺旋、喷泉模型) 二、可行性研究: 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、白盒测试技术(逻辑覆盖、基本路经测试)

软件工程方法与实践 期末考试复习资料(江理)

软件工程的定义:软件工程是一门研究如何用系统化、规范化、数量化等工程化思想和方法去进行软件开发、维护和管理的学科。软件危机的定义:软件开发和维护过程中所遇到的如软件规模越来越大,复杂度不断增加,软件的需求量日益增大等的严重问题我们称之为软件危机。 软件工程有哪些基本的思想:a.推迟实现的观点b.逐步求精的观点c.分解与抽象的观点d.信息隐蔽的观点e.质量保证的观点 CMM(Capability Maturity Model)能力成熟度模型,是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。 极限编程(Extreme Programming , XP)是一种软件工程方法学是敏捷软件开发中最富有成效的几种方法学之一。它的的核心有四个要点:交流、简单、反馈、勇气 软件生命周期模型:通常把软件生命周期中各项开发活动的流程用一个合理的框架——开发模型来规范描述,这就是软件过程模型,或者称为软件生命周期模型。 软件需求分类:功能需求、非功能需求和领域需求 结构化分析(Structured Analysis, SA) 结构图(Structure Chart ,SC) 面向对象的一些概念:类是具有相同或相似性质的对象的抽象。实例是类的具体化。继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。消息是指对象间相互联系和相互作用的方式 数据流类型:变换型数据流、事务型数据流、混合型数据流 Jackson图:Jackson图是Jackson方法分析和设计最有效的表达手段,用它既可以描述问题的数据结构,也可以描述软件的程序结构。Jackson图的优点是便于表示层次结构,利于结构自顶向下分解,形象直观,可读性好。Jackson方法用某种形式的伪码给出程序的过程性描述。伪码一般采用结构化形式的英语描述,例如,用”select”语句描述选择结构,用”until”或”while”语句描述重复结构。

大学软件工程复习资料

五、简答题 1.层次图和层次方框图之间区别何在?P92 ①层次图描绘软件的层次结构,层次方框图描绘数据结构 ②层次图中方框代表一个功能模块,层次方框图方框代表数据的子集或数据元素 ③层次图中连线表示模块间调用关系,层次方框图连线表示组成关系。 2.2、软件设计过程中为什么要采用模块化设计方法?P85 参考答案: (1)、采用模块化原理可以使软件结构清晰,不仅容易设计,也容易阅读和理解; (2)、模块化使软件容易测试和调试,因而有助于提高软件的可靠性; (3)、模块化可以提高软件的可修改性; (4)、模块化有助于开发过程的组织和管理; 3.用某种软件复杂性度量算法来度量不同类型的程序时。得出的度量值是否真正反映了它们的复杂性? 如果对同类型的程序进行度量,其结果是否就比较有价值? 参考答案: 开发规模相同,但复杂性不同的软件,花费的成本和时间会有很大的差异。因此到目前为止,还没有一个软件复杂性度量的方法能够全面、系统地度量任一软件的复杂性,某一种度量方法只偏重于某一方面。所以,用某种软件复杂性来度量不同类型的程序,所得到的度量值不一定真正反映它们的复杂性。但对同一类里的程序,按某种视点来度量它们的复杂性,其结果还是比较有价值的。 4.数据流图的作用是什么?它有哪些基本成分? 参考答案: 数据流图可以用来抽象地表示系统或软件。它从信息传递和加工的角度.以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节。因此,数据流图既提供了功能建模的机制.也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型。 基本成分有:数据原点/终点数据处理数据流数据存储 5.常用的估算软件规模的方法有哪些?试比较这些方法的优缺点。 代码行技术的优点,容易计算,缺点是太片面,因为源程序只是软件配置的很少一部分,不同语言实现同一个软件所需的代码行数不同; 功能点数的特点:与编程语言无关,但是判断信息域复杂性级别和技术因素的影响程度时,存在着相当大的主观因素。 6.CMM的全称是什么?其基本思想是什么?为什么要对CMM进行分级?P321 其基本思想是:软件开发和维护过程中的问题是由于管理软件过程的方法不当引起的,即使是应用新的软件技术,也不会自动提高软件的生产率和质量。能力成熟度模型有助于软件开发机构建立一个有规律的、成熟的软件过程。改进后的软件过程将有利于开发出高质量的软件,使更多的软件项目免受时间和费用超支之苦。 ······························································································· 3分 对于任何软件开发机构的软件过程的改进都是在完成一个又一个小的改进的基础之上不断进行的渐进过程,而不是一蹴而就的彻底革命。CMM将软件过程从无序到有序的进化过程分为5个等级,用于测量软件机构的软件过程成熟度和评价其软件过程能力 什么是软件配置管理? 答:软件配置管理,简称SCM(Software Configuration Management),是在软件的整个生命周期内管理变化的一组活动。具体地讲,这组活动包括:①标志变化,②控制辩化,③确保适当地实现变化,④向需要指导这类信息的人报告变化。软件配置管理技术可以使软件变更所产生的错误达到最小并最有效地提高

《软件工程》期中考试试题

可行性研究的目的是( ) 《软件工程》期中考试试题 选择题(每小题 1 分,共 40 分) 开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做( )。 A. 软件工程 B.软件周期 C.软件危机 D.软件产生 ( )是将系统化的、 规范的、 可定量的方法应用于软件的开发、 运行和维护的过程。 A 软件过程 B 软件测试 C 软件生存周期 D 软件工程 从结构化的瀑布模型看, 在它的生命周期中的八个阶段中, 下面的几个选项中哪个环节 出错,对软件的影响最大 ( )。 A 、详细设计阶段 B 、概要设计阶段 一个软件项目是否进行开发的结论是在( A. 软件开发计划 B ? 可行性报告 )文档中做出的。 C ?需求规格说明书 D.测试报告 需求分析的产品是( ) A ?数据流程图案 B .数据字典 C ?判定表 D ?需求规格说明书 需求分析中开发人员要从用户那里了解( ) A ?软件做什么 B ?用户使用界面 C .输入的信息 D ?软件的规模 瀑布模型本质上是一种( )模型。 A. 线性顺序 B.顺序迭代 C.线性迭代 D.早期产品 瀑布模型存在的问题是( )。 A ?用户容易参与开发 B ?缺乏灵活性 C ?用户与开发者易沟通 D ?适用可变需求 螺旋模型是一种将瀑布模型和( )结合起来的软件开发模型。 A ?增量模型 B .专家系统 C ?喷泉模型 D ?变换模型 原型化方法是用户和设计者之间执行的一种交互构成,适用于( )系统。 A ?需求不确定性高的 B ?需求确定的 C .管理信息 D ?实时 软件可行性研究实质上是要进行一次 ( )需求分析、设计过程。 A 、简化、压缩的 B 、详细的 C 、彻底的 D 、深入的 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. C 、 需求分析阶段 D 、 测试和运行阶段

软件工程复习知识要点

1 软件及软件工程概念 集合,程序只是软件的组成部分之一;在软件开发中,编程只是软件开发过程的一个阶段。 2.在结构化程序设计时代,程序最小的单位是函数及子程序,程序及数据是分离的。程序的最小单位是类。 3.软件的特性:形态特性、智能特性、开发特性、质量特性、生产特性、管理特性、环境特性、维护特性、废弃特性、应用特性。 4.软件的分类:系统软件;应用软件;支撑软件;可复用软件。 5.什么是软件工程?(课后题) 软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来 开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合 起来,以经济地开发出高质量的软件并有效地维护它。 6.可以用功能性、可靠性、易用性、效率、可维护性和可移植性六个特性衡量软件的质量。 功能性是指软件所实现的功能达到它的设计规范和满足用户需求的程度。 可移植性是指软件从某一环境转移到另一环境时所作努力得程度。 7.软件生存期由软件定义、软件开发和运行维护三个时期组成。 开发时期通常由概要设计、详细设计、编码和测试四个阶段组成。 开发过程中的典型文档包括:项目计划、软件测试计划、软件设计说明书、用户手册。 8.需求分析的基本任务? (1)建立分析模型,了解系统的各种需求细节。 (2)基于分析结果,编写出软件需求规格说明或系统功能规格说明,确认测试计划和初步的系统 用户手册,并提交管理机构进行分析评审。 2 软件工程方法及工具 1.面向对象方法的出发点和基本原则,是尽量模拟人类习惯的思维方式,使开发软件的方法和 过程尽可能接近人类认识问题和解决问题的方法及过程,从而使描述问题的问题空间及其解 空间在结构上尽可能一致。 2.形式化方法的主要特点是:(课后题)

软件工程复习提纲(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.软件开发模型有瀑布模型、螺旋模型、第四代技术模型、原型模型、构件组装模型、混合模型。 2.可行性研究一般可以从经济可行性、技术可行性、运行可行性、法律可行性和开发可行性等方面来研究。 3.现在向银行存款,年利率为i,若希望在n年后从银行得到F元,现在应该存入的钱数为F/(1+i)n。 4.数据流图基本符号包括数据输入的源点和数据输出的汇点、加工、数据流、数据存储文件。 5.Jackson图除了可以表达程序结构外,还可以表达数据结构,它首先要分析数据结构,并用适当的工具来描述。 6.详细设计的工具有图形工具、表格工具和语言工具。 7.IPO图由输入、处理和输出三个框组成。这个图的特点是能够直观的显示三者之间的关系。 8.面向对象技术是一整套关于如何看待软件系统和现实世界的关系,以什么观点来研究问题并进行分析求解,以及如何进行系统构造的软件方法学。面向对象方法是一种运用对象、类、继承、封装、聚集、消息传送、多态性等概念来构造系统的软件开发方法。 二、单项选择题 1.下列()属于系统软件。 A.WINDOWS 2000 B.Word C.Flash D.3D MAX

2.下列哪个图是N-S图的构件()。 A. B. C. D. 3.对于螺旋模型,下列()不是利用笛卡尔坐标表达的活动。 A. 制定计划 B. 实施工程 C. 风险分析 D. 程序编码 三、多项选择题 1.软件危机可以表现为(ABCD )。 A.产品不符合用户的需要 B.软件产品的质量差 C.软件的可维护性差 D.软件的价格昂贵 2.Jackson图中一般可能包括(ABCD)。 A.表头 B.表体 C.表名 D.字段名 3.关于内容耦合的描述正确的是(AD )。 A、内容耦合是最高程度的耦合 B、应该尽量使用内容耦合 C、高级语言一般设计成允许内容耦合的形式 D、如果一个模块有多个入口,可能发生内容耦合 4.下列属于不标准的书写格式(BCD)。 A、书写时适当使用空格分隔 B、一行写入多条语句 C、嵌套结构不使用分层缩进的写法 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、白盒测试法是通过分析程序的(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.输入、输出、外部实体和加工 B.变换、加工、数据流和存储 C.加工、数据流、数据存储和外部实体 D.变换、数据存储、加工和数据流

软件工程期中考试以及答案

文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持. 1文档来源为:从网络收集整理.word 版本可编辑. 东莞理工学院(本科)试卷 2014--2015学年第2学期 考试时间90分钟 《软件工程》(期中考试) 把答案写到答题卡上否则不给分 一、 单项选择题请把答案写在下面表格中(每题2分共50分) 1、 瀑布模型下,采用结构化的方法,在它的生命周期各个阶段中,那个阶段出错对软件的影响最大( ) A 、概要设计阶段 B 、维护阶段 C 、测试排错阶段 D 、需求分析阶段 2、UML 是软件开发过程中的重要工具之一,它主要用于那种开发方法() 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 、DFD 图D 、SC 图 10、顺序图反映对象之间发送信息的时间顺序,它与()是同构的。 A 、类图 B 、状态图 C 、协助图D 、活动图 11、下面说法错误的是() A 、该图是对象图B 、borrowbook ()是方法C 、name 是属 D 、该图是类图 姓名:学号: 系别: 年级专业: ( 密封线内不答题 ) ……………………………………………密………………………… …… ……… ………封… ……………………………………线……………………………………

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

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

相关文档