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

  计算机软件在现代科学技术中有着十分重要地位和作用,已成为信息社会高技术竞争的关键领域之一。我在这篇文章中针对计算机软件两大开发方法:结构化方法与面向对象方法进行了梳理、对比,剖析了结构化方法和面向对象方法这两种软件开发方法具体的分析设计过程,讨论了各自在不同软件开发中的应用及局限性,并在最后提出了一点自己的看法。

1结构化方法

  结构化方法(Structured Methodology)是编程领域的一种典型的系统开发方法。 它采用了系统科学的思想方法,从层次的角度,自顶向下地分析和设计系统。 结构化方法包括结构化分析(Structured Analysis,简称 SA)、结构化设计(Structured Design,简 称 SD)和结构化程序设计(Structured Program Design,简称 SP)三部分内容。 其中,SA 和 SD 主要属于程序抽象的内容,SP 则主要属于程序设计方面的内容。

1.1结构化方法遵循的基本原则:

(1)抽象原则

(2)分解原则

(3)模块化原则

1.2结构化方法建模:

  建模通常是从系统的需求分析开始, 在结构化方法中,就是使用 SA 方法构建系统的环境模型;然后使用 SD 方法,确定系统的行为和功能模型;最后用 SP 方法进行系统的设计。 SD 的主要任务就是要在系统环境模型的基础上建立系统的行为 和功能模型,完成系统内部行为的描述。 实现系统行为和功能模型的 主要工具有:数据字典、数据流图、状态变迁图和实体一联系模型等

     1.2.1数据流图:

   数据流图(DFD)是SA和 SD的核心技术,它是一个有向图,弧线表示数据,节点表示数据流通过的程序。程序还可以再细分为更细的数据流程图,不断细分子程序,直到表达清楚程序机能为止。对于抽象底层的代码块或函数,一般用程序规格(specification)详述,程序规格特殊情况下也可以是流程图或伪代码。

   DFD采用面向处理过程的思想将系统的一些重要信息可视化,这些信息包括:系统的执行过程,系统的执行效果,系统的用法, 信息流和数据从输入到输出的变换等。用户可以通过DFD了解到系统的一个大致边界,并展示系统和外部的接口、数据的 输入和输出以及数据的存储。

  1.2.2数据字典

  数据字典是结构化分析方法的核心。数据字典是对所有与系统相关的数据元素的一个有组织的列表,数据元素的 定义必须是精确的、严格的和明确的,使用户和系统分析员对输入、输出、存储和中间结果有共同的理解。

  数据字典的作用是对数据流图(DFD)中出现的被命名的图形元素的确切解释,通常一个实体包含的信息有:①名字; ②别名; ③用途; ④内容描述; ⑤备注信息。

  1.2.3状态变迁图

  状态变迁图(STD)指明作为外部事件的结果系统将如何动作。STD是行为建模的基础。关于软件控制的附加信息包含在控制规约(CSPEC)中。它及时地描述了对象的状态,它着重系统的时间依赖行为。 状态变迁图源于实时系统的建模。 状态变迁图看起来非常像数据流图,然而,它们之间却存在着本质的不同。 数据流图着重于数据流和数据转换的过程,而状态变迁图着重于状态的描述,如激励发生时的开始状态和系统执行响应后的结果状态。 状态变迁图的条件和一个过程的输入数据流相对应,同时,还与控制流的流出相对应。

  1.2.4 实体一联系模型:

  实体一联系模型被用来模拟系统数据部件之问的相互关系。 实体一联系模型独立于当前的系统状态,并与具体的计算机程序设计语言无关。

  1.3结构化程序设计(SP):

(1) 主张使用顺序、选择、循环三种基本结构来嵌套连结成具有复杂层次的“结构化程序”,严格控制GOTO语句的使用。用这样的方法编出的程序在结构上具有以下效果:

  a. 以控制结构为单位,只有一个入口,一个出口,所以能独立地理解这一部分。

  b. 能够以控制结构为单位,从上到下顺序地阅读程序文本。

  c.由于程序的静态描述与执行时的控制流程容易对应,所以能够方便正确地理解程序的动作。

(2)“自顶而下,逐步求精”的设计思想,其出发点是从问题的总体目标开始,抽象低层的细节,先专心构造高层的结构,然后再一层一层地分解和细化。这使设计者能把握主题,高屋建瓴,避免一开始就陷入复杂的细节中,使复杂的设计过程变得简单明了,过程的结果也容易做到正确可靠。

