传统软件工程与面向对象分析的区别
- 格式:doc
- 大小:26.50 KB
- 文档页数:5
软件工程-原理、方法及应用(史济民第三版)答案绪论1.什么是软件危机?为什么会产生软件危机?答:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。
(1).软件维护费用急剧上升,直接威胁计算机应用的夸大。
(2).软件生产技术进步缓慢2. 什么是软件生产工程化?工程化生产方法与早期的程序设计方法主要差别在哪里?答:结构化程序设计地出现,使许多产业界认识认识到必须把软件生产从个人化方式改变为工程化。
采用工程的概念、原理、技术和方法开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程,同时这也是工程化生产方法。
3. 分别说明(1)软件开发方法与开发工具;(2)软件技术与软件管理的相互关系。
答:(1)工具和方法,是软件开发技术的两大支柱,它们密切相关。
当一种方法提出来并证明有效后,往往随之研制出相应的工具,来帮助实现和推行这种方法。
新方法在推行初期,总有人不愿接受和采用。
若将新方法融合于工具之中,使人们通过使用工具来了解新方法,就能更快促进新方法的推广。
(2)在工业生产中,即使有先进的技术和设备,管理不善的企业也不能获得良好的效益。
软件在生产中不能按质按时完成计划,管理混乱往往是其中的重要原因。
所以对于一个理想的软件工程环境,应该同时具备技术和管理两个方面。
4.试从你的亲身实践,谈谈软件工具在软件开发中的作用。
答:用C++开发一个软件,是校园一卡通的模块。
首先,要在编辑程序支持下在计算机中输入源程序。
然后编译程序,把源程序翻译成目标程序。
如果发现错误,就重新调入编辑程序对源程序进行修改。
编译通过后,再调用连接程序吧所有通过了编译目标程序连同与之有关的程序连接起来,构成一个能在计算机上运行的可执行软件。
编译程序,编辑程序,连接程序以及支持他们的计算机操作系统,都属于软件工具。
离开这些工具,软件开发就是去了支持,变得十分困难和低效,甚至不能运行。
软件工程一、引言在当今信息技术高速发展的时代,软件的开发和维护变得越来越重要。
为了有效管理软件项目,提高开发效率和质量,软件工程的概念应运而生。
软件工程是一门研究如何按照系统化、规范化、定量化和可重复性的方式开发和维护软件的学科。
在软件工程中,结构化方法和面向对象是两种常用的开发方法。
本文将对结构化方法和面向对象进行比较,并探讨它们在软件工程中的优劣和适用场景。
二、结构化方法2.1 定义和特点结构化方法是一种基于数据流和流程的软件开发方法。
它将软件系统视为一系列逐步细化的模块,通过分析数据流和流程来设计和实现软件系统。
结构化方法强调模块化、层次化和自顶向下的设计思想,以确保程序逻辑清晰、易于理解和修改。
2.2 优点1.结构化方法强调模块化,将软件系统分解为多个模块,每个模块负责特定的功能。
这种模块化的设计使得程序易于理解、修改和测试,提高了软件的可维护性和可测试性。
2.结构化方法采用自顶向下的设计思想,先设计系统的总体框架,再逐步细化到具体的模块。
这种逐步细化的设计方式使得开发过程更加可控,项目管理更加容易。
同时,自顶向下的设计过程也便于团队协作和分工。
3.结构化方法将程序逻辑分解为一系列有序的步骤,每个步骤都有明确的输入和输出。
这种严格的输入输出规定使得程序的设计和测试更加方便。
4.结构化方法在软件开发初期就明确定义了数据流和流程,使得开发人员能够更好地理解和掌握软件系统的整体架构,从而减少了项目失败的风险。
2.3 缺点1.结构化方法的设计过程较为复杂,需要详细分析系统的数据流和流程。
对于较大规模的软件系统,分析和设计的工作量较大,容易导致项目开发周期延长。
2.结构化方法强调模块化,但对于一些复杂的问题,模块化的设计可能不够灵活和强大。
这就需要在设计阶段尽可能考虑全部的需求和功能,否则可能会在后期的修改过程中遇到困难。
三、面向对象3.1 定义和特点面向对象是一种以对象为基础的软件开发方法。
在面向对象方法中,软件系统由一组相互作用的对象组成。
软件⼯程:结构化⽅法VS⾯向对象⽅法⼀、基本概念1、结构化⽅法 结构化⽅法是⼀种传统的软件开发⽅法,它是由结构化分析、结构化设计和结构化程序设计三部分有机组合⽽成的。
基本思想:把⼀个复杂问题的求解过程分阶段进⾏,⽽且这种分解是⾃顶向下,逐层分解,使得每个阶段处理的问题都控制在⼈们容易理解和处理的范围内。
2、⾯向对象⽅法 ⾯向对象⽅法是⼀种把⾯向对象的思想应⽤于软件开发过程中,指导开发活动的系统⽅法,简称OO,是建⽴在“对象”概念基础上的⽅法学。
对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,⼀个对象类定义了具有相似性质的⼀组对象。
基本思想:尽可能模拟⼈类习惯的思维⽅式,使开发软件的⽅法与过程尽可能接近⼈类认识世界、解决问题的⽅法与过程, 也就是使描述问题的问题空间与实现解法的求解空间在结构上尽可能⼀致。
⼆、两者对⽐1、基本单位不同 结构化⽅法的基本单位是模块。
⾯向对象⽅法的基本单位是对象。
2、分析⽅法不同 结构化分析⽅法是⼀种⾯向数据流⽽基于功能分解的分析⽅法, 在该阶段主要通过采⽤数据流程图、编制数据字典等⼯具, 描述边界和数据处理过程的关系, ⼒求寻找功能及功能之间的说明。
⾯向对象分析是把对问题域和系统的认识理解, 正确地抽象为规范的对象( 包括类、继承层次) 和消息传递联系, 最终建⽴起问题域的简洁、精确、可理解的⾯向对象模型, 为后续的⾯向对象设计和⾯向对象编程提供指导。
⾯向对象分析通常建⽴三种模型: 对象模型、动态模型、功能模型。
其中, 对象模型描述了系统的静态结构,确定类的名称和类间的关系;动态模型表⽰瞬时的、⾏为化的系统的“ 控制”性质, 规定了对象模型中的对象的合法变化序列;功能模型表明了系统中数据之间的依赖关系, 以及有关数据的处理功能。
3、各⾃局限(1)结构化⽅法 i.不能直接反映问题域: 结构化分析⽅法以数据流为中⼼, 强调数据的流动及每⼀个处理过程, 不是以问题域中的各事物为基础, 打破了各事物的界限, 分析结果不能直接反映问题域, 容易隐蔽⼀些对问题域的理解偏差。
《软件工程导论》教学大纲安徽大学计算机科学与技术学院2017 年 3 月《软件工程导论》教学大纲课程编号:ZJ36047课程名称:软件工程导论英文名称:Introduction to Software Engineering 学分/学时:2/34 课程性质:学科平台课程适用专业:软件工程先修课程:计算机导论开课单位:计算机科学与技术学院一、课程的教学目标与任务《软件工程导论》课程是软件工程专业高等教育的专业基础课程和学科平台课程,是“科研训练计划”教育课程。
《软件工程导论》以科学技术方法论为逻辑起点,结合部分管理方面的基本理论,讲授软件工程与方法论的联系,从而提高软件的质量和生产率。
本课程以软件工程专业本科二年级学生为讲授对象,是集理论性与应用性为一体的学科。
设置本课程的目的是:使学习者在全面了解软件工程发展历史、基本理论的基础上,系统掌握软件开发过程中的现代方法和管理手段,具备用工程化方法设计和构建规范软件的思想,从而为后续软件工程开发方法的系列课程奠定理论基础。
学习本课程的要求是:学习者应深刻认识软件危机产生的原因,纠正对软件开发的错误认识,掌握软件工程科学方法论的基本概念和基本原理,初步具备作为专业人员组织软件开发和设计工作的能力。
为检验掌握软件开发应遵循的原则和编写文档的基本方法的程度,最后的考核是通过考试进行,同时以加深对课程内容的理解。
二、课程具体内容及基本要求第一章软件工程的范畴 ( 2学时)基本内容包括:第一节历史方面一、定义软件(1)介绍软件的形式化定义。
结合经典教科书中关于软件的定义,介绍软件中所包含的三个要素:①指令的集合;②数据结构;③软件描述信息。
(2)阐述非形式化定义中软件具有的特性。
对比其他人工产品的特性,总结软件所具有的三个特性。
二、软件工程的发展历程和应用领域第二节经济方面结合例子阐述经济学原则在软件生产方面的重要性。
第三节维护性方面介绍软件生命周期模型和步骤,阐述维护工作在生命周期模型中的重要性和具体分类。
软件⼯程之结构化⽅法与⾯向对象⽅法之⽐较与结合 软件开发⽅法指,在项⽬投资规模和时间限制内,设计、实现符合⽤户需求的⾼质量软件,根据软件开发的特点,提出的多种软件开发的策略。
随着20世纪60年代,计算机软件、硬件发展不均衡,使⼤型软件的开发过程中出现了复杂程度⾼、研制周期长、正确性难以保证的三⼤难题,引发了“软件危机”。
为了同时提⾼软件效率和质量,软件开发⽅法不断⾰新。
经过⼏⼗年的研究和应⽤,两种基于相应的程序设计思想和语⾔的软件开发⽅法,结构化⽅法与⾯向对象⽅法,成为了主流的开发⽅法之⼀,⼴泛地使⽤于软件⼯程。
结构化⽅法包括结构化分析(Structured Analysis,简称SA)、结构化设计(Structured Design,简称SD)和结构化程序设计(Structured Program Design,简称SP)三部分内容。
相应地,⾯向对象⽅法包括⾯向对象分析(Object-Oriented Analysis,简称OOA)、⾯向对象设计(Object—Oriented Design,简称OOD)和⾯向对象程序语⾔(Object-Oriented Program Design,简称OOP)。
两种软件开发⽅法从起源、思想、分析、设计,到程序设计、扩展重⽤、应⽤等各个⽅⾯有着许多的联系和区别,下⽂我将对⼆者进⾏⽐较分析。
两种⽅法针对不同的⼯作环境和应⽤场景,各具优势,也都有所不⾜,我也将讨论⼆者在软件⼯程中的结合,以期产⽣更好的效果。
(⼀)从起源上看 结构化⽅法与⾯向对象⽅法都起源于相应的程序设计思想和语⾔。
20世纪60年代后期,《程序结构理论》和《GOTO陈述有害论》的提出,证明了任何程序的逻辑结构都可以⽤顺序结构、选择结构和循环结构来表⽰,确⽴了结构化程序设计思想,产⽣了如FORTRAN、PASCAL、C等语⾔。
结构化⽅法把对程序的分析、设计,延伸⾄对项⽬⼯程的分析、设计,结合程序设计语⾔的技术⽀持,得以产⽣和发展。
软件⼯程基础习题习题11. 简述计算机系统的开发流程。
2. 系统分析和定义是计算机系统开发过程中的关键步骤,这⼀步应该做哪些⼯作?3. 系统规格说明书主要应包含哪些内容?为什么要进⾏系统复审?4. 如何理解软件概念?简述软件有哪些分类⽅法?5. 软件的发展经历了哪⼏个阶段?简述各阶段名称及特点。
6. 查阅⽂献写⼀篇1000字的短⽂,综述软件⼯程的发展。
7. 什么是软件危机?主要有哪些表现?8. 查阅最新⽂献写⼀篇2000字的短⽂,综述软件危机在当今的表现以及造成的危害。
9. 什么是软件的⽣命周期?10. 软件⽣存期模型主要有哪些?给出名称及特点。
习题21. 软件计划的任务主要有哪些?2. 在软件计划阶段应该考虑哪三类资源?对软件开发中的每⼀类资源可以⽤哪些特征来描述?什么是时间窗⼝?可再⽤软件资源主要有⼏种?给出名称及简单解释。
3. 软件⽣命周期中各阶段⼈⼒资源如何安排才合理?4. 简述代码⾏技术的基本思想。
5. 指出下列公式中每个量的含义。
∑=-±=ni d a b L 12)6(6. 什么是40-20-40规则?7. 当采⽤敏捷开发过程时,如何进⾏项⽬估算? 8. 如何对Web ⼯程项⽬进⾏估算? 9. 简述任务分解技术的基本思想。
10. Halstead 理论模型的主要依据有哪些?给出⽤Halstead 理论模型估算成本的公式以及公式的推导过程,说出各个量的取值依据。
11. 估计某PASCAL 程序中n1=70,n2=60,N1=14300,N2=400,取S=12,W=20000,估算开发该软件的总成本。
12. 估计⼀个C 语⾔程序系统⼤约⼀万⾏,W 取30000元,估算开发该系统的成本。
13. 开发⼀个Organic 类型的软件,经分析有45000⾏源代码,试⽤基本COCOMO 模型估算所需⼯作量、⽣产率、开发时间及投⼊该项⽬的最佳⼈员数。
14. 利⽤题13得出的⼯作量E ,根据Esterling 模型估算当团队⼈数n 为8时的软件成本,若n 为12时,成本⼜当如何?15. ⽤2年的时间开发⼀个应⽤软件系统,估计代码⾏数为5万⾏,Ck 取10000,试计算所需⼯作量。
任务名称:传统软件工程方法学和面向对象方法学一、引言传统软件工程方法学和面向对象方法学是软件开发领域中两种常见的方法论。
本文将对传统软件工程方法学和面向对象方法学进行详细探讨,并对它们的优缺点进行比较。
二、传统软件工程方法学传统软件工程方法学是软件开发过程中常用的一种方法学。
它强调项目管理和软件开发的规范性,包括以下几个阶段:2.1 需求分析在传统软件工程方法学中,需求分析是一个重要的阶段。
开发团队通过与用户的沟通,收集用户的需求,并将其转化为软件需求规格说明书。
2.2 设计阶段在传统软件工程方法学中,设计阶段是构建软件架构和设计详细功能的阶段。
开发团队根据需求分析阶段的结果,设计出软件的整体结构和模块之间的关系。
2.3 编码和测试阶段在传统软件工程方法学中,编码和测试阶段是将设计转化为代码并进行测试的阶段。
开发团队根据设计阶段的结果,编写源代码,并进行各种类型的测试,包括单元测试、集成测试和系统测试等。
2.4 部署和维护阶段在传统软件工程方法学中,部署和维护阶段是将软件部署到生产环境并进行维护的阶段。
开发团队将开发好的软件部署到用户的计算机上,并对其进行维护和更新。
三、面向对象方法学面向对象方法学是另一种常见的软件开发方法学。
它将问题领域的概念和现实世界的实体转化为软件系统中的对象,并通过对象之间的交互来解决问题。
面向对象方法学强调以下几个关键概念:3.1 封装封装是面向对象方法学中的一个重要概念。
它将数据和操作数据的方法封装到对象中,隐藏了对象内部的细节,只提供对外部可见的接口。
3.2 继承继承是面向对象方法学中的另一个关键概念。
它允许通过从已有的类中派生出新的类来扩展和重用代码。
通过继承,子类可以继承父类的属性和方法,并可以添加自己特有的属性和方法。
3.3 多态多态是面向对象方法学的第三个关键概念。
它允许不同的对象对同一消息作出不同的响应。
多态性增强了代码的灵活性和可扩展性。
3.4 设计模式设计模式是面向对象方法学的另一个重要概念。
传统软件工程与面向对象的区别摘要:自然语言和编程语言之间的鸿沟,是软件开发过程中最难跨越的阶段.早期的软件开发所面临的问题域比较简单.从认识清楚要解决的问题,到把这种认识用程序表达出来,还不是很困难的事情。
软件危机的出现,促进了软件工程学的形成和发展.由于面向对象编程语言的发展,面向对象的软件被设计成一系列的对象及其之间通过消息的相互作用,这些对象从根本上形成了问题的模型,并由这些对象共同作用于一个解决方案。
面向对象的程序设计又提供了信息隐蔽、继承、多态和动态绑定等机制。
这种软件开发方法固有的特性,给软件测试理论、技术、方法等方面带来了巨大的影响。
关键字:程序软件面向对象软件工程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 engineering1、传统软件工程方法。
传统方法学[1]在软件开发过程中占据相当大的比重,因为其悠久的历史而为很多软件工程师青睐。
传统方法学又称生命周期方法学或结构化范型。
一个软件从开始计划起,到废弃不用止,称为软件的生命周期。
在传统的软件工程方法中,软件的生存周期分为需求分析、总体设计、详细设计、编程和测试几个阶段。
传统方法学使用的是结构化分析技术来完成需求分析阶段的工作。
软件工程学中的需求分析具有两方面的意义。
在认识事物方面,它具有一整套分析、认识问题域的方法、原则和策略。
这些方法、原则和策略使开发人员对问题域的理解比不遵循软件工程方法更为全面、深刻和有效。
在描述事物方面,它具有一套表示体系和文档规范。
但是,传统的软件工程方法学中的需求分析在上述两方面都存在不足.它在全局范围内以功能、数据或数据流为中心来进行分析。
这些方法的分析结果不能直接地映射问题域,而是经过了不同程度的转化和重新组合。
因此,传统的分析方法容易隐蔽一些对问题域的理解偏差,与后续开发阶段的衔接也比较困难。
在总体设计阶段,以需求分析的结果作为出发点构造出一个具体的系统设计方案,主要是决定系统的模块结构,以及模块的划分,模块间的数据传送及调用关系。
详细设计是在总体设计的基础上考虑每个模块的内部结构及算法,最终将产生每个模块的程序流程图。
但是传统的软件工程方法中设计文档很难与分析文档对应,原因是二者的表示体系不一致,所谓从分析到设计的转换,实际上并不存在可靠的转换规则,而是带有人为的随意性,从而很容易因理解上的错误而留下隐患。
编程阶段是利用一种编程语言产生一个能够被机器理解和执行的系统,测试是发现和排除程序中的错误,最终产生一个正确的系统。
但是由于分析方法的缺陷很容易产生对问题的错误理解,而分析与设计的差距很容易造成设计人员对分析结果的错误转换,以致在编程时程序员往往需要对分析员和设计人员已经认识过的事物重新进行认识,并产生不同的理解。
因此为了使两个阶段之间能够更好的衔接,测试就变得尤为重要。
软件维护阶段的工作,一是对使用中发生的错误进行修改,二是因需求发生了变化而进行修改。
前一种情况需要从程序逆向追溯到发生错误的开发阶段。
由于程序不能映射问题以及各个阶段的文档不能对应,每一步追溯都存在许多理解障碍。
第二种情况是一个从需求到程序的顺向过程,它也存在初次开发时的那些困难,并且又增加了理解每个阶段原有文档的困难。
传统软件工程方法面向的是过程,它按照数据变换的过程寻找问题的结点,对问题进行分解。
由于不同人对过程的理解不同,故面向过程的功能分割出的模块会因人而异。
对于问题世界的抽象结论,结构化方法可以用数据流图,系统结构图,数据字典,状态转移图,实体关系图来进行系统逻辑模型的描述,生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。
传统软件工程方法学强调以模块为中心,采用模块化,自顶向下,逐步求精设计过程,系统是实现模块功能的函数和过程的集合,结构清晰,可读性好,是提高软件开发质量的一种有效手段。
结构化设计从系统的功能入手,按照工程标准,严格规范地将系统分解为若干功能模块,因为系统是实现模块功能的函数和过程的集合。
然而,由于用户的需要和软硬件技术的不断发展变化,作为系统基本组成部分的功能模块很容易受到影响,局部修改甚至会引起系统的根本性变化。
开发过程前期入手快而后期频繁改动的现象比较常见。
当然,传统的软件工程方法学也存在很多的缺点,主要表现在生产效率非常底,从而导致不能满足用户的需要,复用程度低,软件很难维护等。
虽然如此,传统方法学仍然是人们在软件开发过程中使用的十分广泛的软件工程方法学,在开发某些类型的软件时也比较有效。
因此传统软件工程方法学的价值并不会因面向对象方法学的出现而减少,并且它还是学习面向对象方法学的基础。
2、面向对象的分析与设计。
面向对象语言更接近人的思维,面向对象程序的主要结构特点是:第一,程序一般有类的定义和类的使用两部分组成,在主程序中定义各个对象并规定它们之间传递消息的规律;第二,程序中的一切操作都是通过面向对象发送消息来实现的,对象接收到消息后,启动有关方法去完成相应的操作”。
下面就是一些有关面向对象语言的对象、状态、消息、类、以及面向对象语言的三个重要的特征,继承、封装和多态[2]。
对象,对象由保存对象属性的数据和可以施加于这些数据的操作封装在一起构成的整体。
对象是类的实例,对象给类以生命,类想要做的事情必须通过建立对象和在对象仁进行操作而实现。
消息,消息是对象的操作将要执行的一种请求,是一个对象要求另外一个对象执行某个功能操作的规格况明,通过消息传递。
能完成对象之问的相互请求或相互协作。
除了需要一个操作的名字,消息还可包含一些值(实参),它们常常在操作被执行时使用。
消息的接收者也可以将某个值返回给消息的发送者,消息传递使程序的控制流错综复杂,不易于理解和把握,给测试带来了一定的困难。
类,类是面向对象中基本构造单元,是一组具有相同数据结构和相同操作的对象的集合。
类的定义包括一组数据属性和在数据上的一组合法操作,也就是方法。
在面向对象的程序中,任何被描述的概念最初都必须被声明为类,然后创建由该类定义的对象在一个类中,每个对象都是类的实例,它们都可使用类中提供的函数。
类和对象之间的关系是抽象和具体的关系,类是对多个对象进行综合抽象的结果。
继承,继承是面向对象程序设计的一个重要特征,它允许在既有类的基础上创建新的类,新类可以从一个或多个既有类中继承函数和数据,而且可以重新定义或加进新的数掘和函数导出类或子类。
一个类对另一个类的依赖,使得己有类的说明和实现可以被复用。
封装,封装就是对象把一些属性和方法封装起来,将私有元素和实现操作的内部细节隐藏起来,并能管理自己的内部状念。
外部只能从对象所表示的具体概念、对象提供的服务和对象提供的外部接1:3来认识对象。
通过向对象发送消息来激活对象的自身动作,达到施加特定操作的目的。
多态,多态就是不同的对象收到相同的消息,产生不同的动作。
通俗的晚,就是一个名字定义不同的函数,这些函数执行不同但又类似的操作,即用同样的接口访问功能不同的函数,从而实现“一个接口,多种方法”。
多态性可以分为静念多念性和动念多态性,在静态多态性中,绑定是在编译时进行的,而动态多态性用隐式运行时的绑定和运行时的类型检查代替了显示的编译时的绑定和静态类型。
3、面向对象分析与设计和传统软件工程的比较。
面向对象的分析OOA(Object--Oriented Analysis),OOA强调直接针对问题域客观存在的各项事物设立OOA模型中的对象.问题域有哪些值得考虑的事物,OOA模型中就有哪些对象.00A对问题域的观察、分析和认识是很直接的,对问题域的描述也是很直接的.它所采用的概念及其术语与问题域中的事物保持了最大程度的数据一致,不存在语言上的鸿沟。
面向对象的设计OOD(Object--Oriented Design),OOD是针对系统的一个具体的实现运用OO方法.它与OOA采用相同的表示法和模型结构.OOA与00D采用一致的表示法是面向对象的分析与设计优于传统的软件工程方法的重要因素之一。
这使得从OOA 到OOD不存在转换,只有很局部的修改或调整,并增加几个与实现有关的独立部分,因此OOA与OOD之间不存在传统方法中分析与设计之间的鸿沟.,二者能够紧密衔接,大大降低了从OOA到00D的难度、工作量和出错率.面向对象的编程OOP(Object--Oriented Programing),OOP工作就是用同一种面向对象的编程语言把OOD模型中的每个成分书写出来.即用具体的数据结构来定义对象的属性,用具体的语句来实现服务流程图所表示的算法.OOP阶段产生的程序能够紧密地对应00D模型;OOD模型中一部分对象类对应OOA模型,其余部分的对象类对应与实现有关的因素;OOA模型中全部类及对象都对应问题域中的事物.这样的映射关系提高了开发工作的效率和质量.传统软件工程采用面向过程,即结构化程序设计方法,有很多成功的例子,也有失败的例子。