您的当前位置:首页正文

软件工程复习题

2024-07-14 来源:九壹网
 软件工程复习要点

一、软件工程概述

1、 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题,具体表现是

在哪些方面? 软件危机的表现

1)、无法开发复杂程度高的软件 2)、成本和进度估计不准 3)、无统一科学的规范,软件不可维护 4)、无质量保证,可靠性差 5)、软件常不能满足用户的需求 6)、无适当的文档资料 7)、软件生产率太低

2、 简述瀑布模型软件开发方法各个阶段的任务和基本的工作过程。

瀑布模型即生命周期模型,将软件生命周期的各项活动规定为依照固定顺序连接的若干阶段工作,包括:问题定义与可行性分析、软件计划、需求分析、总体设计、详细设计、编码、测试、运行维护。(见图) 各阶段任务:

问题定义(标与范围说明书)—>可行性研究(可行性分析报告)—>需求分析(需求说明书)—>设计(设计文档)—>编程(程序)—>测试(测试报告—>运行与维护(维护报告)

优点:强调软件开发的阶段性; 强调早期计划及需求分析; 强调软件产品的测试。 缺点:依赖早期需求分析,一旦需求改变,不能适应,付出很大代价; 单一流程,过程中经验教训不能反馈应用; 风险往往后期显露,丧失及早纠正机会。

3、 软件工程的基本原则有哪些?

抽象原则:抽取事物最基本的特性和行为,忽略非基本细节。采用层次抽象,自顶向下细化的方法控制软件开发过程复杂性。

信息隐藏原则:用户只能通过模块接口访问模块中封装的数据。

模块化原则:模块是程序中在逻辑上相对独立的功能集成体,有良好接口定义,模块与模块或模块与操作者间通过接口联系。 局部化,确定性,一致性,完备性,可验证性

4、 叙述需求分析的方法和过程。

过程:确定对软件系统的要求;分析软件系统的数据及操作要求;确定软件系统的详细

逻辑模型;修订系统开发计划;编写软件需求规格说明书。 方法:

1. 功能分析法:功能,子功能,功能接口,问题空间到功能和子功能映射,利用已有

经验对新系统预先设定功能体系及功能实现,重点放在新系统需求进行什么样加工上。过程抽象的观点。

2. 信息建模法:基点是数据。现实世界找出实体,用属性描述实体,实体与关系形成

网络,描述系统信息状况给出系统信息模型。 3. 结构化分析法:由数据流图和数据字典构成,实现问题空间到某种表示映射。建立

现行系统物理模型,抽象出现行系统逻辑模型,建立目标系统逻辑模型,作进一步补充优化。

4. 面向对象分析法:采用类结构,数据封装和继承等面向对象程序设计语言概念建模。

5、 说明“软件工程”的一些概念---软件、软件质量、生命周期、软件基线、软件配置项

软件:是程序及开发、使用、维护程序所需的文档(软件=程序+文档)。

软件质量:与软件产品满足需求所规定的和隐含的能力有关的特征和特性的全体。

生命周期:从软件定义、开发、使用、维护到淘汰的全过程。

软件基线:已经通过了正式复审的规格说明或中间产品,可以作为进一步开发的基础,并且只有通过正式的变化控制过程才能改变它。基线就是通过了正式复审的软件配置项。

软件配置项:是软件过程的输出信息——计算机程序(源代码和可执行程序);描述计算机程序的文档(供技术人员或用户使用);数据(程序内或程序外)。这些项组成了软件过程中产生的全部信息。

6、 简述面向对象软件开发方法(OMT)面向对象分析的一般工作过程。

面向对象的开发方法基本思想:对问题领域自然分割,以接近人的思维建立模型,对客观信息实体进行结构和行为模拟,使设计的软件更直接地表现问题的求解过程。以对性作为最基本元素,也是分析和解决问题的核心。 面向对象方法由面向对象分析(OOA)、面向对象设计(OOD)、面向对象程序设计(OOP)组成。 面向对象=对象+类+继承+消息

参考 三,3

二、结构化软件工程方法

1、 什么是当前系统?当前系统的物理模型与逻辑模型有什么差别?

当前系统:已在运行的现行系统。

物理模型是通过对现行系统调查收集其工作过程等资料后,以图形方式来描述,反映出

分析者对现行系统的理解,客观反映现行系统的结构与行为。物理模型反映了系统的具体实现过程,抽取模型的本质因素(即系统固有的、不依赖运行环境变化而变化,且任何系统实现过程都受其影响)后,形成现行系统的逻辑模型。

物理模型表达的是数据在系统各部件之间流动的情况,描述过程中涉及到的是系统的物理部件;而逻辑模型是描绘数据在软件中流动和被处理的逻辑过程,不涉及到任何具体的物理部件。

2、 可行性研究主要研究哪些问题?

可行性研究要分析集中主要的可能解法利弊,判断原定系统规模和目标是否实现,根据将来效益判断是否值得投资开发。主要以下方面: 1. 技术可行性:风险分析,资源分析,技术分析。 2. 经济可行性:成本/效益分析。 3. 操作可行性:可操作性。 4. 调度可行性:能否按期交付。 5. 法律可行性:是否合法。

3、 DFD的作用是什么?它有哪些成分?

数据流图是结构化分析法中用于表示系统逻辑模型的工具。以图形的方式描绘数据在系

统中流动和处理的过程。反映目标系统的逻辑功能,是一种功能模型。

成分:源点或终点,处理,数据存储,数据流。

用途:作为交流信息工具;分析和设计工具;辅助物理系统设计;利于更详细的设计。 分析员与用户之间的交流工具;开发小组之间的接口工具;数据库设计的依据。

4、 DD的作用是什么?它有哪些基本词条?

数据字典是关于数据星系的集合,对数据流图中包含的所有元素的定义集合。 作用:在软件分析和设计过程中给人提供关于数据的描述信息。(DFD+DD=逻辑模型) 基本词条:一般信息(名字,别名,描述)

定义(数据类型,长度,结构)

使用特点(值范围,条件值,使用频率,使用方式——输入,输出,本地) 控制信息(来源,用户,使用它的程序,改变权,使用权)

分组信息(父结构,从属结构,物理位置——记录,文件,数据库)

组成元素:数据流,数据元素(数据流分量),数据存储,处理。

5、 叙述结构化方法需求分析模型(三图一表)。

数据模型:实体-联系图,描绘数据及对象之间的关系;

功能模型:数据流图,描绘当数据在软件系统中移动时背变换的逻辑过程,指明系统具

有的变换数据功能;

行为模型:状态转换图,指明了作为外部事件结果的系统行为,描绘了系统的各种行为模式和在不同状态间转换的方式。

数据字典是三种分析模型的粘合剂,是分析模型的核心。

6、 良好的软件设计应遵守哪些原则?

1. 模块化原理——使软件结构清晰,便于阅读理解和管理,提高软件可修改性。 2. 事物本质抽象——使设计者能够说明过程和数据,忽略低层细节。 3. 逐步求精——推迟对细节问题考虑,逐步揭示出低层细节。

4. 信息隐藏和局部化——修改期间的错误很少可能传播到其他部分。 5. 模块独立——分工合作,易于测试维护。

7、 如何理解模块独立性?衡量模块独立性的指标有哪些?

模块独立是模块化,抽象,信息隐藏和局部化概念的直接结果。指系统中每个模块具有独立的功能,模块之间无过多的相互作用。可以并行开发减少错误的影响,使模块容易组合,修改和测试。 两个定性标准度量:

耦合性——描述模块之间联系的紧密程度; 内聚性——描述模块内部联系的精密程度。

8、 模块的独立性与信息隐藏有何关系?

模块独立性:软件系统中每个模块只涉及软件要求的具体子功能,和其他模块接口简单。

信息隐藏:每个模块的实现细节对于其他模块是隐蔽的。模块中所含信息不允许其他不需要这些信息的模块使用。

如果软件系统做到了信息隐蔽,即定义和实施了对模块的过程细节和局部数据结构的存

取限制,那么这些模块间接口是简单的,模块的独立性就比较强。

衡量模块独立性的一个准则是模块内聚,达到信息隐蔽的模块是信息内聚模块,它是搞内聚情形,模块独立性自然很强。

9、 谈谈你对总体设计与详细设计的理解。

从工程管理角度来看,软件设计分为两步:总体设计和详细设计。

总体设计将软件需求转化为数据结构和软件系统结构。用比较抽象概括的方式确定系统如何完成预定任务,确定系统的物理配置方案,并确定组成系统的每个程序结构。两个小阶段:首先,系统设计——从数据流图出发设想完成系统功能的若干种物理方案,选择最佳。然后,软件结构设计——确定软件模块组成及之间动态调用关系,常用层次图和结构图。

详细设计通过对结构表示的细化,得到软件的详细数据结构和算法。目标:保证软件可靠性,使将来编写出的程序可读性好,容易理解,测试,修改和维护。结构程序设计技术是详细设计的逻辑基础。

10、简述用于软件架构设计(总体设计)的面向数据流的设计方法。

面向数据流的设计方法=结构化设计方法(SD)——基于数据流的设计方法。 目标:给出设计软件结构的一个系统化途径。

用数据流图来描绘信息在系统中被加工和流动的情况。

该法定义了一些映射,把数据流图映射成软件结构。两种分析方法:

变换分析——经过一系列设计步骤把具有变换流特点的数据流图按预先确定的模式映射成软件结构。

事务分析——对于有明显事务特征(即能找到一个书屋和一个事务中心),分析数据流图,自顶向下,逐步分解,建立系统结构图。 设计过程:

精化数据流图;确定数据流图类型并进行映射;分解上层模块,设计中下层模块结构;优化准则对软件结构求精;描述模块功能,接口及全局数据结构;复查,准备详细设计。

11、简述结构化方法的软件设计模型。

详细设计描述工具:传统程序流程图,结构化流程图(N-S图),问题分析图(PAD图),PDL语言等。

Jackson程序设计方法利用Jackson图描述数据结构和程序结构。优点:自顶向下分解,便于表示层次结构;形象直观可读性好;既能表示数据结构,也能表示程序结构。 步骤:

1. 确定输入输出数据的逻辑结构;

2. 找出输入输出数据结构中对应关系的数据单元; 3. 从数据结构Jackson图导出程序结构Jackson图;

4. 列出所有操作和条件,分配到程序结构图的适当位置; 5. 伪代码表示程序。

12、结构化方法项目开发计划,需求分析说明书,总体设计和详细设计说明书包括的主要内

容。

项目开发计划

1.引言

1.1编写目的(读者对象,该文档目的)

1.2项目背景 (委托单位,与其他系统关系)

1.3定义 (所用专门术语,缩写词解释) 1.4参考资料 2任务概述

2.1工作内容(可行性研究报告,功能性能)

2.2条件与限制(完成时限,已具应具条件)

2.3产品 2.3.1程序(名,语言,存储) 2.3.2 交付文档 2.4运行环境(硬件,软件)

2.5服务(维护,培训,保修,升级) 2.6验收标准

3实施计划

3.1任务分解 3.2进度 3.3预算 3.4关键问题(难点,风险及对策) 4人员组织分工 5交付期限 需求说明书

1.引言 (同上) 2.任务概述

2.1目标 2.2运行环境 2.3条件与限制

3.数据描述

3.1静态数据 3.2动态数据(输入,输出) 3.3数据库描述(名字,类型) 3.4数据流图(DFD)+数据字典(DD) 3.5数据采集

4.功能需求 4.1功能划分 4.2功能描述 5.性能需求 5.1数据精确度 5.2时间特性(响应时间,更新处理,数据转换与传输) 5.3适应性(操作方式,环境要求,接口,变化的适应) 6.运行需求 6.1用户界面(屏幕,菜单,输入输出时间) 6.2硬件接口 6.3软件接口 6.4故障处理 7.其他需求(安全,保密,可维护,可移植,可使用) 总体设计说明书 1. 引言 (同上) 2. 任务概述

2.1目标 2.2运行环境 2.3需求概述 2.4条件与限制

3.总体设计 3.1处理流程(系统流程图,系统层次结构图)

3.2总体结构和模块外部设计

3.3功能分配(各功能与程序结构关系)

4.接口设计 4.1外部接口(用户界面,软硬件接口) 4.2内部接口(模块间) 5.数据结构设计

5.1逻辑结构设计 (E-R图) 5.2物理结构设计(数据库)

5.3数据结构与程序设计

6.运行设计 6.1运行模块组合 6.2运行控制 6.3运行时间 7.出错处理设计

7.1出错输出信息 7.2对策(设置后备,性能,降级,重启恢复) 8.安全保密设计 9.维护设计 详细设计说明书 1. 引言(同上) 2. 总体设计

2.1需求概述

2.2软件结构(软件系统结构图)

3.程序描述(逐个模块说明) 3.1功能 3.2性能 3.3输入项目 3.4输出项目 3.5算法

3.6程序逻辑(Jackson,图标准流程图,PDL语言,N-S图,PAD图,判定表)

3.7接口 3.8存储分配 3.9限制条件 3.10测试要点

四、程序编码

1、 结构化程序设计包含的内容?

结构化程序设计(SP)是一种程序设计技术,采用自顶向下,逐步求精的程序设计方法和单入口和单出口的控制结构。将程序的分解过程用一个树型结构描述。

2、 结构化程序设计的原则?

1. 自顶向下,逐步求精。先全局后局部,先抽象后具体,层次结构清晰,易读,易理

解,易验证。

2. 仅由顺序,选择,循环三种基本控制结构组成,提高代码可重用性。

3. 其他:语言具有模块化机制,可读性好的控制结构和数据结构;良好的独立编译机

制;编译程序能尽可能多的发现程序中的错误。

3、 程序设计的风格包括哪些方面的内容?

包括程序内部的文档,数据说明,语言构造,输入输出,效率(处理机时间和存储器容量)。

4、 程序复杂性度量方法

1.McCabe(程序环形复杂度):书P137

2.Halstead(程序中运算符和操作数的总数度量):P139

五、软件测试

1、 什么是软件测试?

软件测试:根据软件开发阶段的规格说明和程序内部结构而精心设计的一批测试用例(即输入数据及预期的输出结果),并利用这些测试用例去运行程序,以发现错误的过程。

2、 软件测试的目的和原则是什么?

目的:1为了发现程序中的错误;2好的测试发现极可能发现至今尚未发现的错误的测试方案;3成功的测试是发现了至今尚未发现的错误的测试。 原则:

1.测试应该基于用户需求;

2.应远在测试开始之前就制定出测试计划;

3.应用Pareto原理,对发现错误较多的程序模块,重点测试; 4.从小规模开始,逐步进行大规模测试;

5.测试用例中不仅选择合理的输入数据,还要选择不合理的输入数据; 6.由独立的第三方从事测试工作。

3、 掌握软件测试的过程和方法。

测试过程:单元测试—>子系统测试—>集成测试—>确认测试—>平行运行。 测试方法:

1. 静态测试方法——代码走查;技术评审;代码审查。 2. 动态测试方法:

2.1黑盒测试——功能测试;性能测试;攻击测试。 2.2白盒测试——语句覆盖;分支覆盖;路径覆盖。 2.3回归测试

测试步骤P151:

1.模块测试(单元测试)P153:把每个模块作为一个单独的实体来测试,目的是保证每个模块作为一个单元能正确运行。

2.子系统测试(集成测试)P156:把经过单元测试的模块放在一起形成一个子系统来测试,着重测试模块的接口。

3.系统测试(集成测试)P156:把经过测试的子系统装配成一个完整的系统来测试。 4.验收测试(确认测试)P160:把软件系统作为单一的实体进行测试,是在用户积极参与下进行的,目的是验证系统确实能够满足用户的需要。

5.平行运行:就是同时运行新开发出来的系统和将被它取代的旧系统,以便比较新旧两个系统的处理结果。 测试方法:P151

黑盒测试(功能测试)P171:是在程序接口进行的测试,只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确地输出信息,程序运行过程中能否保持外部信息的完整性。

白盒测试(结构测试)P162:按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。

4、 测试用例的设计方法。

书P162-171 《21世纪》P119

白盒测试技术: (1)逻辑覆盖:

1.语句覆盖P162:选择足够多的测试数据,使被测程序中每个语句至少执行一次。 2.判定覆盖(分支覆盖)P163:不仅每个语句必须至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次,也就是每个判定的每个分支都至少执行一次。 3.条件覆盖:不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。

4.判定/条件覆盖P164:选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也取到各种可能的结果。 5.条件组合覆盖:选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。

6.点覆盖P165:选取足够多测试数据,使得程序执行路径至少经过流图的每个结点一次。(如果连通图G的子图G’是连通的,而且包含G的所有结点,则称G’是G的点覆盖。) 7.边覆盖:选取足够多测试数据,使得程序执行路径至少经过流图中每条边一次。(如果连通图G的子图G’ 是连通的,而且包含G的所有边,则称G’是G的边覆盖。) (2)控制结构测试:

1.基本路径测试P166:首先计算程序的环形复杂度,并用该复杂度为指南定义执行路径的基本集合,从该基本集合导出的测试用例可以保证程序中的每条语句至少执行一次,而且每个条件在执行时都将分别取真、假两种值。

2.条件测试P168:着重测试程序中的每个条件,目的不仅时检测程序条件中的错误,而且是检测程序中的其他错误。

3.循环测试P170:1)简单循环 2)嵌套循环 3)串接循环

