结构化和面向对象之应用比较编程浪剩

结构化程序设计在结构上将软件系统划分为若干功能模块或实体,分别采用模块化程序设计语言编程实现,再由各模块联结,组合成相应结构的软件系统。

而在面向对象的程序设计中,所谓对象是指具有一定结构、属性和功能的实体,采用对象和对象类,以及对象之间的相互通信的消息,描述客观世界中的各种事物及其相互关系,建立面向对象和消息的具有层次结构的世界模型。

1.结构化程序设计

1.1.概念综述

所谓结构化设计(structureddesign,SD),主要属于一种面向数据流或面向过程的设计方式,可以与结构化分析(structuredanalysis,SA)方法,结构化程序设计方法前后呼应,形成统一完整的系列化方法。具体来看,结构化设计是基于模块化、自顶而下细化、结构化程序设计等基础的一种设计方法,其最为基础的思想是把系统设计成为功能单一、相对独立的模块组成结构。

在结构化软件设计过程中,从技术角度来看,程序的设计过程中主要包括数据设计、接口设计、体系结构设计以及过程设计等工作。其中数据设计主要是将实体关系转化为文件系统结构以及数据库表结构。至于体系结构设计主要是对软件模块之间的关系进行定义。而接口设计则是以数据流图对系统内部中的各种关系及交互机制进行定义。最后,过程设计则是对软件各组成部分的算法以及内部数据结构确定下来,并采取某种形式对算法进行描述。

1.2建模技术

1.2.1数据流及数据流图

数据流图(dataflowdiagram,DFD)产生于需求分析阶段。DFD中从系统的输入数据流到系统的输出数据流的一连串连续变换形成了一条信息流。根据数据流类型的不同,可分为变换型和事物型两大类。

变换型数据流中,信息沿着输入通路进入系统,同时由外部形式变换成内部形式进入系统的信息,通过变换中心经加工处理,以后再沿着输出通路变换成外部形式离开系统。变换型数据流的DFD可明显地分为三大部分:逻辑输入、变换中心(主加工)、逻辑输出。变换型数据流结构。

在事物型数据流模型中,信息在沿着输入通路进入系统,由外部形成内部形式后到达事务中心。通常事务中心位于几条处理路径的起点,从数据流程图上很容易标识出来,因为事务处理中心一般会有“发射中心”的特征。因为事务流有明显的事务中心,所以各式各样活动流都以事务中心为起点呈辐射状流出。

而数据流图是结构化系统分析的基本工具。一个数据流图确定了系统的转化过程、系统所操纵的数据或物质的收集(存储),还有过程、存储、外部世界之间的数据流或物质流。从我们画了那么多数据流图来理解,数据流图就是用图形化的方法显示整个现实世界中实际存在的数据流向转化为图表的形式,并最终转化为表,转化为计算机能够接受的形式,所以数据流图是我们做需求分析过程中必不可少的,通过对数据流图的理解,我们会对项目的整个过程有一个深刻的理解

1.2.2结构图

SD方法采用了结构图来描述程序的结构。需求分析阶段用SA产生的数据流图通过结构化设计可以被方便地转换为软件结构图。

结构图主要描述软件结构中模块之间的调用关系和信息传递问题。基本成分有模块、调用和数据。在通常情况下会在结构图中用箭头注释表示模块在调用过程中信息的来回传递。

1.2.3数据字典

数据字典是结构化的核心。一个定义应用程序中使用的所有数据元素和结构的含义、类型、数据大小、格式、度量单位、精度以及允许取值范围的共享仓库。数据字典的维护独立于软件需求规格说明,并且在产品的开发和维护的任何阶段,各个风险承担者都可以访问数据字典。它定义了原数据元素、组成结构体的复杂数据元素、重复的数据项、一个数据项的枚举值以及可选的数据项。

1.2.4E-R图

ER图(ERD)是为了把用户的数据要求清楚准确地描述起来而建立的一个概念性的数据模型。其中主要有以下几个要素:用矩形表示的实体型,矩形框内写明实体名;用椭圆形或圆角矩形表示的属性,用无向边将其与相应的实体连接起来,多值属性由双线连接,主属性名称下加下划线;用菱形表示的联系,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型。