(3)“独立功能,单出、入口”的模块结构,减少模块的相互联系使模块可作为插件或积木使用,降低程序的复杂性,提高可靠性。程序编写时,所有模块的功能通过相应的子程序(函数或过程)的代码来实现。程序的主体是子程序层次库,它与功能模块的抽象层次相对应,编码原则使得程序流程简洁、清晰,增强可读性。

2.  面向对象方法

面向对象方法是从内部结构上模拟客观世界 ,其基本思想为 :对象是对现实世界客观实体的描述 ,均由其属性和相关操作组成 ,是系统描述的基本单位 .面向对象方法更强调运用人类在日常的逻辑思维中经常采用的思想方法和原则 ,例如抽象 、分类、继承、聚合、封装等,这使得软件开发者能更有效地思考问题 , 并以其他人也能看得懂的方式把自己的认识表达出来。

2.1面向对象分析(OOA)

2.1.1 OOA概述:

1.认识对象及其属性。

2.认识对象的整体及其组成部分。

3.对象的形成及类的区分。

4.对问题空间进行理解并抽象成模型。

2.1.2 OOA的五个阶段:标识对象、标识结构、标识主题、定义属性、定义服务,即分五个层次建立面向对象分析的模型.面向对象分析的优点是使功能分析与数据分析使用统一的概念和方法,克服了结构化分析中两者之间的不一致性和不协调性.

2.1.3  OOA的主要原则:

(1)抽象:从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征,就叫作抽象。抽象是形成概念的必须手段。

抽象原则有两方面的意义:第一,尽管问题域中的事物是很复杂的,但是分析员并不需要了解和描述它们的一切,只需要分析研究其中与系统目标有关的事物及其本质性特征。第二,通过舍弃个体事物在细节上的差异,抽取其共同特征而得到一批事物的抽象概念。     抽象是面向对象方法中使用最为广泛的原则。抽象原则包括过程抽象和数据抽象两个方面。

过程抽象是指,任何一个完成确定功能的操作序列,其使用者都可以把它看作一个单一的实体,尽管实际上它可能是由一系列更低级的操作完成的。

数据抽象是根据施加于数据之上的操作来定义数据类型,并限定数据的值只能由这些操作来修改和观察。数据抽象是OOA的核心原则。它强调把数据(属性)和操作(服务)结合为一个不可分的系统单位(即对象),对象的外部只需要知道它做什么,而不必知道它如何做。

(2)封装就是把对象的属性和服务结合为一个不可分的系统单位,并尽可能隐蔽对象的内部细节。

(3)继承:特殊类的对象拥有的其一般类的全部属性与服务,称作特殊类对一般类的继承。

(4)分类:就是把具有相同属性和服务的对象划分为一类,用类作为这些对象的抽象描述。分类原则实际上是抽象原则运用于对象描述时的一种表现形式。     (5)聚合:又称组装,其原则是:把一个复杂的事物看成若干比较简单的事物的组装体,从而简化对复杂事物的描述。

(6)关联:是人类思考问题时经常运用的思想方法:通过一个事物联想到另外的事物。能使人发生联想的原因是事物之间确实存在着某些联系

(7)消息通信:这一原则要求对象之间只能通过消息进行通信,而不允许在对象之外直接地存取对象内部的属性。通过消息进行通信是由于封装原则而引起的。在OOA中要求用消息连接表示出对象之间的动态联系。

(8)粒度控制:一般来讲,人在面对一个复杂的问题域时,不可能在同一时刻既能纵观全局,又能洞察秋毫。因此需要控制自己的视野:考虑全局时,注意其大的组成部分,暂时不详察每一部分的具体的细节;考虑某部分的细节时则暂时撇开其余的部分。这就是粒度控制原则。

(9)行为分析:现实世界中事物的行为是复杂的。由大量的事物所构成的问题域中各种行为往往相互依赖、相互交织

2.2面向对象设计

2.2.1面向对象设计的主要工作:

面向对象设计是一种软件设计方法,是一种工程化规范。这是毫无疑问的。面向对象设计的主要工作包括:

1.确定需要的类。

2. 给每个类提供一组完整的操作。

3. 明确地使用继承来表现共同点。

2.2.2面向对象设计的主要原则:

1.模块化

面向对象开发方法很自然地支持了把系统分解成模块的设计原则:对象就是模块。它是把数据结构和操作这些数据的方法紧密地结合在一起所构成的模块。

2.抽象

面向对象方法不仅支持过程抽象,而且支持数据抽象。

3.信息隐藏

在面向对象方法中,信息隐藏通过对象的封装性来实现。

4.低耦合

