结构化与面向对象的建模

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

结构化与面向对象的建模
谢新华
对于软件,可以有几种建模方法,最普通的方法是从算法的角度建模和从面向对象的角度建模。

传统的软件开发是从算法的角度建模,所有的软件都用函数作为构造块,这种建模方法使设计人员把精力放在控制流程和对应的算法进行分析上,这种方法建立的模型是脆弱的,因为当需求发生变化的时候,这种模型将难以维护。

现代的软件开发采用面向对象的方式建模,所有的软件系统都用对象作为它的主要构造块,对面向对象系统进行可视化、评述和文档化,正是统一建模语言的(UML)的目的所在。

为了更好的理解UML和应用UML,我们必须对面向对象的语言体系有的比较好的理解。

1、面向对象的设计方法产生背景
在90年代初,主要有结构化分析与设计方法和面向对象的方法, 而结构化分析与设计方法主要是以数据为中心的方法(如采用实体关系图、数据流图等);而面向对象设计方法则以对象为中心。

(1)结构化方法
z使用系统结构图来表达功能间的关系
结构化方法是一种基于功能分解的分析方法,并且自上向下的分解或分层。

在结构化方法中首先要定义出需要哪些功能程序,每个程序应该实现哪些功能,然后按照某种方式把程序组织成一张图,该图称为结构图。

结构化分析与设计方法所具有的特点:自顶向下的分析和自底向上的开发实施;强调用户和用户参与的重要性;严格区分工作阶段。

结构化方法实际上就是按功能分解系统,比如设计一个工资系统,可以按功能划分成录入系统、打印系统、查询系统等等,这大约是传统程序员用得最多的一种方法。

2,面向对象设计方法
z结构化方法的特性
由于表达需求的系统结构图会按照业务功能领域逐层分解一个大的组织机构的业务功能到小的组织机构和个人的功能。

最后就成了“系统功能模块”或“子系统划分”的需求了。

接下来会为每个模块或子系统进行功能实现的设计,通过画数据流图,把模块之间的数据接口和内部处理逻辑表达出来,并且用模块的功能及其对数据的使用关系的链来表达对外部请求的响应过程和给外界的反馈信息。

实体关系图则把重点放在对持久数据的存储结构方面,以便用关系型数据库保存和查找信息,实现功能运行与数据存储的结构无关性。

z结构化方法所出现的问题
在结构化方法中,用户使用软件的目的和过程的信息,都被直接抽象为了输入数据和得到反馈的数据。

你只会看到用户做出输入什么数据然后得到什么数据输出的现象,至于用户在做出一件有什么业务意义的行为的信息在结构化模型中基本被抛弃。

这些信息在面向对象的方法中得到保留并作为外部封装的信息。

z面向对象方法的特点
抽象性、封装性、继承性、多态性。

面向对象方法的基本步骤
面向对象分析主要由下面的5个步骤所构成:
9标识对象
9标志结构
9定义主题
9定义属性与实例连接
9定义服务与消息连接
希望了解下面各个与面向对象的方法相关的概念
z面向对象的系统开发
这种方法把系统看作是一起工作来完成某项任务的相互作用的对象集合。

z面向对象的系统分析(OOA)
其主要任务是分析待开发的系统将处理的业务范围,即业务领域,找出问题解决方案,发现对象,分析对象的内部构成和外部关系,建立软件系统的对象模型。

z面向对象的系统设计(OOD)
其主要任务是根据已经确立的系统对象模型,运用面向对象技术,进行软件系统的设计,着重于实现问题。

z面向对象的系统编程(OOP)
用具体的编程工具来实现系统类、对象的各种行为。

UML适用于系统开发过程中从需求规格描述到系统完成后测试的不同阶段。

z在需求分析阶段
可以用用例来捕获用户需求。

通过用例建模,描述对系统感兴趣的外部角色及其对系统(用例)的功能要求。

z分析阶段
主要关心问题域中的主要概念(如抽象、类和对象等)和机制,需要识别这些类以及它们相互间的关系,并用UML类图来描述。

为实现用例,类之间需要协作,这可以用UML动态模型来描述。

z在设计阶段
只对问题域的对象(现实世界的概念)建模,而不考虑定义软件系统中技术细节的类(如处理用户接口、数据库、通讯和并行性等问题的类)。

这些技术细节将在设计阶段引入,因此设计阶段为构造阶段提供更详细的规格说明。