1.2.5状态转换图

通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为.此外状态转换图还指明了作为特定事件的结果系统将做那些动作(例如,处理数据).因此状态转换图提供了行为建模机制

在状态转换图中,每一个节点代表一个状态,其中双圈是终结状态。

1.3结构化设计的流程

第一,对数据流图进行研究、分析及市查,这主要可以帮助我们从软件需求规格说明中掌握数据流加工过程。

第二,以数据流图为依据对数据处理的类型进行确定,需要注意,针对事物型以及变换型,设计人员要注意对其进行分别分析和处理。

第三,通过数据流图对系统初始结构图进行推导。

第四,采取启发式原则对系统初始结构图进行改进,直到结构图满足我们的要求为止。

第五,利用数据字典以及分析模型E-R图对数据进行设计,包括数据文件的设计和数据库的设计。

第六,以状态转换图、加工规格说明为依据,进行过程设计。

1.4结构化设计的优缺点

优点:结构化方法是强调开发方法的结构合理性以及所开发软件的结构合理性的软件开发方法。结构化方法的本质是功能分解,从代表目标系统整体功能的单个处理着手,自顶向下不断地把复杂的处理分解为子处理,这样一层一层地分解下去,直到仅剩下的若干个容易实现的子处理为止。当所分解的子处理十分简单时,就可写出各个最低层处理的处理描述。

缺点:首先,结构化方法是围绕实现处理功能的过程来构造系统的,然而,用户需求的变化大部分是针对功能的,因此,用结构化方法设计出的系统结构常常是不稳定的。其次,结构化方法定义了目标系统的边界,且开出发的系统结构依赖于对系统边界的定义,因此,很难把系统扩展到新的边界,系统较难修改和扩充。再者,结构化方法设计系统时,几乎每开发一个新的软件系统,都要针对具体系统作大量重复和繁琐的工作,思维成果的可重性差。

2.面向对象程序设计

2.1概念综述

面向对象技术自八十年代初问世以来,由于它的模块性、封装性、继承性、多态性和动态束定能满足软件工程要求的局部化、易维护、可重用、易扩充以及当今多媒体和分布式计算的诸多要求,一时成为计算机各领域争相采用的新技术焦点。所谓对象是指具有一定结构、属性和功能的实体,采用对象和对象类,以及对象之间的相互通信的消息,描述客观世界中的各种事物及其相互关系,建立面向对象和消息的具有层次结构的世界模型。面向对象的程序设计方法基于上述面向对象世界模型。

2.2面向对象分析(OOA)

OOA强调直接针对问题域中客观存在的各项事物设立OOA模型中的对象。用对象的属性和方法分别描述事物的静态特征和行为。问题域有哪些值得考虑的事物,OOA模型中就有哪些对象。而且对象及其方法的命名都强调与客观事物一致。另外,OOA模型也保留了问题域中事物之间关系的原貌。这包括:把具有相同属性和相同方法的对象归结为类;用一般----特殊结构(又称分类结构)描述一般类与特殊类之间的关系(即继承关系);用整体一部分结构(又称组装结构)描述事物间的组成关系;用事例连接和消息连接表示事件之间的静态联系(一个对象的属性与另一个对象有关)和动态联系(一个对象的行为和另一个对象行为有关)。可以看到,无论是对问题域中的单个事物,还是对各个事物之间的关系,OOA模型都保留着它们的原貌,没有加以转换、扭曲,也没有打破原有的界限而重新组合。所以,OOA模型能够很好地映射问题域。OOA对问题域的观察、分析和认识是直接的,对问题域的描述也是很直接的。它所采用的概念及术语与问题域中的事物保持了最大程度的一致,不存在语言上的鸿沟。

2.3面向对象设计(OOD)