黑盒测试技术:

(1)等价划分P172:把程序的输入域划分成若干个数据类,据此导出测试用例。 (2)边界值分析P175:选取刚好等于、稍小于和稍大于等价类边界值的数据作为测试数据。

(3)错误推测P175:列举出程序中可能有的错误和容易发生错误的特殊情况,并且根据它们选择测试方案。

六、软件管理

1、 软件项目管理过程?

项目管理过程包括:项目立项管理,项目跟踪监控,风险管理和项目结项管理,是对项目的成本,精度和质量惊醒的一系列管理监控过程。 管理(课件第1课):

(1)工程度量(成本估计) (2)进度计划(项目计划)

(3)3P管理(人员管理、问题管理、过程管理) (4)软件质量保证(SQA) (5)软件测试

(6)软件配置管理

2、 软件项目的组织模式?人员配备的原则和条件?

3种典型的组织模式:民主制程序员组,主程序员组,现代程序员组。 人员配备原则:

1. 重质量:关键性任务任用少量油能力和经验的人员完成;

2. 重培训:必须花费精力培养所需的技术人员和管理人员; 3. 双阶梯提升:人员提升分别按技术职务和管理职务进行。 人员配备条件:

1. 牢固掌握计算机软件的基本知识和技能;

2. 善于分析和综合问题,具有严密的逻辑思维能力;

