结构化方法与面向对象方法浅析

结构化方法与面向对象方法浅析

 

在目前的软件开发领域,结构化方法和面向对象方法是两种比较流行的方法。在过去两年多时间里,我们也对这两种方法进行了学习和实践,下面谈一谈自己对这两种方法的理解。

 

结构化方法

 

结构化方法是一种比较传统的软件系统开发方法,主要思想是分析问题确定软件功能,之后将整体功能划分成不同的功能模块,然后将实现之后的模块拼接结合在一起,是一个先分再和的过程。功能分解可以使软件条理清晰,将复杂的问题拆分成相对简单的小问题也便于实现。

结构化方法注重算法和数据,程序过程可以看作是数据经过各个算法逻辑结构被一步步处理之后最终得到问题解的过程。所以在结构化方法中,数据流是核心。面对一个问题,首先应该分析清楚它的数据是怎样流动变换的,然后将这一过程拆分成一个个节点,每个节点对应不同的功能模块,这样便得到一个逻辑模型。数据流图是一个很好的表示这一过程的工具,可以帮助我们清晰地对数据流进行分析。

综上分析,结构化程序设计方法可以概括为以下几个步骤:

●结构化分析:

1.分析当前的情况,做出反映当前物理模型的数据流图;

2.推导出等价的逻辑模型的DFD;

3.设计新的逻辑系统,生成数据字典和基元描述;

4.建立人机接口,提出可供选择的目标系统物理模型的DFD;

●结构化设计:

1.评审和细化数据流图;

2.确定数据流图的类型;

3.把数据流图映射到软件模块结构,设计出模块结构的上层;

4.基于数据流图逐步分解高层模块,设计中下层模块;

5.对模块结构进行优化,得到更为合理的软件结构;

6.描述模块接口。

这学期的编译程序设计就是一个很好的结构化方法的应用例子。首先将整个编译过程划分为词法分析、语法分析、语义分析、中间代码生成、目标代码生成几个阶段,在语法分析过程中,采用递归子程序法对语法的每一个非终结符都编一个分析程序,当根据文法和当时的输入符号预测到要用某个非终结符去匹配输入串时,就调用该非终结符的分析程序。可以看到各个子模块之间分工明确,通过顺序结构、选择结构或循环结构组成一个整体。我们可以简单分析一下数据的流动,输入源程序经过词法分析、语法分析和语义分析之后被翻译成了中间代码,中间代码再经过一遍翻译便得到了目标代码。简单的数据流图如下:

 

结构化方法是一种面向问题和问题解决过程的方法,这与我们解决问题时的思考方式一致,所以比较容易开发出程序。采取分块处理问题的方法,可以把一个比较复杂的问题分解为若干个容易处理解决的部分,从而可以降低问题处理的难度。结构化方法思路清晰,条理清楚,又有效地分解了繁复的问题,使得编写程序简明清晰。但是结构化方法也存在不足之处,很重要的一点是结构化方法开发的程序不容易维护,因为结构化方法是围绕实现处理功能的过程来构造系统的。然而,用户需求的变化大部分是针对功能的,因此, 对需求变化的适应能力比较弱,造成用结构化方法设计出的系统结构常常是不稳定的。结构化方法定义了目标系统的边界,且开出发的系统结构依赖于对系统边界的定义,因此,很难把系统扩展到新的边界,系统较难修改和扩充。

 

面向对象方法

 

面向对象方法是以面向对象思想为指导进行系统开发的方法。它以对象为中心,以类和继承为构造机制来抽象现实世界,并用抽象出来的模型构建相应的软件系统。总的来说,面向对象方法仍旧采用模块化思想,但是与结构化方法面向功能和过程不同的是,它主要着力于对现实世界的抽象并按类对问题进行划分。

