软件工程理论知识 - 图文

更新时间:2024-05-10 12:43:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2010年软件设计师考试复习资料 (42页完美打印版)

软件工程理论知识

共42页 第1页

2010年软件设计师考试复习资料 (42页完美打印版)

软件工程基础知识精解

一.什么是软件? .................................................................................... 4 二.软件危机以及产生软件危机的原因? ................................................................ 4 三.有哪些流行的软件工程方法学及其要素? ............................................................ 4 四.什么是软件生存周期?有哪些活动? ................................................................ 4

4.1软件生存周期 ................................................................................. 4 4.2 开发活动 .................................................................................... 4 4.3 各活动阶段主要文档 .......................................................................... 4

4.3.1可行性分析和项目开发计划 ............................................................... 4 4.3.2需求分析中的文档 ....................................................................... 5 4.3.3 概要设计阶段文档 ...................................................................... 5 4.4.4 详细设计阶段 .......................................................................... 5 4.4.5 编码 .................................................................................. 5 4.4.5 测试 .................................................................................. 5 4.4.6 系统测试阶段 .......................................................................... 5

五.有哪些主要生存期模型? .......................................................................... 5

5.1 瀑布模型(传统的软件周期模型) ................................................................ 5 5.2 原型模型 .................................................................................... 6

5.2.1 快速原型模型 .......................................................................... 6 5.2.2 演化模型 .............................................................................. 6 5.2.3增量模型(渐增式) ....................................................................... 6 5.2.4 原型模型小结 .......................................................................... 6 5.3 螺旋模型 .................................................................................... 6 5.4 喷泉模型 .................................................................................... 7 5.5 迭代软件开发技术 ............................................................................ 7 5.6极限编程(XP) ............................................................................... 8 六.软件过程基础知识 ................................................................................ 8

6.1 软件过程 .................................................................................... 8 6.2 评估工具 .................................................................................... 8 七.软件工程项目管理基本知识 ........................................................................ 9

7.1时间管理 ..................................................................................... 9

7.1.1 Gantt图 ............................................................................... 9 7.1.2 PERT网图与关键路径 .................................................................... 9 7.2成本管理 .................................................................................... 10 7.3风险管理 .................................................................................... 11

7.3.1 风险的定义 ........................................................................... 11 7.3.2 风险的类型 ........................................................................... 11 7.3.3 风险管理活动 ......................................................................... 11 7.3.3 风险曝光度 ........................................................................... 11

八.模块化基本知识 ................................................................................. 12

8.1模块特性 .................................................................................... 12

8.1.1 可分解性 ............................................................................. 12 8.1.2 可组装性 ............................................................................. 12 8.1.3 可理解性 ............................................................................. 12 8.1.4 连续性 ............................................................................... 12

共42页 第2页

2010年软件设计师考试复习资料 (42页完美打印版)

8.1.5 保护性 ............................................................................... 12 8.2 模块与模块的耦合性(7种) .................................................................. 12

8.2.1 内容耦合 ............................................................................. 12 8.2.2 公共耦合 ............................................................................. 12 8.2.3 外部耦合 ............................................................................. 12 8.2.4 控制耦合 ............................................................................. 12 8.2.5 标记耦合 ............................................................................. 12 8.2.6 数据耦合 ............................................................................. 12 8.2.7 非直接耦合(无耦合) ................................................................. 12 8.3 模块的内聚性 ............................................................................... 12 8.4 模块的深度、宽度、扇出与扇入 ............................................................... 13 8.5 模块作用域和控制域 ......................................................................... 13 8.6 模块化基础知识小结 ......................................................................... 13 九.什么是软件开发方法?有哪些主要方法? ........................................................... 13

9.1 结构化方法学 ............................................................................... 13

9.1.1数据流图(DFD图) ...................................................................... 13 9.1.2 数据字典 ............................................................................. 15 9.1.3 结构化语言 ........................................................................... 15 9.1.4 实体-关系图(E-R图) ................................................................. 15 9.2 结构化设计 ................................................................................. 16

9.2.1 概要设计 ............................................................................. 16 9.2.2 详细设计 ............................................................................. 18 9.3 Jackson方法 ................................................................................ 18 9.4 面向对象分析方法(00A) .................................................................... 18 十.软件工具 ....................................................................................... 18 十一. 软件开发环境 ................................................................................. 19 十二. 软件质量管理基础知识 ......................................................................... 19

12.1 软件质量 .................................................................................. 19 12.2 软件质量保证 .............................................................................. 19 12.3 代码评审技术 .............................................................................. 20 十三.成本-效益分析可用哪些指标进行度量? .......................................................... 20 十四.第四代语言(4GL)的主要特征? ................................................................. 20 十五.软件测试 ...................................................................................... 20

15.1 软件测试经过的步骤 ........................................................................ 20 15.2 测试与软件开发各阶段的关系 ................................................................ 20 15.3 白盒测试 .................................................................................. 20 15.4 黑盒测试 .................................................................................. 21 15.4灰盒测试 ................................................................................... 22 15.5 回归测试 .................................................................................. 22 15.6 单元测试 .................................................................................. 22 15.7集成测试 ................................................................................... 22 15.8 确认测试 .................................................................................. 22 15.9 系统测试 .................................................................................. 22 十六.软件工程标准和软件文档 ....................................................................... 23

17.1 软件维护类型 .............................................................................. 23 17.2 软件的可维护性 ............................................................................ 23

共42页 第3页

2010年软件设计师考试复习资料 (42页完美打印版)

十八.软件的可靠性 .................................................................................. 24

一.什么是软件?

1.满足用户功能需求和性能的指令或计算机程序集合; 2.处理信息的数据结构;

3.描述程序功能以及程序如何操作和使用所要求的文档; 以上三部分的组合构成了软件

二.软件危机以及产生软件危机的原因?

1.软件开发生产率提高的速度,远远跟不上计算机迅速普及的趋势。软件产品“供不应求”。 2.软件成本在计算机系统总成本中所占的比例逐年上升。“开发成本高”

3.软件开发人员和用户之间的信息交流往往很不充分,用户对“已完成的”的软件系统不满足的现象经常发生。 4.软件产品的质量不容易保证。 5.软件产品常常是不可维护的。

6.软件产品的重用性差,同样的软件多次重复开发。 7.软件通常没有适当的文档资料。

产生软件危机的原因可归结为两个重要的方面: 软件生产本身存在的复杂性; 软件开发所使用的方法和技术。

三.有哪些流行的软件工程方法学及其要素?

1.使用最广泛的软件工程方法学是面向结构化方法学和面向对象的方法学(上世纪70-90年代,流行面向结构化方法学,上世纪90年代到现在,流行面向对象方法学)。

2.要素:方法、工具和过程。

四.什么是软件生存周期?有哪些活动? 4.1软件生存周期

一个软件从提出开发要求开始到软件废弃不用的整个过程。 4.2 开发活动

可行性分析和项目开发计划、需求分析和定义、软件设计(先后细分为:概要设计和详细设计)、编码、测试和运行维护

可行性分析和项目开发计划:用户、项目负责人和系统分析师搞清楚系统要解决的问题是什么?以及从技术、经济、时间等方面论证项目开发可行性。

需求分析和定义:用户、项目负责人和系统分析师确定系统必须做什么?但不关心具体怎么做?要确定系统的功能、性能、数据、界面等要求,从而确定系统的逻辑模型,同时制定后期测试计划。

软件设计-概要设计:系统分析师和软件设计师在需求定义的基础上,把各功能需求转换成需要的体系结构,即划分模块、模块的层次、模块之间的调用关系以及各模块的功能,同时设计应用系统的总体数据结构和数据库结构。

软件设计-详细设计:软件设计师和程序员对概要设计阶段得出的各功能模块进行详细描述成精确的、结构化的过程描述,即各个功能模块具体怎么实现,用相应的工具把模块的控制结构表示出来,但还未进行编码。

编码:由程序员详细设计阶段得出的各模块控制结构(图形)转变成计算机能识别的指令代码。

测试:由另一部门(单位)的软件设计师或系统分析师花费最少的人力物力找出程序最多、最大的错误(bug)。 维护:由用户和维护人员进行的软件生存周期中时间最长的阶段。 4.3 各活动阶段主要文档

4.3.1可行性分析和项目开发计划 ? 可性行研究报告 ? 项目开发计划

共42页 第4页

2010年软件设计师考试复习资料 (42页完美打印版)

4.3.2需求分析中的文档 ? 需求规格说明书 ? 初步用户使用手册 ? 确认测试的测试计划 ? 修改完善的软件开发计划 ? 系统测试计划文档 4.3.3 概要设计阶段文档 ? 概要设计说明书 ? 数据库说明书 ? 用户手册

? 修订的测试计划(测试的策略、方法、步骤) 4.4.4 详细设计阶段 ? 详细设计说明书 4.4.5 编码 ? 程序清单 4.4.5 测试

? 完善的测试计划书 ? 软件测试报告 4.4.6 系统测试阶段 ? 系统测试报告 2005年下半年

? 应该在 (7) 阶段制定系统测试计划。

(7)A. 需求分析 B. 概要设计 C. 详细设计 D. 系统测试

●(29)详细描述软件的功能、性能和用户界面,以使用户了解如何使用软件。

(29)A.概要设计说明书 B.详细设计说明书 C.用户手册 D.用户需求说明书 五.有哪些主要生存期模型?

瀑布模型、原型开发模型(快速原型模型、演化模型、增量模型)、螺旋模型、喷泉模型、基于知识的模型和变化模型。

5.1 瀑布模型(传统的软件周期模型)

瀑布模型严格遵循软件生命周期各阶段的固定顺序:计划、分析、设计、编程、测试和维护,上一阶段完成后才能进入到下一阶段,整个模型就像一个飞流直下的瀑布,如下图所示。

优点:以文档作为驱动,强迫开发人员采用规范的方法,严格规定了各阶段必须提交的文档;要求每一阶段结束后,都要进行严格的评审。与它最相适应的开发方法是结构化方法。

缺点:不适应用户需求的改动。 2004年下半年:

● 软件开发中的瀑布模型典型的刻画了软件生存周期的阶段划分,与其最相适应的软件开发方法是 (9) 。 (9)A.构件化方法 B.结构化方法 C.面向对象方法 D.快速原型法

共42页 第5页

2010年软件设计师考试复习资料 (42页完美打印版)

5.2 原型模型

5.2.1 快速原型模型

快速原型的用途是获知用户的真正需求,一旦需求确定了,原型即被抛弃。主要用于需求分析阶段。 不追求也不可能要求对需求的严格定义,而是采用了动态定义需求的方法,所以不能定义完善的文档。 特征:简化项目管理、尽快建立初步需求、加强用户参与和决策。

具有广泛技能水平的原型化人员是原型实施的重要保证。原型化人员应该是具有经验与才干、训练有素的专业人员。衡量原型化人员能力的重要标准是他是否能够从用户的模糊描述中快速获取需求。 5.2.2 演化模型

在快速原型模型中,原型的用途是获知用户的真正需求,一旦需求确定了,原型即被抛弃。而演化模型应用于整个软件开发过程,是从初始模型逐步演化为最终软件产品的渐进过程。也就是说,快速原型模型是一种“抛弃式”的原型化方法,而演化模型则是一种“渐进式”的原型化方法。 5.2.3增量模型(渐增式)

增量模型主要用于设计阶段,把软件产品划分为一系列的增量构件,分别进行设计、编程、集成和测试。新的增量构件不得破坏已经开发出来的产品。其示意图如图4-2所示。

5.2.4 原型模型小结

从下面的有关原型化方法的叙述中,选择出正确的叙述:

(1)快速原型方法是一种企图克服传统软件周期模型缺点的开发方法。

(2)在用户的数据资源没有得到很好地组织和管理的时候,应该使用原型化方法。 (3)在用户没有明确地肯定其需求的时候,应该使用原型化方法。

(4)在用户不希望把自己的时间花在软件开发过程中的时候,应该使用原型化方法。 (5)使用原型化方法时应该使用第三代编程语言。 (6)原型化加强了开发过程中用户的参与和决策。

(7)原型化方法大致可分为三类:抛弃式、演化式和递增式。 (8)原型化方法大致可分为演化式和递增式。 (9)采用原型化方法时,软件的开发成本较高。

(10)采用原型化方法时,关键的因素是建立原形的速度,而不是原形运行的效率。

5.3 螺旋模型

螺旋模型综合了瀑布模型和原型模型中的演化模型的优点,还增加了风险分析。螺旋线第一圈的开始点可能是一个概念项目。从第二圈开始,一个新产品开发项目开始了,新产品的演化沿着螺旋线进行若干次迭代,一直转到软件生命期结束。

共42页 第6页

2010年软件设计师考试复习资料 (42页完美打印版)

5.4 喷泉模型

喷泉模型主要用于描述面向对象的开发过程。喷泉一词体现了面向对象开发过程的迭代和无间隙特征。迭代指的是开发活动常常需要重复多次,在不断的迭代中逐渐完善软件系统,无间歇性指在开发活动之间不存在明显的边界,允许各开发活动交叉、迭代地进行。 5.5 迭代软件开发技术

Rational 统一开发流程RUP(Rational Unified Process)是一个通用的软件流程框架,它是一个以架构为中心、用例驱动的迭代化软件开发流程。RUP 是从几千个软件项目的实践经验中总结出来的,对于实际的项目具有很强的指导意义,是软件开发行业事实上的行业标准。在RUP 中,我们把软件开发生命周期划分为四个阶段,每个阶段的结束标志就是一个主要的里程碑(如下图所示)。

这四个阶段主要是为了达到以下阶段性的目标里程碑: 先启(Inception):确定项目开发的目标和范围 精化(Elaboration):确定系统架构和明确需求 构建(Construction):实现剩余的系统功能

产品化(Transition):完成软件的产品化工作,将系统移交给客户

2005年下半年: ? 在开发一个系统时,如果用户对系统的目标是不很清楚,难以定义需求,这时最好使用 (6) 。

(6)A. 原型法 B. 瀑布模型 C. V-模型 D. 螺旋模型 2006年上半年:

渐增式开发方法有利于 (4) 。

(4)A. 获取软件需求 B.快速开发软件 C. 大型团队开发 D.商业软件开 2006年下半年:

共42页 第7页

2010年软件设计师考试复习资料 (42页完美打印版)

常见的软件开发模型有瀑布模型、演化模型、螺旋模型、喷泉模型等。其中(5)模型适用于需求明确或很少变更的项目,(6)主要用来描述面向对象的软件开发过程。

(5) A.瀑布模型 B.演化模型 C. 螺旋模型 D.喷泉模型 (6) A.瀑布模型 B.演化模型 C. 螺旋模型 D.喷泉模型

●统一过程(UP)的基本特征是“用例驱动,以架构为中心的和受控的迭代式增量开发”。UP将一个周期的开发过程化分为4个阶段,其中 (26) 提交结果包含了系统架构。

(26)A.先启阶段 B.精化阶段 C.构建阶段 D.提交阶段 5.6极限编程(XP)

一种轻量(敏捷)、高效、低风险、柔性、可预测、科学而且充满乐趣的软件开发方法。与其他方法对比,最大的不同在于:

1.在更短的周期内,更早地提供具体、持续的反馈信息

2.迭代地进行计划编制,首先在最开始迅速生成一个总体计划,然后在整个项目开发过程中不断地发展 3.依赖于自动测试程序来监控开发进度,并及早地捕获缺陷 4.依赖于口头交流,测试和源程序进行沟通 5.倡导持续的演化式的设计

6.依赖于开发团队内部的紧密协作

7.尽可能达到程序员短期利益和项目长期利益的平衡

如上图所示,xp由价值观、原则、实践和行为四个部分组成,它们彼此相互依赖、关联,并通过行为贯穿于整个生命周期。xp的核心是其总结的四大价值观:沟通、简单、反馈和勇气、它们是xp的基础,也是xp的灵魂。5个原则:快速反馈、简单性假设、逐步修改、提倡更改和优质工作。在xp方法中,贯彻的是“小步快走”的开发原则,因此工作质量绝不可打折扣,通常采用测试先行的编码方式来提供支持。

在xp中,继承了12个最佳实践:计划游戏、小型发布、隐喻、简单设计、测试先行、重构、结对编程、集体代码所有制、持续继承、每周工作40小时,现场客户,编码标准。 六.软件过程基础知识 6.1 软件过程

软件过程是指人们用于开发和维护软件及相关产品的一系列活动,包括软件工程过程和软件管理过程。 6.2 评估工具

软件过程的评估,通常采用软件能力成熟度 模型(Capability Maturity Model,CMM)。 CMM1.1的5个等级(由低级到高级):

? 初始级

软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力,管理是反应式(消防式)的。 ? 可重复级

建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功。

? 已定义级

已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准化软件过程。所有项目均使用经标准、裁减的标准软件过程来开发和维护软件。

? 已管理级

收集对软件过程和产品质量的详细度量,对软件过程和产品都有定量的理解与控制。 ? 优化级

加强了定量分析,通过来自过程质量反馈和来自新观念、新技术的反馈使过程能持续不断地改进。

巧记:初级程序员,可重复写程序,现已定义了管理策略来优化程序设计!

2006年下半年:

共42页 第8页

2010年软件设计师考试复习资料 (42页完美打印版)

●软件能力成熟度模型(CMM)是目前国际上最流行、最实用的软件生产过程标准和软件企业成熟度的等级认证标准。该模型将软件能力成熟度自低到高依次划分为初始级、可重复级、已定义级、已管理级、优化级。从(17)开始,要求企业建立基本的项目管理过程的政策和管理规程,使项目管理过程有章可循。 (17)A.初始级 B. 可重复级 C. 已定义级 D. 已管理级

七.软件工程项目管理基本知识

软件项目管理开始于任何技术活动之前,并且贯穿于整个的软件生命周期。 软件工程项目管理一般分为时间管理、成本管理、人力资源管理、风险管理。 7.1时间管理 7.1.1 Gantt图

是一种简单的水平条形图,它以水平线段表示子任务的工作阶段,线段的起点和终点分别对应着子任务的起始时间,线段长度指示完成该任务所需要的时间。

甘特图的优点:直观简明、易学易绘、可从图上清楚地标出子任务间的时间对比,但它也有 缺点:

(a)不能显示地描绘各项彼此间的依赖关系;

(b)进度计划的关键部分不明显,难以判断哪些部分应当是主攻和主控的对象; (c)计划中有潜力的部分以及潜力的大小不明确,往往造成潜力的浪费。 2006年5月:

● 在软件项目管理中可以使用各种图形工具来辅助决策,下面对Gantt 图的描述中,不正确的是 (5) 。 A. Gantt 图表现了各个活动的持续时间 B. Gantt 图表现了各个活动的起始时间 C. Gantt 图反映了各个活动之间的依赖关系 D. Gantt 图表现了完成各个活动的进度 7.1.2 PERT网图与关键路径

PERT网图是一个由箭头(标识任务)和结点(标识事件)组成的有向图。将网络方法用于工作计划安排的评审和检查。

共42页 第9页

2010年软件设计师考试复习资料 (42页完美打印版)

开发模块A、B、C模块的任务网络图

PERT图不仅给出了每个任务的开始时间、结束时间和完成该任务所需的时间,还给出了任务之间的依赖关系,即哪些任务完成后才能开始另一些任务,以及如期完成整个工程的“关键路径”。

关键路径(Critical Path)是由一连串的任务所组成的链,距离最大的一条路径。

软件项目的管理人员应该密切注视关键任务的进展情况。如果希望缩短工期,只有往关键任务中增加资源才会有效果。

7.2成本管理

一种常用的成本估算方法是先估计完成软件项目所需的工作量(人月数),然后根据每个人月的代价(金额)计算机软件的开发费用:

开发费用 = 人月数×每个人月的代价

另一种方法是估计软件的规模(通常指源代码行数),然后根据每行源代码的平均开发费用(包括分析、设计、编码、测试所花的费用),计算机软件的开发费用: 开发费用=源代码行数×每行平均费用

估算源代码行数时,可以请n为有经验的专家,每位专家对软件给出3个估计值: ? ai---最少源代码行数(该软件可能的最小规模) ? bi---最大源代码行数(该软件可能的最大规模) ? mi---最可能的代码行数(该软件最可能的规模)

ai?4mi?bi1n然后计算出每位专家的估算期Ei?,n位专家的估算期望值的平均值?Ei就是代码行数的估算值。

6n1Putnam模型和COCOMO模型:

Putnam模型和COCOMO模型是常用的成本估算模型。

? Putnam模型:是一种动态多变量模型,它是假设在软件开发的整个生存期中工作量的分布。

? COCOMO模型:是结构性成本模型,是最精确、最易于使用的成本估算模型之一。该模型可以分为: (1)基本COCOMO模型,是一个静态单变量模型,它是对整个软件系统进行估算。

(2)中级COCOMO模型,是一个静态多变量模型。它将软件系统模型分为系统和部件两个层次,系统由部件构成,它把软件开发所需人力(成本)看作是程序大小和一系列“成本驱动属性”的函数。

(3)详细COCOMO模型,它将软件系统模型分为系统、子系统和模块3个层次,它除包括中级模型所考虑的因素外,还考虑了在需求分析、软件设计等每一步的成本驱动属性的影响。 2006年上半年:

● 使用LOC (lines of code)度量软件规模的优点是 (9) 。

(9)A.容易计算 B.与使用的编程语言相关 C.与使用的开发模型有关 D.在设计之前就可以计算出LOC ●软件项目开发成本的估算依据,通常是开发成本估算模型,常用的模型有:

①IBM模型②Putnam模型③基本COCOMO模型④中级COCOMO模型⑤高级OCOMO模型其中(18)都是静态单变量模型。 (18)A.①② B. ②④⑤ C. ①③ D. ③④⑤

共42页 第10页

2010年软件设计师考试复习资料 (42页完美打印版)

7.3风险管理 7.3.1 风险的定义

1.关心未来:风险是否会导致软件项目失败?

2.关心变化:在用户需求、开发技术、目标机器,以及所有其他与项目及时工作和全面完成有关的实体中会发生什么样的变化?

3.关心选择:应采用什么方法和工具,应配置多少人力,在质量上强调到什么程度才能满足要求? 7.3.2 风险的类型

1.项目风险:指潜在的预算、进度、人力(工作人员及组织)、资源、客户和需求等方面的问题以及它们对软件项目的影响。例如:项目复杂性、规模和结构不确定性等都是项目风险、项目风险威胁到项目计划,即如果项目风险变成现实,有可能会拖延项目的进度,增加项目的成本。

2.技术风险:指潜在的设计、实现、接口、验证和维护等方面的问题。此外,规约的二义性、技术的不正确性,陈旧的技术和“先进的”技术也是技术风险因素。技术风险威胁到开发软件的质量及软件交付时间,如果技术风险比恩成现实,则开发工作可能变得很困难或根本不可能。

3.商业风险:在信息系统项目中,商业风险威胁到要开发系统的生存能力。一般主要有5类商业风险: ? 市场风险:开发了一个没有人真正需要的优秀产品或系统 ? 策略风险:开发的产品不再符合公司的整体商业策略 ? 销售风险:开发了一个销售部门不知道如何去卖的产品

? 管理风险:由于重点的转移或人员的变动而失去了高级管理层的支持 ? 预算风险:没有得到预算或人力上的保证 7.3.3 风险管理活动

1.风险识别:找的哦啊潜风险并将其文档化,它包括项目风险、技术风险和商业风险三种

2.风险评估:可分为定量评估和定性评估。通过对各种风险发生的可能性和破坏性这两个方面进行评估,并将它们按优先级别进行排列。在进行软件工程分析时,项目管理人员要进行四种风险评估活动,包括建立表示风险概率的尺度,面熟风险引起的后果,估计风险影响的大小,确定风险估计的正确性

3.风险驾驭:利用某种技术,如原型化、软件自动化、软件心理学、可靠性工程学等方法设法避开风险。 统称可以把风险应对策略分为两种类型:防范策略和相应策略 (1)风险防范策略

? 规避策略:想方设法阻止风险的发生或消除风险发生的危害。避免策略如果成功则可以消除风险对项目的影响。

例如:针对技术风险可以采取聘请技术专家、针对项目进度风险可以采取延长项目时间或缩减项目范围的办法。 ? 减轻策略:当风险很难避免或转移时,可以考虑采取减轻策略来降低风险发生的概率或减轻风险带来的损失。 风险是一种不确定因素,可以通过前期的一些工作来降低风险发生的可能性;或者也可以通过一些准备来降低风险发生的损失。例如对于需求风险,如果认为需求变化可能很剧烈,那么可以考虑采用柔性设计的方法降低需求变更的代价。尤其对于IT项目而言,越早发现问题越容易解决,例如对于需求风险带来的问题,在设计阶段发现要好过编码阶段发现。针对这些特点,也可以采用尽早暴露风险的方法降低发生风险的损失。 (2)制定风险相应策略

注意,虽然我们采用了很多方法防范风险的发生,但风险本身就是一种不确定因素,不可能在项目中完全消除。 我们还需要制定一些风险发生后的应急措施来解决风险带来的问题。例如:对于系统性能的风险,由于不清楚目前的系统是否能够满足用户的需求,可能在系统发布后出现系统性能不足的问题。对于这个风险,我们可以定义其风险响应策略为增加硬件资源以提高系统性能。

风险响应策略与风险防范策略不同,无论风险是否发生,风险防范策略都需要体现在项目技术中,在项目过程中需求有人来执行对应的方法策略;而风险响应策略是在事件触发的,直到当风险发生后才会被执行,如果始终没有发生风险,则始终不会被安排到项目活动中。 7.3.3 风险曝光度

风险曝光度(risk exposure)=风险损失*风险概率

例如:正在开发的软件项目可能存在一个未将发现的错误,这个错误出现的概率是0.5%,给公司造成的损失将是100万元,那么这个错误的风险曝光度是5000元。

共42页 第11页

2010年软件设计师考试复习资料 (42页完美打印版)

八.模块化基本知识

模块是指执行某一特定任务的数据和可执行语句程序元素的集合,通常是指可通过名字来访问的过程、函数、子程序或宏调用等。

模块化就是将一个待开发的软件划分成若干个可完成某一子功能的模块,每个模块可独立地开发、测试,最后组装成完整的程序。 8.1模块特性 8.1.1 可分解性

如果一种设计方法提供了将问题分解成子问题的系统化机制,它就能降低整个系统的复杂性,从而实现一种有效的模块化解决方案。 8.1.2 可组装性

如果一种设计方法使现存的(可复用的)设计构件能被组装成新系统,它就能提供一种不需要一切从头开始的模块化解决方案。 8.1.3 可理解性

如果一个模块可以作为一个独立的单位(不用参考其他模块)被理解,那么它就易于构造和修改。 8.1.4 连续性

如果对系统需求的微小修改只导致对单个模块,而不是整个系统的修改,则修改引起副作用就会被最小化。 8.1.5 保护性

如果模块内部出现异常情况,并且它的影响限制在模块内部,不会影响其他模块,则错误引起的副作用就会被最小化。

注意“连续性”和“保护性”的区别!! 8.2 模块与模块的耦合性(7种)

耦合是对一个软件结构内不同模块之间互连程度的度量。 耦合可以分成下列几种,它们之间的耦合度由高到低排列。 8.2.1 内容耦合

直接操作或修改另一模块的数据,或不通过正常入口转入另一个模块。

软件设计时应坚决禁止内容耦合,应设计成单入口、单出口的模块,避免病态连接。 8.2.2 公共耦合

多个模块引用同一全局数据区。例如,C语言中的external数据类型、磁盘文件等都是全局数据区。 8.2.3 外部耦合

模块与软件以外的环境有关联。例如,输入输出把一个模块与特定的设备、格式、通信协议耦合在一起。 8.2.4 控制耦合

一模块明显把开关量、名字等信息送入另一模块,控制另一模块的功能。 8.2.5 标记耦合

两个模块之间通过传递公共指针或地址相互作用的耦合。 8.2.6 数据耦合

模块间通过传递数据交换信息。 8.2.7 非直接耦合(无耦合)

模块间无任何关系,独立工作