3. 工作踏实,细致,不靠运气,遵循标准和规范,具有严格的科学作风; 4. 工作耐心,有毅力,有责任心;

5. 善于听取意见,善于团结协作,有良好的人际关系; 6. 具有良好的书面和口头表达能力。

3、 软件进度安排方法和图形工具?

方法:通过把工作量分配给特定的软件工程任务并规定完成各项任务的起止日期,总而

估算出项目工作量分布于计划好的项目持续期内。

图形工具:一般表格工具,Gantt图,工程网络图。书P314 一、Gantt 图(横道图) P314: 1、表示方法:

旧木板房刷漆工程改进的Gantt 图

2、Gantt 图的优缺点 P315:

1)优点:直观、简单、容易绘制。

2)缺点:

(1)不能显式地表示各项作业之间的依赖关系;

(2)进度计划的关键部分不明确,难于判定主攻和主控对象; (3)计划中有潜力的部分及潜力大小不明确,易造成潜力浪费。

二、工程网络P315:

工程网络显式地表示了作业之间的依赖关系

如:作业2-3 与作业4-6有依赖关系,虚作业3-4明确地表示了这种依赖关系。

三、估算工程进度P316:

1、计算最早时刻EET:

(1)考虑进入该事件的所有作业;

(2)对于每个作业都计算它的持续时间与起始事件的 EET之和; (3)选取上述和数中的最大值作为该事件的最早时刻 EET。 2、计算最迟时刻LET:

