传统的软件工程方法与面向对象的软件工程方法比较
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
传统的软件工程方法与面向对象的
软件工程方法比较
刘红霞, 刘红艳
(大同市职业技术学院计算机系, 山西大同037008)
摘要: 该文介绍了软件工程方法的主要内容, 并且对传统的软件工程方法与面向对象的软件工程方法进行比较。
关键词: 软件工程学; 软件工程方法; 软件的生存周期; 需求分析
A Contrast Between the Traditional and the Object-Oriented
Methodologies of Software Engineering
LIU Hongxia,LIU Hongyan
(Computer Department, Datong V ocational College,Datong Shanxi, 037008)
Abstract : This article is an introduction of the content of themethodology of software engineer ing, and also a contrast between the traditional and the object-oriented methodologies of software engineering .
KeyWords: software engineering,methodology of software engineering, existance cycle of software, demand analysis, object-oriented
自然语言和编程语言之间的鸿沟, 是软件开发过程中最难跨越的阶段. 早期的软件开发所面临的问题域比较简单. 从认识清楚要解决的问题, 到把这种认识用程序表达出来, 还不是很困难的事情. 随着计算机应用领域的拓广, 问题域的复杂性急剧膨胀, 系统的规模和复杂度空前扩大. 无论是对问题域的认识和理解, 还是用一种编程语言来描述, 其难度都很大, 软件的复杂性和其中包含的错误达到了开发人员无法控制的程度,因此出现了
“软件危机” .软件危机的出现, 促进了软件工程学的形成和发展.大型软件系统的开发需要包括分析、设计、编程、测试、维护在内的一整套的软件工程理论与技术体系. 软件开发是对问题域的认识和描述. 从认识事物方面看,软件工程学在分析阶段提供了一些对问题域的分析认识方法. 从描述事物方面看, 它在分析和设计阶段提供了一些从问题域逐步过渡到编程语言的描述手段.
1 传统软件工程方法
传统的软件工程方法主要指结构化软件工程方法, 其主要内容如图1所示:
一个软件从开始计划起, 到废弃不用止, 称为软件的生存周期. 从上图可以看出, 在传统的软件工程方法中, 软件的生存周期分为需求分析、总体设计、详细设计、编程和测试几个阶段. 下面分别就每个阶段进行讨论:
1.1 需求分析
软件工程学中的需求分析具有两方面的意义. 在认识事物方面, 它具有一整套分析、认识问题域的方法、原则和策略. 这些方法、原则和策略使开发人员对问题域的理解比不遵循软件工程方法更为全面、深刻和有效. 在描述事物方面, 它具有一套表示体系和文档规范. 但是, 传统的软件工程方法学中的需求分析在上述两方面都存在不足. 它在全局范围内以功能、数据或数据流为中心来进行分析. 这些方法的分析结果不能直接地映射问题域, 而是经过了不同程度的转化和重新组合. 因此, 传统的分析方法容易隐蔽一些对问题域的理解偏差, 与后续开发阶段的衔接也比较困难.
1.2 总体设计和详细设计
在总体设计阶段, 以需求分析的结果作为出发点构造出一个具体的系统设计方案, 主
要是决定系统的模块结构, 包括决定模块的划分, 模块间的数据传送及调用关系. 详细设计是在总体设计的基础上考虑每个模块的内部结构及算法. 最终将产生每个模块的程序流程图. 经过总体设计和详细设计, 开发人员对问题域的认识和描述越来越接近于系统的具体实现——编程.但是传统的软件工程方法中设计文档很难与分析文档对应, 原因是二者的表示体系不一致. 所谓“从分析到设计的转换” , 实际上并不存在可靠的转换规则, 而是带有人为的随意性, 从而很容易因理解上的错误而埋藏下隐患.
1.3 编程和测试
编程阶段, 是利用一种编程语言产生一个能够被机器理解和执行的系统. 测试是发现和排除程序中的错误, 最终产生一个正确的系统.但是由于分析方法的缺陷很容易产生对问题域的错误理解, 而分析与设计的鸿沟很容易造成设计人员对分析结果的错误转换, 所以在编程时程序员往往需要对分析员和设计人员已经认识过的事物重新进行认识, 并产生与他们不同的理解. 在实际开发过程中常常看到, 后期开发阶段的人员不断地发现前期阶段中的错误, 并按照他们的新的理解进行工作, 所以每两个阶段之间都会出现不少变化, 其文档不能很好的衔接.
1.4 软件维护
这个阶段的工作, 一是对使用中发现的错误进行修改, 二是因需求发生了变化而进行修改.前一种情况需要从程序逆向追溯到发生错误的开发阶段. 由于程序不能映射问题域以及各个阶段的文档不能对应, 每一步追溯都存在许多理解障碍. 第二种情况是一个从需求到程序的顺向过程, 它也存在初次开发时的那些困难, 并且又增加了理解每个阶段原有文档的困难.无论如何, 各种传统的软件工程方法都为自然语言和编程语言之间的鸿沟铺设了一些平坦的路段. 它们的优点和缺点, 也为面向对象方法提供了有益的借鉴.
2 面向对象的软件工程方法
何谓“面向对象”呢? 直接面对问题域中客观存在的事物来进行软件开发, 就是面向对象. 它符合人们在日常生活中习惯的思维方式和表达方式. 面向对象方法是软件理论的返朴归真. 面向对象的软件工程方法是面向对象方法在软件工程领域的全面运用. 其主要内容, 如图2 所示.