码迷,mamicode.com
首页 > 其他好文 > 详细

结构化方法与面向对象方法之比较

时间:2016-12-16 00:47:08      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:编写   思想   并发   方法学   分包   对比   补充   分析   体系   

一、结构化方法

结构化起源于结构化程序设计,具有面向功能、结构清晰,支持逐步求精,软件易于维护的特点。它由结构化分析(SA)、结构化设计(SD)、结构化程序设计(SP)三部分组成。

结构化分析方法的基本原则是自顶向下,先整体后局部、先抽象后具体,逐步求精。其中抽象在最高层次上指的是使用待解决的问题领域内的术语描述的解决方案。逐步求精,指的是通过连续细化层次结构的程序细节来开发程序体系的策略。结构化分析方法的基本思想是要把一个大问题分解成为若干个小问题,每个小问题再分解成为若干个更小的问题。经过逐层分解,每个最低层的问题都是足够简单、容易解决的,从而解决复杂的问题。结构化分析方法要面向应用、分解需求,其步骤如下:(1)分析当前的情况,做出反映当前物理模型的DFD;(2)推导出等价的逻辑模型的DFD;(3)设计新的逻辑系统,生成数据字典和基元描述;(4)建立人机接口,提出可供选择的目标系统物理模型的DFD;(5)确定各种方案的成本和风险等级,据此对各种方案进行分析;(6)选择一种方案;(7)建立完整的需求规约。

结构化设计方法的基本原则是模块化、先集中再分权、先分解再整合,逐步求精。它的基本思想是以结构化分析阶段所产生的文档(包括数据流图、数据字典和软件需求说明书)为基础,自顶向下,逐步求精和模块化的过程。结构化设计通常可分为概要设计和详细设计。概要设计的任务是确定软件系统的结构,进行模块划分,确定每个模块的功能、接口及模块间的调用关系。详细设计的任务是为每个模块设计实现的细节。结构化设计方法要细化分析结果、过渡软件结构,其步骤如下:(1)评审和细化数据流图;(2)确定数据流图的类型;(3)把数据流图映射到软件模块结构,设计出模块结构的上层;(4)基于数据流图逐步分解高层模块,设计中下层模块;(5)对模块结构进行优化,得到更为合理的软件结构;(6)描述模块接口。

结构化程序设计的基本原则是自外向内、先整体后局部、先抽象后具体,逐步求精。其基本思想是在设计一个模块的实现算法时,通过逐步细化,最后得到详细的实现算法。单入口单出口的控制结构,使程序的静态结构和动态执行过程一致,具有良好的结构,增强了程序的可读性。结构化编程的核心技术:通过三种基本逻辑构造,来表达程序的全部处理流程。分别为:顺序型:提供任何算法规则说明中的核心处理步骤;条件型:允许根据逻辑情况选择处理的方式;重复型:提供对循环的支持。

二、面向对象方法

面向对象方法是一种把面向对象的思想应用于软件开发过程中, 指导开发活动的系统方法, 是建立在“对象”概念基础上的方法学。它由面向对象分析(OOA)、面向对象设计(OOD)、面向对象实现(OOI)三部分组成。

面向对象分析阶段需要解决以下问题:为完成用户要求系统应提供的功能、系统应有哪些对象构成、每个对象应有哪些属性和服务、对象间应有怎样的联系。此时需要进行的活动为个体特征分析、静态分析(分析对象系统之间存在的两种关系)、动态分析(分析对象及之间的行为及其控制关系)。在该阶段需立足应用、刻画问题,其具体步骤为:(1)确定问题域,包括定义论域,选择论域,根据需要细化和增加论域; (2)区分类和对象,包括定义对象,定义类、命名; (3)区分整体对象以及组成部分,确定类的关系以及结构; (4)定义属性,包括确定属性,安排属性; (5)定义服务,包括确定对象状态,确定所需服务,确定消息联结; (6)确定附加的系统约束。

面向对象设计阶段需要完成如下工作:(1)精化改进原有类及属性:所需精化改进部分包括属性(有些属性仅为了需求理解,有些属性为实现算法所必需)、服务(具体实现OOA的服务接口)、类及结构(优化调整继承、组成关系,以及哪些类会引发哪些类创建对象)、对象行为(明确对象间消息传递的实现算法,依据动态模型确定对象间消息发送的先后顺序,并设计相应算法,协调对象的行为)。(2)完成应用控制、人机交互界面的设计:具体包括交互界面子系统的设计(即与界面有关的类及类间结构设计,以及有关算法的设计)、交互界面子系统和应用之间接口的设计、应用控制部分的设计(主要完成应用的驱动工作)。在该阶段需细化分析结果、补充现实相关,其具体步骤为:(1)应用面向对象分析,对用其他方法得到的系统分析的结果进行改进和完善;(2)设计交互过程和用户接口; (3)设计任务管理,根据前一步骤确定是否需要多重任务,确定并发性,确定以何种方式驱动任务,设计子系统以及任务之间的协调与通信方式,确定优先级; (4)设计全局资源,确定边界条件,确定任务或子系统的软、硬件分配;(5)对象设计。

面向对象实现阶段即是要对软件功能进行编码实现,它包括:每个对象的内部功能的实现;确立对象哪一些处理能力应在哪些类中进行描述;确定并实现系统的界面、输出的形式及其它控制机理等,总之是实现在设计阶段所规定的各个对象所应完成的任务。在编码实现过程中,使用面向对象语言实现面向对象的设计相对比较容易。如果用非面向对象语言实现面向对象的设计时,特别需要注意和规定保留程序的面向对象结构。

三、比较

由于结构化方法针对的是功能,根据功能将系统分为若干模块,这就导致当功能发生变化,往往会使局部的修改影响至整个系统大幅度修改,其可扩展性较差,且由于结构化方法的数据和操作进行了分离,所以有些可以重用的软件结构只能用于特定的环境当中,故可重用性较低。面向对象方法则由于其继承、封装、多态等特性可重用代码,使得其具有很好的可扩展性、可重用性。但与此同时也由于其封装性会屏蔽对象内部的执行细节,发生错误时,定位故障的代价相对更大。

结构化方法逐步求精,把一个大问题逐步分解为小问题,强调功能抽象和模块化,分块处理,降低了问题处理难度,但同时在得到问题本质性描述之前,需处理的信息描述也会越来越多、越来越复杂。面向对象方法需要试图抽象出更加公用的类,需要花费更多精力去细化每个对象的功能责任,掌握难度要比结构化方法高。

在编写程序方面,结构化方法思路清晰,条理严谨,步骤整洁,简化编程人员工作,便于阅读理解;而在注重功能的用户使用方法,面向对象方法与人类习惯的思维方法一致故用户使用时更容易理解,操作简单,界面清楚,使得软件使用变得简单。

 

四、参考文献

[1]百度百科

[2]结构化方法与面向对象可结合性研究 单家凌

[3]结构化方法学与面向对象方法学在软件开发中的比较 栾咏红

结构化方法与面向对象方法之比较

标签:编写   思想   并发   方法学   分包   对比   补充   分析   体系   

原文地址:http://www.cnblogs.com/zhx123/p/6185224.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!