(1)考虑离开该事件的所有作业;

(2)从每个作业的结束事件的最迟时刻中减去该作业的持续时间; (3)选取上述差数中的最小值作为该事件的最迟时刻 LET。

四、关键路径P318:由EET=LET事件组成的路径。

关键路径上的事件(关键事件)必须准时发生,组成关键路径的作业(关键作业)的实

际持续时间不能超过估计的持续时间,否则工程就不能准时结束。 五、机动时间P318:

4、 软件成本估算的方法?

3类基本方法:自顶向下;自底向上;差别估计法。

模型:代码行数(LOC)法;功能点(FP)法;静态单变量模型;动态多变量模型;COCOMO2模型

成本估计:

1、影响成本估计的因素:

(1)人的因素-----分析与设计人员的素质与水平 (2)问题因素-----复杂性、约束条件、性能指标等 (3)过程因素-----分析与设计技术、评审过程等 (4)生产因素-----计算机的性能及可靠性 (5)资源因素-----工具、硬件及软件资源

2、成本估计方法 :

(1)专家估算法---一个或多个专家讨论得出(标准值法)。 (2)类推估算法---与相似项目比较得到。 (3)代码行估算法---参数方程、经验估算。 (4)任务分解估算法

(5)自动化估算法---基于历史数据,由自动估算软件得出。 一、参数方程:

1、静态单变量一般形式:

资源=C1 X(估计的特点)X exp(C2) 资源:开发工作量,单位为人月或人年 估计的特点I:源代码的行数 C1,C2:经验数据

2、静态多变量:

资源=C11 X e1 X exp(C12)+C21 X e2 X exp(c22) +„...

资源:开发工作量,单位为人月或人年

ei :软件的第 I个特点,ci1,ci2是与第I个特点有关的经验常数 3、动态多变量: Putnam 模型:

二、标准值法(程序开发类型+若干个有经验的软件工程师的估计):

三、COCOMO模型P309:

正常开发工作量方程

非正常开发工作量方程

四、代码行估算法 ----开发CAD软件包的例子

注:

a---最好的源代码行估算 m---正常的源代码行估算 b---较差的源代码行估算

期望值 Le=(a+4m+b)/6 估算偏差

五、任务分解估算法 ----开发CAD软件包的例子

1到n求和,n为软件功能数量。

5、 掌握LOC估算和FP估算方法。

书P305-307

LOC:软件规模代码行Line of Code是软件规模的一种量度,它表示源代码行数。 KLOC:Kilo Line of Code是估计的源代码行数,以千行为单位。

FP:功能点Function Piont在软件工程项目管理中用来测量软件的规模和成本。 静态单变量模型:总体结构形式E=A+B×(ev)^C

