-
定义
- 软件工程方法学是研究软件设计方法及工程开发技术的一门学科
-
包括
- 系统模型
- 设计建议
- 过程指引
-
其他
- 术语
- 规则
-
三要素
- 方法:完成软件开发的各项任务的技术方法,回答“怎样做”的问题
- 工具:为运用方法而提供的自动的或半自动的软件工程支撑环境
- 过程:所需要完成的一系列任务的框架,完成各项任务的工作步骤
-
vs 软件工程
- 软件工程是“行为”
- 软件工程方法学是“指导规则”
-
为什么要学习
-
应用的需要
- 方法学的发展
- 不同方法学的优缺点
-
用更宏观、更高的层次看待软件开发
- 软件开发理论研究
- 发展更新的\更完善的软件工程方法学的需要
-
相关知识体系
-
结构化方法
- 基本的结构化方法
-
复杂的结构化方法
- IDEF体系
- Jackson方法
-
面向对象方法
- 基本的面向对象方法
- EUP
- 极限编程方法(XP)
- 快速原型软件开发方法
- 测试驱动的软件开发方法
-
形式化方法
- 基于规范的开发方法/函数式编程开发方法
- 净室(Clean Room)/零缺陷软件开发方法
- 面向方面编程的软件开发(AOP)
- 产生式编程、开发(GP)
- SOA:面向服务的体系结构
- MDA/MDSD:模型驱动体系结构/软件开发
-
发展史
- 最初:无软件工程方法
-
结构化方法
- 70年代初软件危机:结构化方法(第一个软件工程方法)
-
结构化方法继续发展,诞生更多基于分解的分支方法
- PAD方法
- Jackson方法
- 信息建模分析方法
- IDEF体系
-
面向对象方法
- 60年代Simula语言
- 70年代末Smalltalk
- 面向对象的思想
- 面向对象的高级语言
- 90年代初:Booch、OOSE、OMT
- 97年 Rational公司:UML
- Rational:RUP(Rational Unified Process , Rational 统一过程 )
-
新的软件工程方法
-
快速、高效、轻量级的软件开发
-
敏捷方法
- 极限编程
- 测试驱动开发
- 快速原型开发
-
可重用 \ 基于构件的开发方法
- 面向方面的开发
- SOA
- MDA / MDSD