(控制理论与控制工程专业论文)面向过程和面向对象分析方法对比研究.pdf_第1页
(控制理论与控制工程专业论文)面向过程和面向对象分析方法对比研究.pdf_第2页
(控制理论与控制工程专业论文)面向过程和面向对象分析方法对比研究.pdf_第3页
(控制理论与控制工程专业论文)面向过程和面向对象分析方法对比研究.pdf_第4页
(控制理论与控制工程专业论文)面向过程和面向对象分析方法对比研究.pdf_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

华中科技大学硕士学位论文 摘要 , ( 面向过程分析方法是曾经风靡一时的分析方法,现在以及在将来相当长的一段 时间内仍将占有极其重要的地位,在很多领域我们都将用到。随着面向对象分析 方法的提出,技术人员逐渐从对象的角度来分析和实现问题,随着发展的不断成 熟,其分析方法将占有主导地位,成为一种流行的分析方法。 对于面向过程分析方法而言, d e f o 是发展比较成熟的一种建模规范。通过 i d e f o 可以建立起比较强大的系统模型,但是这种分析方法自身也存在着管理上 的种种问题。对于面向对象分析方法,本文将采用u m l 建模方法描述面向对象建 模的全部过程,并讨论其作为分析工具的优缺点,并与面向过程分析方法进行对 比。 不管是用i d e f o 或者是u m l 对系统进行建模,所建立的模型都是静态模型, 这种模型只能给分析人员一种感官上的认识,对于系统运行时是否产生死锁,或 者产生出哪些状态等问题,均不能给出满意的答案,本文将采用着色p e t r i 劂作为 种辅助建模工具,对由i d e f o 或者u m l 建立的模型进行动态转变,将其转变 成可执行的动态模型,以辅助i d e f o 和u m l 对系统建模时的不足。 面向对象方法由面向过程分析方法发展而来,两者属于不同的分析体系,但是 两者又有着或多或少的联系,本文将对面向过程分析方法建立的系统如何转化到 面向对象方法建立的系统进行一些研究探讨,提出一些自己的观点。 关键词:面向对象、面向过程、u m l 、p e t r i 、物资采购计划 华中科技大学硕士学位论文 a b s t r a c t p r o c e s s o r i e n t e da n a l y z i n gm e t h o di so n c et h em o s tp o p u l a ra n a l y s i sm e t h o dj 1 1 t h ew o r l d b u ti ta l s op l a yav e r yi m p o r t a n tr o l ei nm a n ya r e af o ra1 0 n gt i m ei nt h e f u t u r ew i t ht h ec o n c e p to fo b i e c 卜o r i e n t e dp u t t i n gf 、o r w a r d t e c h n i c i a nb e g i nt ou s et h e v i e wo fo b j e c tt oa n a l y s i sa n ds o l v ep r o b l e ma n di t b e g i nt ob e c o m em o r ea n dm o r e p o p u l a r w i t ht h ed e v e l o p m e n to f t h eo b j e c t o r i e n t e d t e c h n o l o g y t op r o c e s s 。o r i e n t e d a n a l y z i n gm e t h o d ,i d e f oi s o n eo ft h em o s tm a t u r e m o d e l i n g c r i t e r i o ni nt h i sa n a l y s i sa r e a w ec a nu s et h i sm e t h o dt ob u i l das t r o n gs y s t e m m o d e l b u ti ta l s oh a ss o m e d i s a d v a n t a g e s i n m a n a g e m e n t o ft h e p r o j e c t t o o b j e c t o r i e n t e dm e t h o d w ew i l lu s eu m l a sat 0 0 1t om o d e la s y s t e ma n dd e s c r i b et h e w h o l ep r o c e d u r eo ft h em o d e l i n g w ea l s od i s c u s si t s a d v a n t a g ea n dd i s a d w q l _ n t a g e f i n a l l yw e w i l lc o m p a r ei tt ot h ep r o c e s s - 0 r i e n t e da n a l y z i n gm e t h o d h o w e v e rw eu s ei d e f oo ru m lt om o d e las y s t e m a l lt h em o d e li ss t a t i c w ec a l l i u s tu s et h i sm o d e lt og i v eas e n s ea c q u a i n l a l l c e s l l i p w ec a n tk n o ww h e nt h es y s t e m w i l ld e a d l o c ka n dh o wm a n ys t a t e sw i l it h es y s t e mg e t a l lt h e s ep r o b l e mc a l l tb c s o l v e du s i n gt h e s es t a t i cd i a g r a ma sac o m p l e m e n t a r i l y ,w ew i l lu s ec o l o r e dp e t r in e t a sas e c o n d a r yt o o lt o c o n v e r t i n g t h em o d e lw em a d eb yi d e f oo ru m li n t oa e x e c u t a b l em o d e l t h e nw ec a n g e tas t r o n gs y s t e mm o d e l o b j e c t o r i e n t e da n a l y s i sm e t h o di sd e v e l o p m e n tb yp r o c e s s o r i e n t e da n a l y z i n g m e t h o d t h e yb e l o n gt o ad i f f e r e n ts y s t e m b u tt h e ya l s oh a ss o m er e l a t i o n s h i pw i t h e a c ho t h e r1w i l l b r i n g f o r w a r ds o m ev i e wo f m yo w no nh o wt o c o n v e r ta p r o c e s s - o r i e n t e ds y s t e mj n t oa o b j e c t - o r i e n t e ds y s t e m a n da l s og i v es o m er e s e a r c h k e y w o r d s :o b j e c t o r i e n t e d 、p r o c e s s - o r i e n t e d 、u m l 、p e t r i 、o r d e rp l a n i i 华中科技大学硕士学位论文 1 1 课题背景介绍 1 前言 模型是对事务的一种抽象,人们常常在正式建造实物之前,首先建立一个简化 的模型,以便更透彻的了解它的本质,抓住问题的要害。在模型中,人们总是其 剔除那些与问题无关的、非本质的东西,从而使模型与真实的实体相比更加简单 明了、易于把握。干百年来,工程师、艺术家和手工艺人都要运用模型来进行设 计,然后才具体实施。可以说,无论硬件系统还是软件系统,其开发过程都大体 如此。在构建一个复杂系统时,开发者必须从多种不同的角度来抽象系统,使用 准确的符号来构造模型,然后检查这些模型是否符合系统的需求,并逐步添加细 节,从而将这些模型转换成现实的方案。 建模方法经过长时间的发展演化,形成了两种非常成功而且很成熟的建模方 法,面向过程建模方法和面向对象建模方法。本文主要讨论这两种方法在软件建 模过程中的模式,在其它领域的应用都大同小异,在本文中则不一一阐述。 面向过程建模方法是传统的建模方法,是早期运用非常广泛的一种建模方法。 这种建模方法曾经给而且仍将继续给软件产业带来巨大进步,并且能够部分缓解 软件危机。当然,面向过程的建模方法是建立在传统的生命周期方法学上的,这 种方法学有它的优点,但是也有比较明显的缺陷,为了克服传统方法学的缺点, 近年来快速崛起的面向对象方法学日益受到人们的重视,而且这种新的方法必将 会给软件产业的发展带来新的飞跃。 事实上,结构分析和结构技术现在仍然是人们在丌发软件过程中使用的非常广 泛的方法,在相当长一段时间之内这种方法还会有很强的生命力。面向对象建模 方法作为一个比较新的技术,也有它不断发展以及被大家所接受的一个过程,那 么,具体研究结构化分析方法和面向对象分析方法异同之处,以及找出两种分析 方法之间的切合点,并将之转换为可执行模型,这将对我们进行软件建模、设计 和分析具有重要的指导意义。 华中科技大学硕- - k 学位论文 1 2 主要研究内容 本课题的研究就是在上述背景下开展进行的,- :x t f l 的主要研究内容是面向过程 建模方法和面向对象建模方法的异同之处,各自的优缺点,以及如何将之运用于 实际之中。 在本文第二章,我们将主要i 寸论结构化分析方法的概念,并结合湖南长丰计算 机集成信息系统的实例讨论结构化设计方法的一般思想。在第三章中,我们将以 当前面向对象领域的统一建模语言( u n i f i e d m o d e l i n g l a n g u a g e ) u m l 作为工具,阐 述运用0 0 方法,进行建模的方法和步骤,并以长丰采购系统作为背景,给与详 细阐述。在对结构化建模方法和面向对象建模方法进行了一个系统的介绍之后, 第四章将对面向对象建模方法和结构化建模方法做一个系统的对比研究,包括两 者的优缺点,运用领域以及两者之间的相互转换关系。 两种模型虽然都有各自很好的优点,但是两者都不能很好的描述系统的逻辑、 行为和动态性能属性。为此,在第五章中,我们:烙运用p e t r i 网理论,与面向列象 和面向过程方法很好的结合起来,为两种方法打造一个可执行模型,用柬进行仿 真分析和验证。 第六章总结了全文的工作,得出本文的结论并展望了建模过程中有待进一步 解决的问题。由于u m l 和着色p e t r i 网均为可视化图形建模工具,如果脱离实际 的范例去讲解建模方法,会使文章显得空洞和难于理解,所以贯穿全文,我们将 结合湖南长丰计算机集成信息系统采购子系统来论述系统建模的全部过程,对该 范例的建模和仿真分析,将有助于更好的证实和理解我们提出的系统分析和设计 方法的研究结果。 一 2 华中科技大学硕士学位论文 2 结构化分析方法 2 1 简介 结构化分析方法起源于5 0 年代的结构化分析与设计技术( s a d t ) ,包括:结构 化设计、结构化开发、d e m a r c o 结构化分析方法,结构化系统分析,以及由此而 来的与它们相类似的相当多的变异方法。这些方法通常嵌入在系统开发软件工具 包中,方便计算机辅助工具的生成和分析。结构化分析方法的一个显著的特征是 面向过程的,它的出发点是系统必须执行的功能或活动。它的第二个特征是通过 系统的功能分解、产生系统层次结构图。 这种结构化分析方法和结构化的设计技术以生命周期方法学为基础。它是在 7 0 年代为了应付软件日益增长的复杂程度、漫长的开发周期以及用户对软件产品 经常不满意的状况而发展起来的。人们解决复杂问题时普遍采用的一个策略就是 “各个击破”,也就是对问题进行分解然后再分别解决各个子系统问题的策略。而 生命周期法则是在时间域对软件建模和开发过程进行分解,把漫长的周期划分成 若干个阶段,每一个阶段都有相对独立的任务,然后逐步完成每个阶段的任务。 这种方法从对任务的抽象逻辑开始分析,一个阶段一个阶段的进行建模分析。前 一个阶段的完成是开始进行后一个阶段工作的前提和基础,而后一阶段任务的完 成通常是使前一阶段提出的解法更进一步具体化,加进了更多实现的细节。每一 个阶段的开始和结束都有严格的标准,对任何两个相邻阶段而言,前一阶段的结 。 束标准就是后一阶段的开始标准。在每一阶段结束之前都必须进行正式严格的技 , 术审查和管理复审,从技术和管理这两个方面对这个阶段的丌发成果进行检查, 通过之后刁+ 算结束。 结构化分析过程的设计过程一共分为五个阶段,问题定义阶段,可行性研究 阶段,需求分析阶段,总体设计阶段,详细设计阶段。每个阶段所要完成的任务 各不相同,在问题定义阶段必须回答的关键问题是:“系统要解决的问题是什么”, 如果在不知道问题是什么的情况下就去解决问题,显然是非常盲目的。在可行性 研究这个阶段,我们要回答的关键问题是:“对上一个阶段所确定的问题有行得通 的解决办法吗? ”在这个阶段,系统分析人员需要进行一次大大压缩和简化了的 系统分析和设计过程,也就是在比较抽象的高层次上进行的分析和设计的过程。 3 华中科技大学硕士学位论文 在需求分析阶段的任务是准确的确定“为了解决这个问题,目标系统必须做什么”, 主要是确定目标系统必须具备有那些功能。到了总体设计阶段,我们应该考虑如 何去解决这个问题了。在详细设计阶段,就是要把解法具体化,具体的去实现这 个系统。在所有阶段中,经常用到的就是h i p 0 图( 层次图加输入处理输出图) , 并通过设计分析的不断深入,不断的细化和完善h i p o 图。结构化分析设计过程可 以用下表表示出来“。 表2 1 结构分析过程小结 阶段关键问题结束标准 问题定义问题是什么?关于规模和目标的报告书 可行性研究有可行的方案?系统的高层逻辑模型: 数据流图 成本效益分析 需求分析系统必须做什么系统的逻辑模型: 数据流图 数据字典 算法描述 总体设计应该如何解决这个问题?可能的解法: 系统流程图 成本效益分析 推荐的系统结构: 层次图或结构图 详细设计怎样具体的去实现这个系h i p o 图 统? 在结构化分析的每一个阶段中,除了问题定义阶段以外,我们都要对系统进行 由浅入深的分析。对于一个大系统,不可能在一个步骤或一个阶段对问题进行透 彻的分析。我们必须不断地进行建模,从各个不同的层次对系统进行不断深入的 描述。据统计,人在短时间内掌握的信息量只能是7 9 个信息点。所以在进行分 析的时候,分析员必须对系统进行不断的分层、分解和模块化,以及分不同的层 次构造模块之间的关系和数据信息之间的流向,这样才能使系统一目了然,便于 最后的设计以及整个分析过程的管理。本章节就将如何利用结构化分析方法进行 建模分析做一个详细的论述。 华中科技大学硕士学位论文 2 2 结构化分析方法 大型的程序设计通常分为两个阶段完成:首先进行结构设计,然后进行过程 设计。结构设计确定程序由那些模块组成,以及这些模块之间的关系:过程设计 确定每个模块的处理过程。结构化分析方法( 简称s a 方法) 就是面向数据流自顶 向下逐步求精进行需求分析的方法。通过可行性研究得出系统的高层数据流图, 最后的目标就是要把数据流和数据存储定义到元素级。 2 ,2 1 功能分解 在面向过程的结构化分析方法中,建立模型是从一个非常抽象的概念开始的, 随着分析过程的进展,这个概念会变得越来越具体。比如说,在进行制造业企业 物资采购建模的过程中,分析人员最初可能只会了解该企业采购一个非常抽象的 概念,随着调查分析的不断深入以及本身知识构架的不断丰富,这个概念会变得 越来越清晰明了。 给出某一个层次上的概念之后,开发功能系统的第步是功能分解。从一个清 晰说明系统功能的动词出发,进行第一层次的分解。顶层的功能被分为几个子功 能,这些子功能之间是互相排斥的,而且是完全的。接下来,对这些子功能中的 每一个功能再进行分熊,以此类推。在各种方法中,分解的层次有各自的名称: 例如,“问题功能任务”就是一套标签( 图2 1 ) 。到底要分解多少层,要 视具体实际情况而定。但是,层次应陔尽可能的少,原因是:每增加个层次就 会大大增加问题的复杂性。另外,多层次的分解意味着引出相应层次的物理结构。 也就是说,功能对应实现功能所要求的系统实际的物理组成。一个有用的原则就 是,分解到每一个功能都与一个具体的物理资源相对应时为止。这样做的目的, 意味着物理结构是可行的。不过通常情况下,两种结构是在强烈的互动关系下并 行开发的。当然,功能分解是一个不断叠代的过程,而每一层分解都应该小心从 事,因为返回到较高的层次去做修改是件比较困难的事,与其相关的下面的层次 都要重新做捡查。 华中科技大学硕士学位论文 问题 f 、 功能功能功能 i 任务任务任务 图2 1 在软件设计中,为了确定软件结构,首先需要从现实角度把复杂的问题进行进 一步分解。在长丰信息系统采购管理过程分析中,我们可以把整个采购管理这个 问题初步分为采购计划管理,采购任务管理,采购订单管理,临时采购管理,供 应商管理等等这样几个功能,那么对于采购计划这个功能而言,它对应具体的物 理系统就是每个月或者每半个月采购计划的制定。它要完成月配套件采购计划, 月辅料计划,月板材计划的制定任务。就采购管理而言,我们就可以初步得到以 j 系统部分功能分解结构图( 图2 2 ) 。 氏丰集团计算机集成信息系统 采购管理子系统 i lil i 采购计划管理fl 采购任务管理f 采购订单管理 临时采购管理 供应商管理 ll lff 月配套什采购计划月辅料采购计划板材采购计划 图2 2 系统树型部分功能分解结构 在对问题进行了一个初步的层次分解之后,就要丌始进行更进一步具体的设 计了。上面我们只给出了长丰系统一个结构化分析的很简单和粗糙的模型,在后 面的分所中,我们将在功能分解的前提下,对系统模型进行逐步的完善。 2 2 2 模块化 2 2 2 1 模块化 华中科技大学硕士学位论文 模块是数据说明、可执行语句等程序对象的集合,它是单独命名的而且可以 通过名字来访问,例如过程、函数、子程序、宏等等都可作为模块。模块化就是 把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集成起来组成 一个整体,就可以完成制定的功能,满足问题的要求。 通常程序中的一个模块完成个适当的子功能。应该把模块组织成良好的层 次系统,顶层模块调用它的下层模块以实现程序的完整功能,每个下层模块在渊 用更下层的模块,从而完成程序的个子功能,最下层的模块完成最具体的功能。 那么这种模型的结构就要用层次结构图来描绘。 模块化是为了使一个复杂的大型系统能够被人的智力所管理。如果个大型系 统仅仅由一个模块组成,它将很难被人所理解。 设函数c ( x ) 定义问题的复杂程度,函数e ( x ) 是确定解决问题x 需要的工作量( 州 问) 。如果存在这样两个问题p 1 和p 2 ,如果 c ( p o c ( p 2 ) 显然 e ( p 1 ) e ( p 2 ) 根据人们解决一般问题的经验,有一个规律 c ( p 1 + p 2 ) c p 1 ) + c ( p 2 ) 也就是说,如果一个问题由p 1 和p 2 两个问题组合而成,那么它的复杂程度大于 分别考虑每个问题时的复杂程度之和。 综上所述,可以得到下面的不等式 e ( p 1 + p 2 ) e ( p 1 ) + e ( p 2 ) 这个不等式导致“各个击破”的结论一把复杂的问题分解成许多容易被解决 的小问题,原来的问题也就容易解决了。这就是模块化的根据。 2 2 2 2 模块独立 由于人类思维能力的限制,如果每次面临的因素太多,是不可能做出精确思 维的。处理复杂系统的唯一有效的办法是用层次的方法来构造和分析它。个复 杂系统可以用一些高级的抽象概念来构造和理解,这些高级的概念又可以用些 较低级的概念构造和理解,如此进行下去,直至最低层的具体元素。在每一步都 要进行模块化、和抽象等具体工作,还有信息的组织工作。模块独立的概念则是 模块化,抽象等概念的直接结果。 丌发具有独立功能而且和其它模块之间没有过多的相互作用的模块,就可以 华中科技大学硕士学位论文 做到模块独立。换句话说,希望能够这样设计模型,使得每一个模块完成一个相 对独立的特定子功能,并且和其它模块之间的关系很简单。 为什么模块的独立性很重要呢? 主要有两条理由:第一,有效的模块化( 即具 有独立的模块) 的系统能够比较容易的开发和实施。这是由于能够分解功能而且 接口可以简化,当进行团队开发时,这一个优点显得尤其重要。第二,独立的模 块能够比较容易的测试和维护。这是因为相对晓来,修改设计和程序需要的工作 量比较小,错误传播范围小,需要扩充功能时能够“插入”模块。总之,模块独 立是好设计的关键,也是一个关键的环节。 模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。 j 揭合衡量不同模块彼此间相互依赖的紧密程度:内聚衡量一个模块内部各个元素 彼此结合的紧密程度。我们在下面一一介绍。 l 、耦合 祸合是对一个系统内部不同模块之间互连程度的度量。耦合强弱取决于模块 间接口的复杂程度,进入或访问一个模块的点,以及通过接i z l 的数据。 在系统设计中应该追求尽可能松散耦合的系统。在这样的系统中可以研究、 测试或维护任何一个模块,而不需要对系统的其它模块又很多的了解。此外,由 于模块之间联系简单,发生在一处的错误传播到整个系统的可能性就小。i 天i # l , 模块之间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性。 那么怎么具体区分模块问耦合程度的强弱呢? 如果两个模块中的每一个都能独立的工作而不需要另外一个模块的存在,那 么它们彼此完全独立,这意味着模块阃无任何连接,耦合程度最低。然而,在一 个系统中不可能所有模块之间都没有任何连接。 如果两个模块之间通过参数交换信息,而交换的信息仅仅是数据,那么这种 耦合称为数据耦合。如果传递的信息之间有控制信息,则这种耦合称为控制耦合。 数据祸合是低耦合,系统中至少必须存在这种耦合,因为只有当某些模块的输出 数据作为另一些模块的输入数据时,系统才能完成有价值的功能。一般蜕来,一 个系统中可以只包含数据耦合。控制耦合是中等程度的祸合,它增加了系统的复 ;j 程度。控制耦合往往是多余的,在将模块适当分解之后通常可以用数掘耦合代 替它。 当两个或多个模块通过一个公共数据环境相互作用时,他们之间的耦合公扶 坏境耦合。最后,最高程度的耦合是内容耦合。如果出现了下列情况之一,两个 华中科技大学硕士学位论文 模块问就发生了内容耦合: 一个模块访问另一个模块的内部数据 一个模块不通过正常入口而转到另个模块的内部 两个模块有部分程序代码重叠 一个模块有多个入口( 这意味着一个模块有几种功能) 总之,耦合是影响系统复杂程度的一个重要因素。因该采取下述设计原则: 尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦 合。 2 、内聚 内聚标志一个模块内各个元素彼此结合的紧密程度。简单地说,理想内聚的模 块只做一件事情。做设计时应该力求做到高内聚,通常中等程度的内聚也是可以 采用的,而且效果和高内聚差不多;但是低内聚就不要使用了。 内聚和耦合是密切相关的,模块内的高内聚往往意味着模块问的松耦合。内聚 和耦合都是进行模块设计的有力工具。但是实践表明内聚更重要,应该把更多注 意力集中到提高模块的内聚程度上。 低内聚有如下几类:如果一个模块完成一组任务,这些任务之间彼此有关系, 关系也是很松散的,就是偶然内聚。如果个模块完成的任务在逻辑上属于相同 或相似的一类( 例如,一个模块产生各种类型的全部输出) ,则称为逻辑内聚。立 果一个模块包含的任务必须在同一段时间内执行( 例如,模块完成各种初始化工 作) ,就叫时间内聚。 中类聚主要有两类:如果一个模块内的处理元素是相关的,而且必须以特定次 序执行,则称为过程内聚。使用流程图作为工具设计软件时,常常通过研究流程 图确定模块的划分,这样得到的往往是过程内聚的模块。如果模块中所有元素都 使用同一个输入数据或产生同一个输出数据,则称为通讯内聚。 高内聚也有两类:如果一个模块内的处理元素和同一个功能密切相关,而且这 些处理必须顺序执行( 通常一个处理元素的输出数据作为下一个处理元素的输入 数掘) ,则称为页序内聚。根据数据流图划分模块时通常得到顺序内聚的模块,这 种模块彼此间的连接往往比较简单。如果模块内所有处理元素属于一个整体,完 成一个单一的功能,则称为功能内聚。功能内聚是最高程度的内聚。 事实上,没有必要精确确定内聚的级别。重要的是设计时力争做到高内聚,并 且能够辨认出低内聚模块。有能力通过修改设计提高模块的内聚程度降低模块问 华中科技大学硕士学位论文 的耦合程度,从而获得较高的模块独立性f 。 在讨论完了模块的耦合和内聚之后,现在来简单晚明一下模块的作用域。模块 的作用域定义为受该模块内一个判定影响的所有模块的集合。模块的控制域是这 个模块本身以及所有直接或间接从属于它的模块的集合。倒如,在图2 3 中模块a 的控制域是a 、b 、c 、d 、e 、f 的集合。 图2 3 模块的作用域和控制域 在一个设计的很好的系统中,所有受判定影响的模块都应该从属于做出判定的 那个模块,最好局限于做出判定的那个模块本身及它的直属下级模块。例如,如 果图2 - 3 中模块a 做出的判定只影响模块b ,那么是符合这条规则的。但是,如果 模块a 做出的判定同时还影响模块g 中的处理过程,又会有什么坏处呢? 首先, 这会使系统结构难于理解。其次,为了使a 中的判定能够影响g 中的处理过程, 通常需要在a 中给一个标记设置状态以指示判定的结果,并且应该把这个标、己传 递给a 和g 的公共上级模块m ,在由m 把它传给g 。这个标记是控制信息而不 是数据。因而将使模块间出现控制耦合。 怎样修改系统结构爿能使作用域是控制域的子集呢? 一个方法是把做判定的 点往上移,例如,把判定从模块a 移到模块m 中。另一个方法是把那些在作用域 内但不在控制域内的模块移到控制域内,例如,把模块g 移到模块a 的下面,成 为它的直属下级模块。到底蕴用哪种方法,需要根据具体问题统筹考虑,以实际 问题的不同而不同。 2 2 2 3 图形工具 在进行系统分解和模块化的时候,我们需要用到一些图形工具来辅助我们的设 汁。最常用的有h 1 p o 图。h i p o 图是美国i b m 公司发明的“层次图加输入处理 华中科技大学硕士学位论文 输出图”的缩写。为了能使h i p o 图具有可追踪性,在h 图( 层次图) 里除了最 顶层的方框之外,每个方框都加上了编号。在上面,我们谈论到了一个物资采购 系统部分模块的划分模型,在这里我们可以重绘图2 2 如图2 4 所示。 长丰集团计算机集成信息系统 采购管理了系统 采煳计划管理 1o 采购任务管理 2o 采购订单管理 3o 临n 、r 采购管理 4o 供应向管理 50 月配套件采购计习 l 1 月辅料采蚴计划 l2 板材采购计划 13 图2 4 带编号的层次图( h 图) 和h 图中每个方框相对应,应该有一张i p o 图描绘这个方框代表的模块的处 理过程。i p o 图是输入处理输出图的简称,它能够方便的描绘输入数据,对数据 的处理和输出数据之间的关系。它是一种静态的图形表示方法,其中包含两个图 形单元:方框表示处理:有向弧表示数据的传输或者与处理过程相关的对象。表 示处理方框的每一边都有它的含义,如图2 5 所示。处理方框左边的箭头表示输入, 顶边的箭头表示控制或者是调用,处理的被调用部分表示在底边,右边离丌的箭 头表示输出。对于i p o 图,我们可以用一个表的形式表示出来,加入一些信息比 如系统名称,图的作者,完成日期,以及模块名字及编号等。这样我们可以更加 清楚的对该处理有一个比较全面的认识。如图2 6 所示。 华中科技大学硕士学位论文 入l 输 一处理i 【。_ j , 图2 5 i p o 图中的方框和箭头说明 图2 6i p o 说明表 h i p o 图的一个重要作用是它支持层次分解。在最高层,即a - 0 层,只有一个 功能,下一层即a o 层,包含第一层分解的系统功能和功能之间的关系。a 0 中的 每一个处理方框都可以进一步的分解为单独的a 1 ,a 2 ,a 3 ,等等。一个简单 的双层模型,如图2 7 所示。它有两个输入、三个输出和一个控制。 1 2 上c h 一厂育 = 三: 1 2 i墅l 0 3 c o l 0 2 0 3 图2 7 一个简单1 p o 层次分解图 与h i p o 图相关联的是i p o 表,它包含处理的定义和描述,以及相关的输入、 输出、调用、被调用规则集。这些规则况明该处理在何种情况下才会被执行。 华中科技大学硕士学位论文 2 2 3 数据流图 2 2 3 1 简介 数据流图分为两种,种是物理数据流图,一种是逻辑数据流图。在表达分析 员对现有系统的认识和描绘他对未来的物理系统的设想时,系统流程图是一种很 好的工具。系统流程图实质上就是物理数据流图,它描绘组成系统的主要物理元 素以及信息在这些元素间流动和处理的情况。逻辑数据流图是描绘系统逻辑模型 的工具,图中没有任何具体的物理元素,只是描绘信息在系统中流动和处理的情 况。因为逻辑数据流图是逻辑系统的图形表示,即使不是专业的计算机技术人员 也容易理解,所以是极好的通信工具。此外,设计数据流图只需考虑系统必须完 成的基本逻辑功能,而不考虑如何具体的去实现这些功能,所以这是系统设计 个很奸的出发点。 在下面的内容中,我们将详细的介绍物理数据流图和逻辑数据流图。 2 2 3 2 系统流程图 在进行设计时需要了解和分析现有的系统,并以概括的形式表达对现有系统的 认识,在进入设计阶段以后应该把设想的新系统的逻辑模型转换为物理模型,因 此需要描绘未来物理系统的概貌。 怎样拙绘个物理系统呢? 系统流程图是描绘物理系统的传统工具。它的基本 思想是用图形符号以黑盒子形式描绘系统里面的每个部件( 程序,文件,数据库, 表格,人工过程等等) 。系统流程图表达的是信息在系统各部件之间流动的情况, 而不是对信息进行加工处理的信息过程,因此尽管系统流程图使用的某些符号和 程序流程图中的符号相同,但是它却是物理数据流图而不是程序数据流图。 介绍系统流程图的最好方法就是通过一个例子说明它的用法。我们现在给出 个具体系统流程图的例子,如图2 8 所示,这是长丰计算机集成信息系统的采购计 划部分的系统数据流图,我们又称为业务流图。在制定计划时需要的数掘很多, 何库存信息,生产计划信启、等,这些信息都分别来自不同的部门。对于库存信息, 米自于仓库的,以及对每种物料进行的分类。对于生产计划信息,是由生产管理 部综合全厂所有的情况,包括对产、供、销、财务等的综合分析得出的数据。计 划员综合这些相关的数据,经过一定的处理,编制计划,得到采购计划,然后根 华中科技大学硕士学位论文 据采购计划编制资金计划,最后送财务审批。在图2 8 中,每个符号用黑盒子的形 式定义了组成系统的部件,然而并没有指明每个部件的具体工作过程;图中的箭 头则确定了信息通过系统的逻辑路径( 信息流动路径) 。 系统流程图的每个符号都有名称,所以可以起文档的作用。许多分析员喜欢在 系统流程图上加更详细的注释,有些人甚至另加一页纸来解释系统流程图【4 1 。 在,“j ( t b 。、一j l i n 一, ”“目 一 4 i _ n “ 一一。一。 一一 - t t _ l mo u $ 5 ” 一 图2 8 采购计划系统的系统流程图 1 ”* c ,| nn * “】 i t b 2 23 3 数据流程图 数据流图描绘系统的逻辑模型,图中没有任何具体的物理元素,只是描绘信启、 在系统中流动和处理的情况。通常在数据流图中忽略出错处理,也不包括诸如手丁+ 丌文件或关闭文件之类的内务处理。数据流图的基本要点是描绘“做什么”而不 考虑“怎样做”。 数据流图有四种基本的符号:正方形( 或立方体) 表示数据的源点或者终点: 圆角矩形( 或圆形) 代表变换数据的处理;开口矩形( 或两条平行线) 代表数据 存储:箭头表示数据流,即特定数据的流动方向。除了上述四种基本的符号之外, 有时也使用几种附加的符号。星号( + ) 表示数据流之阳j 是“与”关系( 同时存在) ; ” 一 萋】警卜磊铲一 械删 晰 华中科技大学硕士学位论文 加号( + ) 表示“或”关系;o 号表示只能从中选一个( 互斥的关系) 。 数据流图有四种成分:源点或终点,处理,数据存储和数据流。因此,首先要 从问题的描述中提取数据流图的四种成分。首先要考虑数据的源点和终点。在采 购管理系统中,采购部每个月都需要一张关于各种物资的订货报表,通过计划员 制定计划之后,然后将事务报告给订货系统。所以采购员是数据终点,而计划员 是数据源点。接下来考虑处理,再一次思考问题的描述,“采购部需要报表”,显 。 然他们还没有这种报表,因此必须有一个用于产生报表的处理。事务的后果是改 变零件的库存量,然而任何改变数据的操作都是处理,因此对数掘进行的加工是 另个处理。但是,在问题的描述中没有明显的提到需要对事物进行处理,通过 分析则可以看出这种需要。最后考虑数据流和数据存储:系统把订货报表送给采 购部,因此订货报表是一个数据流。产生报表和处理事务这两个处理在时间上h j j 显不匹配每当有一个事物发生时立即处理它,然而每月只产生一次订货报表。 因此用来产生订货报表的数据必须存放一段时间,也就是应该有一个数据存储。 但是,并不是所有的数据存储和数据流都能直接从问题描述中提取出来。例如,“当 某种零件的库存数量少于库存量临界值时就应该再次订货”,这个事实意味着必须 在某个地方有零件库存量和库存量临界值这样的数据。因为这些数掘元素的存z : 时州看起柬应该比单个事务的存在时间长,所以认为有一个数据存储保存库存消 单数据是合理的。 数据流图时系统的逻辑模型,然而任何计算机系统实质上都是信启、处理系统, 也就是说任何计算机本质上都是把输入数据变换成输出数据。因此,任何系统的 基本模型都由若干个数据源点终点以及一个处理组成,这个处理就代表了系统剥 数据加工变换的基本功能。对于上述的订货系统,我们可以画出图2 9 这样的基本 、 系统模型。 图2 9 订货系统的基本系统模型 ( 突出表明了系统的源点和终点) 华中科技大学硕士学位论文 然而,图2 9 毕竟太抽象了,从这张图中对订货系统所能了解到的信息非常有 限。下一步应该把模型继续细化,描绘系统的主要功能。从上面的分析可知,“产 生报表”和“处理事务”是系统必须完成的两个主要功能,他们将代替图2 9 中的 “订货系统”( 图21 0 ) 。此外,细化后的数据流图中还增加了几个数据存储,处 理事务需要“库存清单”,“计划清单”,“合同清单”等数据;产生报表和处理事 务在不同时间,因此需要存储“订货信息”。因此细化后的数据流图如图2 1 0 所示。 肯丧 一+ l j 图21 0 订货系统的功能级数掘流图 接下来的任务就是对数据流图中描绘的系统主要功能进行更进一步的细化,这 乳有一点很关键,对数据流图分层细化时必须保持信息的连续性,也就是说,当 把一个处理分解为一系列处理时,分解前和分解后的输入输出数据流必须相同。 从数据流图的基本目标出发,可以考虑在一张数据流图中包含多少个元素合适 的问题。一些研究调查表明,如果一张数据流图中包含的处理多于5 9 个,人们 就难于领会了。因此,数据流图是分层的,并且在把功能级数据流图细化后得到 的处理超过9 个时,应该采取画分图的办法,也就是把每个主要功能都细化为一 张数据流图,而原有的功能级数据流图用来描绘系统的整体逻辑概貌。 数据流图的一个主要用途是作为分析和设计的工具。分析员在研究现有的系统 n 寸常用系统流程图表达他对这个系统的认识,这种描绘方法形象具体,比较容易 验证它的m 确性:但是,丌发系统的目标往往不是完全复制现有的系统,而是创 造一个能够完成相同功能或类似功能的新系统。用系统流程图描绘一个系统时, 系统的功能和实现每个功能的具体方案是混在一起的。因此,分析员希望以另一 种方式进一步总结现有的系统,这种方式应该着重描绘系统所完成的功能而不是 芋 孚 一 弛贲 丁j 嚣 : w 螂 h 华中科技大学硕士学位论文 系统的物理实现方案。数据流图则是实现这个目标的极好手段。 2 2 4 面向数据流的设计方法 面向数据流的设计方法的目标是给出设计软件结构的一个系统化的途径。 在系统的分析阶段,信息流是一个关键考虑,通常用数据流图描绘信息在系统 中加工和流动的情况。面向数据流的设计方法定义了一些不同的“映射”,利用这 些映射可以把数据流图变换成软件结构。因为任何软件系统都可以用数据流图表 示,所以面向数据流的设计方法理论上可以设计任何软件的结构。通常所说的结 构化设计方法( 简称s d 方法) ,也就是基于数据流的设计方法。 2 2 4 1 概念 面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映刺的 方法。信息流有下述两种类型。 1 、变换流 根据基本的系统模型,信息通常以“外部世界”的形式进入软件系统,经过 处理后再以“外部世界”的形式离开系统。 信息沿输入路径进入系统,同时由外部形式变换成内部形式,进入系统的信 息通过变换中一i f , ,经过加工处理以后再沿输出通路变换成外部形式离开系统。当 数据流图具有这些特征时,这种信息就叫做变换流【4 】。 2 、事务流 基本系统模型意味着变换流,因此,原则上所有信息流都可以归结为这一类。 数据沿输入通路到达一个处理t ,这个处理根据输入数据的类型在若干个动作序列 中选出一个来执行。这类数据流是一类特殊的数据流,称为事务流。处理t 称为 事务中心,它完成以下任务: ( i ) 接收输入数据( 输入数据又称为事务) ; ( 2 ) 分析每个事务以确定它的类型; ( 3 ) 根据事务类型选取以条活动通路。 应该注意,任何设计都不是机械的一成不变的,设计首先需要人的判断力和创 造精神,这往往会凌驾于方法的规则之上。 2 2 42 变换分析 华中科技大学硕士学位论文 变换分析是一系列设计步骤的总称,经过这些步骤把具有变换流特点的数据流 图按预先确定的模式映射成系统结构。一般的说,一个系统中的所有信息流都可 以认为是变换流,但是,当遇到有明显事务特性的信息流时,建议采用事务方法 进行设计。在这一步,设计人员应该根据数据流图中占优势的属性,确定数据流 的全局特性。此外还应该把具有和全局特性不同的特点的局部区域孤立出来,以 后可以按照这些子数据流的特点精化根据全局特性得出的系统结构。 系统结构代表对控制的自顶向下的分配,所谓分解就是分配控制的过程。 对于变换流的情况,数据流图被映射成一个特殊的软件结构,这个结构控制输 入、变换和输出等信息处理过程。图2 1 1 说明了第一级的分解方法,位于系统最 顶层的控制模块c m 协调下述从属的控制功能1 4 j : 图2 1 1 第一级分解方法 输入信息处理控制模块c a ,协调对所有输入数据的接收; 变换中心控制模块c t ,管理对内部形式的数据的所有操作; 输出信息处理控制模块c e ,协调输出信息的产生过程。 虽然图2 1 1 意味着一个三叉的控制结构,但是,对一个大型系统中的复杂数 据流可以用两个或多个模块完成上述一个模块的控制功能。应该在能够完成控制 功能并且保持好的耦合和内聚特性的前提下,尽量使用第一级控制中的模块数日 取最小值。 在进行完第一级分解之后,就要进行第二级分解了。所谓第二级分解就是把数 据流图中的每个处理都映射成软件结构中一个适当的模块。完成第二级分解的方 华中科技大学硕士学位论文 法是,从变换中心的边界开始沿着输入通路向外移动,把输入通路中每个处理映 射成软件结构中c a 控制下的一个低层模块;然后沿输出通路向外移动,把输出通 路中每个处理映射成直接或间接受模块c e 控制的一个低层模块;最后把变换中心 的每个处理映射成受c t 控制的一个模块。 对于分割后得到的系统结构,总可以根据模块独立原理进行精化。为了产生 合理的分解,得到尽可能高的内聚、尽可能松散的耦合,最重要的是,为了得到 一个易于实现,易于测试和易于维护的软件结构,应该对分割得到的模块进行再 分解或者合并,从而达到一个最优解。 2 2 4 3 事务分析 虽然在任何情况下都可以使用变换分析方法设计系统结构,但是在数据流具有 明显的事务特点时,也就是有个明显的“发射中l l , ”( 事务中心) 时,还是以采 用事务方法为宜。 事务分析的设计方法和变换分析的设计方法大部分相同或者相似,主要差别仅 在于数据流图到系统结构的映射方法不同。 由事务流映射成的系统结构包括一个接收分支和一个发送分支。映射出接收 分支结构的方法和变换分析映射出输入结构的方法很相像,即从事务中心的边界 丌始,把沿着接收流通路的处理映射成模块。发送分支的结构包含一个调度模块, 它控制下层的所有活动模块,然后把数据流图中的每个活动流通路映别成与它的 流特征对应的结构。 对于一个大系统,常常把变换分析和事务分析应用到同一个数据流图的不同部 分,由此得到的子结构形成“构建”,可以利用它们构造完整的系统结构。 一般说来,如果数据流图不具有显著的事务特点,最好使用变换分析;反之, 如果具有明显的事务中心,则应采用事务分析技术。但是,机械的遵循变换分析 或事务分析的映射规则,很有可能会得到一些不必要的控制模块,如果它们确实 用处不大,那么可以而且应该把它们合并。反之,如果一个控制模块功能过分复 杂,则应该分解两个或多个控制模块,或者增加中间层次的控制

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论