E:开发工作量(以人月为单位),ev:估算变量(KLOC或FP)

1.面向KLOC的估算模型:

(1)Walston_Felix模型:E=5.2×(KLOC)^0.91

(2)Bailey_Basili模型:E=5.5+0.73×(KLOC)^1.16 (3)Boehm简单模型:E=3.2×(KLOC)^1.05 (4)Doty模型(在KLOC>9时适用):E=5.288×(KLOC)^1.047 2.面向FP的估算模型

(1)Albrecht&Gaffney模型:E=-13.39+0.0545FP

(2)Maston,Barnett和Mellichamp模型:E=585.7+15.12FP 动态多变量模型:E=(LOC×B^0.333/P)^3×(1/t)^4

t:项目持续时间(以月或年为单位)B:特殊技术因子 P:生产率参数

七、软件质量保证

1、 了解软件配置管理的概念、配置管理的主要工作。

软件配置管理师在软件的整个生命周期内管理变化的一组活动。

主要工作:标识变化;控制变化;确保适当地实现了变化;想需要知道这类信息的人报告变化。

软件配置项可以分成3类P329:

(1)计算机程序(源代码和可执行程序)

(2)描述计算机程序的文档(供技术人员或用户使用) (3)数据(程序内包含的或在程序外的)

软件配置管理的任务:标识对象、版本控制、变化控制、配置审计、状态报告

2、 了解软件质量保证活动。

软件质量保证(SQA)措施:

基于非执行的测试(复审或评审):保证在编码之前各阶段产生的文档质量。

基于执行的测试(软件测试):在程序编写出来后进行,保证软件质量的最后一道防线。

程序正确性证明:使用数学方法严格验证程序是否与对它的说明完全一致。 软件质量保证措施P326: 1.技术复审的必要性 2.走查:(1)参与者驱动法 (2)文档驱动法 3.审查:(1)综述 (2)准备 (3)审查 (4)返工 (5)跟踪 4.程序正确性证明:证明程序能完成预定的功能

3、 了解软件工程的国家标准和ISO9000国际标准。

三、面向对象软件工程方法 .1、面向对象方法学

1).面向对象方法的四个要点 面向对象方法=对象+类+继承+用消息通信 2).主要优点 1.与人类习惯的思维方法一致;

4.较易开发大型软件产品; 3).基本概念

对象:客观事物或概念的抽象表述,是一个封装数据属性和操作行为的实体。不仅

能表示结构化的数据,也能表示抽象的时间,规则以及复杂的工程实体,这是结构化方法做不到的。

类:一组有相同属性和运算的对象抽象,一组具有相同数据结构和相同操作的对象集合,是对象的模板。

2.稳定性好;

3.可重用性好;

5.可维护性好。

实例:有某个特定的泪所描述的一个具体对象。

消息:对象之间在交互中所传送的通信信息。 方法:对象执行的操作,类中定义的服务。

属性:类所定义的数据,对客观世界实体所具有的性质的抽象。 封装:把数据和实现操作的代码集中起来放在对象内部,外部不可直接访问或修改。 继承:能够直接获得已有性质特征,不必重复定义。是子类自动共享基类中定义的数据和方法的机制。