原则上讲,模块化设计总是希望模块之间的耦合表现为非直接耦合方式。 在以上耦合中,耦合度从高到低,内容耦合度最高,非直接耦合度最低。 总结:内公不好,家外被控了,标志数年心血白非了!(内功不好,家外被控了,标志数年心血白费了!) 8.3 模块的内聚性

内聚是指一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部的概念的自然扩展。设计时应该力求高内聚,理想内聚的模块应当恰好做一件事情。

1)偶然内聚:一个模块的各成分之间毫无关系。比如:一组语句在程序的多处出现,为了节省内存空间,这些语句放在一个模块中,该模块的内聚是偶然内聚的。

共42页 第12页

2010年软件设计师考试复习资料 (42页完美打印版)

2)逻辑内聚:把几种逻辑上相关的功能组放在同一模块中。 3)瞬时内聚(时间内聚):一个模块所包含的任务必须在同一时间间隔内执行,例如初始化模块。 4)过程内聚:一个模块的处理元素是相关的,而且必须按特定的次序执行。 5)通信内聚:一个模块的所有成分都结合在同一个数据结构上。

6)顺序内聚:模块的成分同一个功能密切相关,且输出,作为另外一个成分的输入。 7)功能内聚:模块内的所有成分属于一个整体,完成单一的功能。 在以上的内聚中,内聚度从低到高,偶然内聚度最低,功能内聚度最高。

模块的高内聚、低耦合的原则称为模块独立原则,也称为模块设计的原则。

巧记:偶然逻辑混乱,瞬间遗忘过程,打电话(通信)询问,顺序清楚,功能也搞定! 8.4 模块的深度、宽度、扇出与扇入 ? 深度:表示软件结构中控制的层数。

? 宽度是软件结构中同一个层次上的模块总数的最大值 ? 一个模块的扇入是指直接调用该模块的上级模块的个数。

设计原则:低扇出、高扇入。 8.5 模块作用域和控制域

软件设计时,模块的作用域应在控制域之内。 8.6 模块化基础知识小结

? 通过模块的合并和分解,降低模块的耦合度。 ? 模块的扇入应尽量大,扇出应尽量小。一个模

块的扇入是指直接调用该模块的上级模块的个数。一个模块的扇出是指该模块直接调用的下级模块的个数。扇入大表示模块的重用性高,利用率高。扇出大表示模块的复杂度高。所以要高扇入,低扇出。 ? 要将模块的作用范围限制在模块的控制范围之内。 ? 降低模块之间的复杂性,避免“病态连接”。 2006年上半年:

● 模块的耦合度描述了 (16) 。

(16)A.模块内各种元素结合的程度 B.模块内多个功能之间的接口 C.模块之间公共数据的数量 D.模块之间相互关联的程度 ● 内聚是一种指标,表示一个模块 (17) 。

(17)A.代码优化的程度 B.代码功能的集中程度

C.完成任务时及时程度 D.为了与其他模块连接所要完成的工作量 九.什么是软件开发方法?有哪些主要方法?

? 软件开发方法:使用已定义好的技术集及符号表示习惯组织软件生产的过程。 ? 结构化方法、面向对象方法、JACKSON方法、维也纳开发方法(VDM)等。 9.1 结构化方法学

结构化方法学也称为生命周期方法学(瀑布模型方法),是一种面向数据流的需求分析方法。它的基本思想是自顶向下逐层分解。

为了在需求改变时对软件的影响较小,结构化分析时应该使程序结构与问题结构相对应。 常用工具: 数据流图(DFD)、数据字典(DD)、实例—关系图(E-R图)及描述加工处理的结构化语言、判定表、判定树。 9.1.1数据流图(DFD图) ? DFD的基本成分

数据流图主要由4种成分组成,如下表所示:

共42页 第13页

2010年软件设计师考试复习资料 (42页完美打印版)

数据流(data flow):由一组固定成分的数据组成,表示数据的流向。它可以从源、文件流向加工,也可以从加工流向文件和宿,还可以从一个加工流向另一个加工。通常每个数据流必须有一个合适的名字,一方面是为了区别,另一方面也给人一个直观的印象,使人容易理解这个数据流的含义。但流向文件或从文件流出的数据流不必命名,因为这种数据流的组成部分就是相应文件的组成部分。

加工(process):描述了输入数据流到输出数据流之间的变换,也就是输入数据流做了什么处理后变成了输出数据流。每个加工有一个名字和一个编号。编号反映了该加工位于分层DFD的哪个层次和哪张图中以及它是哪个加工分解出来的子加工。

文件(file):可以表示数据文件,也可以表示一个数据记录。流向文件的数据流表示写文件,流出文件的数据流表示读文件,双向箭头表示对文件既读又写。每个文件都有一个文件名。

源/宿(source/sink):源是指系统所需数据的发源地,宿(也称数据池)是指系统所产生的数据的归宿地。无论源或宿,均对应于外部实体,在框内应加注实体的名字,在一个软件各级软件系统中,有些源和宿可以是一个外部实体,外部实体是指存在于软件系统之外的人员或组织,它指出系统所需数据的发源地和系统所产生数据的归宿地。 ? 分层数据流图

一套分层的的数据流图由顶层、底层、和中间层组成。

画分层数据流图基本原则与注意事项 a.自外向内,自顶向下,逐层细化,完善 求精。

b.保持父图与子图的平衡。也就是说,父

共42页 第14页

2010年软件设计师考试复习资料 (42页完美打印版)

图中某加工的输入数据流中的数据必须与它的子图的输入数据流在数量和意义上相同。 c.保持数据守恒。也就是说,一个加工所

有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据。 c.加工细节隐藏。根据抽象原则,在画父

图时,只需画出加工和加工之间的关系,而不必画出各个加工内部的细节。 d.简化加工间关系。在数据流图中,加工

间的数据流越少,各加工就越相对独立,所以应尽量减少加工间输入输出数据流的数目。 e.均匀分解。应该使一个数据流中的各个 加工分解层次大致相同。

f.适当地为数据流、加工、文件、源/宿命

名,名字应反映该成分的实际意义,避免空洞的名字。 g.忽略枝节。应集中精力于主要的数据流,

而暂不考虑一些例外情况、出错处理等枝节性问题。 h.表现的是数据流而不是控制流。 i.每个加工必须既有输入数据流,又有输

出数据流.在整套数据流图中,每个文件必须既有读文件的数据流又有写文件的数据流,但在某一张子图中可能只有读没有写或者只有写没有读。

小结:一个软件系统,其数据流图往往有多层。如果父图有N个加工(Process),则父图允许有0~N张子图,但是每张子图只能对应一张父图。在一张DFD图中,任意两个加工之间可以有0条或多条名字互不相同的数据流;在画数据流图时,应该注意父图和子图的平衡,即父图中某加工的输入输出数据流必须与其输入输出流在数量和名字上相同。DFD信息流大致可分为两类:交换流和事务流。 2006年上半年:

●在绘制数据流图时,要遵循的一个原则是父图与子图的平衡,所谓平衡是指___(31)___。 (31)A.父图和子图都不得改变数据流的性质 B.子图不改变父图数据流的—致性 C.父图的输入/输出数据流与子图的输入/输出数据流一致 D.子图的输出数据流完全由父图的输入数据流确定 9.1.2 数据字典

数据字典是关于数据的信息的集合也就是对 数据流图中包含的所有元素的定义的集合。

组成部分: a.数据项条目 b.数据流条目 c.文件条目 d.加工条目 加工条目是对数据流图中每一个不能再分解的基本加工的精确说明。

对于加工的描述是数据字典的组成内容之一,常用的加工描述方法有结构化语言、判定树和判定表。 9.1.3 结构化语言

结构化语言实际上是一种半形式化语言,它的结构通常可分为内外两层。外层接近于形式化语言,而内层近似于自然语言的描述。

9.1.4 实体-关系图(E-R图)

实体-关系图(Entity-Relabionship Diagram),简称E-R图,包含实体、关系和属性等3种基本成分。通常用矩形框代表实体,并用直线把实体(或关系)与其属性连接起来。

共42页 第15页

2010年软件设计师考试复习资料 (42页完美打印版)

E-R图通常用于数据库应用系统。

9.2 结构化设计

结构化设计通常可分为概要设计和详细设计,但是主要用于概要设计阶段。概要设计的任务是确定软件系统的结构,进行模块划分,确定每个模块的功能、接口以及模块间的调用关系。详细设计的任务是为每个模块设计实现的细节。

9.2.1 概要设计

经过需求分析阶段的工作,系统必须“做什么”已经清楚了,概要设计的基本目的就是回答“概括地说,系统应该如实现?”这个问题。概要设计的重要任务: 将一个复杂的系统按功能化分为模块、确定每个模块的功能、确定模块之间的调用关系、确定模块之间的接口(模块之间传递的信息)、评价模块的结构质量。 1.软件结构图形工具

结构化设计方法(SD)方法采用结构图(Structure Chart)、层次图和HIPO图描述软件结构。

结构图的主要成分有模块、调用和数据,结构图中的模块用矩形表示,在矩形框内可标上模块的名字。模块间如有箭头或直线相连,表明它们之间有调用关系。

层次图用来描绘软件的层次结构.层次图中一个矩形框代表一个模块,方框间的连线表示模块间的调用关系.

共42页 第16页

2010年软件设计师考试复习资料 (42页完美打印版)

HIPO图实际上就是层次图加输入/处理/输出图. HIPO图是美国IBM公司发明的“层次图加输入/处理/输出图”,是在层次图里出了最顶层的方框之外,每个方框都加了编号。编号规则和数据流图的编号规则一样。

2.概要设计中的信息流

变换流:信息沿着输入通道进入系统,然后通过变换中心(也称主加工)处理,再沿着输出通道离开系统.具有这一特性的信息流称为变换流.具有变换流型的数据流图可明显地分成输入、变换(主加工)、输出三大部分。

共42页 第17页

2010年软件设计师考试复习资料 (42页完美打印版)

事务流:信息流沿着输入通道到达一个事务中心,事务中心根据输入信息(即事务)的类型在若干个动作序列(称为活动流)中选择一个来执行,这种信息流称为事务流。事务流有明显的事务中心,各活动以事务中心为起点呈辐射状流出。

9.2.2 详细设计

概要设计已经确定了每个模块的功能和接口,详细设计的任务就是为每个模块设计其实现的细节。

详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统,得出对目标系统的精确描述。 1.详细设计阶段的内容

? 为每个模块进行详细的算法设计。 ? 为模块内部的数据结构进行设计。 ? 对数据库进行物理设计。 ? 其他

详细设计工具主要包括程序流程图(系统流程图)、盒图(N-S图)、PAD图和伪码(PDL)。

2.人机界面设计

人机界面的设计质量,直接影响用户对软件产品的评价。界面的美观、灵活和风格都很重要,但人机界面设计中最重要的也是最基本的目标是软件的易操作性。人机界面设计主要包括系统响应时间、用户帮助设计、出错信息处理和命令交互设计等几个方面。 9.3 Jackson方法

上面讲的结构化设计方法是面向数据流的,另外还有一种面向数据结构的设计方法, Jackson方法是最著名的面向数据结构的设计方法,而不是面向数据流的设计方法。

Jackson方法的基本步骤是:建立系统的数据结构;以数据结构为基础,对应地建立程序结构;列出程序中要用到的各种基本操作,再将这些操作分配到程序结构适当的模块中。

9.4 面向对象分析方法(00A)

OTM方法的三个模型,分别从三个不同侧面描述了所要开发的系统:功能模型指明了系统应该“做什么”;动态模型明确了什么时候做;对象模型则定义了做事情的实体。

对象模型描述了系统中对象的静态结构及对象间的联系,用对象模型图来表示。

动态模型描述了与时间和操作次序有关的系统属性。

动态模型由多张状态图组成。各个类的状态图通过共享事件组成系统的动态模型。

功能模型描述系统内数据值的变化,它由数据流图组成。数据流图说明数据流是如何从外部输入、经过操

作和内部存储而得到输出的。

十.软件工具

软件工具是指用于辅助软件开发、运行、维护、管理、支持等过程中的活动的软件。通常也称为CASE(Computer Aided Software Engineering,计算机辅助软件工程)工具。

共42页 第18页

2010年软件设计师考试复习资料 (42页完美打印版)

按软件过程的活动分为软件开发工具、软件维护工具和软件管理工具等。

十一. 软件开发环境

集成型开发环境通常可由工具集和环境集成机制两部分组成。这种环境应具有开放性和可裁减性。环境集成机制主要有数据集成机制、控制集成机制和界面集成机制。

十二. 软件质量管理基础知识 12.1 软件质量

ISO/IEC 9126软件质量模型可从软件功能性、可靠性、可用性、效率、可维护性、可移植性6个方面来衡量。 (1).功能性

与功能及其指定的性质的一组软件属性。 (2)可靠性

软件在规定的一段时间内和规定的条件下保持其性能水平有关的一组软件属性。也可以称为在规定的条件下和规定的时间间隔内,软件实现其规定功能的概率。 (3)可用性

与使用的难易程度及规定或隐含用户对使用 方式所做的评价有关的软件属性。 (4)效率

与在规定条件的性能水平与所用资源量之间的关系有关的一组软件属性。 (5)可维护性

与软件维护的难易程序有关的一组软件属性。 (6)可移植性

软件可从某一环境转移到另一环境的能力有关的一组属性。即软件从一个计算机系统转换到另一个计算机系统运行的难易程度是指软件的可移植性。为了提高可移植性,应注意提高软件的设备独立性。采用表格驱动程序有助于提高设备独立性。为了提高可移植性,还应有完备的文档资料。使用C语言开发的系统软件具有较好的可移植性。 2006年下半年:

●按照ISO/IEC 9126软件质量度量模型定义,一个软件可靠性的子特性包括 (28) :

(28)A.容错性和安全性 B.容错性和适应性 C.容错性和易恢复性 D.易恢复性和安全性

●某软件在运行初期运行在Windows NT环境中,现因某种原因,该软件需要在UNIX环境中运行,而且必须完成同样的功能。为适应这个要求,软件本身需要进行修改,而所需的工作量取决于该软件的(27) (27)A.可扩充性 B.可靠性 C.复用性 D.可移植性 2005年5月:

● 下列叙述中,与提高软件可移植性相关的是(18) A.选择时间效率高的算 B.尽可能减少注释

C.选择空间效率高的算法 D.尽量用高级语言编写系统中对效率要求不高的部分 12.2 软件质量保证

软件质量保证的主要困难表现在以下几个方面:

1) 软件开发的管理人员往往关心项目开发的成本与进度。因为成本和进度是显而易见的,而软件质量则难以度量。 1) 如果软件开发的管理人员对交付的软件含有多少隐患并不必负什么责任,他们必定没有太高的热情去控制开发的质量,更不必说保证质量并不容易且代价昂贵。

2) 开发人员的习惯一旦形成难以改变,他们的形为也难于控制,而高质量的软件产品,又主要取决于参与开发的人员。

3) 复杂的软件项目需要许多技术人员和管理人员参与,对问题的不同认识和误解如不能及时消除必然影响软件质量。 4) 软件开发人员的频繁流动,特别是骨干开发人员的流失,也会使软件质量受到一定的影响。

软件质量的保证手段:

共42页 第19页

2010年软件设计师考试复习资料 (42页完美打印版)

1) 开发初期制定质量保证计划,并在开发中坚持实行。 2) 开发前选定或制定开发标准或开发规范,并遵照实施。

3) 从开始就选择分析设计方法和工具,形成高质量的分析模型和设计模型。 4) 严格执行阶段评审,以便及时发现问题。 5) 各个开发阶段的测试。

6) 对软件的每次“变动”都要经过申请、评估、批准、实施等步骤。 7) 软件质量特性的度量化。

8) 软件生存期的各阶段都要完整的文档。 12.3 代码评审技术

常用方法有代码走查和代码审查技术。 ? 代码走查

程序员和测试员组成审查小组,通过逻辑运行程序。

第一步:小组成员提前阅读设计规格书、程序文本等相关文档;

第二步:利用测试用例,使程序逻辑运行,记录程序的踪迹,发现、讨论、解决问题 ? 代码审查

程序员和测试员组成审查小组。

第一步:小组成员提前阅读设计规格书、程序文本等相关文档;

第二步:召开程序审查会,开发人员读程序,审查小组讨论、发现、解决问题。 ? 两者的区别

代码审查是一种正式的评审活动,而代码走查的讨论过程是非正式的。 十三.成本-效益分析可用哪些指标进行度量?

? 投资回收率:通常把建立系统若干年后所取得的收益折算成现在的价值和开发系统所需的费用进行比较得出投资回收率。

? 投资回收期:就是使累计的经济效益等于最初的投资费用所需的时间。

? 纯收入:整个软件生命周期之内的累计经济效益(折成现在值)与投资之差。 十四.第四代语言(4GL)的主要特征? ? 友好的用户界面

? 兼有过程性和非过程性两种特性 ? 高效的程序代码 ? 完备的数据库 ? 应用程序生成器 十五.软件测试

软件测试的费用已经超过软件开发费用的30%左右。“高产”测试是指用少量的测试用例,发现被测试程序尽可能多的错误。

15.1 软件测试经过的步骤

单元测试->集成测试->确认测试->系统测试 15.2 测试与软件开发各阶段的关系

? 单元测试对程序中每一个程序单元进行测试,检查各个模块是否都实现规定的功能,从而发现模块在编码中或算法中的错误,该阶段涉及编码和详细设计文档。

? 集成测试是为了检查与设计相关的软件体系结构的有关问题,也就是检查概要设计是否合理有效。 ? 确认测试主要是检查已实现的软件是否满足需求规格说明书中已确定了的各种需求。

? 系统测试是把已确认的软件与其他系统元素(如硬件,其他支持软件、数据、人工等)结合在一起进行测试,以确定软件是否可以支付使用。 15.3 白盒测试

白盒测试又称为结构测试。可以把程序看成装在一个透明盒子里,测试者(一般为编程者)完全知道程序的结构和处理算法。

共42页 第20页

2010年软件设计师考试复习资料 (42页完美打印版)

按照程序内部逻辑设计测试用例,检测程序中的主要执行通路是否能按预定要求正常工作。

白盒测试多用于单元测试阶段。逻辑覆盖是主要的白盒测试技术。白盒测试时,确定测试数据应根据程序的内部逻辑和指定的覆盖方式。采用以下几种逻辑覆盖标准: ? 语句覆盖 ? 判定覆盖 ? 条件覆盖

? 判定/条件覆盖 ? 条件组合覆盖 ? 路径覆盖

满足条件组合覆盖测试用例,也一定满足判定条件覆盖。因此,条件组合覆盖是上述五种覆盖标准中最强的一种。 2006年下半年: ? 给定C语句程序

int foo(int x,int y,int d) {

if(x != 0) {

if(y==0)d=d/x; else d=d/(x*y);

}else{

if(y==0)d=0; else d=d/y; }

return d; }

当用路径覆盖法测试时,至少需要设计(31)个测试用例。 (31) A. 3 B.4 C. 5 D.8 2007年下半年:

● 对于如下的程序流程,当采用语句覆盖法设计测试案例时,至少需要设计 (34) 个测试案例。

输入X和Y否Y = Y + XX > 0是Y = Y - X否Y > 0是X = -1X = 1

(34)A. 1 B. 2 C. 3 D. 4 15.4 黑盒测试

黑盒测试,又称为功能测试。把软件看做是一个不透明的黑盒子,完全不考虑(或不了解)软件内部结构和处理算法,它只检测软件功能是否能按照软件需求说明书的要求正常使用,软件是否能适当的接受输入数据并产生正确的输出信息,软件运行过程中能否保持外部信息(例如文件和数据库)的完整性等。

常用的黑盒测试技术包括等价类划分,边值分析、错误推测和因果图等。其中等价类划分和边界值分析法方法最常用。如果两者结合使用,更有可能发现软件中的错误。

共42页 第21页

2010年软件设计师考试复习资料 (42页完美打印版)

15.4灰盒测试

灰盒测试介于白盒测试和黑盒测试之间,它把软件看做是一个半透明的灰盒子,结合考虑软件的内部结构和外部功能设计测试用例 15.5 回归测试

纠正了程序中的错误之后,选择部分或全部原先已测试过的测试用例,对修改后程序重新测试以验证对软件修改后有没有引出新的错误,称为回归测试。 15.6 单元测试

单元测试(Unit testing )也称为模块测试或结构测试,通常可放在编程阶段(实现阶段),主要采用逻辑覆盖技术,由程序员对自己编写的模块自行测试,检查模块是否能实现了详细设计说明书中规定的功能和算法。

单元测试主要发现编程和详细设计中产生的错误。

测试一个模块时需要为该模块编写一个驱动模块和若干个桩(stub)模块。顶层模块测试时不需要驱动模块,底层模块测试时不需要桩模块。

在进行单元测试时,常用的方法是白盒测试(采用逻辑覆盖的测试技术),辅之以黑盒测试。 15.7集成测试

集成测试(integration testing)也称为组装测试,在单元测试的基础之上,把所有的模块组装成一个系统进行测试。主要测试设计阶段产生的错误,集成测试计划应该在概要设计阶段制定。 ? 非渐增式集成测试

? 首先将每个模块分别进行单元测试,再把所有的模块组装成一个完整的系统进行测试。目前在进行集成测试时已普遍采用渐增式集成。 ? 渐增式集成测试

又可以分为自顶向下集成和自底向上集成。自顶向下集成先测试上层模块,再测试下层模块,由于测试下层模块时上层模块已经测试过,所以不必要另外编写驱动模块。自底向上集成,先测试下层模块,再测试上层模块同样。

顶层模块测试时不需要驱动模块,底层模块测试时不需要桩模块。

软件的集成测试最好由不属于该软件开发组的软件设计人员承担,以提高集成测试的效果。 ? 三明治测试

从系统的三个角往中间包围测试的方法。 15.8 确认测试

在系统验收测试中,验证测试是在模拟的环境中进行强度测试的基础上进行,主要依据软件需求说明书检测软件的功能,性能及其他特征是否与用户的要求一致,而确认测试是在一个实际环境中使用真实数据运行系统。

确认测试计划应该在需求分析阶段制定。 ? α测试

由用户在开发者的场所进行,并且在开发者的指导下进行测试。开发者负责纪录发现的错误和使用中遇到的问题,也就是说α测试是在受控的环境中进行的。

? β测试是在一个或多个用户的现场由该软件的最终用户实施的,开发者通常不在现场,用户负责记录发现的错误和使用中遇到的问题并把这些问题报告给开发者。也就是说,β测试是在受控的环境中进行的。经过确认测试之后的软件通常就可以交付使用了。 15.9 系统测试

系统测试是将已经确认的软件、计算机硬件、外设和网络等其他因素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方。

包括以下的测试:

? 恢复测试:监测系统的容错能力

? 安全性测试:监测系统的安全机制、保密措施是否完善等防范能力。 ? 强度测试:测试软件的异常情况的处理能力。

? 性能测试:监测系统系统是否满足系统设计方案说明书对性能的要求。

? 可靠性测试:从平均失效间隔是否超过了规定的时限,因故障而停机的时间在一年中不应超过的时间来进行检测。 ? 安装测试:监测软件在安装过程中是否有错误、是否容易操作等。

共42页 第22页

2010年软件设计师考试复习资料 (42页完美打印版)

注意:系统测试计划在需求分析阶段制定。 2006年下半年:

●软件的测试通常分为单元测试、组装测试、确认测试、系统测试四个阶段进行。(32)属于确认测试阶段的活动。 (32)A.设计评审 B.代码审查 C.结构测试 D.可靠性测试 十六.软件工程标准和软件文档

GB/T8566-2001,GB/T12504-1990,GB/T12505-1990是我国现阶段最重要的三个软件开发规范标准。

国家标准局1988年1月批准并发布的《GB/T8567-1988计算机软件产品开发文件编制指南》规定在一项软件开发过程中应该产生14中文件

可行性研究报告 操作手册 项目开发计划 模块开发卷宗 软件需求说明书 测试计划 数据要求说明书 测试分析报告 概要设计说明书 开发进度月报 详细设计说明书 项目开发总结报告 数据库设计说明书 软件运行和维护基础知识用户手册

管理人员主要使用:项目开发计划、可行性研究报告、模块开发卷宗、开发进度月报、项目开发总结报告。 开发人员:项目开发计划、可行性研究报告、软件需求说明书、数据要求说明书、数据库设计说明书、概要设计说明书、详细设计说明书、测试计划、测试分析报告。

维护人员:概要设计说明书、详细设计说明书、数据库设计说明书、模块开发卷宗、测试分析报告、维护报告。 用户:用户手册、操作手册。

2006年下半年:

●(29)详细描述软件的功能、性能和用户界面,以使用户了解如何使用软件。

(29)A.概要设计说明书 B.详细设计说明书 C.用户手册 D.用户需求说明书 十七. 软件维护

用于软件维护的花费约为整个软件生命周期花费的75%(或60%~80%之间)而且还在逐年上升。 17.1 软件维护类型

根据引起软件维护的原因,软件维护可分为以下四种类型

(1) 改正性维护: 使用过程中发现了隐蔽的错误后,为了诊断和改正这些隐蔽错误而修改软件的活动 (2)适应性维护: 为了适应环境的变化而修改软件的活动

(3)完善性维护: 为了扩充或完善原有软件的功能或性能而修改软件的活动。

(4) 预防性维护: 预防性维护是指为了提高软件的可维护性和可靠性,为未来的进一步改进打下基础而修改软件的活动。

2006年下半年:

● 各类软件维护活动中,(30)维护占整个维护工作的比重最大。 (30) A.完善性 B.改正性 C.适应性 D.预防性 17.2 软件的可维护性

通常影响软件可维护性的因素有可理解性,可测试性和可修改性。 (1)可理解性

可理解性是指维护人员理解软件的结构,接口,功能和内部过程的难易程度。采用良好的编程风格有助于提高软件的易理解性。

(2)可测试性: 可测试性是指测试和诊断软件错误的难易程度。 (3)可修改性 : 可修改性是指修改软件的难易程度。 怎样提高软件的可维护性?

共42页 第23页

2010年软件设计师考试复习资料 (42页完美打印版)

? 在软件生命周期的各个阶段都必须充分考虑维护问题。

? 结构化设计的几条主要原则,如模块化,信息隐藏,高内聚,低耦合等,对于提高软件的可理解性,可测试性和可修改性也都有重要的作用。

? 书写详细正确的文档,书写源文件的内部注解,使用良好的编程语言,具有良好的程序设计风格,也有助于提高软件的可理解性。

? 使用先进的测试工具,保存以前的测试过程和测试用例,则有助于提高软件的可测试性。 十八.软件的可靠性

在给定的时间内,在给定的环境条件下系统完成所指定工作的概率。 衡量的标准是:平均失效等待时间MTTF和平均失效间隔时间MTBF。

软件工程练习题

1.软件测试在软件生命周期中横跨两个阶段,单元测试(模块测试)通常在__A__阶段完成。单元测试主要采用__B__技术,一般由__C__完成。测试一个模块时需要为该模块编写一个驱动模块和若干个__D__。渐进式集成测试是将单元测试和集成测试合并到一起,__E__集成测试中不必编写驱动模块。

A ①设计 ②编程 ③测试 ④维护

B ①逻辑覆盖 ②因果图 ③等价类划分 ④边值分析 C ①课题负责人 ②编程者本人 ③专业测试人员 ④用户 D ①被测模块 ②上层模块 ③桩模块 ④等价模块 E ①自顶向下 ②自底向上 ③双向的 ④反向的

共42页 第24页

2010年软件设计师考试复习资料 (42页完美打印版)

2.版本控制包括版本管理、系统发行、版本标志和发行管理。其中,__A__是指对系统不同版本进行标志和跟踪的过程,__B__是指系统发行策略的制定和执行。

A~B①版本管理 ②系统发行 ③版本标志 ④发行管理

3.软件质量保证的主要困难在以下几个方面:软件开发管理人员更关心项目开发的 1 ,而没有太高的热情去控制开发的 2 ;开发人员的习惯一旦形成,难以改变,他们的行为往往 3 ;不同开发人员对问题的不同认识 4 ;项目组中骨干开发人员的 5 等。 1.A.成本和进度 B.规范化 C.质量 2.A.费用 B.时间 C.效率