OOA与OOD的职责划分是:OOA针对问题域运用OO方法,建立一个反映问题域的OOA模型,不考虑与系统的具体实现有关的因素(例如采用什么编程语言、图形用户界面、数据库等),从而使OOA模型独立于具体的实现。OOD则是针对系统的一个具体的实现运用OO方法。其中包括两方面的工作,一是把OOA模型直接搬到OOD(不经过转换,仅作某些必要的修改和调整),作为OOD的一个部分:另外使针对具体实现中的人机界面、数据存储、任务管理等因素补充一些与实现有关的部分。这些部分与OOA采用相同的表示方法和模型结构。OOA与OOD采用一致的表示法是面向对象的分析与设计优于传统的软件工程方法的重要因素之一。这使得从OOA到OOD不存在转换,只有局部的修改或调整,并增加几个与实现有关的独立部分。因此,OOA与OOD之间不存在传统方法中分析与设计之间的鸿沟,二者能够紧密衔接,大大降低了OOA过渡到OOD的难度、工作量和出错率。

2.4面向对象编程(OOP)

面向对象编程是面向对象方法从诞生、发展到走向成熟的第一片领地,也是使面向对象的软件开发最终落实的重要阶段。在OOA和OOD理论出现之前,程序员要写一个好的面向对象的程序,首先要学会运用OO方法来认识问题域,所以OOP被看作一门比较高深的技术。现在,在OOA->OOD->OOP这一软件工程的过程系列中,OOP的分工比较简单了:认识问题域以及设计系统成分的工作已经在OOA和OOD阶段完成,OOP工作就是用一种面向对象的编程语言把OOD模型中的各个成分书写出来。

2.5基于UML的软件分析和设计

系统(用户)需求。它是问题提出的过程,软件大体要实现什么功能,有什么参与者。而应用图所表达的正是参与者(Actor)与软件应用(UseCase),应用和系统响应之间的关系。在了解系统需求的过程中,就可以给应用图添加上相应的Actor与UseCase。在了解系统需求的后期,则可以把不同Actor与UseCase间的关系用相应的连线连接和对连线的定义使之清晰。之后可对UseCase的系统响应进行分析,即把系统执行顺序画出来,这已经进入系统分析阶段。

系统分析。在这一阶段,需要把软件的功能细节化,同时考虑数据间的关系(层次),然后建立与之对应的对象,接着分析对象间的关系(即软件结构)并定义对象的属性和方法。常用的分析方法有流程图、泡泡图和由上到下分析法等,但每种方法只能反映系统的某一个方而,把它们综合起来,即是UML的分析方法。

代码的维护和扩展。面向对象的程序设计出来的方法,主要目的就是为了让程序更容易维护、扩展。为了改动和添加代码,一般情况下就得通读源代码和注释,然后才明白程序的结构和完成的功能,进而修改。但对于UML设计出来的软件,先看其模型中不同视角的图表就可以把软件结构清晰的表达出来了。同时在建立模型时所写的文档,也会加入源代码中。另外,有的CASE工具还提供COM接口,通过编程对建立的模型进行分析,输出相应的报表、文档。以上3点都说明了用UML建立模型更利于软件的维护和扩展。

2.6优越性和局限性

优越性:采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。在软件开发时效率较高,能够根据设计的需要对现实世界的事物进行抽象、产生类。使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。

局限性:需要一定的软件支持环境;不太适宜大型的MIS开发,若缺乏整体系统设计划分,易造成系统结构不合理、各部分关系失调等问题;只能在现有业务基础上进行分类整理,不能从科学管理角度进行理顺和优化;初学者不易接受、难学。

3.结构化和面向对象设计的对比

结构化方法首先关心的是功能,强调以模块(即过程)为中心,采用模块化、自顶向下、逐步求精设计过程,系统是实现模块功能的函数和过程的集合,结构清晰、可读性好,的确是提高软件开发质量的一种有效手段。每个模块有可能保持较强的独立性,但它往往与数据库结构相独立,功能模块与数据库逻辑模式间没有映射关系,程序与数据结构很难封装在一起。如果问题世界的功能比数据更复杂或者更重要,那么结构化方法仍应是首选的方法。

