已阅读5页,还剩51页未读, 继续免费阅读
(计算机应用技术专业论文)uml在软件开发中的应用研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
哈尔滨i :利人学硕十学位论文 摘要 本文在深入研究面向对象技术( o b j e c t o r i e n t e dt e c h n jq u e ) 、统一建 模语毒( u n i f i e dm o d e l i n gl a n g u a g e ) 、较 孛豁系结构( s o f t w a r e a r c h i t e o t u r e ) 、设计模式( d e s i g np a t t e r n ) 、w e b 应用程序架构等蓖要理论 的基础上,稳出了一种w e b 应用稔序架构的u m l 建模方法。本文从分析软件 工程的基础理论以及鞍 牛开发中存在的鄹难入手,指出蘑向对象技术和建模 技术是解决软件系统及其开发过獠复杂性的有效方法。本文详细研究了面向 对象及统一建模语毒豹一螫基本壤念。9 年代磊裁以,綮,瑟两对象开发方法 逐渐与面向对象建模语言结合。统一建模语言是当前开发面向对象系统的首 逡建模语言,已经成为事实上抟工监标准。本文详纲分析和醋究了统一建模 语言及其扩展机制。在深入研究w e b 应用程序的特点、匦向对象分析和设计 方法以及统一建模谬占( u m l ) 的基础上将u m l 这种建模语言应用到w e b 应用程 序豹开发过蔽中,对w e b 应建程露进行分瓠、设毫卡、实现以及测斌。 荚键谲:w e b 应角程序;建模;统一建模语毒;面向对蒙 哈尔滨工程大学硕士学位论文 a b s t r a c t t h i sp a p e rp r e s e n t sam e t h o do f m o d e l i n gw e ba p p l i c a t i o nw i t hu m l ,a f t e r s t u d y i n g o f o b j e c t - o r i e n t e dt e c l m i q u e ( o o t ) , 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 ) ,s o f t w a r ea r c h i t e c t u r e ( s a ) ,d e s i g n p a t t e r na n dw e b a p p l i c m i o n a r c h i t e c t u r e t h e w e a k l y u n d e r s t a n d i n gt h e o r y o fs o f t w a r e e n g i n e e r i n gb e i n ga n a l y z e d ,t h ec o m p l e x i t yo f s o f t w a r es y s t e ma n d d e v e l o p m e n t o fs o f t w a r ea r ec o n c l u d e dt ob ec o n t r o l l e d b y t w o w a y s w h i c ha r e o b j e c t o r i e n t e dt e c h n i q u ea n dm o d e l i n gt e c h n i q u e t h e r ea r ee f f o r t sm a d et o c o a l e s c eo b j e c t o r i e n t e dm e t h o da n do b j e c t o r i e n t e dm o d e l i n gl a n g u a g e u m li s t h ep r e f e r r e dm o d e l i n gl a n g u a g ei nm o d e l i n go b j e c t - o r i e n t e ds y s t e m ,e s p e c i a l l yi n c o m m e r c em a r k e t w e b a r c h i t e c t u r e ,o b j e c t - o r i e n t e da n a l y s i sa n dd e s i g n m e t h o d ,u m la n di t se x t e n d i n gm e c h a n i s mh a v eb e e nd i s c u s s e di nd e t a i l t h i s p a p e rh a sm o d e l e d aw e b a p p l i c a t i o nw i t hu m l i nt h ep r o c e s so f a n a l y s i s ,d e s i g n , r e a 】i z a t j o ua n dt e s t k e yw o r d s :w e b a p p l i c a t i o n ;m o d e l i n g ;u m l ;o b j e c t o r i e n t e d 晗尔滨工程天学硬j 学位论文 。1w e b 应用程序 第l 章绪论 本文讨论的w e b 应用程序,是指以浏览器( b r o w s e r ) 作为用户界面的 w e b 戚用。近年来,随着i n t e r n e t 的迅猛发展,电子商务( e - c o m m e r c eo r e b u s i n e s s ) 静逐澎普及,矮w e b 虚弱程廖越来越成为众人疆嚣的焦点;阍 对也向w e b 应用獠序提出了委麓的要求:更短的开发周瀚和更可靠、健壮、 灵活并且具有良好伸缩性的体系结构。 通常,w e b 应用程序是三层的b r o w s e r s e r v e r 应用( 麓称为b s 应用) , 势为:演示蘑( p r e s e n t a t i o nl a y e r ) 、盈务绥( b u s i n e s sl a y e r ) 移数据层 ( d a t al a y e r ) 。本文关于w e b 应用建模方法的探讨也是基于这一前提的;本 文有时也用b s 应用作为w e b 应用程序的代名词。 1 2 软件系统及其开发方法 软件开发作为一门工程方法( 软件工程) 已经有4 ( ) 年的使用经验,然丽 宅遗没有达鬟工程鹣标准。较传开发还未攒脱手工艺兹秀发方式:人参与开 发过稷的各个方面,参与的深度与广度都远远超过其它工程,自动化程度相 当低。软件工程才发展了三四十年,处于探索阶段,软件工程的基础理论很 薄弱。 软件系统( 指大型系统) 的本质特点是复杂性。w 软俘的复杂往可能来自 它所反映的实际问题的复杂性,如它反映的自然规律、人炎社会的事物,都 具鸯一定的复杂j 琏;男一方露,复杂性也可能来自程序逻辑结构的复杂性, 这释笈杂往随着较释蕊模酾交大蕊缀莫逐速撼鬻翔。较舞玎发豹复杂瞧缀容 易超越人的能力极限。软件系统固有的复杂憾是造成软件丌发中预算超支、 工期聪误、质量下降的关键因素。 较停基毯理谂薄弱,是造残较传复杂往熬竣主要蒙透。我翻无法震数学精 1 哈尔滨t 程人学坝【学位论义 确描述软件系统内在的本质特征与规律。任何工程如果没有较明确的数学工 具指导,它是非常随意的。世界上的许多事物、现象与过程都是复杂的,比 如天体运动、电子运动。然而运动过程的复杂性与软件系统的复杂性相比, 它们之间存在较大的差别。天体运动可用牛顿运动规律描述:电子运动可用 量子力学方程描述。世界上的这些事物本身是十分复杂的,但其内部在本质 上却受到简单与严格的自然科学基本定理或规律的约束,人们可以根据这些 规律去认识、分析与控制它们。软件系统从本质上看是由许多相互联系的概 念组成的结构,建造软件系统最困难的是描述、设计、实现与测试这些概念 结构。 缺乏理论基础造成了软件系统下面一些特点。 1 ) 软件系统比其它同等规模的人造系统复杂。 软件系统没有任何两个部分是相同的,其中可能相同的部分都被转化为 同一个过程、函数或类。在这种意义上,软件系统与计算机硬件、建筑物、 汽车等系统相差很大,这些系统内有许多重复的元素反复出现。因此软件系 统规模的增加不只是相同元素在更大数目上的重复,而主要是不同类型新元 素在系统中的增多。 2 ) 软件系统所包含元素之间的交互关系一般随着元素的增加表现出非 线性的递增趋势。 比如,一个包含1 3 个对象的软件系统,在极端情况下如果每个对象都与 其它对象存在一种交互关系,则这种交互关系的数目共有r i ( n 一1 ) 个。当系统 内对象的数目递增时,对象之涮的相互关系数目将按照 2 的比例快速增长。 3 ) 计算机系统是数字系统,不是连续系统。 微小的输入变化可能引起根本性的输出变化。比如,在本该输入整数的 地方,由于疏忽输入了一个字符串,或者对某个空指针进行了操作,系统有 可能出现不可预测的行为。这种情况对软件系统来说是经常发生的。 4 ) 软件系统有时不得不适应许多人为因素或外部系统的特性限制,这 些限制经常缺乏足够的科学依据,其中大部分涉及人们现有的工作习惯、制 度以及许多已有系统的接口。 用户的需求是软件的驱动力,用户总是尝试用更合理与更方便的方式使 用软件,总是不断地向软件系统提出新的要求。软件系统面临不断变化的压 , 喻尔溟l 程人学坝i j 学位论文 力,这种持续的变化又增加了软件系统的复杂性。软件系统实际上总是处于 各种应用环境、用户功能、操作习惯与制度、硬件设备、软件平台等多种因 素的限制和变化的包围之中。 5 ) 软件系统是一种难以进行可视表达的对象。 在其它大量的工程中,几何图起了重要的作用。几何抽象是一种有效的 思维工具,建筑平面图可以使建筑师与客户有效地设计与评估整个建筑,其 中的问题与疏忽将很容易被发现。软件系统本质上并不属于空问中的实体, 很难对其进行有效的几何表达。当我们试图用图形表达整个软件系统的结构 时,它将包括很多相互之l l 白j 存在关联的有向图。这些图有些代表控制流、数 据流,有些表示依赖关系、时序关系、甚至名字空问等。这些图还是层次化 的,所以软件的图形表示非常困难。现有的图形表达能力还比较有限,很难 从总体上准确反映软件的核心特征。没有有效的可视化表达方法,阻碍了软 件丌发人员进行有效的系统分析与设计,限制了丌发人员以及用户之间的通 信与交流。 软件系统的特点决定软件系统丌发过程的特点。与软件系统一样,软件 系统丌发过程也没有翠实的数学理论支持,过程是复杂的,难以控制的。软 件系统丌发过程有下面这些特点: 1 ) 软件丌发中人具有决定性作用 人参与开发过程的各个方面,参与的深度与广度都远远超过其它工程。 最新的观点认为,软件是写给人的,而不是写给计算机的。有过编写大型系 统( 如用于生产控制、复杂科学计算、大型商务支持、行政事务管理、办公 自动化等) 经验的人,都知道读程序的时间,远远超过写程序的时间。丌发 软件并不在于人多而在于人的能力,过多的人反而会造成通信困难。软件丌 发还要平衡个人创造性与集体约束力。人员管理过于严格,则要限制创造性 的发挥。软件的创造性是软件系统的生命,成功的软件系统都来源于优秀软 件丌发人员创造性的设计。充分发挥所有丌发人员的创造性,是软件开发项 目成败的关键。但是如果对这种创造性失去控制,任凭所有软件丌发人员的 任意发挥自己的创造性,没有人遵守统一。的规范,不同人员的子系统将无法 在一个统一的机制下协同工作。虽然每个子系统都工作得很好,但却很难将 它们有效地组成一个完整的系统。 3 豫搿撰r 礁火掌碳| :学位论义 2 ) 软件需求是复杂的 软件本身要解决的问题的复杂性将直接带入软件的需求中,并且与特定 的应用领域有关( 如舰船的火控系统较l 牛) 。这些软 牛系统所要完戏的功能本 身藏缀复杂,毽还育诲多稳应酶 功麓需求需要满是,如性麓、可靠佳、容 错性、价格、精度、灵活性、可移植性、安全性、可扩展性等。这些需求组 合在一起,使得软件需绻非常复杂。 较传豢求是不穗壤敬 需求分析不象架桥能得到精确的图纸,在很多情况下,软件系统开发人 员与用户之间对软件系统的需求经常难于达成一致。用户通常难于用软件人 员所能理麟豹方式,准确地表达自己的需求。两虽在多数情况下,用户本身 对较俘系统黪需求 亟不淹楚,毪们头麓中存在模糊敬概念。 鼋瓣。软俘开笈 人员很难理解用户应用领域的许多专业概念。出现这些问题既不是用户,也 不是软件开发人员的原因。他们处在器自的领域,缺乏对方领域的专业知识, 这样造藏对溺一润题产生甭霜戆看法。男羚,开发人员之阉遣存在对震求豹 不同理解。 4 ) 需求是不断变化的 软停开发过程中,鲻户对软 牛系绞戆蒿求是不叛变纯豹,这也诲是人类 的天性。一方面,出于大型软件静开发时闫长,蠢可能持续几年,整个系统 在这期间可能不断要求采用新的与能力更强的设备与计算平台;另一方面, 随着软件系统开发的深入,用户对软件系统的理解巡步增加,对自己过去比 较模鞭豹爨袋逐渗谈谖渗蹩,可麓会螫竣当嚣瓣嚣求或疆毒瑟靛蔫求。蕊之, 用户的改变、问题的改变、技术基础的改变、市场的改变都能引起需求的改 变。 5 ) 软譬玎发难以营瑷 当前,软件系统的蛾模越来越大,大型软件系统歼发都采用团体方式。 更多的丌技人员意味着更复杂的相互通信,更加困难的叻、作,这将造成软件 系统很难像持完整性和致性。众多开发人员的水平、素质与熊力难免会有 差嗣,这穗给开发过程管理逢或霞难。许多静较舞公司,冀开发过程是嚣燕 的,难干预测与控制,并缺乏应有的可重复性。遄成软件丌发过程难于控制 的另一个问题是:目前软件开发过程缺乏系统、完艇与准确的艘量手段。比 4 峨乐撰丁投凡掌顿l 。学位论文 如,现在还缺乏客观的标准判定软件系统a 的质爨比系统8 的离,同时也很 难说明丌教人员之削效率的高低。软件度量学近年盟有发展,但目前离实际 盛用尚存较大距离。 6 ) 较馋设计与实瑗菲鬻复杂 软件的丌发有很大的随意性,没有任何数学或物理的规律能够约束和指 导开发人员对软件系统的设计。软件开发人员经常根掘实际阅越的需要,自 己怒定应翔予本系统麴软锌设计与实凌琢霹与甄蔫。软嚣开发这耱巨大豹窭 由性,使软件开发人员所面临的复杂性远远超过了建筑设计、帆械设计或电 路设计等丽向客观实体的设计领域。软件丌发人员既要为自己建立设计与实 现的准则,又要剥用这些准则构造符合要求的软件。软l 粤系统静没诗与实现, 经常需要觚最底层鹃络聿毒开始,一般只有程序设计语言葙编译环境。软 串开 发人员既鞭考虑抽象层次很高的总体功能与设计,同时又不得不关心如何实 现与能否实现这种设计的各种具体细节。 自予软件及英开发过程静上述姆点,较传系缀茏萁是大銎软 孛系统茨故 障几乎是不可避免的。软件开发是人力资源密集的工作,并且只有高素质的 人才才能胜任。在当今简技术人力资源十分昂贵的情况下,软件系统的丌发 残事变褥越寒越毫。 软 牛的瑾论基础薄弱,应该采取什么样的方式寒控制它? 练合磺究复杂 系统的以上特点,解决问题的有效方法有两个:酾向对象方法及建模。 3 嚣闷对象技零 面向列象不仅仅是一种新的程序设计技术,而且是一种全新的设计和构 造软件的愿维方法。它使计算机解决嘲题的方式更加类似于人类麴思维方式, 更s 蛮绩静籀述客璃嫠癸。献程序设计静蕉度看,嚣商磅象代表了一稃通过 模仿人类建立现实世界模型的方法( 包括概括、分类、抽象、归纳等) 进行 软件开发的恩想体系。面向对象的计辫机语言应具有四种特殊的对象化属性; 静季壹象、封装、继承氍多惑。“4 1 4 建模与u m l 模型是对客观世界的一种抽象,一种简化:其目的在于抓住本质,删除 无关的枝节。就软件丌发而占,模型可以使人们从全局上把握系统的全貌及 其相关部件之间的关系。模型是软件的设计蓝图,有助于软件系统的设计及 其修改。 u m l ( u n i f i e dm o d e l i n gl a n g u a g e ) 是面向对象的标准建模语言,是面向 对象技术领域的重要成果。标准建模语言u m l 融合了b e e c h 、o m t ( o b1 e c t m o d e l i n gt e c h n i q u e ) 和o o s e ( o b j e c t o r i e n t e ds o f t w a r ee n g i n e e r i n g ) 等 方法中的基本概念,集众家之长,并对现有的应用范围进行扩展。 1 5 课题的内容、目的及意义 本课题是来源于为西南投行实现的一个周报系统,该系统为b s 结构的 应用程序。在项目的整个过程中用u m l ( 统一建模语言) 进行分析、设计及测 试等工作。 本文按照建模方法的四个组成部分对w e b 应用演示层和业务逻辑层的建 模方法进行了较为系统的研究。对于u m l 这种建模语言进行了深入研究,并 将其使用到实际项目开发中。实践证明,通过用u m l 对软件进行建模,大大 提高了项目的质量,缩短了项目开发周期。u m l 是软件工程领域非常重要的 组成部分。本课题侧重于使用u m l 对b s 结构的应用系统建模,对于演示层 建模也进行了一定的探讨。 第2 章面向对象的建模概念 2 1 面向对象的基本概念 思维方式决定解决问题的方式,传统软件丌发采用自顶向下的思想指导 程序设计,即将目标划分为若干子目标,子目标再进一步划分下去,直到目 标能被编程实现为止。面向对象技术给软件设计领域带来极大的变化,它利 用软件对象来进行程序开发,所谓对象是包含数据和对数据操作的代码实体, 或者说是在传统的数据结构中加入一些被称为成员函数的过程,因而赋予对 象以动作。”而在程序设计中,对象具有与现实世界的某种对应关系,我们正 是利用这种关系对问题进行分解。 从程序语言角度来看,在一个对象中代码和( 或) 数据可以是这个对象私 有的,不能被对象外的部分直接访问。因而对象提供了一种高级保护以防止 程序被无关部分错误修改或错误地使用了对象的私有部分。当从对象外部试 图直接对受保护的内部数据进行修改时,将被程序拒绝,只有通过对象所提 供的对外服务函数爿能够对其内部数据进行必要的加工,从而保证了数据加 工的合法性。从这一意义上讲,把这种代码和数据的联系称为“封装”。换句 话况,封装是将对象封闭保护起来,是将内部细节隐蔽起来的能力。- 在强调软件组件的重用方面,面向对象的技术与标准的工业设计规律有 更多相似之处。在面向对象语言中,类是创建对象的关键,事实上类描述了 一族对象的公共特征和操作,而对象则是具体实现的类。例如小汽车是一个 基本概念,它具有颜色、几何尺寸、动力特性的特征。那我们可以定义一个 称为“c a r ”的类,具有颜色、几何尺寸、动力特征等参数,以及描述汽车在 外界条件下运动状态的方法。一辆具体的小汽车则是一个对象,在这个对象 中有关参数均有具体数值,并可以通过输入说明变量( 外界条件参数) 获取 该车具体运动状念。 c 十+ 和s m a l l t a l k 是广泛被接受的面向对象的程序设计语言。j a v a 也是 豫鬈渍王糕入学麓l 。学懂论文 一种面向对象的程序设计语言,而且是纯面向对象的。 面向对象技术的三要素:封装、继承和多态。“ 露囱对象技术给软 孛发展带来如下盏处: 可踅用性。觚开始对象瓣产生就是为了燕复秘焉,完成的对象将 在今后的程序丌发中被部分成全部地重复利用。 可靠性。出于面向对象的应用程序包含了通过测试的标准部分,因 戴瑟趣可靠。国予丈量饩弼来潺予藏熬哥露静类痒,蠢嚣瑟嚣发程 序的新增代码明显减少,这鼹程序可靠饿提高的一个煎簧原因。 谶续性。具有嘲向对象特点的c 十十与c 语占有很大的兼容性,c 程序 爨哥以比较容易地过渡到c 牛+ 语言开发工 窜。”, 丽向对象语言具有如下基本特征: 访问控制。对躲必须能够对其内部的某必元素进行保护,使它们只 能被内部使用,而不受外部干扰。反过来,对象又必须间其它外部 元豢遴行联系,以便对对象_ l 莛行揉佟。 继承性。通过对已有对象进行增加或部分修改的方法建立新的对象, 对已有对象可以增加数据和过程,也可以对其中某些过程进行从新 定义。最翅静类被稼为基爨,飙基类扩鼷蹬寒豹类称为派生类。麸 已有类派生出新类是为了获得更强的针对憔。 多态性。f 像生态系统一样,继承构成了类族。通常这些类族中的 类具有同名的成员函数,例如o d 分匆类族,具有一个通用基类+ 两 个派生类:增长系数0 d 分靠类和重力模麓o o 分奄类,这凡个类都 有同名的g x e c 成员函数。多态性意味着存在多种形式,能使人们在 稷序中激活任何属于o d 分布类族的类的g x e c 成员函数,甚至在编 译露可以不宓爨俸翔道对象怒i 霉子增长系数粪还是黧力模型 分布类。 面向对象体系结构技术有助于创建行业性软件丌发机构。例如变通规划 尽管具有麓秀0 ,但各城市所需要的软 孛基本上是捆嗣的,这就为软件玎发机 构提供了一茅牵焦l 作西自交通蕊捌的软侔框架( 注意这鼙谤静是软 牛框絮露不 是通用性软件) 的机会。这种框架一旦丌发成功,就可以多次反艇利用。 面向对蒙技术特别适合于将某一领域内的软件资源整理成体系化,因为 8 ;鍪垒i 耋鹜基i ;茎篓;i ;耋;鳖鎏塞; 它有很好的表现能力,能够容易抓住特定功能领域的本质。m 2 2 建楼 2 2 1 建模的重要憔 如果想搭一个狗窝,罄好木料、钉子和一些基本工具,就可以玎始工作。 魏粟要稳建一座高罄办公大覆,蓑还蔗先套驽本糕、钉子蟊一些基本工具裁 丌始工作,那失败的代价太高了。因此必须要做大量的计划。在i n t e r n e t 时代,对软件丌发的要求正在同益增加。如果真正想建造。个相当于大厦或 房子类麴软 孛系统,阉鼷可不仅仅是黉写缦多软馋。关键是要缡出正确黪软 件,并考虑怎样少写软件。一个成功的软件组织蠢很多成功的因素,其中共 同的点就是对建模的采用。w 建模楚开发优秀软件酌所有活动中的核心部凳,墓耳的是把所要设计的 结构和系统的行为海运起来,荠黯系统静体系结梅遗行可褫亿和控箭。建摸 是为了更好地理解正在构造的系统,并经常提供简化和复用的机会。同时建 模可以管理风险。 建模瓣一令基本瑗国是为了能够瑟磐数理磐爰在秀发嚣系绞。嚣为设诗 人员和丌发人员不雏完整得理解一个复杂的系统,所以要对它建横。模型帮 助设计人员按照实际情况或按照需臻的样式对系统进行可视化:允许设计人 员详细说明系绞的结构躐行为:它还绘出了一个搀母擒j f 孛系统的摸扳;丽且, 模型澍设计人员做出的决策进彳亍文稻化。”t 面向对象的分析与设计( o o a & d ) 方法的发展在8 0 年代末至9 0 年代中出现 了一个高潮,u m l 是这个高潮的产物。它不仅统一了b o o c h 、r u m b a u g h 和 j a c o b s o n 懿表示方法,露墓对萁俸了遴一步豹发袋,著最终统一为大众掰接 受的标准缱模语言。u m l 的目标是以面向对象图的方式来描述任何类型的系 统,具有很宽的应用领域,其中最常用的是建立软件系统的模型。m u m l 是一 个通用熬栎准建援语言,霹以对任何蹙有静念结掬秘动态 亍为熬系统进行建 模。此外,u m l 适餍于系统开发过程中从需求蕊格擒述到系统完成后测试的不 同阶段。 f l ;7 尔滨t 程人学坝l 岸位论文 2 2 2 建模原理 各种工程学科都有其丰富的建模使用历史。这些经验形成了建模的四项 基本原理。m 。分别叙述如下: 1 )选择要创建什么模型对如何动手解决问题和如何形成解决方案有着 意义深远的影响。 换句话说,就是要好好的选择模型,f 确的模型将清楚的阐明难以对付 的丌发问题,提供不能轻易的从别处获得的洞察力;错误的模型将误导你, 使你把精力花在不相关的问题上。 2 )每一种模型都可以在不同的精度级别上表示。 对于软件模型,有时一个快速简洁且是可执行的用户接口模型f 是你所 需要的,而有时你必须耐着性子对付比特。最好的模型应该是这样的:它可 以让你根据观察的角色以及观察的原因选择它的详细程度。分析人员或最终 用户主要考虑“做什么”的问题;丌发人员主要考虑“怎样做”的问题。这 两类人员都要在不同的时i l 白j 以不同的详细程度对系统进行可视化。 3 )最好的模型是与现实相联系的。 如果一所建筑的物理模型不能以与真实的建筑相同的方式做出反映,则 它的价值是很有限的。一架飞机的数学模型,如果只是假定了理想条件和完 美制造,可能会掩盖一些潜在的,致命的现实特征。最好是有一个能够清晰 的联系实际的模型。而当联系很薄弱时能够精确的知道这些模型怎样与现实 相脱离。所有的模型都对现实进行了简化,但有一点要记住,不能简化掉任 何重要的细节。 对软件领域结构化分析的唯一致命弱点是在分析模型和系统设计模型之 间没有基本的联系。随着时间的推移,这个不可填充的裂缝会使系统构思阶 段和实施阶段出现不一致。在面向对象的系统中,可以把各个几乎独立的系 统视图连结成一个完整的语义整体。 4 )单个模型是不充分的。对每个重要的系统最好用一组几乎独立的模 型去处理。 如果建造一所建筑物,会发现没有任何一套单项设计图能够描述该建筑 的所有细节,至少需要基础计划、电梯计划、电气计划、供热计划和水管装 n 行尔滨t 程人学倾i 。学位论义 置计划。 在这罩的重要短语是“几乎独立的”。“在这个语境中,它意味着各种模 型能够被分别进行研究和构造,但它们仍然是相互联系的。如同搞建筑一样, 你能够单独的研究电气计划,但你也能够看到它与之对照的基础计划,直至 它与水管装置计划中的管子排布的相互影响。 面向对象的软件系统也是如此,为了理解系统的体系结构,你需要几个 互补和连锁的视图:用例视图( 揭示系统的需求) 、设计视图( 捕获问题空间和 解空间里的词汇) 、进程视图( 对系统的进程和线程的分布建模) 、实现视图( 描 述系统的物理实现) 和实施视图( 着重于系统的工程方面的组织) 。”每一种视 图都可能有结构方面和行为方面。这些视图一起从整体上描绘了软件蓝图。 根据系统的性质,一些模型可能比另一些模型要重要。例如,对于数据 密集型系统,表达静念设计视图的模型将占主导地位。对于图形用户接口密 集型系统,静态和动态用例视图就显得相当重要。在实时系统中,动态进程 视图尤为重要。在分布式系统中,例如w e b 密集型的应用,实现模型和实时 模型是最重要的。 2 2 3 面向对象的建模 现代的软件开发采用面向对象的角度进行建模,所有软件系统都用对象 或类作为其主要的构造块。简单地讲,通常要从问题空间或解空涮的词汇中 找出对象;类是对具有共同性质的一组对象的描述。每一个对象都有标识、 状态和行为。m - 例如,可考虑把一个简单的记账系统的体系结构分成三层:用户接口层、 中间件层和数据库层。在用户层,你将找出具体的对象,如按钮、菜单和对 话框。在数据库层,你将找出具体的对象,如从问题域中找出描述实体的表, 它包含顾客、产品和订单项。在中间件层,你将找出诸如交易、商业规则等 对象,以及更高层次上的问题实体,如顾客、产品和订单。 可以肯定地说,面向对象方法是软件开发方法的主流部分,其原因很简 单,因为事实已经证明,它适合于在各种问题域中建造各种规模程度和复杂 度的系统。此外,当前的大多数程序语言、操作系统和工具在一定的方式上 都是面向对象的,并给出更多按对象来观察世界的理由,面向对象的开发为 略尔淀工糕人擎馥 :学位论义 使用构 牛技术( 如j a v ab e a n s 或c o m + ) 装配系统掇供了概念基础。 选择拔面向对象的方式观察世界,会产生一系列的问题:什么是优秀的 面向对象黔体系结构? 项目会创造如什么样的制晶? 谁创造它们? 怎样度量 它们? 对面向对象系统进行可视化、详述、构造和文秽化正是统一建模语言( u m l ) 的目的。 2 。3 面两对象的开发模型 面向对象的丌发模型突破了传统的瀑布模型,将开发分为网向对象分析 o o a ) ,瑟| 萼翘象谩司+ ( o o d ) ,帮嚣囱对象编程( o o p ) 三令夔段。分耩玲段产,圭 整个问题警问的抽象撼述,在此基础。e ,进一步归纳出适用于溺向对象编程 语言的类和类结构,最后形成代码。由于面向对象的特点,采用这种开发模 型旋有效数将分援设计的文本或图表代码纯,不凝适应曩户需求的变动。 2 3 1 面向对象分丰斤 面向对象分析包括滞求分析和需求模型化两个部分。它的主要作用是明 羲矮户熬黉求,著瘸瓠黩化魏垂惫对象模型紊翘蕊遗表达这一鬻求,最蜃形 成面向对象的分析模型。它是系统设计的依据。面向对象分析的主要内容是: 识别出问题域中的对象,并分析它们之间的相互关系,最终建立起问题域的 对象模型、动念模型翻功能模型。其中,对象模型是最基本、缀藿要、最核 心的。 用面向对象方法分析问题域,建立基于对象、消息的业务横型,形成对 客观世界和业务本身的诉确认识。生成业务对象的动、静态模型和抽象类。 0 黻豹基本步骤: 确定问题域 识别对象和类 识别对象之阁的美系 定义属往 定义服务 喻尔滨工程人学颂j 学位论文 面向对象分析包括:类结构图、消息传递图、对象状态图、包图。 面向对象分析方法使分析者能够靠说明类、对象、属性和操作这些主要 模型成分来为单个问题建模,而面向对象设计则生成对真实世界的问题域的 表示并将之映射到解域,也即软件。与其它设计方法不同的是,面向对象设 计所进行的是一种将数据对象( 数掘项) 和处理操作联结起来的设计,它把信 息和处理模块化,而不仅仅把处理模块化。 2 3 2 面向对象设计 面向对象设计的主要任务是把分析阶段得到的问题域需求转变成符合要 求的、抽象的系统实现方案。 面向对象设计分为两个阶段: 系统设计:确定实现系统的策略和目标系统的高层结构 对象设计:确定解空间中的类、关联、接口形式及实现服务的算法 面向对象设计方法有如下典型步骤: 1 ) 定义问题。 2 ) 为真实世界问题域的软件实现生成非形式化策略( 过程叙述) 。 3 ) 按下列步骤将策略形式化: a ) 指出对象及其属性。 b ) 指出可能是用于对象的操作。 1 2 ) 说明对象及操作间的关系,建立接口。 d ) 确定将为对象提供实现描述的详细设计问题。 4 ) 重复步骤2 ) 、3 ) 。 以上四个步骤都是在软件需求分析过程中实现的,将这些活动扩展到设 计阶段,应增加以下步骤: 5 ) 细化面向对象分析阶段所作的工作,找出子类,消息特性和其它详尽 的细节。 6 ) 表示与每操作关联的过程细节。 2 3 3 面向对象编程 选择一种支持面向对象的程序设计语言实现面向对象设计( o o d ) 的设计 喻力;滨t 程人学顾卜学位论文 结果。选择语言应考虑的因素: 将来能否占主导地位 可重用性 类库 丌发环境 2 4 利用面向对象的建模概念指导w e b 应用建模 在面向对象的建模概念中,类和对象是其中最核心的概念。u m l 的发起 者之一g r a d yb o o t h 认为:软件丌发是一个螺旋上升的过程。m 在这个螺旋上 升的每个周期中,有以下几个步骤: 1 ) 在一定抽象程度上确定类和对象; 2 ) 确定这些类和对象的语义; 3 ) 确定这些类和对象之间的关系,并确定它们怎样进行交互; 4 ) 实现这些类和对象; 5 ) 蜕明这些类的接口和实现。 对于w e b 应用建模,特别是w e b 应用演示层建模,关于类的最需要解决 的三个问题是: 2 4 1 如何确定类 可以通过分析用例来帮助确定类。 特别地,对于确定实体类,责任驱动的设计方法给出了较好的解决途径。 责任驱动方法认为对象间的交互关系可看成互为客户服务关系。w 责任驱动 方法的设计目标是改进封装性:通过建立c s 模型来完成改进封装性的目标。 c s 模型用于描述分别称作客户和服务器的两个对象之间的交互。c s 模型的 好处在于其重点放在服务器为客户做什么,而不是如何做,因而服务器的实 现得到很好的封装。另外,由于c s 模型的合同中责任明确,因此能很好的 提高系统的可靠性。 类的确定过程是探索性( e x p l o r a t i o d ) 的。在初始探索阶段,发现对应用 进行模型化所需要的类;决定系统必须有什么样的行为( 责任) ,将这些责任 n 丹尔演t 程人学 i ! j i 。学位论义 分配给特定的类;决定为了完成这些责任对象类之间应进行什么样的合作。 旦建立初始的模型,就要考虑如何构造合适的层次结构以表示抽象类和简 化对象问的通讯。主要的活动有:将责任分解到继承层次结构中去,使得类 的设计具有最大的可重用性;详细的对象白j 的合作进行模型化,以更好的封 装对象子系统;确定协议并且完成一个关于类、类的子系统和客户一服务器合 同的规范说明。 24 2 如何处理界面 用例驱动的设计方法提出了边界类、实体类和控制类的概念。把边界类、 实体类和控制类与w e b 应用联系在一起,就不难发现它们与演示层、数据层 和业务层有一定的映射关系。 边界类对象指直接依赖于系统界面的对象,用以把应用的功能与其对于 执行者的表示分离。边界类对象负责系统的信息交换,包括系统同用户、顾 客、硬件以及其它软件的交流。 实体类对象封装应用系统的信息与操作。通常是指使用例存在的些持 久的( p e r s i s t e n t ) 对象,也是问题分析时找到的正常类型的对象。由此确 定每个用例中每个对象的责任与作用。 控制类对象的作用是把参与用例的其它对象联系起来,即控制类对象就 是那些能连接不同的事件且在不同的对象之问进行通信的对象。 边界类的主要任务是:将执行者对系统的行为翻译为系统内部事件,并 且当这些系统内部事件执行后,将执行者感兴趣的信息反馈给执行者。将用 例中的某一行为映射到特定的边界类对象的条件是:对有可能改变边界类对 象有关的任何功能的行为,都要纳入边界类对象中。 2 4 3 如何细化类 从分析、设计到编程,类被逐步细化。边界类、实体类和控制类是通过 对用例的分析而得到的,是分析模型中的类,我们可以称之为分析类。分析 类是与具体实现无关的。与之对应的是设计模型中的类,我们可以称之为设 计类。而用具体的编程语言的源代码实现的类,我们可以称之为实现类。 设计类是与具体的实现语言。相关的,是具有语言特定细节的类。可以由 哈尔滨t 程人学倾小学位论文 分析类导出设计类,但考虑到实现语言的特定细节,分析类和设计类不一定 是一对应的( 即有可能用多个没计类实现一个分析类) 。 由于设计类已经考虑到具体实现语言的特定细节,所以设计类和实现类 往往是一一对应的。利用代码生成工具,可以把设计类转换成实现类的类框 架结构。利用逆向转出工程代码工具,可以把实现类转出为设计类。这两个 转换工具对w e b 应用的迭代丌发的过程很有帮助。 2 5 本章小结 本章利用对象建模概念,分析了w e b 应用建模开发中最需要解决的三个 问题。面向对象的建模方法是通过用例来确定用户的需求,而面向对象的建 模方法的核心建模概念是类。从用户的需求过渡到类,是通过分析用例实现 的。对于演示层,可以用边界类来进行建模。建模的过程是一个逐步细化类 的过程。所以,w e b 应用演示层的建模,是一个从分析用例得到分析类( 中 的边界类) 、从分析类到设计类、从设计类到实现类的过程。 哈尔滨丁程人学坝i j 学位论文 第3 章u m l 及其对w e b 应用演示层的扩展 3 1 u m l 简介 统一建模语言( u m l ) 是一个通用的可视化建模语言,用于对软件进行描 述、可视化处理、构造和建立软件系统制品的文档。它记录了对必须构造的 系统的决定和理解,可用于对系统的理解、设计、浏览、配置、维护和信息 控制。u m l 适用于各种软件开发方法、软件生命周期的各个阶段、各种应用 领域以及各种丌发工具,u m l 是一种总结了以往建模技术的经验并吸收当今 优秀成果的标准建模方法。u m l 包括概念的语义,表示法和说明,提供了静 态、动态、系统环境及组织结构的模型。它可被交互的可视化建模工具所支 持,这些工具提供了代码生成器和报表生成器。u m l 标准并没有定义一种标 准的丌发过程,但它适用于迭代式的开发过程。它是为支持大部分现存的面 向对象开发过程而设计的。 u m l 描述了一个系统的静念结构和动态行为。u m l 将系统描述为一些离散 的相互作用的对象并最终为外部用户提供一定的功能的模型结构。静态结构 定义了系统中的重要对象的属性和操作以及这些对象之间的相互关系。动态 行为定义了对象的时间特性和对象为完成目标而相互进行通信的机制。从不 同但相互联系的角度对系统建立的模型可用于不同的目的。 u m l 还包括可将模型分解成包的结构组件,以便于软件小组将大的系统 分解成易于处理的块结构,并理解和控制各个包之间的依赖关系,在复杂的 开发环境中管理模型单元。它还包括用于显示系统实现和组织运行的组件。 u m l 不是一门程序设计语言。1 但可以使用代码生成器工具将u m l 模型转 换为多种程序设计语言代码,或使用反向生成器工具将程序源代码转换为 u m l 。u m l 不是一种可用于定理证明的高度形式化的语言,这样的语言。有很多 种,但它们通用性较差,不易理解和使用。u m l 是一种通用建模语言。w 对于 一些专门领域,例如用户图形界面( g u i ) 设计、超大规模集成电路( v l s j ) 嗡筇糕r 程夫掌硬 掌位论 设计、基于规则的人工智能领域,使用专门的语言和工具可能会更适合些。 u m l 楚一种离散的建模语言,不适合对诸如工程和物理学领域中的连续系统 建摸。它是一令综合酶遥用建摸浯言,适合对渚魏国计雾掇赣件、固俘簸数 字逻辑构成的离散系统建模。 u m l 是在多种面向对象建模方法的基础上发展起来的建模语言,主要用 予软传密集型系绞戆建模。窀黥演曩二,可以羧其性矮楚分为以f j l 令除羧: 最初的阶段是专家的联台行动,由三位o 。( 面向对象) 方法学家b o o t h , r u m b a u g h 和j a c o b s o n 将他们各自的方法结合在一起,形成u m l o 9 。第二阶 段是公司的联合镗渤,由十几家公司组成的“u m l 饮伴缝织”将各自的意见 加入u m l ,形成u m l l 0 和1 1 ,并作为淘o m g 审请成为建旗语言藏范静溅案。 第三阶段是在o m g 控制下的修订与改进,o m g 于1 9 9 7 年1 1 月征式采纳u m l i 1 作为建模语言规范,然后成立任务组进行不断的修订,并产生了u m l1 2 、 1 3 耧1 4 驻本,簇中u m l l 。3 怒鞍为重要静缪订舨。n m 3 2u m l 概念域 t n t ,的穰念黟模型可以分残以下凡令糍念域: 静态结构 任何一个精确的模型必须首先定义所涉及的范围,即确定有关应用、内 部特性及冀耀互关系豹关键概念。u m l 静静念缝馋魏为骜态凝匿。静态壤强 嗣类构造模型来表达应用,每个类由一组包含信息和实飘行为的离散对象组 成。对象包含的信息被作为属性,它们执行的行为被作为操作。多个类通过 泛化处理可以具有一些共同的结构。予类在继承它们共同的父类的结构和行 为豹嫠磁土螬j j 鬟了新的结褐衣行为。对象与英它对象之闻甑具有运芎亍辩闰连 接,这种对象与对象之f 刚的关系被称为类问的关联。一些元素通过依赖关系 组织在一起,这些依赖关系包括在抽象级上避行模型转换、模板参数的捆绑、 授予谗可以及逶过一释元素篌蠲另一耱元素警。另一类关系氢摄嗣铡秘激疆 流的合并。静态视图主要使用类图。“静态视图可用于生成程序中用到的大多 数数攒结构声明。在u m l 视图中还要用到其它类型的元素,比如接口、数据 类型、蹋铡和信号簿,这些元索统称为类元,它们的行为缀像在每糖类元上 1 8 碲矗;灏,l 。程入学斌i j 学位论义 具有一定限制的类。 动态行为 蠢嚣秘方式对考亍为建搂。一季孛楚投摇个对象与乡 赛发生关系浆生命历 史:另一种是一系列相关对象之问当它们相互作用实现行为时的通信方式。 孤立对象的视图魁状态机当对象基于当前状态对事件产生反应,执行作 为反应静一部分懿动作,并姨琴孛状惫转软筏男一耱羧态瓣黪援强。状态爨 模型嗣状态图来描述。 相互作用对象的系统视图魁一种忉、作,一种与语境有关的对象视图以及 它们桷互之闻的链,通过数据键对象阕存在麓消息流。视图埯数据结构、控 制流帮数据流在个视图中统一超来。协 譬耱互操作雳顺序闺帮协 乍鬻束箍 述。对所有行为视嗣超指导作用的是一组用例,每一个用例描述了一个用t p 0 参与港或系统外部用户可见的一个功能。 实褒擒逡 u m l 模型既可用于逻辑分析又可用于物理实现。某些组件代表了实现。 构件怒系统中物理上的可替换的部分,它按照一组接e l 来设计并实现。它可 以方馁遗被一个具有同样趣格说明蛉构释替换。节点是运行时阕计算资源, 资源愆义了一个位鬻。它包括擒件帮对象。部署闰描述了在一个实际运行的 系统中节点上的资源配置和构件的排列以及构件包括的对象,并包括节点州 内容的可能迁移。 模壅缝缀 计算机能够处理大型的单调的模型,但人力不行。对于一个大型系统, 建模信息必须被划分成连贯的部分,以便工作小组能够同时工作在不同部分 上。郄镬是一令小系绫,太的瑷鼹魅力也要求将整个搂型戆内容组织戏一个 个适当大小的包。镪是u m l 模型通用的层次缎织单元,它们可以用于存储、 访问控制、配置管理以及构造包含可重用的模型单元库。包之洲i q 的依赖关系 是对包的组成部分之间的依赖关系的归绒。系统整个构桨西】以在包之阍施加 裱赖关系。困蔬,毽翡内容必须符合包的簌羧关系帮有关麴梅粱要求。 扩展机制 u m l 具有一定的扩展能力,能够满足大多数对u m l 扩充的需求而不改变 语毒瓣纂程l 部分。叛癸是秘裁虢模型元素,与褒煮兹模型元素吴有翱翔豹 1 q 喻匀i 滨t 程人学坝。卜学位论文 结构,但是加上了一些附加限制,具有新的解释和图标。代码生成器和其他 的工具对它的处理过程也发生了变化。标记值是一对任意的标记值字符串, 能够被连接到任何一种模型元素上并代表任何信息,如项目管理信息、代码 生成指示信息和版类所需要的值。l 标记值用字符串代表。约束是用某种特定 语言( 如程序设计语言) 的文本字符串表达的条件专用语言。或自然语言。u m l 提供了一个表达约束的语言,名为o c l 。与所有其他扩展机制一一样,必
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖北省十堰市普通高中教联体2025-2026学年高一上学期12月月考化学试题
- 跨境电商海外仓2025年仓储安全合同协议
- 口罩生产供应协议2025年仲裁版
- 2025年NFT确权虚拟土地租赁协议
- 酒店保洁合同(2025年客房消毒)
- 邹城社工面试题及答案
- 事业药学面试题及答案
- 深度解析(2026)《GBT 39141.2-2020无机和蓝宝石手表玻璃 第2部分:用胶粘或密封圈装到表壳上的配合》(2026年)深度解析
- 深度解析(2026)《GBT 34290-2017公共体育设施 室外健身设施的配置与管理》
- 中国风西江月茶词
- DB43∕T 1608-2019 基于优良度的马尾松种子质量分级
- 城市基础设施提质升级改造项目可行性研究报告
- 急性牙髓炎病例分析与诊疗方案
- DB12∕T 1332.8-2024 市域(郊)铁路施工质量验收规范 第8部分:通信工程
- 学堂在线 雨课堂 学堂云 科研伦理与学术规范 期末考试答案
- 山东省环境卫生作业计价定额编制说明
- ktv中高层管理制度
- 口腔诊所前台接待礼仪规范
- 供电公司催费管理制度
- 检测中心调度管理制度
- 2025国家开放大学《公共部门人力资源管理》期末机考题库
评论
0/150
提交评论