D.性能价格比

D.应该信任

D.可频繁交流 D.认证资格

D.质量

3.A.易于控制 B.难于控制 C.无需控制 5.A.密切合作 B.难于独立 C.频繁流失

4.A.易于沟通 B.难于及时消除 C.应该保留

4.用来辅助软件维护过程中的活动的软件称为软件维护工具。其中,用来存储、更新、恢复和管理软件版本的工具为 A 工具,用来对软件开发过程中形成的文档进行分析的工具称为 B 工具,用来维护软件项目开发信息的工具称为 C 工具,用来辅助软件人员进行逆向工程活动的工具称为 D 工具,用来支持重构一个功能和性能更为完善的软件系统的工具称为 E 工具。

A~E:1.再工程工具 2.软件配置工具 3.版本控制工具 4.集成工具 5.开发信息库工具 6.项目管理工具 7.软件评价工具 8.逆向工程工具 9.静态分析工具 10.文档分析工具

5.确定算法是解决问题的关键步骤之一。算法的计算工作量大小和实现算法所需的存储单元多少,分别称为计算的_A_和_B_。编写程序时,_C_和_D_是应采纳的原则之一。 _E_是调试程序的主要工作之一。 供选择的答案

A、 B:①可实现性 ②时间复杂度 ③空间复杂度 ④困难度 ⑤高效性 ⑥计算有效性 C: ①程序的结构化 ②程序越短越好 ③尽可能节省存储单元 ④尽可能减少注解行

D: ①使用有实际意义的名字 ②使用长度短而无实际含义的名字③表达式中尽量少用括号④尽量使用化简了的逻辑表达式 E: ①调度 ②证明程序正确 ③人员安排 ④排错

6.软件测试的目的是__(16)__,通常可分为白盒测试和黑盒测试。白盒测试是根据程序的__(17)__来设计测试用例,黑盒测试是根据软件的规格说明来设计测试用例。常用的黑盒测试方法有边值分析、等价类划分、错误猜测、因果图等。其中,__(18)__经常与其它方法结合起来使用。软件测试的步骤主要有单元测试、集成测试和确认测试。如果一个软件作为产品被许多客户使用的话,在确认测试时通常要经过α测试和β测试的过程。其中,α测试是__(19)__进行的一种测试。在软件设计和编码时,采取 __(20)__等措施都有利于提高软件的可测试性。

(16):A.发现程序中的所有错误 B.尽可能多地发现程序中的错误 C.证明程序是正确的 D.证明程序做了应做的事 (17):A.功能 B.性能 C.内部逻辑 D.内部数据 (18):A.边值分析 B.等价类划分 C.错误猜测 D.因果图 (19):A.在开发者现场由开发方的非本项目开发人员 B.在开发者现场由用户

C.在用户现场由开发方的非本项目开人员 D.在用户现场由用户使

(20):A.不使用标准文本以外的语句,书写详细正确的文档 B.不使用标准文本以外的语句,采用良好的程序结构

C.书写详细正确的文档,信息隐蔽 D.书写详细正确的文档,采用良好的程序结构 7.软件是一种 (2) 的产品。为了软件产业的健康发展,应对软件产品的 (3) 进行保护。 (2) A、易复制 B、易损坏 C、易开发 D、易使用 (3) A、 技术 B、版权 C、开发 D、使用说明 8.白盒测试方法一般适合用于 (21) 测试。

(21) A、单元 B、系统 C、集成 D、确认

9.瀑布模型(Waterfall Model)突出的缺点是不适应 (22) 的变动。 (22) A、算法 B、平台 C、程序语言 D、用户需求 10.在数据流图中,

表示 (23) ,

表示 (24) 。

(23) A、加工 B、外部实体 C、数据流 D、存储 (24) A、加工 B、外部实体 C、数据流 D、存储 11.结构化分析方法(SA)的一个重要指导思想是 (25) 。

共42页 第25页

2010年软件设计师考试复习资料 (42页完美打印版)

(25) A.自顶向下,逐步抽象 B.自底向上,逐步抽象 C.自顶向下,逐步分解 D.自底向上,逐步分解 12.软件从一个计算机系统转换到另一个计算机系统运行的难易程度是指软件(26)。 在规定的条件下和规定的时间间隔内,软件实现其规定功能的概率称为(27)。

(26) A、兼容性 B、可移植性 C、可转换性 D、可接近性 (27) A、可使用性 B、可接近性 C、可靠性 D、稳定性 13.Jackson设计方法是由英国的M.Jackson提出的,它是一种面向 (28) 的软件设计方法。 (28) A. 对象 B.数据流 C.数据结构 D.控制结构

14.模块的控制范围包括它本身及它所有的从属模块,模块的作用范围是指模块内一个判定的作用范围,凡是受到这个判定影响的所有模块都属于这个判定的作用范围,理想的情况是__(27)__。

(27)A.模块的作用范围应在控制范围之内 B.模块的控制范围应在作用范围之内

C.模块的作用范围与控制范围交叉 D.模块的作用范围与控制范围分离 15.关于模块设计的原则,以下叙述中正确的是 (28)

(28)A.模块的内聚性高,模块之间的耦合度高 B.模块的内聚性高,模块之间的耦合度低

C.模块的内聚性低,模块之间的耦合度高 D.模块的内聚性低,模块之间的耦合度低

16.软件的用户界面作为人机接口起着越来越重要的作用,用户界面的___(29)___是用户界面设计中最重要的也是最基本的目标。 (29)A.灵活性

B.风格多样性 C.美观性

D.易操作性

17.软件测试的目的是__(30)__。在进行单元测试时,常用的方法是__(31)__· (30)A.证明软件系统中存在错误 B.找出软件系统中存在的所有错误

C.尽可能多地发现软件系统中的错误和缺陷 D.证明软件的正确性

(31)A.采用白盒测试,辅之以黑盒测试 B.采用黑盒测试,辅之以白盒测试 C.只使用白盒测 D.只使用黑盒测试 18.原型化方法是一种动态定义需求的方法,__(32)___不具有原型化方法的特征。 (32)A.简化项目管理

B.尽快建立初步需求 C.加强用户参与和决策 D.提供严格定义的文档

19.系统软件是__(25)__的软件.

(25)A.向应用软件提供系统调用等服务 B.与具体硬件逻辑功能无关 C.在应用软件基础上开发 D.并不具体提供人机界面 20.软件的复杂性与许多因素有关。__(32)__不属于软件的复杂性参数。

(32)A.源程序的代码行数 B.程序的结构 C.算法的难易程度 D.程序中注释的多少 21.在结构化分析与设计方法中,为了在需求改变时对软件的影响较小,应该使__(33)__。

(33)A.程序结构与问题结构相对应 B.程序结构与问题结构相独立 C.程序结构与用户界面相对应 D.程序结构与用户界面相独立 22.系统的硬件环境、软件环境和数据环境发生变化时需要对系统进行维护,这种维护属于__(34)__。 (34)A.校正性维护 B.适应性维护 C.完善性维护 D.预防性维护

23.软件开发环境是支持软件产品开发的软件系统,它由_(49)_和环境集成机制构成,环境集成机制包括数据集成、控制集成和界面集成。 (49)A.软件工具集 B.软件测试工具集 C.软件管理工具集 D.软件设计工具集 24.源程序清单是在软件生存周期的_(50)_阶段产生的文档。

(50)A.软件概要设计 B.编码 C.软件详细设计 D.测试 25.黑盒测试也称为功能测试。黑盒测试不能发现_(51)_。

(51)A.终止性错误 B.输入是否正确接收 C.界面是否有误 D.是否存在冗余代码 26.通常,在软件的输入输出设计中,合理的要求是:_(52)_。

(52)A.数据尽量由用户来输入,以便给用户提 供更大的自主性 B.输入过程应尽量容易,以减少错误的发生

C.不能在输入过程中检验数据的正确 D.在输入过程中,为了不干扰用户,应尽量避免提示信息

27.一般地,可以将软件开发的生命周期划分为软件项目计划、 (50) 、软件设计、编码、测试和运行/维护6个阶段。 (50)A、可行性分析 B、初始调查 C、需求分析与定义 D、问题分析

28.软件的 (51) 是指软件从一种计算机系统转换到另一种计算机系统运行的难易程度。在规定的条件下和规定的时间间隔内,软件实现其规定功能的概率称为 (52) 。

(51)A、兼容性 B、可移植性 C、可转换性 D、可扩展性(52)A、可扩展性 B、可接近性 C、可靠性 D、稳定性 29.以下关于程序测试的叙述,正确的是 (55) 。

(55)A、程序测试的目的是为了证明程序的正确性 B、白盒测试也称为功能测试 C、黑盒测试也称为结构测试 D、程序测试要注意检验程序是否有多余的功能

共42页 第26页

2010年软件设计师考试复习资料 (42页完美打印版)

30.数据流图包含的成分有__(51)__。

(51)A.关系、实体和属性 B.数据流、加工和数据存储 C.数据流、数据源和数据实体 D.数据流、属性、数据存储和加工 31.如果用户对系统的目标不是很清楚,需求难以定义,这时最好使用__(53)__进行系统开发。 (53)A.原型 B.瀑布模型 C.V-模型 D.螺旋模型

32.在软件开发的各个阶段中,对软件开发成败影响最大的是__(54)__。 (54) A.需求分析 B.概要设计 C.详细设计 D.编码 33.系统测试计划应该在软件开发的__(55)__阶段制定。

(55) A.需求分析 B.概要设计 C.详细设计 D.系统测试

34.从下面有关原型化方法的叙述,选出5条正确的叙述,并按编号依次填写在A~E栏内。 ① 快速原型方法是一种企图克服传统软件周期模型缺点的开发方法。

② 在用户的数据资源没有得到很好地组织和管理的时候,应该使用原型化方法。 ③ 在用户没有明确的肯定其需求时,应该使用原型化方法。

④ 在用户不希望把自己的时间花在软件开发过程的时候,应该使用原型化方法。 ⑤ 使用原型化方法时应使用第三代编程语言。 ⑥ 原型化方法加强了开发过程中用户的参与和决策。 ⑺ 原型化方法大致可分为三类:抛弃式、演化式,递增式。 ⑧ 原型化方法大致可分为演化式和递增式 ⑨ 采用原型化方法时,软件的开发成本较高。

⑩ 采用原型化方法时,关键的原因是建立原型的速度,而不是原型运行的效率。 35.模块内聚度用于衡量模块内部各成分之间彼此结合的紧密程度。

1、一组语句在程序的多处出现,为了节省内存空间把这些语句放在一个模块中,该模块的内聚度是 __A__ 的。 2、将几个逻辑上相似的成分放在一个模块中,该模块的内聚度是 __B__ 的。 3、模块中所有成分引用共同的数据,该模块的内聚度是 __C__ 的。

4、模块内的某成分的输出是另一些成分的输入,该模块的内聚度是 __D__ 的。

5、模块中所有成分结合起来完成一项任务,该模块的内聚度是 __E__ 的。它具有简明的外部界面,由它构成的软件易于理解、测

试和维护。 供选择的答案

A~E:① 功能性② 顺序性③ 通信性④ 过程性⑤ 偶然性⑥ 瞬时性⑦ 逻辑性 1991年试题 试题5

从供选择的答案中,选出应填入__n__ 内的正确答案,把编号写在答卷的对应栏内。

软件设计中划分程序模块通常遵循的原则是要使各模块间的耦合性尽可能 __A__。三种可能的模块耦合是: __B__。例如,一个模块直接引用另一模块中的数据。 __C__。例如,一个模块把开关量作为参数传送给另一模块。 __D__。例如,一个模块把一个数值量做为参数传送给另一模块。 其中 __E__ 的耦合性最强。

供选择的答案

B~E:① 公共耦台② 数据耦合③ 逻辑耦合④ 外部耦合⑤ 内容耦合⑥ 控制耦合 1992年试题 试题3

Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向 __A__ 的设计方法,主要适用于规模适中的 __B__ 系统的开发,其基本步骤依次是 __C__ 、 __D__ 、__E__ 。 供选择的答案

A: ①对象 ②数据流 ③数据结构 ④控制结构 B: ①数据处理②文字处理 ③实时控制 ④科学计算 C~E: ①建立数据结构②列出基本操作③建立程序结构④建立控制结构⑤建立对象 1993年试题

共42页 第27页

2010年软件设计师考试复习资料 (42页完美打印版)

试题4

结构化设计方法在软件开发中用于__A__ ,它是一种面向 __B__ 的设计方法。该方法使用的图形工具是 __C__ ,__C__ 中矩形表示_D__ 。如果两矩形之间有直线相连,表示它们存在 __E__ 关系。 供选择的答案

A: ① 测试用例设计 ② 概要设计 ③ 程序设计 ④ 详细设计 B: ① 对象 ② 数据结构 ③ 数据流 ④ 控制流 C: ① 程序结构图 ② 数据流程图 ③ 程序流程图 ④ 实体联系图

D: ① 数据 ② 加工 ③ 模块 ④ 存贮 E: ① 链接 ② 调用 ③ 并列 ④ 顺序执行 1994年试题 试题5

国家标准《计算机软件产品开发文件编制指南GB 8567—88》中规定,在一项软件开发过程中,一般地说应该产生十四种文件,其中管理人员主要使用的有[__A__]、[__B__]、[__C__]、 开发进度月报、项目开发总结报告。开发人员主要使用的有[__A__]、[__B__]、[__D__]、数据要求说明书、概要设计说明书、详细设计说明书、数据库设计说明书、测试计划和[__E__]。维护人员主要使用的有设计说明书、[__E__]和[__C__]。 供选择的答案

A~E: ①软件需求说明书 ②项目开发计划 ③可行性研究报告 ④模块开发卷宗 ⑤测试分析报告 ⑥操作手册⑦用户手册

1996年试题 试题2

在软件工程的设计阶段中,有三种常用的设计方法:结构化设计(SD)方法、Jackson 方法和 Parnas 方法。SD 方法侧重于__A__;Jackson 方法则是__B__;从 70 年代中期到90年代早期,__C__是最为常用的设计方法。 供选择的答案:

A~B:①使用对象、类和继承

②由数据结构导出模块结构

③模块要相对独立,且功能单一,使块间联系弱,块内联系强

④将可能引起变化的因素隐藏在有关模块内部,使这些因素变化时的影响范围受到限制 ⑤用数据流图表示系统的分解,且用数据词典和小说明分别表示数据和加工的含义

⑥自顶向下、逐步细化,采用顺序、选择和循环三种基本结构,以及限制 goto 语句的使用,设计出可靠的和易维护的软件。 C:① SD ② Jackson ③ Parnas ④面向对象

试题7

软件测试的目的是__A__。通常__B__是在代码编写阶段可进行的测试,它是整个测试工作的基础。

逻辑覆盖标准主要用于__C__。它主要包括条件覆盖、条件组合(多重条件)覆盖、判定覆盖、条件及判定覆盖、语句覆盖、路径覆盖等几种,其中除路径覆盖外最弱的覆盖标准是__D__,最强的覆盖标准是__E__。 供选择的答案:

A:①表明软件的正确性 ②评价软件质量 ③尽可能发现软件中错误 ④判定软件是否合格 B:①系统测试 ②安装测试 ③验收测试 ④单元测试

C:①黑盒测试方法 ②白盒测试方法 ③灰盒测试方法 ④软件验证方法 D:①条件覆盖 ②条件组合覆盖 ③判定覆盖 ④条件及判定覆盖 ⑤语句覆盖 E:①条件覆盖 ②条件组合覆盖 ③判定覆盖 ④条件及判定覆盖 ⑤语句覆盖 97年试题 试题6

在设计测试用例时,__A__是用得最多的一种黑盒测试方法。在黑盒测试方法中,等价类划分方法设计测试用例的步骤是: 根据输入条件把数目极多的输入数据划分成若干个有效等价类和若干个无效等价类;

设计一个测试用例,使其覆盖__B__尚未被覆盖的有效等价类,重复这一步,直至所有有效等价均被覆盖。 设计一个测试用例,使其覆盖__C__尚未被覆盖的无效等价类,重复这一步,直至所有无效等价均被覆盖。 因果图方法是根据__D__之间的因果关系来设计测试用例的。

在实际应用中,一旦纠正了程序中的错误后,还应选择部分或全部原先已测试过的测试用例,对修改后的程序重新测试,这种测试称

共42页 第28页

2010年软件设计师考试复习资料 (42页完美打印版)

为--__E__。 供选择的答案

A: ① 等价类划分 ② 边值分析 ③ 因果图 ④ 判定表

B: ① 1WH ② 7个左右 ③ 一半 ④ 尽可能少的 ⑤ 尽可能多的 ⑥ 全部 C: ① 1WH ② 7个左右 ③ 一半 ④ 尽可能少的 ⑤ 尽可能多的 ⑥ 全部 D: ① 输入与输出 ② 设计与实现 ③ 条件与结果 ④ 主程序与子程序 E: ① 验收测试 ② 强试测试 ③ 系统测试 ④ 回归测试 98年试题 试题1:

设计高质量的软件是软件设计追求的重要目标。可移植性、可维护性、可靠性、效率、可理解性和可使用性等都是评价软件质量的重要方面。 可移植性是反映出把一个原先在某种硬件或软件环境下正常运行的软件移植到另一个硬件或软件环境下,使该软件也能正确地运行的难易程序。为了提高软件的可移植性,应注意提高软件的_A_。

可维护性通常包括_B_。通常认为,软件维护工作包括改正性维护、_C_维护和_D_维护。其中_C_维护则是了为扩充软件的功能或提高原有软件的性能而进行的维护活动。

_E_是指当系统万一遇到未预料的情况时,能够按照预定的方式作合适的处理。 供选择的答案

A: ①使用方便性 ②简洁性 ③可靠性 ④设备不依赖性

B: ①可用性和可理解性 ②可修改性、数据独立性和数据一致性 ③可测试性和稳定性 ④可理解性、可修改性和可测试性 C: ①功能性 ②扩展性 ③合理性 ④完善性 ⑤合法性 ⑥适应性 D: ①功能性 ②扩展性 ③合理性 ④完善性 ⑤合法性 ⑥适应性 E: ①可用性 ②正确性 ③稳定性 ④健壮性 99年试题 试题5 :

软件设计中划分模块的一个准则是_A_。两个模块之间的耦合方式中,_B_耦合的耦合度最高,_C_耦合的耦合度最低。一个模块内部的内聚种类中_D_内聚的内聚度最高,_E_内聚的内聚度最低。 供选择的答案:

A:①低内聚低耦合 ②低内聚高耦合 ③高内聚低耦合 ④高内聚高耦合 B:①数据 ②非直接 ③控制 ④内容 C:①数据 ②非直接 ③控制 ④内容 D:①偶然 ②逻辑 ③功能 ④过程 E:①偶然 ②逻辑 ③功能 ④过程 试题6

OMT是一种对象建模技术,它定义了三种模型,它们分别是_A_模型,_B_模型,和_C_模型,其中,_A_模型描述了系统中对象的表态结构,以及对象之间的联系、_B_模型描述系统中与时间和操作顺序有关的系统特征,表示瞬时行为上的系统的“状态”特征,通常可用_D_来表示;_C_模型描述了与值的变换有关的系统特征,通常可用_E_来表示。 供选择的答案:

A:①对象 ②功能 ③ER ④静态 B:①控制 ②时序 ③动态 ④实时 C:①对象 ②功能 ③变换 ④计算 D:①类图 ②状态图 ③对象图 ④数据流图 E:①类图 ②状态图 ③对象图 ④数据流图 2000年试题 试题5

在软件开发过程中常用图作为描述工具。DFD就是面向_A_分析方法的描述工具。在一套分层DFD中,如果某一张图中有N个加工(process),则这张图允许有_B_张子图。在一张DFD图中,任意两个加工之间_C_。在画分层DFD时,应注意保持_D_之间的平衡。DFD中从系统的输入流到系统的输出流的一连串连续变换形成一种信息流,这种信息流可分为_E_两大类。 供选择的答案: A: ①数据结构 B: ①0

②数据流 ②1

③对象 ③1~N

④构件(component)

④0~N

C: ①有且仅有一条数据流 ②至少有一条数据流 ③可以有0或多条名字互不相同的数据流

共42页 第29页

2010年软件设计师考试复习资料 (42页完美打印版)

④可以有0或多条数据流,但允许其中有若干条名字相同的数据流 D: ①父图与子图 试题6

软件的易维护性是指理解、改正、改进软件的难易度。通常影响软件易维护性的因素有易理解性、易修改性和_A_。在软件的开发过程中往往采取各种措施来提高软件的易维护性。如采用_B_有助于提高软件的易理解性;_C_有助于提高软件的易修改性。

在软件质量特性中,_D_是指在规定的一段时间和条件下,与软件维持其性能水平的能力有关的一组属性;_E_是指防止对程序及数据的非授权访问的能力。 供选择的答案: A: ①易使用性 B: ①增强健壮性 C: ①高效的算法 D: ①正确性 E: ①安全性 2001年试题

●用来辅助软件开发、运行、维护、管理、支持等过程中的活动的软件称为软件开发工具,通常也称为__(6)__工具。 (6): A.CAD B.CAI C.CAM D.CASE

●使用软件开发工具有助于提高软件的开发、维护和管理的效率。集成型软件开发环境通常由工具集和环境集成机制组成。这种环境应具有__(7)__。环境集成机制主要有数据集成机制、控制集成机制和界面集成机制。

(7):A.开放性和可剪裁性 B.开放性和不可剪裁性 C.封闭性和可剪裁性 D.封闭性和不可剪裁性

●数据集成机制为环境中的工具提供统一的__(8)__;控制集成机制为__(9)__提供支持。界面集成机制使得环境中的所有工具具有(10)__。 (8):A.数据类型 B.数据模式 C.数据接口规范 D.数据仓库

(9):A.使各工具具有统一的控制结构 B.备工具之间的通信、切换、调度和协同工作

C.使备工具具有统一的控制接口 D.各工具之间的同步开发

(10):A.同一个界面 B.相同的图标和图标的含义 C.统一的界面风格和操作方式 D.相同个数的窗口和菜单项 ●软件开发模型用于指导软件的开发。演化模型是在快速开发一个__(21)__的基础上,逐步演化成最终的软件。 (21): A.模块 B.运行平台 C.原型 D.主程序 ●螺旋模型综合了__(22)__的优点,并增加了__(23)__。

(22):A.瀑布模型和演化模型 B.瀑布模型和喷泉模型C.演化模型和喷泉模型 D.原型和喷泉模型 (23):A.质量评价 B.进度控制 C.版本控制 D.风险分析

●喷泉模型描述的是面向__(24)__的开发过程,反映了该开发过程的__(25)__特征。 (24):A.数据流 B.数据结构 C.对象 D.构件(component)

(25):A.迭代和有间隙 B.迭代和无间隙 C.无迭代和有间隙 D.无迭代和无间隙 2002年试题

●概要设计是软件系统结构的总体设计,以下选项中不属于概要设计的是__(25)__。

(25) A.把软件划分成模块 B.确定模块之间的调用关系 C.确定各个模块的功能 D.设计每个模块的伪代码

●如果一个软件是给许多客户使用的,大多数软件厂商要使用几种测试过程来发现那些可能只有最终用户才能发现的错误,__(26)__测试是由软件的最终用户在一个或多个用户实际使用环境下来进行的。__(27)__测试是由一个用户在开发者的场所来进行的.测试的目的是寻找错误的原因并改正之。

(26) A. alpha B. beta C. gamma D. delta (27) A. alpha B. beta C. gamma D. delta ●在下列说法中,__(28)__是造成软件危机的主要原因。

① 用户使用不当 ② 软件本身特点 ③ 硬件不可靠 ④ 对软件的错误认识 ⑤ 缺乏好的开发方法和手段 ⑥ 开发效率低 (28) A.①③⑥ B.①②④ C.③⑤⑥ D.②⑤⑥

●原型化(ProtoYPins)方法是一类动态定义需求的方法,__(29)__不是原型化方法所具有的特征.与结构化方法相比,原型化方法更需要__(30)__。衡量原型开发人员能力的重要标准是__(31)__。

共42页 第30页

②易恢复性

③易替换性

④易测试性

④高效的算法 ④身份认证 ④易使用性 ④容错性

②信息隐蔽原则 ②信息隐蔽原则

③良好的编程风格 ③增强健壮性

③可靠性

③灵活性

②同一父图的所有子图 ②变换流和事务流

③不同父图的所有子图 ③事务流和事件流

④同一子图的所有直接父图 ④事件流和控制流

E: ①控制流和变换流

②准确性 ②适应性

2010年软件设计师考试复习资料 (42页完美打印版)

(29) A. 提供严格定义的文档 B. 加快需求的确定 C. 简化项目管理 D. 加强用户参与和决策 (30) A. 熟练的开发人员 B. 完整的生命周期 C. 较长的开发时间 D. 明确的需求定义 (31) A. 丰富的编程技巧 B. 灵活使用开发工具 C. 很强的协调组织能力 D. 快速获取需求

●软件能力成熟度模型 CMM(CapabilityMaturityModel)描述和分析了软件过程能力的发展与改进的程度,确立了一个软件过程成熟程度的分级标准。在初始级,软件过程定义几乎处于无章法可循的状态,软件产品的成功往往依赖于个人的努力和机遇。

在__(32)__,已建立了基本的项目管理过程,可对成本、进度和功能特性进行跟踪。在。__(33)__,用于软件管理与工程两方面的软件过程均已文档化、标准化,并形成了整个软件组织的标准软件过程。在已管理级,对软件过程和产品质量有详细的度量标准。

在__(34)__,通过对来自过程、新概念和新技术等方面的各种有用信息的定量分析,能够不断地、持续地对过程进行改进。 (32) A.可重复级 B.管理级 C.功能级 D.成本级 (33) A.标准级 B.已定义级 C.可重复级 D.优化级 (34) A.分析级 B.过程级 C.优化级 D.管理级 2003年试题

● 系统中模块的__(l)__不仅意味着作用于系统的小变动将导致行为上的小变化,也意味着规格说明的小变动将影响到一小部分模块。 (1) A. 可分解性 B. 保护性 C. 可理解性 D. 连续性

●软件开发的螺旋模型综合了瀑布模型和演化模型的优点,还增加了__(27)__。采用螺旋模型时,软件开发沿着螺线自内向外旋转,每转一圈都要对__(28)__ 进行识别和分析,并采取相应的对策。螺旋线第一圈的开始点可能是一个__(29)__ 。从第二圈开始,一个新产品开发项目开始了,新产品的演化沿着螺旋线进行若干次迭代,一直运转到软件生命期结束。

(27) A. 版本管理 B.可行性分析 C. 风险分析 D. 系统集成 (28) A.系统 B.计划 C. 风险 D.工程 (29) A.原型项目 B.概念项目 C. 改进项目 D风险项目

●关于程序模块优化的启发式规则有若干条,以下规则中不符合优化原则的是__(30)__。如果一个模块调用下层模块时传递一个数据结构,则这种耦合属于__(31)__。

(30)A.通过模块的合并和分解,降低模块的耦合度,提高模块的内聚性 B.提高上层模块的扇出,减少模块调用的层次

C.将模块的作用范围限制在模块的控制范围之内 D.降低模块之间接口的复杂性,避免“病态连接” (31)A.简单耦合 B.直接耦合 C.标记耦合 D.控制耦合

●软件设计包括四个既独立又相互联系的活动,分别为__(32)__、__(33)__、数据设计和过程设计。 (32)A.用户手册设计 B.语言设计 C.体系结构设计 D.文档设计 (33)A.文档设计 B.程序设计 C.实用性设计 D.接口设计

●系统论认为系统是“相互作用的多个元素的复合体”,系统具有多元性、相关性以及整体性,其中(35)是系统思想的核心。 (35)A.动态性 B.多元性 C.相关性 D.整体性

