面向对象分析与设计
上QQ阅读APP看书,第一时间看更新

1.2.1 典型的结构化开发方法

在结构化开发方法的发展过程中,人们提出过很多种开发方法。典型的结构化方法包括Parnas方法、SASD方法、Jackson方法、Warnier方法和PAM方法等。这些方法包含了很多有深远意义的思想、概念和基本方法。这些思想、概念和基本的方法也已经成为软件开发方法发展的重要基石。

1.Parnas方法

Parnas方法是D.Parnas在1972年提出的一种软件开发方法。其主要目的是解决软件的可维护性和可靠性问题。在该方法中,Parnas提出了著名的信息隐蔽原则,目前这个原则已经成为现代软件工程学中的一个非常重要的软件设计原则。

信息隐藏(Information Hiding)原则的内容是:在概要设计时列出将来可能发生变化的因素,并在模块划分时将这些因素放到个别模块的内部。这样,在将来由于这些因素变化而需修改软件时,只需修改这些个别模块,其他模块不受影响。

信息隐蔽技术不仅提高了软件的可维护性,而且也避免了错误的蔓延,改善了软件的可靠性。

Parnas提出的第二条原则是:在软件设计时应对可能发生的各种意外(Exception)故障采取措施。软件意外故障是指软件在运行时发生的各种错误。软件是很脆弱的,任何软件很可能因为一个微小的错误而引发严重的事故,所以必须加强防范。模块之间也要加强检查,防止错误蔓延。

2.SASD方法

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

SASD方法是20世纪80年代使用最广泛的软件开发方法。它首先用结构化分析(SA)对软件进行需求分析,然后用结构化设计(SD)方法进行总体设计,最后是结构化编程(SP)。这一方法不仅开发步骤明确,而且给出了两类典型的软件结构(即变换型和事务型),便于参照,提高了软件开发的成功率。

3.面向数据结构的软件开发方法

(1)Jackson方法

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

(2)Warnier方法

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

4.问题分析法

问题分析法(Problem Analysis Method,PAM)是在20世纪80年代末由日立公司提出的一种软件开发方法。PAM方法希望能兼顾SASD方法、Jackson方法和自底向上的软件开发方法的优点,而避免它们的缺陷。PAM方法的基本思想是:考虑到输入、输出数据结构,指导系统的分解,在系统分析指导下逐步综合。

这一方法的具体步骤从输入、输出数据结构导出基本处理框;分析这些处理框之间的先后关系;按先后关系逐步综合处理框,直到画出整个系统的PAD图。从上述步骤中可以看出,这一方法本质上是综合的自底向上的方法,但在逐步综合之前已进行了有目的的分解,这个目的就是充分考虑系统的输入、输出数据结构。

PAM方法的另一个优点是使用了PAD图。这是一种二维树状结构图,是到目前为止最好的详细设计表示方法之一,远远优于NS图和PDL语言。

PAM方法曾经较为流行,软件开发的成功率也很高。但由于在输入、输出数据结构与整个系统之间同样存在着鸿沟,这一方法仍只适用于中小型问题。

这些方法的出现和应用,成功地解决了当时软件开发面临的诸如可靠性和可维护性等各种问题。但随着计算机硬件技术的发展、计算机应用的普及以及计算机应用领域和规模的不断扩大,软件的规模和复杂性也不断随之扩大和增强,原有的软件开发方法也随之出现了不适应的情况。随着以Smalltalk为代表的面向对象程序设计语言的出现,面向对象方法得到了迅速的发展,而且这一方法已经成为当前软件开发的主流方法。