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

结构化开发⽅法与⾯向对象开发⽅法之⽐较
1、结构化⽅法
结构化⽅法起源于1960~1980年代。随着当时软件⼯程业的发展,软件规模逐步扩⼤。⽽传统的以功能和数据为中⼼的开发⽅法已经⽆法适⽤于⼤型系统的开发,由此结构化⽅法运⽤⽽⽣。
结构化⽅法是结构化分析(SA)、结构化设计(SD)和结构化编程技术(SP)的组合。氯化镁
敦煌学大辞典
1.1 结构化分析
结构化分析(Structed)的精髓在于抽象、求精和信息隐藏。通过对系统⾏为的⾃顶向下的分析,⽤状态转移图(SDT)、数据字典(DD)和数据流图(DFD)等图表的⽅式精确描述系统从顶层到向下细化的各层的⾏为和数据,将复杂系统流程表述成⼀个个⼦流程的集合,简化了系统开发复杂度。下⾯结合实例简要叙述结构化分析流程。
假设我们要开发⼀个校园⼆⼿交易平台,在明确系统功能需求之后,⾸先根据系统功能需求建⽴系统数据模型——实体—关系图。
1.实体关系图明确了系统内的实体数据以及他们之间的关系,每个实体以及他们之间的关系都对应相应
的系统功能。⽐如交易系统中实体有⽤户、管理员、商品等实体,⽤户可以购买商品或者卖出商品,⽤户与商品间是⼀对多关系。管理员可以管理⽤户,与⽤户是⼀对多的关系,这样就建⽴了系统内实体--关系图。
2.实体—关系图描述了系统中静态的数据关系,只能对应功能点,⽽对于系统的功能流程⽆法描述。数据流图通过分析数据在系统内的流动,从对顶层的宏观描述逐步细化,确定了系统内的数据流动过程。
⼀个基本的数据流图元素包括外部实体(数据产⽣者/消费者)、处理(数据处理者)、数据流(流经系统的数据/输⼊/输出)和数据存储(⾮即时使⽤的数据),将许多元素根据他们之间的功能要求组合起来,就形成了对系统内数据流动的描述。
3上述⽅法都是对系统内数据⾏为的描述,⽽对于系统外部⽽⾔,系统展现在⼈眼前的不是数据,⽽是系统的⼀系列⾏为,数据是隐藏在系统内部的。所以有必要以数据描述为基础,展⽰系统的状态变化过程,也就是建⽴状态转移表。
转台转移表包括状态(state)、状态转移(state transition)、事件(event)和活动(action)。状态描述了系统的不同⼯作阶段,不同的状态对应不同的⾏为。状态转移表⽰系统从⼀个状态转移到另⼀个状态的过程。在系统使⽤过程中,在不同状态下,不同事件的出现都会导致系统进⼊不同的活动,
产⽣不同的状态转移,系统也由此正常⼯作。
如交易平台中,注册⽤户在登陆状态下将商品加⼊购物车,商品将会加⼊该⽤户的购物车,⽽在未登录状态下点击加⼊购物车,系统会进⼊登陆提⽰页⾯。
1.2结构化设计
在结构化分析阶段,我们得到了实体关系图、数据流图和状态转移图等图表,结构化设计可以将这些图表转化成系统的组成结构设计图,并由此编码实现系统。
吊耳根据数据流图的分层结构构造系统的顶级模块,并将模块功能细分,根据下层数据流构造相应的⼦模块,并保证数据模块之间的功能独⽴性,从⽽完成数据流图到软件结构图之间的转化。
图1:数据流图到结构设计图
1.3结构化编程
寂寞人
在上⾯我们已经得到软件结构图,可以知道软件结构图是分层细化的。所以在系统的编码过程中,程序员不需要关注系统所有的流程细节,只需要关注当前设计模块的⾏为,从⽽⾃顶向下地完成系统编码,⼤⼤降低了系统实现难度。
图2:结构化程序
1.4结构化⽅法的优缺点
花的启示
结构化⽅法的优点在于整体开发过程和各分层设计的完整性。在⾃顶向下的分析过程中,开发者可以对系统进⾏详细梳理分析,得到完整的系统设计,保证系统实现的正确性和稳定性。⽽在实际开发过程中,结构化开发⽅法对系统开发早期准备要求较⾼,⽽往往系统开发早期,开发者对系统的认识并不完整,这就容易导致后期开发过程的阻塞甚⾄项⽬重新开发,削弱了结构化⽅法的可⽤性。
2、⾯向对象⽅法
⾯向对象⽅法(Object-Oriented Method)起源于⾯向对象的编程语⾔,是⼀种把⾯向对象的思想应⽤于软件开发过程中,指导开发活动的系统⽅法。对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,⼀个对象类定义了具有相似性质的⼀组对象。所谓⾯向对象就是基于对象概念,以对象为中⼼,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。
⾯向对象⽅法同样包括⾯向对象分析、⾯向对象设计和⾯向对象变成三个部分。
2.1⾯向对象分析(OOA)
⾯向对象的分析⽅法(OOA),是在⼀个系统的开发过程中进⾏了系统业务调查以后,按照⾯向对象的思想来分析问题。OOA与结构化分析有较⼤的区别。OOA所强调的是在系统调查资料的基础上,针
对OO⽅法所需要的素材进⾏的归类分析和整理,⽽不是对管理业务现状和⽅法的分析。
在⽤OOA具体地分析⼀个事物时,⼤致上遵循如下五个基本步骤:
1.确定对象和类。根据要开发的系统总结出系统中的类和对象。
2.确定结构(structure)。结构是指问题域的复杂性和连接关系。类成员结构反映了泛化-特化关系,整体-部分结构反映整体和局部之间的关系。
3.确定主题(subject)。主题是指事物的总体概貌和总体分析模型。
4.确定属性(attribute)。属性就是数据元素,可⽤来描述对象或分类结构的实例。
5.确定⽅法(method)。⽅法是在收到消息后必须进⾏的⼀些处理⽅法:⽅法要在图中定义,并在对象的存储中指定。对于每个对象和结构来说,那些⽤来增加、修改、删除和选择⼀个⽅法本⾝都是隐含的(虽然它们是要在对象的存储中定义的,但并不在图上给出),⽽有些则是显⽰的。
2.2 ⾯向对象设计(OOD)
⾯向对象的设计⽅法是OO⽅法中⼀个中间过渡环节。其主要作⽤是对OOA分析的结果作进⼀步的规范化整理,以便能够被OOP直接接受。在OOD的设计过程中,要展开的主要有如下⼏项⼯作。
1. OOD要根据⾯向对象的概念模型整理分析阶段所确定的对象结构、属性、⽅法等内容,改正错误的内容,删去不必要和重复的内容等。
2. OOD要对各模块进⾏分类整理,以便于下⼀步数据库设计和程序处理模块设计的需要。整理的⽅法主要是进⾏归类,对类⼀&⼀对象、属性、⽅法和结构、主题进⾏归类。
2.3⾯向对象编程(OOP)
OOP是在结构化程序设计的基础上,于80年代初涌现的⼀种程序设计⽅法。封装、继承和多态是整个OOP⽅法的基础,主要⽤于在数据段外围构造保护层,以限制外界变化的影响,所有的数据访问都由保护层内的过程间接处理。OOP 达到了软件⼯程的三个主要⽬标:重⽤性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。OOP 主要有以下主要的概念:
组件:数据和功能⼀起在运⾏着的计算机程序中形成的单元,组件在 OOP 计算机程序中是模块和结构化的基础。
1. 抽象性:程序有能⼒忽略正在处理中信息的某些⽅⾯,即对信息主要⽅⾯关注的能⼒。
2. 封装:确保组件不会以不可预期的⽅式改变其它组件的内部状态;只有在那些提供了内部状态改变
⽅法的组件中,才可以访问其内部状态。每类组件都提供了⼀个与其它组件联系的接⼝,并规定了其它组件进⾏调⽤的⽅法。
3. 多态性:组件的引⽤和类集会涉及到其它许多不同类型的组件,⽽且引⽤组件所产⽣的结果得依据实际调⽤的类型。
4. 继承性:允许在现存的组件基础上创建⼦类组件,这统⼀并增强了多态性和封装性。典型地来说就是⽤类来对组件进⾏分组,⽽且还可以定义新类为现存的类的扩展,这样就可以将类组织成树形或⽹状结构,这体现了动作的通⽤性。
2.4⾯向对象⽅法的优缺点
优点:(1)是⼀种全新的系统分析设计⽅法(对象、类、结构属性、⽅法)
(2)适⽤于各类信息系统的开发。
(3)实现了对客观世界描述到软件结构的直接转换 ,⼤⼤减少后续软件开发量。
(4)开发⼯作的重⽤性、继承性⾼,降低重复⼯作量。
缺点:
(1)需要⼀定的软件⽀持环境。
(2)不太适宜⼤型的MIS开发,若缺乏整体系统设计划分,易造成系统结构不合理、各部分关系失调等问题。
(3)只能在现有业务基础上进⾏分类整理,不能从科学管理⾓度进⾏理顺和优化。
3.总结
结构化开发⽅法和⾯向对象开发⽅法都是当前⽐较流⾏的软件开发⽅法。相⽐⾯向对象⽅法,结构化⽅法更具整体统⼀性,得到的系统设计结果在⾏为⼀致、功能完善⽅⾯都有完整的分析做保证。相⽐结构化开发⽅法,⾯向对象⽅法更加直观,能够对应现实对象,并能实现模块的组合和重⽤,提升开发效率。在实际开发过程中,开发者可以根据项⽬的规模、复杂程度等因素选择不同的开发⽅法,提升开发效率。中国日报中文版

本文发布于:2024-09-23 01:28:53,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/559897.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:系统   对象   开发   数据   设计
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议