z编程(构造)是一个独立的阶段
其任务是用面向对象编程语言将来自设计阶段的类转换成实际的代码。

在用UML建立分析和设计模型时,应尽量避免考虑把模型转换成某种特定的编程语言。

因为在早期阶段,模型仅仅是理解和分析系统结构的工具,过早考虑编码问题十分不利于建立简单正确的模型。

B4 结构化设计
面向过程的设计,又称之为结构化设计。

设计的结果,需要把数据流程图(DFD)转换成相应的模块。

它使用“输入 – 处理 – 输出”这样一个基本模型,这些模式比较适用于描述商业软件,它们中大多数依靠数据库或者文件,并且不太需要复杂的实时处理。

我们可以使用基于数据流的设计,也可以使用流程图来记录各个子系统的结构,系统流程图标识了每个程序,以及他们存取的数据。

一、基于数据流的设计
1,面向数据流的设计方法把信息流映射成软件结构
2,信息流的类型决定了映射的方法
3,信息流有两种类型:变换流和事务流。

变换流:
信息沿输入通路进入系统,同时由外部形式变换成内部形式。

进入系统的信息通过变换中心,经过加工处理以后再沿着输出通路变换成外部形式离开系统。

事务流:
事务流的特点是数据沿着接收通路把外部世界的信息转换成一个事务项,然后,计算该事务项的值,根据它的值激励起多条活动通路中的一条数据流。

发出多条通路的信息流中枢被称为“事务中心”。

变换型分析:
第1步复查基本系统模型。

第2步复查并精化数据流图。

第3步确定数据流图具有变换特性还是事务特性。

第4步确定输入流和输出流的边界,从而孤立出变换中心。

第5步完成“第一级分解”。

软件结构代表对控制的自顶向下的分配,所谓分解就是分配控制的过程。

对于变换流,数据图将被映射成一个特殊的软件结构,这个结构控制输入、变换和输出信息等处理过程:位于软件结构最顶层的控制模块Cm协调下述从属的控制功能:(1)输入信息处理控制模块Ca,协调对所有输入数据的接收;
(2)变换中心控制模块Ct,管理对内部形式的数据的所有操作;
(3)输出信息控制模块Ce,协调输出信息的产生过程。

第6步完成“第二级分解”。

把数据流图中的每一个处理映射成软件结构中一个适当的模块:
1,从变换中心的边界开始沿着输入通路向外移动,把输入通路中每个处理映射成软件结构中Ca控制下的一个低层模块;
2,然后沿输出通路向外移动,把输出通路中每个处理映射成直接或间接受Ce控制的一个低层模块;
3,最后把变换中心内的每个处理映射成受Ct控制的一个模块。

分析这张图的时候,我们需要注意到数据流程图与结构图的箭头含义是不同的,数据流程图的箭头表达的是数据的流向,而结构图的箭头表达的是自顶向下的结构关系。

当需要在结构图中表达数据和控制的流向时,就必然的希望增加某些表示符号。

第7步使用耦合性和内聚性规则对得到的软件结构进一步精化。

事务型分析:
第1步复查基本系统模型。

第2步复查并精化数据流图。

第3步确定数据流图具有变换特性还是事务特性。

第4步确定事务中心和每个活动通路的流程特征。

第5步把数据流图映射成一个适合于事务处理的软件结构。

第6步对事务中心的结构和每个活动通路的结构进行分解、合并和改进。

第7步使用耦合性和内聚性规则对得到的软件结构进一步精化。

二、结构图的进一步细化
结构化设计的基本任务,是自顶向下的分解任务,结构图是用来展示计算机程序模块之间的层次关系。

在上面的讨论中,我们只表达了自顶向下的结构关系,但并没有表达结构中的控制和数据的走向,为了更清楚的表达这些内容,需要给结构图增加一些符号,目前常用
的结构图主要符号如下:
下面是一个工资系统的部分结构图。

三、基于数据结构的设计
1,基于数据结构的设计方法用信息结构导出程序过程
2,基于数据结构的设计过程分为如下几步:
1)分析数据结构的特性;
2)用一些基本类型(如:顺序,选择和重复)来描述数据;
3)把数据结构表示映射成软件的控制层次;
4)利用一组规则改进软件的层次结构;
5)最后得到软件的过程性描述。

相关文档
最新文档