如果数据结构复杂,模块独立性很难保证。面向对象方法抽象的系统结构往往并不比结构化方法产生的系统结构简单,但它能映射到数据库结构中,很容易实现程序与数据结构的封装。结构化设计从系统的功能入手,按照工程标准和严格规范将系统分解为若干功能模块。然而,由于用户的需求和软、硬件技术的不断发展变化,作为系统基本成分的功能模块很容易受到影响,局部修改甚至会引起系统的根本性变化。开发过程前期入手快而后期频繁改动的现象比较常见。面向对象方法则从所处理的数据入手,以数据为中心来描述系统,数据相对于功能而言,具有更强的稳定性,这样设计出的系统模型往往能较好地映射问题域模型。对象、类、继承性、多态性、动态定连概念和设施的引入使用,显然令面向对象的设计方法具有一定的优势,能为生产可重用的软件构件和解决软件的复杂性问题提供一条有效的途径。

面向对象的设计过程就是指通过建立一些类以及它们之间的关系来解决实际问题,这就需要对问题域中的对象作整体分析,类及类间关系的设计要求较高,否则设计出的并不是真正意义上的面向对象的软件系统,而只是一些类的堆砌而已,不能体现出面向对象设计方法的优势之处。

4.总结

无论是以模块为核心的结构化还是以对象之间关系的面向对象软件工程设计思路,都是基于实践,总结出来的科学的程序设计方法。在现实的程序设计开发的过程中,开发者必须结合项目本身的特征,以及自己的实际开发经验,选择最适合的设计和开发方法。

5.参考文献

[1]刘薇.关于软件工程之中的结构化设计方法探究[A].2013

[2]蔡伟淦.软件工程中的结构化设计方法[A].2011

[3]霍迎旦.软件工程中结构化方法和面向对象方法之比较[A].2007

[4]张京,李成大.结构化软件工程方法与面向对象软件工程方法的比较[A].2000

[5]邸剑,李新叶,宋雨.面向对象软件工程分析方法[A].2002

[6]张秋.结构化程序设计及判别[A].1997

[7]王德军,郝永芳.结构化程序设计方法与面向对象的程序设计方法的比较[A].2003

