当前位置:
文档之家› 软件工程方法学-软件工程方法学概述
软件工程方法学-软件工程方法学概述
证、实现来分
–形式化方法:从规范出发的开发、函数式编程、 净室方法
–非形式化方法:目前大多数软件工程方法
华
南
师
范 大
软件工程方法的分类
学
计 算
• 按是否有大量文档工作和设计规范要遵守
机
来分
学
院
–重量级的方法:传统结构化方法、面向对象方
王
法
涛
–轻量级的方法:敏捷方法(极限编程,快速原
型法…)
• 目前,并没有一个很规范的分类体系
院 • 在90年代初,逐渐了一批面向对象的开发方法,其
王 中当时最有名、最有影响力的有三个:
涛 件开发规范体系: 结构化方法。包括
–结构化的模型图:程序流程图、功能分解图等
–结构化的开发建议:高内聚、低耦合
–结构化的过程指引:基于瀑布模型的软件生命周期
–以及相关的工具、语言
–这也成为了第一个软件工程方法
华
南
师
范 大
软件工程方法的发展
学 计
• 结构化方法继续发展,出现了其它新的结构
算 化方法的分支(有些与原来模块化的思想相
学
计 算
• 而另外一个重要的软件工程方法--面向
机 对象方法,则是沿着另外一条路发展的
学
院
– 60年代为程序仿真而开发的Simula语言,为了
王
更好的模拟现实世界以进行仿真,引入了类概
涛
念和继承机
–70年代末,另一个专用的面向对象语言
Smalltalk开始进行设计,并在80年提出一个
完善版本( Smalltalk当现在为止仍然是最纯
华
南
师
范 大
华南师范大学计算机学院
学 计
研究生课程
算 机
--软件工程方法学
学
院
王
涛
第一章-软件工程方法学概述
主讲:王涛
Email: filion@
华 南 师 范 大 学
计 算 机 学 院
王
涛
华 南 师 范 大 学
计 算 机 学 院
王
涛
华
南
师
范 大
软件工程方法(学)的定义(1)
学
计 算
• Ian Sommerville的定义 :What
机
are software engineering
学
methods?
院
–Structured approaches to
王
software development which
涛
include
system
models,
notations, rules, design
advice and process guidance
–软件开发的系统化方法,包括系统 模型、术语、规则、设计建议和过 程指引
华
南
师
范 大
软件工程方法(学)的定义(1)
学 • Ian Sommerville的定义:一个软件工程方
计 算
法最主要包括以下三个部分:
机 –Model descriptions:模型描述方法
–Process guidance:过程指引
• What activities to follow
–我们可以参考一下结构化方法和面向对象方法
华
南
师
范 大
软件工程方法(学)的定义(2)
学 计
• 把在软件生命周期全过程中使用的一整套技
算 术的集合,称为软件工程方法学。软件工程
机 学
方法学包括三个要素:方法、工具和过程
学
quantifiable approach to the development,
院
operation, and maintenance of software” [IEEE
1990]
王
–软件工程是将系统的、规范的、可度量的方法应用于
涛
软件的开发、运行和维护的过程
• 而在软件工程中所使用的、系统化/规范化的、关 于如何进行软件的开发、运行和维护的方法,就 是软件工程方法
院 –方法 — 完成软件开发的各项任务的技术方法,
王
回答“怎样做”的问题;
涛 –工具 — 为运用方法而提供的自动的或半自动
的软件工程支撑环境;
–过程 — 为了获得高质量的软件所需要完成的 一系列任务的框架,它规定了完成各项任务的工 作步骤。
华
南
师
范 大
与软件工程的关系
学
计 算
• 软件工程的定义
机
–“The application of a systematic, disciplined,
机 学
比有一定发展,但仍然是基于分解的)
院 –PAD方法:强调程序结构的分解
王 –Jackson方法:强调数据结构与软件结构的一致
涛
–信息建模分析方法:数据流图、实体关系图。
新的设计理念:数据驱动
–IDEF体系:从信息建模分析方法发展出来(90 年代)
• 模型图;工具;设计规范
华
南
师
范 大
软件工程方法的发展
粹的面向对象语言)
–但这时只在实验室和科研活动中使用
华
南
师
范 大
软件工程方法的发展
学 • 随着软件复杂程度的进一步提高,低耦合、
计 算
高内聚的要求进一步提高,促进了面向对象
机 开发思想的发展
学 院
–低耦合、高内聚是获得较好软件质量的要求
王
–但数据耦合是结构化方法无法解决的问题
涛
• 要么有大量的全局变量;要么是每个函数都有大量的 参数
• 可以说是指导规则与行为之间的关系
• 通俗一点说,就是法律和判案的关系
华
南
师
范 大
软件工程方法的分类
学
计 算
• 按不同的分类准则,会有不同的分类方法
机
–注意,这一分类体系中并不是非此即彼,有可学 院能ຫໍສະໝຸດ 重复、冲突• 按开发理念来分:
王 涛
–结构化方法;面向对象方法
• 按有无使用数学工具协助分析、设计、验
–因此,把数据和代码集成封闭在一起,成了一 个合理的要求
–由此,出现了面向对象的思想
• 思想而已,远远未到软件工程方法(还有10年)
华
南
师
范 大
软件工程方法的发展
学
计 算
• 随着面向对象思想的发展和应用,出现了面向对象 的高级开发语言(C++:1980年代晚期等)
机 学
• 但面向对象的软件工程方法尚未成型,仍在发展
学 院
• Descriptions of graphical models which should be produced
王
• Rules
涛
• Constraints applied to system models
–Recommendations:开发建议
• Advice on good design practice
华
南
师
范 大
软件工程方法的发展
学 • 最初,只有完全一项计算任务的程度,并无所谓编程
计 算
方法,更无软件工程方法
机 • 随着软件复杂度的提高,出现了复杂问题分解为简
学 单问题的一种思路: 函数、模块
院 • 在70年代初,软件危机问题出现之后, 随着软件工
王 程思想的确立,从模块化思想逐渐发展出了一个软