●美国卡内基—梅隆大学SEI提出的CMM模型将软件过程的成熟度分为5个等级,以下选项中,属于可管理级的特征是__(36)__。 (36)A.工作无序,项目进行过程中经常放弃当初的计划B.建立了项目级的管理制度 C.建立了企业级的管理制度D.软件过程中活动的生产率和质量是可度量的 2004年上半年试题

●当在软件工程的环境中考虑风险时,主要基于Charette提出的三个概念。以下选项中不属于这三个概念的是__(27)__。项目风险关系着项目计划的成败,__(28)__关系着软件的生存能力。在进行软件工程风险分析时,项目管理人员要进行四种风险评估活动,这四种活动是 (29) 以及确定风险估计的正确性。

(27)A.关心未来 B.关心变化 C.关心技术 D.关心选择 (28)A.资金风险 B.技术风险 C.商业风险 D.预算风险 (29) A.建立表示风险概率的尺度,描述风险引起的后果,估计风险影响的大小

B.建立表示风险概率的尺度,描述风险引起的后果,确定产生风险的原因 C.确定产生风险的原因,描述风险引起的后果,估计风险影响的大小 D.建立表示风险概率的尺度,确定产生风险的原因,估计风险影响的大小 ●软件的互操作性是指__(30)__。

(30)A.软件的可移植性 B.人机界面的可交互性C.连接一个系统和另一个系统所需的工作量D.多用户之间的可交互性 ●面向对象的测试可分为四个层次,按照由低到高的顺序,这四个层次是__(31)__。

(31)A.类层——模板层——系统层——算法层 B.算法层——类层二—模板层——系统层 C.算法层——模板层——类层——系统层 D.类层——系统层——模板层——算法层

共42页 第31页

2010年软件设计师考试复习资料 (42页完美打印版)

●在选择开发方法时,有些情况不适合使用原型法,以下选项中不能使用快速原型法的情况是__(32)__。

(32)A.系统的使用范围变化很大 B.系统的设计方案难以确定 C.用户的需求模糊不清 D.用户的数据资源缺乏组织和管理 ●以下选项中,最适合于用交互式计算机软件解决的问题是__(34)__。

(34)A.非结构化决策问题 B.半结构化决策问题 C.结构化决策问题 D.确定性问题

●CMU/SEI推出的__(35)__将软件组织的过程能力分为五个成熟度级别,每一个级别定义了一组过程能力目标,并描述了要达到这些目标应该具备的实践活动。

(35)A.CMM B.PSP C.TSP D.SSE-CMM 2004年下半年: ? ?

软件开发中的瀑布模型典型的刻画了软件生存周期的阶段划分,与其最相适应的软件开发方法是__(9)__。 下述任务中,不属于软件工程需求分析阶段的是__(10)__。

(9)A.构件化方法 B.结构化方法 C.面向对象方法 D.快速原型法

(10)A.分析软件系统的数据要求 B.确定软件系统的功能需求 C.确定软件系统的性能要求 D.确定软件系统的运行平台 解析:

需求分析和定义:用户、项目负责人和系统分析师确定系统必须做什么?但不关心具体怎么做?要确定系统的功能、性能、数据、界面等要求,从而确定系统的逻辑模型。 ? ? ?

软件设计的主要任务是设计软件的结构、过程和模块,其中软件结构设计的主要任务是要确定__(11)__。

系统测试是将软件系统与硬件、外设和网络等其他因素结合,对整个软件系统进行测试。__(12)__不是系统测试的内容。 (12)A.路径测试 B.可靠性测试 C.安装测试 D.安全测试 项目管理工具中,将网络方法用于工作计划安排的评审和检查的是__(13)__。 (13)A.Gantt图 B.PERT网图 C.因果分析图 D.流程图 解析: PERT网图

(11)A.模块间的操作细节 B.模块间的相似性 C.模块间的组成关系 D.模块的具体功能

? ? ? ?

在结构化分析方法中,数据字典是重要的文档。对加工的描述是数据字典的组成内容之一,常用的加工描述方法__(14)__。 (14)A.只有结构化语言 B.有结构化语言和判定树 C.有结构化语言、判定树、判定表 D.有判定树和判定表 CMM模型将软件过程的成熟度分为5个等级。在__(15)__使用定量分析来不断地改进和管理软件过程。 在面向数据流的设计方法中,一般把数据流图中的数据划分为__(16)__两种。 OMT定义了三种模型来描述系统。_(49)_可

(15)A.优化级 B.管理级 C.定义级 D.可重复级

(16) A.数据流和事务流 B.变换流和数据流 C.变换流和事务流 D.控制流和事务流 以用状态图来表示;_(50)_可以用数据流图来表示。_(51)_为上述两种模型提供了基本的框架。 (49)A.对象模型 B.功能模型 C.动态模型 D.类模型 (50)A.对象模型 B.功能模型 C.动态模型 D.类模型 (51)A.对象模型 B.功能模型 C.动态模型 D.类模型 2005年上半年(8分): ?

下列叙述中,与提高软件可移植性相关的是___(18)____

共42页 第32页

A.选择时间效率高的算法 B.尽可能减少注释 C.选择空间效率高的算法 D.尽量用高级语言编写系统中对效率要求不高的部分

2010年软件设计师考试复习资料 (42页完美打印版)

?

在系统转换的过程中,旧系统和新系统并行工作一段时间,再由新系统代替旧系统的策略称为___(19)____;在新系统全部正式运行前,一部分一部分地代替旧系统的策略称为_____(20)_____。 (19)A.直接转换 B.位置转换 C.分段转换 D.并行转换 (20)A.直接转换 B.位置转换 C.分段转换 D.并行转换 ?

下列要素中,不属于DFD的是___(21)____。当使用DFD对一个工资系统进行建模时,____(22)_____可以被认定为外部实体。 供选择的答案:

(21)A.加工 B.数据流 C.数据存储 D.联系 (22)A.接收工资单的银行 B.工资系统源代码程序 C.工资单 D.工资数据库的维护 ●在系统验收测试中,____(23)____ 是在一个模拟的环境下使用模拟数据运行系统;__(24)___是在一个实际环境中使用真实数据运行系统。

供选择的答案:

(23)A.验证测试 B.审计测试 C.确认测试 D.模块测试 (24)A.验证测试 B.审计测试 C.确认测试 D.模块测试

●采用瀑布模型进行系统开发的过程中,每个阶段都会产生不同的文档。以下关于产生这些文档的描述中,正确的是____(25)_____。 供选择的答案:

A.外部设计评审报告在概要设计阶段产生B.集成测试计划在程序设计阶段产生

C.系统计划和需求说明在详细设计阶段产生D.在进行编码的同时,独立地设计单元测试计划 2005年下半年(10分): ? ?

在开发一个系统时,如果用户对系统的目标是不很清楚,难以定义需求,这时最好使用 (6) 。 应该在 (7) 阶段制定系统测试计划。 (6)A. 原型法 B. 瀑布模型 C. V-模型 D. 螺旋模型 (7)A. 需求分析 B. 概要设计 C. 详细设计 D. 系统测试 ?

代码走查(code walkthrough)和代码审查(code inspection)是两种不同的代码评审方法,这两种方法的主要区别是_(14)____。 供选择的答案:

(14)A.在代码审查中由编写代码的程序员来组织讨论,而在代码走查中由高级管理人员来领导评审小组的活动 B.在代码审查中只检查代码中是否有错误,而在代码走查中还要检查程序与设计文档的一致性 C.在代码走查中只检查程序的正确性,而在代码审查中还要评审程序员的编程能力和工作业绩 D.代码审查是一种正式的评审活动,而代码走查的讨论过程是非正式的 ?

在软件项目管理中可以使用各种图形工具来辅助决策,下面对Gannt图的描述不正确的是_____(15)____。 供选择的答案:

A.Gannt图表现各个活动的顺序和它们之间的因果关系 B.Gannt图表现哪些活动可以并行进行 C.Gannt图表现了各个活动的起始时间 D.Gannt图表现了各个活动完成的进度 ?

一个故障已经被发现,而且也被排除了,为了检查修改是否引起了其它故障,这时应该进行___(19)___。 供选择的答案:

(19)A.程序走查 B.退化测试 C.软件评审 D.接收测试 ?

一个系统的模块结构图如下所示,用{×,×,×}表示这个系统的测试模块组合。下面的选项中___(20)___表示自顶向下的测试,____(21)___表示三明治式测试。

供选择的答案: (20)

A.{A}{A,B,C,D,E}{A,B,C,D,E,F,G,H,I,J,K}

B.{F}{G}{H}{I}{J}{K}{B,F,G}{C,H}{D,I,J}{E,K}{A,B,C,D,E,F,G,H,I,J,K}

共42页 第33页

2010年软件设计师考试复习资料 (42页完美打印版)

C.{K}{J}{I}{H}{G}{F}{B}{C}{D}{E}{A,B,C,D,E,F,G,H,I,J,K}

D.{A}{F}{G}{H}{I}{J}{K}{B,F,G}{C,H}{D,I,J}{E,K}{A,B,C,D,E,F,G,H,I,J,K} (21)

A.{A}{A,B,C,D,E}{A,B,C,D,E,F,G,H,I,J,K}

B.{F}{G}{H}{I}{J}{K}{B,F,G}{C,H}{D,I,J}{E,K}{A,B,C,D,E,F,G,H,I,J,K} C.{K}{J}{I}{H}{G}{F}{B}{C}{D}{E}{A,B,C,D,E,F,G,H,I,J,K }

D.{A}{F}{G}{H}{I}{J}{K}{B,F,G}{C,H}{D,I,J}{E,K}{ A,B,C,D,E,F,G,H,I,J,K } ?

以下内容中,___(42)___应写入操作手册。 供选择的答案:

(42)A.描述系统对各种输入数据的处理方法 B.说明系统升级时厂商提供的服务 C.描述系统处理过程的各个界面 D.说明系统各部分之间的接口关系 ●某软件工程项目各开发阶段工作量的比例如下表所示

需求分析 0.29 概要设计 0.13 详细设计 0.17 编码 0.10 测试 0.31 假设当前已处于编码阶段,3000行程序已完成了1200行,则该工程项目开发进度已完成的比例是____(43)___。 供选择的答案:

(43)A.29% B.45% C.59% D.63% ?

关于维护软件所需的成本,以下叙述正确的是___(45)___。 供选择的答案:

A.纠正外部和内部设计错误比纠正源代码错误需要更大的成本

B.与需求定义相比,源代码的文字量大得多,所以源代码的维护成本更高 C.用户文档需要经常更新,其维护成本超过了纠正设计错误的成本

D.需求定义的错误会在设计时被发现并纠正,因此需求定义纠错的成本小于源代码纠错的成本

2006年上半年:

? 使用LOC (lines of code)度量软件规模的优点是___(9)___。

(9)A. 容易计算 B. 与使用的编程语言相关 C. 与使用的开发模型有关 D. 在设计之前就可以计算出LOC ? 渐增式开发方法有利于___(4)___。

(4)A. 获取软件需求 B. 快速开发软件 C. 大型团队开发 D.商业软件开发

● 在软件项目管理中可以使用各种图形工具来辅助决策,下面对Gantt图的描述中,不正确的是___(15)___。 A.Gantt图表现了各个活动的持续时间 B.Gantt图表现了各个活动的起始时间 C.Gantt图反映了各个活动之间伪依赖关系 D.Gantt图表现了完成各个活动的进度 ● 模块的耦合度描述了___(16)___。

(16)A.模块内各种元素结合的程度 B.模块内多个功能之间的接口 C.模块之间公共数据的数量 D.模块之间相互关联的程度 ● 内聚是一种指标,表示一个模块___(17)___。

(17)A.代码优化的程度 B.代码功能的集中程度

C.完成任务时及时程度 D.为了与其他模块连接所要完成的工作量 ● 在软件项目开发过程中,评估软件项目风险时,___(18)___与风险无关。

A.高级管理人员是否正式承诺支持该项目 B.开发人员和用户是否充分理解系练的需求 C.最终用户是否同意部署已开发的系统 D.开发需要的资金是否能按时到位

●最主要的软件质量度量指标有正确性、可维护性、完整性和可用性,下面关于这些质量指标的描述中正确的是___(26)___。 A.软件维护的工作量比开发阶段的工作量小 B.正确性用每千行代码的故障(fault)数来度量

C.软件完整性是指软件功能与需求符合的程度 D.可用性与用户的操作效率和用户对软件的主观评价有关 解析:

1.软件开发阶段的工作量占软件生命周期工作量的40%,而维护阶段的工作量则占60%甚至更多。 2.软件的正确性是指软件完成所需功能的程度,尽管这种程度与每千行代码的故障数有关,但不完全等同。 3.软件的完整性指软件在安全方面抗攻击的能力。 4.软件可用姓用来度量软件的“用户有好性”。

● 正式的技术评审FTR(Formal Technical Review)是软件工程师组织的软件质量保证活动,下面关于FTR指导原则中不正确的是__(28)__。

共42页 第34页

2010年软件设计师考试复习资料 (42页完美打印版)

(28)A.评审产品,而不是评审生产者的能力 B.要有严格的评审计划,并遵守日程安排

C.对评审中出现的问题要充分讨论,以求彻底解决 D.限制参与者人数,并要求评审会之前做好准备

● 两个小组独立地测试同一个程序,第一组发现25个错误,第二组发现30个错误,在两个小组发现的错误中有15个是共同的,那么可以估计程序中的错误总数是 (29) 个。 (29)A.25 B.30 C.50 D.60 解析:

对于第一小组:发现了第二组发现的错误的15/30=50%; 对于第二小组:发现了第一组发现的错误的15/25=60%; 根据第一组发现的错误数和第一组的效率得到: 25/50%=50;

根据第二组发现的错误数和第二组的效率得到: 30/60%=50;

● 下面有关测试的说法正确的是___(30)__。

A.测试人员应该在软件开发结束后开始介入B.测试主要是软件开发人员的工作

C.要根据软件详细设计中设计的各种合理数据设计测试用例D.严格按照测试计划进行,避免测试的随意性 ● 在绘制数据流图时,要遵循的一个原则是父图与子图的平衡,所谓平衡是指___(31)___。 (31)A.父图和子图都不得改变数据流的性质 B.子图不改变父图数据流的—致性