在面向对象方法中,对象是最基本的模块,因此,耦合主要指不同对象之间相互关联的紧密程度。低耦合是设计的一个重要标准,因为这有助于使得系统中某一部分的变化对其他部分的影响降到最低程度。

5.高内聚

包括操作内聚,类内聚,一般-具体内聚。

SOLID原则就是以上几个原则的具体实现和要求,这里就不再详述:


SRP


The Single Responsibility Principle


单一责任原则


OCP


The Open Closed Principle


开放封闭原则


LSP


The Liskov Substitution Principle


里氏替换原则


DIP


The Dependency Inversion Principle


依赖倒置原则


ISP


The Interface Segregation Principle


接口分离原则

2.2.3 面向对象设计的主要任务如下:

1.对象定义规格的求精

  对于面向对象分析所抽象出来的对象、类,以及汇集的分析文档,面向对象设计需要有一个根据设计要求整理和求精的过程,使之更能符合面向对象编程的需要。

2.数据模型和数据库设计

  数据模型的设计需要确定类、对象属性的内容、消息连接的方式、系统访问、数据模型的方法等。最后,每个对象实例的数据都必须落实到面向对象的库结构模型中。

3.优化

  面向对象设计的优化设计过程是从另一个角度对分析结果和处理业务过程的整理归纳,优化包括对象和结构的优化、抽象、集成。

2.2.4 面向对象设计范例—UML类图(以我们组的软工设计为例)

3对比与总结:

  结构化方法是对系统功能建模,基于功能分解设计系统结构,从内部功能上模拟客观世界,其建立的模型比较直观、简单、可读性好,有利于客户和开发人员的交流,能够把一个复杂的系统用多个满足独立性要求的小模块来实现,能够有效地提高软件开发质量。面向对象方法则是从行为的角度进行建模,基于行为分析法认定对象及它们之间的关系, 从内部结构上模拟客观世界,它采用了新概念,新方法,新的表示形式,易于进行代码的复用,系统的重构,面对需求的变更也可以更加轻松地应对。但在实际应用中,开发的大型软件系统通常是混合型系统,即需要处理实时信息,又需要数据库的支持,同时还涉及大量的事务性操作请求,在这种情况下,在选用面向对象方法的同时在局部处理上可以结合使用结构化方法。

4.  参考文献

[1].张莉, 裘国永. 结构化方法与面向对象方法的比较分析[J]. 陕西师范大学学报 (自然科学版), 2001, 29(2): 29-32.

[2].汪寒昊, 谢加胜, 邢跃. 软件开发方法——结构化方法与面向对象方法比较[J]. 科技信息, 2011, 13: 052.

[3]. 朱培栋 杨桃栏. 面向对象方法与结构化方法的比较[J]. 计算机与现代化, 1995, 第一期.

[4]张海潘.软件工程导论[M].5 版.清华大学出版社,2008 年 3 月.

[5]毕忠东,刘启明.面向对象的软件工程与面向对象的建模方法[J].福建电脑, 2007(8).

时间: 2024-11-10 00:05:28

结构化与面向对象方法的比较的相关文章

结构化和面向对象之应用比较

---恢复内容开始--- 结构化和面向对象之应用比较 在无数程序设计人员的不断实践和理论改进中,软件工程程序设计中极其重要的指导性思路一直在发生着变革.在相对较长的时间里,不断有新的软件工程中的程序设计思路涌现,其中在生产实践中得到了十分广泛的应用的,当属结构化和面向对象的方法. 结构化程序设计在结构上将软件系统划分为若干功能模块或实体,分别采用模块化程序设计语言编程实现,再由各模块联结,组合成相应结构的软件系统. 而在面向对象的程序设计中,所谓对象是指具有一定结构.属性和功能的实体,采用对象和

结构化网页内容抽取方法

为了从几个网站抽取内容,聚合到一起.我于2012年写了一个程序,从多个网站通过结构化方法抽取内容.然后写入数据库,形成一个网站. (1)正则表达式抽取 首先,从数据库中读取内容抽取规则: ArrayList<RuleBean> rbList = ruleDao.QueryAllRule();  表结构如下:  配置的抽取规则如下: 其次,读取网页内容,并通过起始标签抽取出内容,然后通过正则表达式读取出网址URL.标题和发表时间. 直接上代码如下: private static void doC

面向过程(结构化)分析方法与面向对象分析方法的区别