THE END
1.软件工程期末复习软件工程建模 建模=图形+逻辑+现实的抽象 uml中的图(重点,要会画图) 常用的描述软件功能需求的工具是数据流图和数据字典(了解就行,考试不考怎么画) 系统流程图 数据流图/数据流程图 数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑https://blog.csdn.net/d_q_y123654/article/details/144190135
2.信息系统项目管理师(第四版)第13章:项目资源管理2025 年软考高项 | 信息系统项目管理师 | 第13章:项目资源管理 | 信息系统项目管理师(第四版) 考情分析 考情分析 学习建议 学习建议 思维导图 思维导图 13.1 管理基础 项目资源管理包括识别、获取和管理所需资源以成功完成项目的各个过程,包括实物资源和团队资源。项目资源管理是为了降低项目成本,而对项目所需的https://www.jianshu.com/p/c3a4e4fafa5f
3.《软件工程导论》学习笔记·51CTO博客数据建模:E-R图;功能建模:DFD(数据流图);行为建模:状态转换图。 1. 数据建模 数据模型包括三种互相关联的信息:数据对象,描述对象的属性,描述对象间相互连接的关系。 在需求分析阶段描述数据对象和它们之间的关系,使用了E-R 图。 2,功能建模:DFD图 https://blog.51cto.com/liruilong/5931220
4.《软件工程导论》第3章需求分析这一章节非常重要!!!尤其是里面的E-R图、数据流图,状态装换图的画法,非常的重要!!!目录第3章 需求分析3.1 需求分析的任务3.1.1 确定对系统的综合要求https://www.codenong.com/cs106311547/
5.计算机科学导论课件第7章数据库技术.ppt书卡格式图书馆管理员 图书馆图书存放方法读者对图书馆的访问(用普通语言办理借书、还书等)图书馆图7-1数据库管理与图书馆的比较示意图 4、数据管理技术的发展 (1)人工管理阶段:20世纪50年代中期以前,计算机主要用于科学计算。这时计算机既没有操作系统,也没有系统软件,数据处理采用简单的批处理方式,以人工管理为主https://m.renrendoc.com/paper/302236201.html
6.动态网络分析(精选十篇)图3为KF、DKF、QDKF这3种滤波算法的均方根误差对比,其中DKF和QDKF都采用动态加权的方法选择权重矩阵。对比KF算法和分布式滤波算法,对于同样的系统模型和观测噪声,传统卡尔曼滤波算法得到的状态估计精度依赖于节点本身的观测精度;而在分布式卡尔曼滤波算法中,观测精度差的节点,若其连通性比其他节点好(邻居节点多),根https://www.360wenmi.com/f/cnkey011i3jj.html
7.软件实训心得体会15篇第三步根据我们确定的项目主题进行需求分析,这一步骤当时做的不是很好,比如所画E-R图、数据流图等都有考虑不周的问题,导致接下来的概要设计、详细设计进行的很困难,有些步骤甚至还需要返工。 从我们在需求分析中出现的问题,使我们明白了软件定义阶段对于一个项目的开发是至关重要的,当软件定义阶段完成时必须要用https://www.ruiwen.com/xindetihui/4212527.html
8.管理系统中的计算机应用(本科)笔记管理系统中的计算机应用(本科)笔记第一章 管理系统中计算机应用概论 1.1 信息与管理 1.1.1 信息和数据 1.信息与数据的概念 信息的定义:信息是对事物运动状态和特征的描述,而数据是载荷信息的物理符号。 信息和数据的区别: 信息是认识了的数据,是数据的含义;同时,信息更本质地反映事物的概念,而数据则是信息的具体http://read.cucdc.com/cw/82661/67320.html
9.数据库系统:第七章数据库设计腾讯云开发者社区确定分E-R图实体之间的数据依赖。实体之间一对一、一对多、多对多的联系可以用实体码之间的函数依赖来表示。于是有函数依赖集FL。 求FL的最小覆盖GL。 7.4 逻辑结构设计 逻辑结构设计的任务:把概念结构设计阶段设计好的基本E-R图转换为与选用数据库管理系统产品所支持的数据模型相符合的逻辑结构。 7.4.1 E-R图https://cloud.tencent.com/developer/article/2069176
10.图书管理系统数据模型ER图经管文库(原现金交易图书管理系统数据模型ER图 https://bbs.pinggu.org/thread-13095880-1-1.html
11.分离和混合数据识别计算机应用与软件工程化工技术较强图9.22-1 浙江工业大学的中国局专利增长情况 从专利数量上来看,浙江工业大学的重点技术领域是:有机化学、分离和混合加工作业、数据识别、计算机应用与软件工程、化工。在这5个领域上获得了数量最多的中国局专利,高达267至146项。 表9.22-1 浙江工业大学主要技术领域的专利分布 技术领域 2021 2020 2019 2018 2017 20https://wap.sciencenet.cn/blog-681765-1325689.html
12.超越图形界限AMD并行计算技术全面解析ATIRadeonHD4850在2010年8月16日,AMD宣布推出全面支持OpenCL 1.1的ATI Stream软件开发包(SDK)2.2版,新版本的SDK为开发人员提供开发强大的新一代应用软件所需要的工具。这一版本的最大意义在于它表明了AMD在不断追求与开放性应用程序接口OpenCL的兼容,同时AMD再通过OpenCL快速提升其在业行内的影响力,毕竟借助这一标准,AMD和NVIDIAhttps://vga.zol.com.cn/192/1927855_all.html
13.过程分析红外检测图书馆、档案、文献与情报工作、核反应堆与核电厂核岛设备、复合材料与固体燃料、混凝土结构工程、林产化工原料、计算机应用、分离机械、金属与合金粉末、工程结构综合、燃料油、软件工程、数学、合成橡胶基础标准与通用方法、医药综合、其他物质成份分析仪器、商业、贸易、合同、金属化学分析方法综合、筛分、筛板与筛网、https://a.bjhgyjs.cn/xiangmu/other/308459.html
14.三维家3d云设计软件v2.0.232位64位官方安装免费版在设计功能、图形界面、操作体验具有其他软件不可比拟的优势,欢迎有需要的朋友们前来下载使用。 软件特色 一、傻瓜操作和精准出图,一样不能少 快速在线设计,改变家装设计方式,运作简单,快速 图形图像2019-08-07 上传大小:136.00MB 所需:50积分/C币 java开源包101https://www.iteye.com/resource/weixin_39840387-11489333