软件工程方法

来自计算思维百科
跳转至: 导航搜索

软件开发方法大都是在不断的实践过程中形成的,它也一定程度上受程序设计方法的影响,但软件开发方法绝不仅仅限于程序设计,还包含了更多的软件工程的活动,软件开发方法贯穿于整个软件工程活动过程。不同的软件开发方法都有其各自特征,以下简要介绍几种典型的软件开发方法。

基本概念

软件开发方法大都是在不断的实践过程中形成的,它也一定程度上受程序设计方法的影响,但软件开发方法绝不仅仅限于程序设计,还包含了更多的软件工程的活动,软件开发方法贯穿于整个软件工程活动过程。不同的软件开发方法都有其各自特征,以下简要介绍几种典型的软件开发方法。

结构化方法

结构化方法是在1978年由E.Yourdon和L.L.Constantine提出,也可称为面向功能的软件开发方法或面向数据流的软件开发方法。结构化程序设计方法的产生和发展形成了现代软件工程的基础,其基本思想是采用自上而下、逐步求精的设计方法和单入口单出口的控制结构。

模块化方法

模块化方法是一种传统的软件开发方法。在自上而下、逐步细化的过程中,把复杂问题分解成一个个简单问题的最基本方法就是模块化。在程序设计中是用子程序来实现程序模块的,子程序是程序设计的一个里程碑。模块化程序设计是对于自上而下、逐步求精方法的一个强有力的补充。

面向数据结构方法

面向数据结构的软件开发方法有2种:一种是1974年由J.D.Warnier提出的结构化数据系统开发方法,又称Warnier方法;另一种是1975年由M.A.Jackson提出的系统开发方法,又称Jackson方法,面向数据结构开发的基本思想是:从目标系统的输入/输出数据结构入手,导出程序的基本框架结构,在此基础上对细节进行设计,得到完整的程序结构图。
Warnier方法与Jackson方法十分相似,开发的重点都在于数据结构,通过对数据结构的分析导出软件结构。但它们之间仍存在差别,而且2种方法使用不同的图形工具(Warnier图和Jackson图)描述信息的层次结构。Jackson方法包括分析和设计两方面内容,分析方法主要是用数据结构来分析和表示问题的信息域;设计方法是针对不同性质的数据结构,分别选择相应的控制结构(顺序、选择和循环)来进行处理,将具有层次性的数据结构映射为结构化的程序。由于Jackson方法无法构架软件系统的整体框架结构,因此适合对中小型软件进行详细设计。

面向对象方法

当软件规模较大,或者对软件的需求是模糊的或随时间变化的时候,使用结构化方法开发软件往往不成功。结构化方法只能获得有限成功的一个重要原因是,这种技术要么面向行为(即对数据的操作),要么面向数据,没有既面向数据又面向行为的结构化技术。众所周知,软件系统本质上是信息处理系统。离开了操作便无法更改数据,而脱离了数据的操作是毫无意义的。数据和对数据的处理原本是密切相关的,把数据和处理人为地分离成两个独立的部分,自然会增加软件开发与维护的难度。与传统方法相反,面向对象方法把数据和行为看成是同等重要的,以数据为主线,把数据和对数据的操作紧密地结合在一起。

面向对象方法的出发点和基本原则是尽可能地模拟现实世界中人类的思维方式,使开发软件的方法和过程尽可能地接近人类解决现实问题的方法和过程,从而使描述问题的问题空间与实现解法的解空间在结构上尽可能一致。面向对象方法已成为当前软件工程学中的主流方法。

软件工程学专家Codd和Yourdon认为:面向对象=对象+类+继承+通信。如果一个软件系统采用这些概念来建立模型并予以实现,那么它就是面向对象的。为了表述面向对象设计,近年来在建立标准的标记体系方面有了很大进展,最突出的例子是统一建模语言(Unified Modeling Language,UML),这是一个能表示各种面向对象概念的系统。

基于构件的软件开发方法

基于构件的软件开发方法(CBSD)是一种基于预先开发好的软件构件,通过将其集成组装的方式来开发软件系统的方法。又称基于构件的软件工程,它是软件复用的实现方式之一。其根本目的仍然是为了提高软件开发的质量和效率。

基于构件的软件开发方法的兴起主要是源于如下不同的背景:一是在学术研究方面对现代软件工程思想,特别是对软件复用技术的高度重视;二是在技术研发方面所取得的有效进展,如虽然缺少理论的支持,但在图形用户界面(GUI)和数据库应用中基于部件的组装技术的成功应用;三是一些主流互操作技术开发者的积极推动,如OMG的CORBA/CCM、微软公司的COM/DCOM以及SUN公司的EJB已成为主流的构件实现规范,相应的软件中间件平台规范也已获得较为普遍的接受;四是由于面向对象技术的广泛使用,提供了构作和使用构件的概念基础和实用工具,事实上,主流的构件实现模型均基于对象技术。

从开发方法的角度来看,CBSD提供了一种自底向上的、基于预先定制包装好的类属元素(构件)来构作应用系统的途径。应该看到,CBSD的发展和中间件技术的发展是密切相关的,正是中间件技术及其平台提供了构件开发和构件组装的技术基础和机制。因此,当前CBSD讨论的重点主要局限于基于COM/DCOM、CORBA/CCM和EJB等主流规范的二进制级构件。

从复用的角度看,CBSD支持的是黑盒、组装式复用方式。系统开发者不能对构件进行源代码级的修改,最多只能是通过参数方式进行适应性调整。构件的组装在中间件平台上进行,构件间通过中间件提供的通信协议和设施进行交互。