面向过程是从问题的总体目标开始,抽象底层的细节,先专心构造高层的结构,然后再一层一层地分解合细化. 面向对象则是运用对象.类.继承.封装.聚合.消息传递.多态性等概念来构造系统的方法. 面向过程着重于解决问题的从粗略到详尽的方法,二面向对象则关注点是问题本身.好比渔夫捕鱼,使用什么样的网子用什么样的方式撒网收网即是面向过程,而抓到鱼这件事则是面向对象.二者区别在于侧重点不同.

【第二周作业】面向过程(或者叫结构化)分析方法与面向对象分析方法到底区别在哪里?

书上的一些概念这里不再复述,仅谈谈自己通过阅读教材.上课听讲后自己的一些理解: 面向过程分析方法注重自顶向下,逐层分析,把整个软件系统的功能逐布分解,各个击破.可以用生活中的一个例子来加以理解——去食堂吃饭.到达食堂(比如琴湖食堂)后,要遵从排队——打饭——阿姨打菜——拿筷子——找位子坐好——开吃,整个过程强调顺序性,比如不拿筷子就坐下是不行的,除非拿手抓.面向过程就是将软件系统所需要实现的功能按照以上类似的思路逐步细分,一步一步要做什么都要分析清楚. 面向对象分析方法则注重分析整个系统的逻辑结

面向过程(或者叫结构化)分析方法与面向对象分析方法到底区别在哪里?

结构化分析方法的分析步骤:1 理解和分析当前的现实环境 已获得当前系统的具体模型 2 建立当前系统的逻辑模型 3 建立目标系统的逻辑模型 4 进一步完善目标系统的逻辑模型 面向对象分析方法:根据面向对象的过程模型 面向对象的需求分析从概念上分为问题分析和应用分析两个方面  问题分析:主要收集并确认用户需求 最后将信息链接最终建立关于对象的分析模型 应用分析:主要是动态描述系统中对象的合法状态序列 并用动态模型表达对象的动态行为 对象之间的消息传递和协同工作的动态信息 综上:结构化分析方法是先创建

结构化与面向对象化之应用比较

结构化与面向对象化之应用比较 引言 软件工程中构建工程经常使用两种方法:结构化方法和面对对象方法.结构化方法由艾兹格.迪杰斯特拉在1967年发表<goto陈述有害论>时提出.面向对象方法在80年代起逐步形成.两种方法各有优点,相伴存在至今.下面我们就来分析.探讨结构化程序设计方法与面向对象的方法的区别,以及在现实应用中如何在两种方法中做出选择. 一.结构化方法 1. 基本思想 结构化方法程序设计的基本思想是: a.自顶向下 b.采用模块化技术 c.分而治之 d.逐步求精地将信息系统按功能分解为

说说结构化方法和面向对象方法

前言1.1 结构化方法与面向对象方法都是软件在设计过程中两种常用的方法,两者是在特定背景下的产物,两者既相互区别又在一定程度上有所联系,具体选择哪一种开发方法要针对具体的项目类型和项目规模来确定.不过,依照笔者目前的经验,针对现有问题的复杂程度,一个系统或软件的开发过程往往是多种开发方法相结合,并且综合考虑多种因素来决定的. 综述2.1 结构化方法起源于软件危机 20世纪60年代后期,程序员(媛)不在像以往那样将其完全掌控在自己手中,软件的开发周期和软件的质量并不明显的存在正比的关系,那时候我们

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

结构化方法与面向对象方法比较 软件工程离不开软件开发方法,软件开发方法是指在项目投资规模和时间限制内.设计.实现符合用户需求的高质量软件,根据软件开发的特点,提出的多种软件开发策略.而自20世纪60年代以来,受到开发综合症"软件危机"的影响,软件开发方法不断地快速发展着,产生了许多众所周知的开发方法,比如结构化方法.原型法基于模型的VDM(维也纳开发)方法.面向对象方法等.其中,结构化方法和面向对象方法最具有代表性,在软件开发领域中使用比较广泛,下面我们就来对这两种方法进行说明和比较.

结构化系统开发和面向对象开发方法

结构化系统开发方法: 系统分析员.软件工程师.程序员以及最终用户按照用户至上的原则,自顶向下分析与设计和自底向上逐步实施的建立计算机信息系统的一个过程,是组织.管理和控制信息系统开发过程的一种基本框架. 三部分:管理策略部分:强调系统开发的规划.进程安排.评估.监控和反馈.开发策略部分:任务分解结构:WBS优先级结构.开发经验.开发标准. 开发过程分为:系统规划阶段.系统分析阶段.系统设计阶段.系统实施阶段.系统运行与维护阶段结构化开发早期的程序开发,如C语言,都是用结构化开发方法. 面向对象开