面向对象方法的基本思想体现在以下方面:一、一切皆对象,客观世界中的事物都是对象,对象之间存在关系,简单对象构成复杂对象。二、属性和操作相同的对象属于一个类,对象是类的一个实例。三、类之间可以通过继承产生层次结构。四、类具有封装性,把类内部的属性和一些操作隐藏起来,只有公共的操作对外是可见的,对象只可通过消息来请求其他对象的操作或自己的操作。

可见,面向对象方法符合人们对现实世界的认知,面对一个问题,找出组成问题的各个对象,通过对象之间的交互解决问题。这就跟现实中人与人之间解决问题的情景类似。每个对象根据接收到的信息而做出相应的动作,通过传递信息让别的对象产生改变,最终促成问题的解决。采用面向对象方法时,对类的抽象、类的属性与方法的确定以及类之间的交互设计是十分重要的。

综上分析,面向对象方法可以概括为以下几个步骤:

●面向对象方法的分析过程:

1.确定问题域;

2.区分类和对象;

3.区分整体对象以及组成部分,确定类的关系以及结构;

4.定义属性和服务;

5.确定附加的系统约束;

 

●更加精细的设计过程:

1.改进和完善系统分析的结果;

2.设计交互过程和用户结构;

3.设计任务管理,以及子系统以及任务之间的协调方式;

4.设计全局资源,确定任务或子系统的资源分配;

5.对象设计。

采用面向对象方法分析问题时,UML是一个比较好的建模工具。UML全称统一建模语言或标准建模语言,它有三种基本的构造块:事物、关系和图。事物是对模型中最具有代表性的成分的抽象,包括结构事物,分组事物,注释事物。关系用来把事物结合在一起,包括依赖、关联、泛化和实现关系。而UML图有活动图、状态图、类图、序列图等分类,可以灵活选取。

面向对象方法最大的优点就是思想与人类习惯的思维方法一致,开发复杂的程序时,基于对象的分析相对于基于功能逻辑上更加清晰,使得使用者和维护人员都容易理解,在软件维护中可维护性也较高,并且易于测试和调试。在需求发生变化时,对软件的局部进行修改时,也不会引起太大的整体变化。

同时面向对象也存在缺点。首先,有些问题难以抽象出合理的类,可能会使问题更加复杂。此外,面向对象方法对开发者抽象事物和把握最初分析方向的要求很高,常常难以控制抽象对象的层次、粒度,甚至抽象出与问题本质面目全非的对象模型,相对于结构化分析方法更加难以掌握。

 

总结

 

结构化方法和面向对象方法各有优劣,需要根据实际的情况加以选择。在进行软件开发的时候,认真分析问题,确定采用哪种方法更加适合。两种方法也并不是相互孤立的,有时候也可将两者的思想结合起来。总之寻找最适合的。