2、面向对象建模技术 1).对象模型(数据结构)

表示静态的,结构化的系统的数据性质。对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述系统的静态结构。

2).动态模型(执行操作)

表示瞬时的,行为化的系统的控制性质,规定了对象模型中的对象合法变化序列。 3).功能模型(数据值的变化) 表示变化的系统的功能性质,指明了系统应该做什么,更直接反映了用户对目标系统的 需求。

功能模型的表示方法---使用数据流程图(DFD)表示系统的功能型

DFD的画法

a) 掌握现行系统调研的全部资料(现行系统流程图); b) 画顶层图,初步确定系统的输入/出和外部实体; c) 分解顶层图的处理功能,绘制一级细化图;

d) 逐级分解、扩充、调整,得到较完整的数据流程图; e) 组织讨论和完善。

三种模型的关系:

a) 功能模型中的处理,对应于对象模型中类—&—对象 所提供的服务;

b) 功能模型中的数据存贮,以及数据的源点/终点,通常是对象模型中的对象; c) 功能模型中的数据流,往往是对象模型中的属性值,也可能是整个对象;

d) 功能模型中的处理可能产生动态模型中的事件;

e) 动态模型描述了类实例的生命周期; f) 壮态转换驱使行为发生,这些行为在数据流图中被映射成处理,并与对象模型中的服务

相对应;

g) 对象模型描述了功能模型中的动作对象、数据存贮以及数据流的结构。

*关系:功能模型指明了系统该做什么,动态模型明确规定了什么时候做,对象模型定义了做事情的实体。对象模型是最基本最重要的,为其他两个奠定了基础。

3、面向对象分析(OOA) 1).基本过程

1.分析陈述用户需求的文件;

2.通过分析,发现和改正原始陈述中的二义性和不一致性,补充遗漏的内容,是需求陈述更完整准确。

3.系统分析员深入理解用户需求,抽象出目标系统的本质属性,并用模型准确的表示。

2).3个子模式5个层次

3个子模式:静态结构(对象模型),交互次序(动态模型),数据变换(功能模型) 5个层次:主题层,类与对象层,结构层,属性层,服务层

4、面向对象设计(OOD) 1).基本过程

面向对象设计细分为系统设计和对象设计。系统设计确定实现系统给的策略和目标系统的高层结构。对象设计确定解空间中的类,关联,接口形式及实现服务的算法。建立软件系统的动态模型—>建立软件系统的静态模型—>实现

逻辑上有4大部分组成:问题域子系统,人机交互子系统,任务管理子系统,数据管理子系统。 系统分解;

设计问题域子系统; 设计人机交互子系统; 设计任务管理子系统; 设计类中的服务; 设计关联; 设计优化;

2).设计准则

模块化,抽象机制,信息隐藏,弱耦合,强内聚,可重用。 3).4个部分5个层次

4个部分:问题域部分,人机交互部分,任务管理部分,数据管理部分。 5个层次:主题层,类与对象层,结构层,属性层,服务层。

5、面向对象实现 1).基本过程

面向对象实现两项工作:把面向对象设计结果翻译成用某种程序语言书写的面向对象程序;测试并调试面向对象的程序。 2).程序设计语言 特点:

1.支持类和对象的概念机制; 2。实现整体-部分(聚集)结构机制; 3.实现一般-特殊(泛化)结构机制; 4。实现属性和服务机制; 5.类型检查; 选择条件:

3).程序设计风格

既包括传统程序设计风格准则,也包括为适应面向对象方法特有概念而遵循的新准则: 1.提高可重用性; 2。提高可扩充性; 3。提高健壮性。 4).面向对象测试

与测试软件经典策略相同,测试用例设计:书P299

八、简单软件工程项目实际动手能力考核题

用结构化软件工程方法或面向对象软件工程方法对简单需求的软件工程项目进行部分环节的软件设计。

九、考试形式 (一).概念与填充题 1.基本概念 2.有关步骤

3.文档内容

(二).论述与计算题

1.软件工程方法与思想 2.软件工程任务与过程

3.软件工程管理与质量 (三).软件工程分析与设计

1。上述第八项的要求

2。软件测试用例的设计 6。类库,效率,持久保存对象,参数化,开发环境。

3。类库和开发环境

4。其他

1.将来能否占主导地位; 2。可重用性;

因篇幅问题不能全部显示,请点此查看更多更全内容