C.父图的输入/输出数据流与子图的输入/输出数据流一致 D.子图的输出数据流完全由父图的输入数据流确定● 下图中的程序由A、B、C、D、E 5个模块组成,下表中描述了这些模块之间的接口,每一个接口有一个编号。此外,模块A、D和E都要引用一个专用数据区。那么A和E之间耦合关系是___(32)___。

(32)A.公共耦合 B.数据耦合 C.内容耦合 D.无耦合 解析:

耦合是对一个软件结构内不同模块之间互连程度的度量。 耦合可以分成下列几种,它们之间的耦合度由高到低排列。 ?

内容耦合

直接操作或修改另一模块的数据,或不通过正常入口转入另一个模块。

软件设计时应坚决禁止内容耦合,应设计成单入口、单出口的模块,避免病态连接。 ? ? ? ? ?

公共耦合

多个模块引用同一全局数据区。例如,C语言中的external数据类型、磁盘文件等都是全局数据区。 外部耦合

模块与软件以外的环境有关联。例如,输入输出把一个模块与特定的设备、格式、通信协议耦合在一起。 控制耦合

一模块明显把开关量、名字等信息送入另一模块,控制另一模块的功能。 标记耦合

两个模块之间通过传递公共指针或地址相互作用的耦合。 数据耦合

模块间通过传递数据交换信息。

共42页 第35页

2010年软件设计师考试复习资料 (42页完美打印版)

?

非直接耦合(无耦合) 模块间无任何关系,独立工作

原则上讲,模块化设计总是希望模块之间的耦合表现为非直接耦合方式。 在以上耦合中,耦合度从高到低,内容耦合度最高,非直接耦合度最低。

总结:内公不好,家外被控了,标志数年心血白非了!(内功不好,家外被控了,标志数年心血白费了!) 2005年5月

● 下列叙述中,与提高软件可移植性相关的是___(18)____ (18) A.选择时间效率高的算法 B.尽可能减少注释

C.选择空间效率高的算法 D.尽量用高级语言编写系统中对效率要求不高的部分

● 在系统转换的过程中,旧系统和新系统并行工作一段时间,再由新系统代替旧系统的策略称为___(19)____;在新系统全部正式运行前,一部分一部分地代替旧系统的策略称为_____(20)_____。

(19)A.直接转换 B.位置转换 C.分段转换 D.并行转换(20)A.直接转换 B.位置转换 C.分段转换 D.并行转换 ● 在开发一个系统时,如果用户对系统的目标是不很清楚,难以定义需求,这时最好使用 (6)。 (6)A. 原型法 B. 瀑布模型 C. V-模型 D. 螺旋模型 ● 应该在(7)阶段制定系统测试计划。

(7)A. 需求分析 B. 概要设计 C. 详细设计 D. 系统测试

解析:需求分析中的文档

? 需求规格说明书 ? 初步用户使用手册 ? 确认测试的测试计划 ? 修改完善的软件开发计划 ? 系统测试计划文档

● 软件开发中的瀑布模型典型的刻画了软件生存周期的阶段划分,与其最相适应的软件开发方法是__(9)__。 (9)A.构件化方法 B.结构化方法 C.面向对象方法 D.快速原型法 ● 渐增式开发方法有利于___(4)___。

(4)A. 获取软件需求 B. 快速开发软件 C. 大型团队开发 D.商业软件开发

● 在软件项目管理中可以使用各种图形工具来辅助决策,下面对Gantt 图的描述中,不正确的是___(5)___。 (5)A. Gantt 图表现了各个活动的持续时间 B. Gantt 图表现了各个活动的起始时间 C. Gantt 图反映了各个活动之间的依赖关系D. Gantt 图表现了完成各个活动的进度 解析:

● 使用LOC (lines of code)度量软件规模的优点是___(9)___。

共42页 第36页

2010年软件设计师考试复习资料 (42页完美打印版)

(9)A. 容易计算 B. 与使用的编程语言相关 C. 与使用的开发模型有关 D. 在设计之前就可以计算出LOC 2006年11月:

●常见的软件开发模型有瀑布模型、演化模型、螺旋模型、喷泉模型等。其中(5)模型适用于需求明确或很少变更的项目,(6)主要用来描述面向对象的软件开发过程。

(5) A瀑布模型 B.演化模型 C.螺旋模型 D.喷泉模型 (6)A.瀑布模型 B.演化模型 C.螺旋模型 D.喷泉模型

●软件能力成熟度模型(CMM)是目前国际上最流行、最实用的软件生产过程标准和软件企业成熟度的等级认证标准。该模型将软件能力成熟度自低到高依次划分为初始级、可重复级、已定义级、已管理级、优化级。从(17)开始,要求企业建立基本的项目管理过程的政策和管理规程,使项目管理过程有章可循。

(17)A.初始级 B. 可重复级 C. 已定义级 D. 已管理级 解析:

软件过程的评估,通常采用软件能力成熟度模型(Capability Maturity Model,CMM)。 CMM1.1的5个等级(由低级到高级):

? ? ?

初始级 可重复级 已定义级

软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力,管理是反应式(消防式)的。 建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功。 已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准化软件过程。所有项目均使用经标准、裁减的标准软件过程来开发和维护软件。

? ?

已管理级 优化级

收集对软件过程和产品质量的详细度量,对软件过程和产品都有定量的理解与控制。

加强了定量分析,通过来自过程质量反馈和来自新观念、新技术的反馈使过程能持续不断地改进。巧记:初级程序员,可重复写程序,现已定义了管理策略来优化程序设计!

●软件项目开发成本的估算依据,通常是开发成本估算模型,常用的模型有: ① IBM模型②Putnam模型③基本COCOMO模型④中级COCOMO模型⑤高级OCOMO模型 其中(18)都是静态单变量模型。

(18)A.①② B. ②④⑤ C. ①③ D. ③④⑤ 解析:

IBM模型估算法:

该模型是Watson和Felix在1977年发布的,是基于IBM联合系统分布负责的60个项目的总结而得到的模型。该模型是一个静态单变量模型,而参考数据只有60多个项目,因此有很大的局限性。 Putnam模型和COCOMO模型:

Putnam模型和COCOMO模型是常用的成本估算模型。 ? ?

Putnam模型:是一种动态多变量模型,它是假设在软件开发的整个生存期中工作量的分布。 COCOMO模型:是结构性成本模型,是最精确、最易于使用的成本估算模型之一。该模型可以分为:

(1)基本COCOMO模型,是一个静态单变量模 型,它是对整个软件系统进行估算。

(2)中级COCOMO模型,是一个静态多变量模型。它将软件系统模型分为系统和部件两个层次,系统由部件构成,它把软件开发所需人

力(成本)看作是程序大小和一系列“成本驱动属性”的函数。

(3)详细COCOMO模型,它将软件系统模型分为系统、子系统和模块3个层次,它除包括中级模型所考虑的因素外,还考虑了在需求分析、软件设计等每一步的成本驱动属性的影响。 ?

过程(UP)的基本特征是“用例驱动,以架构

为中心的和受控的迭代式增量开发”。UP将一个周期的开发过程化分为4个阶段,其中 (26) 提交结果包含了系统架构。 (26)A.先启阶段 B.精化阶段 C.构建阶段 D.提交阶段 解析:

共42页 第37页

2010年软件设计师考试复习资料 (42页完美打印版)

先启(Inception):确定项目开发的目标和范围 精化(Elaboration):确定系统架构和明确需求 构建(Construction):实现剩余的系统功能

产品化(Transition):完成软件的产品化工作,将系统移交给客户

●某软件在运行初期运行在Windows NT环境中,现因某种原因,该软件需要在UNIX环境中运行,而且必须完成同样的功能。为适应这个要求,软件本身需要进行修改,而所需的工作量取决于该软件的(27) (27)A.可扩充性 B.可靠性 C.复用性 D.可移植性

●按照ISO/IEC 9126软件质量度量模型定义,一个软件可靠性的子特性包括(28): (28)A.容错性和安全性 B.容错性和适应性 C.容错性和易恢复性 D.易恢复性和安全性 解析:

ISO/IEC 9126软件质量模型可从软件功能性、可靠性、可用性、效率、可维护性、可移植性6个方面来衡量。 (1).功能性

与功能及其指定的性质的一组软件属性。 (2)可靠性

软件在规定的一段时间内和规定的条件下保持其性能水平有关的一组软件属性。也可以称为在规定的条件下和规定的时间间隔内,(3)可用性

与使用的难易程度及规定或隐含用户对使用 (4)效率

与在规定条件的性能水平与所用资源量之间的关系有关的一组软件属性。 (5)可维护性

与软件维护的难易程序有关的一组软件属性。 (6)可移植性

软件可从某一环境转移到另一环境的能力有关的一组属性。即软件从一个计算机系统转换到另一个计算机系统运行的难易程度是指方式所做的评价有关的软件属性。 软件实现其规定功能的概率。

软件的可移植性。

巧记:功能方面,可靠、可用;效率方面,可维护、可移植

●(29)详细描述软件的功能、性能和用户界面,以使用户了解如何使用软件。

(29)A.概要设计说明书 B.详细设计说明书 C.用户手册 D.用户需求说明书 ●各类软件维护活动中,(30)维护占整个维护工作的比重最大。 (30) A.完善性 B.改正性 C.适应性 D.预防性 ●给出C语言程序:

共42页 第38页

2010年软件设计师考试复习资料 (42页完美打印版)

?

当用路径覆盖法测试时,至少需要设计(31)个测试用例。

(31) A.3 B. 4 C. 5 D. 8

●软件的测试通常分为单元测试、组装测试、确认测试、系统测试四个阶段进行。(32)属于确认测试阶段的活动。 (32)A.设计评审 B.代码审查 C.结构测试 D.可靠性测试 2007年5月

●结构化开发方法中,数据流图是 (15) 阶段产生的结果(2)。 (15) A.需求分析 B.总体设计 C.详细设计 D.程序编码 ●CVS是一种 (16) 工具.

(16) A.需求分析 B.编译 C.程序编码 D.版本控制 ●以下关于原型化开发方法的叙述中,不正确的是 (17) (2).

(17) A.原型化方法适应于需求不明确的软件开发 B.在开发过程中,可以废弃不用早期构造的软件原型

C.原型化方法可以直接开发出最终产品 D.原型化方法利用于确认各项系统服务的可用性 ●通常在软件的(18)活动中无需用户参与. (18)A.需求分析 B.维护 C.编码 D.测试

●进行软件项目的风险分析时,风险避免、风险监控和风险管理及意外事件计划是 (19) 活动中需要考虑的问题. (19) A.风险识别 B.风险预测 C.风险评估 D.风险控制

●统一过程(UP)是一种用例驱动的迭代式增量开发过程,每次迭代中主要的工程流包括捕获需求,分析,设计,实现和测试等。这种软件过程的用例图(Use Case Diagram)是通过(29)得到的。 (29)A捕获需求 B分析 C设计 D实现

●序言性注释是指在每个程序或模块开头的一段说明,起辅助理解程序的作用,一般包括:程序的表示,名称和版本号,程序功能描述,接口于界面描述,输入,输出数据说明,开发历史,与运算环境有关的信息等。下列叙述中不属于序言性注释的是 30 。

A.程序对硬件,软件资源的要求B.重要变量和参数设计C.嵌入在程序中的SQL语句 D.程序开发的原作者,审查者,修改者,编程日期等。 ●软件(32)的提高,有利于软件可靠性的提高。

(32)A.存储效率 B.执行效率 C.容错性 D.可移植性 ●LOC是软件规模的一种量度,它表示 34

(34)A.软件功能数 B.源代码行数 C.每单位成本数 D.工作量 2007年下半年: ●阅读下列流程图

共42页 第39页

2010年软件设计师考试复习资料 (42页完美打印版)

●当用判定覆盖法进行测试时,至少需要设计 35 个测试用例 (35)A.2 B.4 C.6 D.8

●在某大学学生学籍管理信息系统中,假设学生年龄的输入范围为16~40,则根据黑盒测试中的等价类划分技术,下面划分正确的是 37 (37)A.可划分为2个有效等价类,2个无效等价类 B.可划分为1个有效等价类,2个无效等价类

C.可划分为2个有效等价类,1个无效等价类 D.可划分为1个有效等价类,1个无效等价类

● 在软件开发中, (29) 不能用来描述项目开发的进度安排。在其他三种图中,可用 (30) 动态地反映项目开发进展情况。

(29)A. 甘特图 B. PERT图 C. PERT/CPM图 D. 鱼骨图(30)A. 甘特图 B. PERT图 C. PERT/CPM图 D. 鱼骨图 ● 选择软件开发工具时,应考虑功能、 (31) 、稳健性、硬件要求和性能、服务和支持。

(31)A. 易用性

B. 易维护性

C. 可移植性

D. 可扩充性

● 内聚性和耦合性是度量软件模块独立性的重要准则,软件设计时应力求 (32) 。

(32)A. 高内聚,高耦合 B. 高内聚,低耦合 C. 低内聚,高耦合 D. 低内聚,低耦合 ● 对于如下的程序流程,当采用语句覆盖法设计测试案例时,至少需要设计(34)个测试案例。

输入X和Y否Y = Y + XX > 0是Y = Y - X否Y > 0是X = -1X = 1

(34)A. 1 (36) 。

(35)A. 单元测试 B. 集成测试 C. 确认测试 D. 系统测试(36)A. 单元测试 B. 集成测试 C. 确认测试 D. 系统测试 2008年上半年:

●(15) 是一种面向数据流的开发方法,其基本思想是软件功能的分解和抽象。

(4)A . 结构化开发方法 B.Jackson 系统开发方法 C. Booch方法 D.UML(统一建模语言)

●某项目制定的开发计划中定义了3个任务,其中任务A首先开始,且需要3周完成,任务B必须在任务A启动1周后开始,且需要2周完成,任务C必须在任务A完成后开始,且需要2周完成。该项目的进度安排可用下面的甘特图(17)来描述。 (17)

B. 2

C. 3

D. 4

● 为验证程序模块A是否正确实现了规定的功能,需要进行 (35) ;为验证模块A能否与其他模块按照规定方式正确工作,需要进行

共42页 第40页

本文来源:https://www.bwwdw.com/article/hurg.html

Top