软件方法学的分类和基本内容有哪些

来源:岁月联盟 编辑:zhu 时间:2010-02-08
  

1)软件方法学的分类

从开发风范上看,有自顶向下的开发方法和自底向上的开发方法。在实际软件开发中,大都是两种方法的结合,只不过是应用于开发的不同阶段和以何者为主而已。

从性质上看,有形式方法与非形式方法。形式方法是一种具有坚实数学基础的方法,从而允许对系统和开发过程作严格处理和论证,适用于那些运载系统安全级别要求极高的软件的开发。非形式方法则不把严格性作为其主要着眼点。

从适用范围来看,有整体性方法与局部性方法。适用于软件开发全过程的方法称为整体性方法,如自顶向下方法、自底向上方法和各种软件自动化方法等均为整体性方法。适用于开发过程具体阶段的软件方法称为局部性方法,如需求分析阶段的各种需求分析方法、设计阶段的各种设计方法。

2)几种常用的软件方法

(1)    自顶向下方法自顶向下是一种决策的策略。软件开发涉及到作什么决策、如何决策和决策顺序等决策问题。

自顶向下方法在任何时刻所作的决定都是当时对整个设计影响最大的那些决定。如果把所有决定分组或者分级,那么决策顺序是首先作最高级的决定,然后依次地作较低级的决定。同级的决定则按照随机的顺序或者按别的方法。一个决定的级别是看它距离要达到的最终目的(因此是软件的实际实现)的远近程度。从问题本身来看,或是由外(用户所见的)向内(系统的实现)看,以距离实现近的决定为低级决定,远的为高级决定。

在这个自顶向下的过程中,一个复杂的问题(任务)被分解成若干个较小较简单的问题(子任务),并且一直继续下去,直到每个小问题(子任务)都简单到能够直接解决(实现)为止。

(2)    自底向上方法与自顶向下方法相反,首先作最低级的决定,其次作较高级的决定,最后建立起整个系统。也就是首先实现最基本的系统构件和系统的内部函数,然后逐步升级到有关外部函数的决策。在这个过程中,开发者手中有越来越复杂和强有力的构件可以用来构造更高级的构件,直到最后构成整个系统。

(3)          形式方法形式方法的目的是把软件作为数学来重新发现。形式方法需要有一个健全的数学基础,典型的是由一个(建立在集合论、逻辑或是代数的基础上的)形式规约语言来给定。它提供了精确地定义以下概念的手段,如一致性、完全性、规约、实现、正确性等。它还提供手段以证明规约是可实现的,证明所建立的系统是正确的、可实现的,以及证明系统具有某些性质而无须通过实际运行来确定其行为。

形式方法被用来避免系统中的歧义性、不完全性、不一致性。在系统开发的早期使用形式方法有助于避免设计缺陷,否则这些缺陷会留到后来的测试、排错阶段才能发现,从而造成巨大耗费。在系统开发的后面阶段用形式方法,可以帮助确定系统实际的正确性及不同实现的等价性。

(4)          软件自动化方法是指利用计算机使软件的设计实现自动化的方法和相关技术。

长久以来,人们就希望发展出一种技术,使得计算机的用户所需要具备的计算机知识和程序设计知识尽可能地少,一项任务从提出到在计算机上最终获得解决所需人的参与尽可能地少。最理想的情况是发展这样的软件自动化系统:它是面向最终用户的,即直接由最终用户使用;它是通用的,即对任何应用领域都适用;它是全自动的,即不需要人的干预和协助。

由于无法达到面向最终用户、通用、全自动的理想目标,一种方法是降低对一个目标的要求,以争取较好的其它两个目标。即只追求有限的目标,使实现的难度降低。于是就有了实现软件自动化的三种策略:①自底向上式策略,不追求直接面向最终用户,而是逐步向最终用户靠拢;②狭窄领域策略,不追求适用于广泛领域,而是更好地解决专门领域中的问题;③辅助式策略,不追求全自动,而是以设计者为主体,提供辅助工具。软件自动实现的途径有:过程途径、演绎途径、转换途径、归纳途径等。

图片内容