软件工程的一些基本概念总结(北邮版本)

软件工程概述

软件的定义
软件是计算机程序、规程、以及运行计算机系统可能需要的相关文档和数据

或者说 软件是包括程序、数据和文档的完整集合
软件是一种具有抽象的逻辑实体
软件的开发是一种逻辑思维成熟的过程,而无明显的制造过程

软件的分类
按照划分方式的不同

  • 系统软件
  • 应用软件
  • 中间件软件

    或者

  • 通用软件
  • 定制软件
  • 可配置软件

软件危机
是指由于落后的软件生产方式无法适应迅速增长的计算机软件需求
从而导致软件开发过程中出现一系列严重问题的现象

原因
一方面是由于软件本身存在着复杂性,另一方面是因为软件开发和维护所使用的方法不合理

软件工程

三要素:方法 工具 过程
软件声明周期模型

  • 瀑布模型
  • 增量模型(对待需求不明确的项目)
  • 演化模型(对待需求不明确的项目)
  • 喷泉模型(面对对象)
  • 螺旋模型(风险考虑 大型软件开发)
  • V模型和W模型(并没有克服瀑布模型缺点)
  • 原形方法(能够逐步明确用户需求,适应需求变化)

软件需求分析

先行步骤

  1. 系统分析
  2. 可行性分析

需求建模

原则

  1. 问题的信息域必须表示和理解
  2. 软件将完成的功能必须定义
  3. 软件的行为必须表示

数据建模
功能和行为建模

面对对象需求分析方法

OOA/OOD
用例图->系统顺序图
用例图->领域模型
系统顺序图,领域模型->系统操作契约

领域建模

用例建模

用例图
- 角色
- 基础用例
- 包含用例
- 拓展用例

系统顺序图

结构化需求分析方法

数据流图+数据词典

软件设计的原则

模块的独立性
内聚性,指模块自身的属性
内聚类型(内聚性由弱到强)

  1. 巧合内聚(语句复用)
  2. 逻辑内聚(传送子模块控制参数,进而选择功能)
  3. 时间内聚
  4. 过程内聚(举例:判断文件权限,执行读取)
  5. 通信内聚(信息内聚)(使用相同的数据缓存区)
  6. 序列内聚(一个子模块的输出是另一个的输入)
  7. 功能内聚

模块的耦合性(耦合性由强到弱)

  • 内部耦合
  • 公共耦合
  • 外部耦合
  • 控制耦合
  • 标记耦合
  • 数据耦合
  • 非直接耦合(由上级模块进行控制)

面对对象设计原则

  • 单一指责原则
  • 开闭原则
  • 里氏替换原则
  • 依赖倒置原则
  • 接口隔离原则
  • 组合/聚合复用原则

面对对象设计方法

模型层次化

  • 控制器层
  • 业务逻辑层
  • 持久层

设计用例实现方案

结构化设计方法

变换型数据流和变换型系统结构
事务性数据流与事务型系统结构图
变换映射
由变换型数据流图到系统初始结构图

事务映射
由数据流图推导事务型系统结构图
变换-事务混合型的系统结构图

软件实现

程序设计方法

  • 结构化程序设计方法
  • 面对对象程序设计方法

程序设计风格

  • 源程序文档化
  • 数据说明
  • 语句结构
  • 输入和输出
  • 错误处理

软件测试

测试用例
测试目的
是为了发现错误

系统测试步骤

  • 单元测试
  • 集成测试
  • 确认测试
  • 系统测试
  • 验收测试

测试用例设计方法

  • 白盒测试
  • 黑盒测试

软件维护

  • 改正性维护
  • 适应性维护
  • 完善性维护
  • 预防性维护

软件项目管理

一些例题

1、 面向对象设计需要做哪些工作?这些工作对应的成果模型是什么? (5 分)


面向对象设计主要包括三方面的工作:软件体系结构设计(1 分)、用例实现方
案设计(1 分)和用户界面设计(1 分)。
成果:以 UML 包图表示的软件体系结构(0.5 分)、以交互图(或协作图、或时
序图)和类图表示的用例实现(0.5 分)、针对复杂对象的状态图(0.5 分)、用以
描述流程化处理过程的活动图(0.5 分) 
概要设计:
1、  系统的动态结构设计:基于 SSD 中每个系统事件对应的交互图(或
者序列图或者协作图都可以),以及针对具有多个方法对象的状态
图;(2 分)
2、  系统的静态结构设计:基于用例的所有交互图中的对象,得到的分
层结构类图;(2 分)
详细设计:
针对每个对象的方法使用活动图或者程序流程图进行的内部逻辑设计;

什么是模块的耦合性?请列举至少 3 种降低耦合性的方法

耦合性是模块之间的相对独立性(互相连接的紧密程度)的度量
方法:

 - 模块间多传输数据信息
 - 降低接口复杂
 - 模块的通信信息放入缓存区

3、UML 用模型来描述系统的结构(静态特征)以及行为(动态特征),请
针对静态和动态两类特征,每类至少列举 2 种对应的 UML 图

静态:类图,对象图(类图的实例化)
动态:顺序图,状态图,协作图,活动图

留学韩国的小明新交一韩国女友如花,交往期间发生了如下事件:(1)小
明希望如花学会中华散打技能; (2)如花习武期间,去年整容的鼻子不幸塌陷,
需要重新修补;(3)毕业后如花随小明回北京,由于水土不服,如花卧病,经
多次调理后康复并习惯中国生活; (4)如花学习更高深的九阳神功,重构内力
以增强体制。假设把如花比作软件,请说明以上四类事件分别对应于哪一类
软件维护工作。


 1. 完整性维护
 2. 改正性维护
 3. 适应性维护
 4. 预防性维护

GRASP(职责分配原则)
http://www.cnblogs.com/sevenyuan/archive/2010/03/05/1678730.html

请列举出软件生命周期中贯穿的软件工程过程的六个基本活动


 1. 系统分析/可行性分析
 2. 需求分析
 3. 软件设计
 4. 程序编写
 5. 软件测试
 6. 运行维护

什么是用例?对于用户来说,为什么用例方法比传统需求分析中的功能特性列表更有效?

用例是用来描述参与者使用系统完成目标的一组成功场景和失败场景的集合

关于数据流图
http://blog.csdn.net/xianshengsun/article/details/7439537

版权声明:本文为博主原创文章,转载请标明出处。

posted @ 2015-06-22 13:13  Fridge  阅读(636)  评论(0编辑  收藏  举报