传统软件工程与面向对象分析的区别
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
传统软件工程与面向对象的区别
摘要:自然语言和编程语言之间的鸿沟,是软件开发过程中最难跨越的阶段.早期的软件开发所面临的问题域比较简单.从认识清楚要解决的问题,到把这种认识用程序表达出来,还不是很困难的事情。软件危机的出现,促进了软件工程学的形成和发展.由于面向对象编程语言的发展,面向对象的软件被设计成一系列的对象及其之间通过消息的相互作用,这些对象从根本上形成了问题的模型,并由这些对象共同作用于一个解决方案。面向对象的程序设计又提供了信息隐蔽、继承、多态和动态绑定等机制。这种软件开发方法固有的特性,给软件测试理论、技术、方法等方面带来了巨大的影响。
关键字:程序软件面向对象软件工程
Abstract:The gap between natural language and programming language is the most difficult in the software development process across the stage.The problems faced by early in the software development domain is relatively simple.Recognize clearly problems to be solved, this understanding program expressed, is not very difficult thing.Software crisis, promote the formation and development of software engineering.In order to facing to the development of the object plait distance language, face to the software of object to be design a series of object and it passes the interaction of news, these objects by the root became the model of problem, and from these object common function are at a solution.The program design which faces to object provided an information again concealment, inherit, many Tais and dynamic state bind settle etc. mechanism.This kind of method inherent property of the software development, give software test the theories, technique, method...etc. brought huge influence。
Keywords: Program Software object-oriented software engineering
1、传统软件工程方法。
传统方法学[1]在软件开发过程中占据相当大的比重,因为其悠久的历史而为很多软件工程师青睐。传统方法学又称生命周期方法学或结构化范型。一个软件从开始计划起,到废弃不用止,称为软件的生命周期。在传统的软件工程方法中,软件的生存周期分为需求分析、总体设计、详细设计、编程和测试几个阶段。
传统方法学使用的是结构化分析技术来完成需求分析阶段的工作。软件工程学中的需求分析具有两方面的意义。在认识事物方面,它具有一整套分析、认识问题域的方法、原则和策略。这些方法、原则和策略使开发人员对问题域的理解比不遵循软件工程方法更为全面、深刻和有效。在描述事物方面,它具有一套表示体系和文档规范。但是,传统的软件工程方法学中的需求分析在上述两方面都存在不足.它在全局范围内以功能、数据或数据流为中心来进行分析。这些方法的分析结果不能直接地映射问题域,而是经过了不同程度的转化和重新组合。因此,传统的分析方法容易隐蔽一些对问题域的理解偏差,与后续开发阶段的衔接也比较困难。
在总体设计阶段,以需求分析的结果作为出发点构造出一个具体的系统设计方案,主要是决定系统的模块结构,以及模块的划分,模块间的数据传送及调用关系。详细设计是在总体设计的基础上考虑每个模块的内部结构及算法,最终将产生每个模块的程序流程图。但是传统的软件工程方法中设计文档很难与分析文档对应,原因是二者的表示体系不一致,所谓从分析到设计的转换,实际上并不存在可靠的转换规则,而是带有人为的随意性,从而很容易因理解上的错误而留下隐患。
编程阶段是利用一种编程语言产生一个能够被机器理解和执行的系统,测试是发现和排除程序中的错误,最终产生一个正确的系统。但是由于分析方法的缺陷很容易产生对问题的错误理解,而分析与设计的差距很容易造成设计人员对分析结果的错误转换,以致在编程时程序员往往需要对分析员和设计人员已经认识过的事物重新进行认识,并产生不同的理解。因此为了使两个阶段之间能够更好的衔接,测试就变得尤为重要。
软件维护阶段的工作,一是对使用中发生的错误进行修改,二是因需求发生了变化而进行修改。前一种情况需要从程序逆向追溯到发生错误的开发阶段。由于程序不能映射问题以及各个阶段的文档不能对应,每一步追溯都存在许多理解障碍。第二种情况是一个从需求到程序的顺向过程,它也存在初次开发时的那些困难,并且又增加了理解每个阶段原有文档的困难。
传统软件工程方法面向的是过程,它按照数据变换的过程寻找问题的结点,对问题进行分解。由于不同人对过程的理解不同,故面向过程的功能分割出的模块会因人而异。对于问题世界的抽象结论,结构化方法可以用数据流图,系统结构图,数据字典,状态转移图,实体关系图来进行系统逻辑模型的描述,生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。
传统软件工程方法学强调以模块为中心,采用模块化,自顶向下,逐步求精设计过程,系统是实现模块功能的函数和过程的集合,结构清晰,可读性好,是提高软件开发质量的一种有效手段。结构化设计从系统的功能入手,按照工程标准,严格规范地将系统分解为若干功能模块,因为系统是实现模块功能的函数和过程的集合。然而,由于用户的需要和软硬件技术的不断发展变化,作为系统基本组成部分的功能模块很容易受到影响,局部修改甚至会引起系统的根本性变化。开发过程前期入手快而后期频繁改动的现象比较常见。
当然,传统的软件工程方法学也存在很多的缺点,主要表现在生产效率非常底,从而导致不能满足用户的需要,复用程度低,软件很难维护等。虽然如此,传统方法学仍然是人们在软件开发过程中使用的十分广泛的软件工程方法学,在开发某些类型的软件时也比较有效。因此传统软件工程方法学的价值并不会因面向对象方法学的出现而减少,并且它还是学习面向对象方法学的基础。
2、面向对象的分析与设计。
面向对象语言更接近人的思维,面向对象程序的主要结构特点是:第一,程序一般有类的定义和类的使用两部分组成,在主程序中定义各个对象并规定它们之间传递消息的规律;第二,程序中的一切操作都是通过面向对象发送消息来实现的,对象接收到消息后,启动有关方法去完成相应的操作”。下面就是一些有关面向对