软件工程复习资料

  • 格式:docx
  • 大小:112.64 KB
  • 文档页数:9

第一章绪论

什么是软件工程?

软件=程序+数据+文档

什么是软件危机?

软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件,从而导致软件开发与维

护过程中出现一系列严重问题的现象。

什么是软件工程?

采用工程化的原理和方法对软件进行计划开发和维护。

软件工程三范型:1.过程式编程范型2.面向对象编程范型3.基于构件技术的编程范型

软件工程的发展时期:

(1) 传统软件工程或者经典软件工程:

开发过程:结构化分析一> 结构化设计一> 面向过程的编码一> 软件测试

(2) 面向对象软件工程

开发过程:OO分析与对象抽取一》对象详细设计一》面向对象编码与测试

(3) 基于构件的软件工程:

以软件复用为目标、领域工程为基础,其开发过程一般包括包括以下阶段:

领域分析和测试计划定制一一》领域设计一一》建立可复用构件库一一》按“构 件集成模型,,查找与集成构件

第二章生存周期

什么是软件生存周期?

计划阶段:需求分析,软件分析

开发阶段:软件设计,编码(测试)软件测试 维护阶段:运行维护

模型特点和使用场合

开发模型 特点 适用场合

瀑布模型 线性模型,每一阶段必须完成规定的文档 需求明确的的中、小型软件开 发

快速原型模

型 用户介入早,通过需求迭代完善用户的需求, 应用快速开发工具 需求模糊的小型软件开发

增量模型 每次迭代完成一个增量,可用于OO开发 容易开发的大型软件开发

螺旋模型 典型迭代模型,重视风险分析,可用于OO开 发 具有不确定性的大型软件开

构件集成模

型 软件开发与构件开发平行进行,主要用于OO

开发 领域工程、行业中的中型软件

开发 转换模型 形式化的需求规格说明书,自动的程序变换

系统 理想化模型,尚无成熟工具支 持

净室模型 形式化的增量开发模型,在洁净状态下实现

软件制作 开发团队熟悉形式化方法、中 小型软件开发

可行性研究

1. 经济可行性

2. 技术可行性

3. 运行可行性

4. 法律可行性

第三章结构化分析与设计

结构化程序设计的特点以及论述

(1) 整个程序的模块化

(2) 每个模块只有一个入口和出口

(3) 每个模块都应能单独执行,且无死循环

(4) 采用自顶向下,逐步细化的方法 SA结构化分析

设计(结构化)

从内容分:

1. 系统结构设计

2. 接口设计

3. 数据设计

4. 过程设计

按照步骤分:

1. 概要设计

2. 详细设计

第四章OO与面向对象+UML

OO的特征

1. 抽象

2. 封装

3. 继承

4. 多态

为什么用面向对象

1. 符合人类习惯的思维方式

2. 提高软件系统的可复用性

3. 提高软件系统的可扩展性

4. 提高软件系统的可维护性 UML相关知识

静态图

1. 用例图:描述系统功能

2. 类图:描述系统的静态结构

3. 对象图:描述系统在某个时期的静态结构

4. 构件图:描述实现系统的元素的组织

5. 部署图:描述系统环境元素的配置

动态图

1. 状态图:描述系统元素的状态条件和相应

2. 时序图:按照时间顺序描述系统元素间的交互

3. 协作图:按照连接关系描述系统元素间的交互

4. 活动图:描述系统元素的活动流程

第五章需求建模

需求分析的步骤

1. 需求获取

2. 需求建模

3. 需求描述

4. 需求验证

面向对象需求建模

1. 画用例图

2. 写用例规约

3. 描述补充规约

4. 编写术语表 第六章需求分析

面向对象的需求分析

1. 边界类:边界类提供了对参与者或外部系统交互协议的接口。

一对参与者/用例确定了一个边界。

2. 控制类:用于封装一个或者几个用例所特有的流程控制行为,通过它可以建立系统的动

态行为模型

每个用例确定一个控制类。

3. 实体类:用于对必须存储的信息和相关的行为建模,其主要职责是存储和管理系统中的

信息

参与者确定实体类

面向对象分析模型

图61面向对象分近模型的组成结构一. 第七章面向对象设计

模块

模块是一个具有明确定义的输入、输出和特性的程序实体

模块的独立性准则

高内聚和低耦合(功能性内聚和非直接耦合)

模块的独立性度量

内聚

1. 偶然性内聚

2. 逻辑性内聚

3. 时间性内聚

4. 过程性内聚

5. 通信性内聚

6. 顺序性内聚

7. 功能性内聚

耦合

1. 非直接耦合

2. 数据耦合

3. 特征耦合

4. 控制耦合

5. 外部耦合

6. 公共耦合

7. 内容耦合

面向对象设计

分析模型 设计■出

图7.12 OO分析模型转换到OO设计模型

从内容分:

1. 系统架构层

2. 类和对象层

3. 消息层

4. 责任层

从步骤分:

1. 架构设计

2. 元素设计 第八章编码和测试

编码风格

1. 先求正确后求快

2. 先求清楚后求快

3. 求快不忘保持程序正确

4. 保持程序简单以求快

5. 书写清楚,不要为“效率”牺牲清楚

编码风格的要求

1. 使用标准的控制结构

2. 实现源程序的文档化

(1) 有意义的变量名称

(2) 适合的注释

(3) 标准的书写格式

3. 满足用户友好的输入输出风格

(1) 输入方面

(2) 输出方面

测试

测试的目的

为了发现程序的问题和错误

测试的对象

程序代码和各阶段的文档

黑盒测试

功能性测试

1. 等价分类法

(1) 划分等价类 (2) 设计有效等价类需要的测试用例

(3) 为每一个无效等价类至少设置一个测试用例

2. 边界值分析法

3. 错误猜测法

白盒测试

逻辑性测试

1. 语句覆盖:每条语句至少执行一次

2. 判定覆盖:每一判定的每一个分支至少执行一次

3. 条件覆盖:每一判定的每个条件分别按真假至少各执行一次

4. 判定条件覆盖:同时满足判定覆盖和条件覆盖的要求

5. 条件组合覆盖:求出判定中所有条件的各种可能的组合值,每一条可能的组合至少执行 一次