转载于:https://www.cnblogs.com/zwb14061015/p/6209727.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
浅析人工智能在软件工程中的应用全文共4页,当前为第1页。浅析人工智能在软件工程中的应用全文共4页,当前为第1页。浅析人工智能在软件工程中的应用 浅析人工智能在软件工程中的应用全文共4页,当前为第1页。 浅析人工智能在软件工程中的应用全文共4页,当前为第1页。 1 图规划应用于软件工程的意义 在软件工程中,图规划应用具有显著意义。首先,使软件工程提高了自动化的程度。为了实现对规划器的良好调用,以及求解出策略,我们必须只用规划性语言将领域动作、目标及初始状态表达出来。虽然初始的目标和状态影响求解结果的概率是极其小的,但如果应用图规划,却可以很大程度上促进软件工程自动化。 其次,图规划能使软件的重要性充分发挥出来。假如问题领域是清晰透彻的,那么通过之前规划获得的方法进行求解就可以得到想要的结果。如果过程中目标发生了变化,也不必对实际执行的程序模块所在的问题域、动作描述等进行修改,只要对求解的目标进行简单的修改即可,这就为规划应用省去了许多麻烦。这就是抽象层次的一求解方法智能规划求解。如果问题领域以及求解的目标没有发生任何变化,那么规划解也不会发生变化。这是由于抽象层次的解在内部工作中不存在依赖性,这样一来,模块变化的最底层就能得到切实的控制与维护。所以,为了保证模块修改和系统的局部性,使用规划方法抽象层次的求解将最大可能性实现这一目标,它从根本上保证了软件的重用性。 2 图规划在软件结构化上的作用 大量的研究有力地证明了智能化规划方法是解决软件问题的最有效途径,它可以使大软件工程切实促进智能规划,也较好地解决了抽象浅析人工智能在软件工程中的应用全文共4页,当前为第2页。浅析人工智能在软件工程中的应用全文共4页,当前为第2页。层次的问题。智能规划立足于SDGP的思想,基于图规划的通用软件结构设计法以及系统软件的需求来将功能框架分析导出,并且运用具体实例对算法自动设计软件的系统结构进行描述。这样一来,就可以通过人工智能规划技术的应用,将功能框架顺利地从系统结构中导出。而需求分析结构则是先将数据输入,通过SDGP的处理来得到软件设计结构,然后通过大量的实践与研究,或者下载,安装和调试,使图规划器得以实现,并使求解和建模在实际问题的抽象层次得以解决。 3 软件质量的不确定性以及人工智能管理方面 3.1 知识存在许多不确定性 许多的科学家和研究人员更加相信,这个世界最有魅力的地方就是它存在着不确定性。但是当下许多人都在研究着知识的确定性本质,却极少人研究知识所存在的不确定性。那么,首先应当从知识的不确定性研究,才能深刻发现人工智能的不确定性。常识知识以及语言的不确定性是知识不确定性的重要组成部分。常识知识即元知识,属于知识中的知识。常识知识表达出来所对应的概念表达出比较明显的模糊性和随机性,不确定性,它可以很好地运用自然语言。由于知识存在不确定性,人们必将进一步去研究人工智能的不确定性方面。当前人工智能学家的一项重要任务就是用机器将人类的认知和人类认识客观世界进行模拟,使机器也具有一定的不确定性智能,即主要通过不确定性知识的模拟处理,运用以及寻找在不确定性中所存在的规律。 3.2 软件工程的不确定性以及过程模拟 首先是软件工程的过程模拟。通过分析企业的产品特性、生产周期、浅析人工智能在软件工程中的应用全文共4页,当前为第3页。浅析人工智能在软件工程中的应用全文共4页,当前为第3页。业务范围、企业管理、规模等方面,来找出企业的特点从而使企业的软件质量得到提高,生产力提高,从而更好地创建出融合了软件质量控制、软件管理的长时间持续地提升改进产品质量的方案。总的来说,软件工程过程可以划分为项目管理、软件开发过程和组织管理三大方面。该模型可以集中体现出软件的简历控制、企业的组织管理和软件的工程开发项目管理,是用于全面实施,改进提升软件过程的核心模型。因为软件工程的过程模型不是孤立的,也不是静止的,因此为了实现模型整个切实的实现完善的发展持续趋势以及螺旋上升趋势,我们将从企业的3个方面进行改造深化。 所以我们能够得到一个结论,软件工程模型属于动态的持续优化模型。 其次是存在着许多不确定问题和因素。第一,软件质量存在不确定性。主要包括对象设计、分析、实现等方面在内的技术是计算机软件工程界的主流。软件质量与计算机的操作以及配置等都有重要的关系。面向对象方法和技术逐渐成为软件的可移植性,可继承性以及功能性提高的有效手段,这是由于对象自身具备多态性,可继承性等特性。但是软件质量却变得越来越难以控制,不仅是因为软件复杂度在近年来的提高,也因为软件规模的不断扩大。第二,使用软件工程的人的不确定性。在软件工程的各项工作运行中,人是十分重要的因素,因为软件工程的运作囊括了太多软件生产的过程,每一个过程都实现了人机交互的变化,形成了不同程度的影响。所以人在软件工程的工作

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值