首页 > 代码库 > 结构化方法和面向对象方法
结构化方法和面向对象方法
结构化方法与面向对象方法之比较
姓名 周子硕 学号 14061031
软件开发的过程中,结构化方法和面向对象方法先后被提出,为解决不同的软件开发问题带来了不同的思路。下面是对于结构化方法和面向对象方法的认识和比较。
结构化方法的基本要点是对现实世界的营运问题进行分解,面向过程设计问题空间的解域,强调自顶向下、逐步求精、模块化设计。结构化方法将待解决的问题看做一个系统,从而用系统科学的思想方法来分析和解决问题。结构化方法循序以下基本原则:
- 抽象原则:
抽象原则是一切系统科学方法都必须遵循的基本原则,它注重把握系统的本质内容而忽略与系统当前目标无关的内容。它是一种基本的认知过程和思维方式。
- 分解原则
分解原则是结构化方法中最基本的原则。它是一种先总体后局部的四项原则,在构造信息系统模型时,它采用自顶向下分层解决的方法。
功能的分解是一种递归定义,也就是说,第0层的结构只能看见它直属的下一层(假设为第1层)的结构,至于第1层结构各自自身怎么实现,都不是第0层应该考虑的问题。而对于第1层结构来说,它只管理第1层中的模块,对于再下一层的模块,也不做管理。这种思维能让我们每次聚焦在一个部位上,这个部位可能处于高层,也可能处于底层,但不管处在哪一层,都是用的迭代的思维,第n层只考虑它和第n+1层的关系,并不考虑第n+2和第n+3层。而下一层的模块之间可能是与关系,也坑内是或关系,他们相互协作来完成上一层的功能。所以不管是函数,还是子系统,还是整个系统,都可以用“输入—输出—系统—存储介质”的模型进行表述。
- 模块化原则
模块化是结构化方法最基本的分解原则的具体应用。它需要要出现在结构化设计阶段中,其目标是将系统分解成具有特定功能的若干模块,从而完成系统指定的各项功能。
结构化方法包括基本的结构化方法、复杂的结构化方法IDEF体系、Jackson方法。结构化方法的特点是,1.能够把一个复杂过程用多个单个小过程来实现;2.应数据流图可以完成整个分解过程;3.结果的唯一性,同一个问题,不同的人分解出来的结果基本是一样的,也就是说,用结构化方法,基本上是有标准答案的;4.比较适合初学者学习,因为它是一个连续的处理过程。
结构化设计的总体过程如下:
传统的软件开发
总体规划
目标任务
可行性分析
技术可行性
经济可行性
管理可行性
开发环境可行性
需求分析
过程
问题识别
分析与综合
编制需求分析阶段的说明文档
需求分析评审
方法
面向数据流(结构化分析方法AS)
面向数据结构(Jackson方法JSD、结构化数据系统开发方法DSSD)
原型化方法
设计
概要设计
制定规范
模块设计
处理方式设计
数据结构设计
可靠性设计
详细设计
类型
设计内容
程序编码
程序语言选择
程序设计风格
程序复杂性度量
程序效率
程序测试
用例测试
测试过程
程序调试
运行维护
适应性维护
预防性维护
改正性维护
完善性维护
面向对象开发方法又称为快富袁兴华,客观事件是由各种各样的对象组成的,每种对象都有各自的内部状态和运动规律,不同对象之间的相互作用和联系就构成了各种不同的系统。
同结构化相比,变相对象方法不是层次结构,在结构化中,上一层以来下一层,下一层又以来下下一层,只要底层改变,上层也要跟着改变,没有很好的隔离变化,儿面向对象很好的耿庄了变化,外界只需要使用对象的结构,而不用管这个借口是如何实现的。
面向对象模型遵循以下几项原则:
- 抽象
抽象是处理现实世界复杂性的最基本方式,在面向对象方法中,它强调一个对象和其他对象想区别的本质特性。对于一个给定的域确定合理的抽象集是面向对象建模的关键问题之一。
- 封装
封装是对抽象远足的划分。过程抽象由结构和行为组成,封装用来分离抽象的原始接口和它的执行。封装也成为信息隐藏,它将一个对象的外部特征和内部的执行细节分割开来并将后者对其他对象隐藏起来。
- 模块化
模块化已经被分为一系列聚集的和耦合的模块的系统特性对于一个给定的问题确定正确的模块集几乎与确定正确的抽象集一样困难通常每个模块应该足够简单以便能够被完整地理解
- 层次
抽象集通常形成一个层次,层次是对抽象的归类和排序。在复杂的现实世界中有两种非常重要的层次,一个是类型层次,另一个是结构性层次 。确定抽象的层次是基于对象的继承,它有助于在对象的继承中发现抽象间的关系,搞清问题的所在理解问题的本质
面向对象开发经历以下过程:
面向对象开发
面向对象分析
步骤
确定问题域
识别对象和类
识别对象之间的关系
定义属性
定义服务
五个层次
类与对象
属性
服务
结构
主题
三大模型
对象模型
动态模型
功能模型
面向对象设计
高层设计
问题论域部分
人机交互部分
数据管理部分
任务管理部分
类设计
原封不动复用设计
进化型复用设计
废弃性开发设计
面向对象编程
面向对象测试
种类
基于定义测试
基于程序测试
阶段
单元测试(类测试)
组装测试
确认测试
结构化方法的优点如下
从系统整体出发,保证了系统的整体性和目标的一致性。
结构化方法强调功能抽象和模块化,采用了分块处理问题的方法,可以把一个比较复杂的问题分解为若干个容易处理解决的部分,从而降低了问题处理的难度。
严格区分系统开发的阶段性,每一个阶段的工作成果是下一个阶段的依据,便于系统开发的管理和控制。
文档规范化,按工程标准建立标准化的文档资料,便于软件在以后的维护。
结构化方法的缺点有
重用性差,结构化分析与设计清楚地定义了系统的结构,的那个系统对外界接口发证变动时,可能会造成系统结构产生较大变动,难以扩充新的功能接口。
软件可维护性差。由于软件的可修改性查,导致维护困难,造成维护时费用和成本高。
开发的软件难以满足用户需要。
面向对象方法的优点如下;
编程容易。因为面向对象更接近于现实,所以你可以从现实的东西触发,进行适当的抽象。
可重用性好。
与人类习惯的思维方法一致,使得使用者和维护人员都容易理解。
面向对象可以使工程更加模块化,实现更低耦合高内聚思想。
符合人们认识事物的规律,系统开发循序渐进,反复修改,确保较好的用户满意度。
面向对象方法也有一些缺点
开发过程管理要求高
面向对象方法通过信息隐藏和风险黄等手段屏蔽了对象内部的执行细节,发生错误时定无故障的代价大。
开发人员易将原型取代系统分析,缺乏规范化的文档资料,不利于以后的维护。
通过以上的总结,可以得知,结构化开发方法适用于规模较大、结构化程度较高的系统的开发,而免洗那个对象开发的适用于处理过程明确,简单的系统,涉及面窄的小型系统,不适合于大型、复杂系统,存在大量运算,逻辑性强的处理系统。
结构化方法和面向对象方法