软件工程:理论与实践(第2版)
上QQ阅读APP看书,第一时间看更新

1.4 软件开发方法

软件开发方法是一种使用定义好的技术集及符号表示组织软件生产的过程,它的目标是在规定的时间和成本内,开发出符合用户需求的高质量的软件。因此,针对不同的软件开发项目和对应的软件过程,应该选择合适的软件开发方法。常见的软件开发方法有以下几种。

1. 结构化方法

1978年,E. Yourdon和L. L. Constantine提出了结构化方法,也可称为面向功能的软件开发方法或面向数据流的软件开发方法。1979年,Tom De Marco对此方法做了进一步完善。

结构化方法采用自顶向下、逐步求精的指导思想,应用广泛,技术成熟。它首先用结构化分析方法对软件进行需求分析,然后用结构化设计方法进行总体设计,最后是结构化编程。这一方法不仅开发步骤明确,而且给出了两类典型的软件结构(变换型和事务型),便于参照,大大提高了软件开发的成功率,深受软件开发人员青睐。

2. 面向数据结构方法

1975年,M. A.J ackson提出了一类软件开发方法。这一方法从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其他细节,就可得到完整的程序结构图。这一方法对输入、输出数据结构明确的中小型系统特别有效,如商业应用中的文件表格处理。该方法也可与其他方法结合,用于模块的详细设计。Jackson方法有时也称为面向数据结构的软件设计方法。

1974年,J. D. Warnier提出的软件开发方法与Jackson方法类似。差别有3点:一是它们使用的图形工具不同,分别使用Warnier图和Jackson图;另一个差别是使用的伪代码不同;最主要的差别是在构造程序框架时,Warnier方法仅考虑输入数据结构,而Jackson方法不仅考虑输入数据结构,还考虑输出数据结构。

3. 面向对象方法

面向对象技术是软件技术的一次革命,在软件开发史上具有里程碑的意义。随着面向对象编程向面向对象设计和面向对象分析的发展,最终形成面向对象的软件开发方法。

这是一种自底向上和自顶向下相结合的方法,而且它以对象建模为基础,从而不仅考虑了输入、输出数据结构,实际上也包含了所有对象的数据结构。面向对象技术在需求分析、可维护性和可靠性这3个软件开发的关键环节和质量指标上有了实质性的突破,从很大程度上解决了在这些方面存在的严重问题。

面向对象方法有Booch方法、Goad方法和OMT(Object Modeling Technology)方法等。为了统一各种面向对象方法的术语、概念和模型,1997年推出了统一建模语言(UML),通过统一的语义和符号表示,将各种方法的建模过程和表示统一起来。

4. 形式化方法

形式化方法最早可追溯到20世纪50年代后期对程序设计语言编译技术的研究,研究高潮始于20世纪60年代后期。针对当时的“软件危机”,人们提出种种解决方法,归纳起来有两类:一是采用工程方法来组织、管理软件的开发过程;二是深入探讨程序和程序开发过程的规律,建立严密的理论,以其指导软件开发实践。前者导致“软件工程”的出现和发展,后者则推动了形式化方法的深入研究。

经过多年的研究和应用,如今人们在形式化方法这一领域取得了大量重要的成果,从早期最简单的一阶谓词演算方法到现在的应用于不同领域、不同阶段的基于逻辑、状态机、网络、进程代数、代数等众多形式化方法,形式化方法的发展趋势逐渐融入软件开发过程的各个阶段。

此外,软件开发方法还有问题分析法、可视化开发方法等。接下来的章节中会更加详细和深入地介绍结构化方法和面向对象方法。