(计算机应用技术专业论文)基于uml面向对象建模技术应用研究.pdf_第1页
(计算机应用技术专业论文)基于uml面向对象建模技术应用研究.pdf_第2页
(计算机应用技术专业论文)基于uml面向对象建模技术应用研究.pdf_第3页
(计算机应用技术专业论文)基于uml面向对象建模技术应用研究.pdf_第4页
(计算机应用技术专业论文)基于uml面向对象建模技术应用研究.pdf_第5页
已阅读5页,还剩75页未读 继续免费阅读

(计算机应用技术专业论文)基于uml面向对象建模技术应用研究.pdf.pdf 免费下载

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

文档简介

摘要 摘要 大型信息系统通常十分复杂,人们经常借助模型来分析设计系 统,但传统建模方法己越来越不适应现代信息系统日渐复杂和多变的 需求。九十年代以来,面向对象已成为软件工程领域的主流技术,于 是出现了许多面向对象的建模技术。面向对象建模技术能够有效地控 制复杂性,适应多变性,具有灵活性、低风险性和可重用性,从而能 大大提高系统开发的效率,其中u m l ( 统一建模语言) 面向对象建模 技术是当前使用最广泛的面向对象建模技术,并已成为面向对象建模 事实上的工业标准。 u m l 是在b o o c h ,锎t ,o o s e 的基础上,广泛征求多家意见后形成 的统一建模语言,是一种定义良好,易于表达,功能强大,且适用广 泛的建模语言。它使多种方法逐渐走向统一,消除了不同方法在表示 法和术语上的差异,避免了在符号表示和理解上的不必要的混乱,为 理解系统架起了沟通的桥梁。 采用u m l 进行面向对象建模的过程没有一个统一的标准。u m l 的 设计者提出了一种特别适应于u i l 的生命周期过程:r u p ( r a t i o n a l u n i f i e dp r o c e s s ,r a t i o n a l 统一过程) 。r u p 汲取了面向对象软件工 程领域多年来的优秀研究成果,是一种用例驱动、以构架为中心、迭 代和增量的开发方法。与传统软件过程相比,r u p 能够有效地降低风 险,更好地适应需求变化。 本文主要介绍了u m l 面向对象建模技术、以及在统一过程指导下 的面向对象建模过程。结合英译辅助系统,着重讨论了u m l 的应用及 基于u m l 的面向对象系统的分析与设计,相信本文能对信息系统的面 向对象建模起到一定借鉴作用。 关键词:u m l 、r u p 、面向对象、软件建模、软件工程 l a r g e s c a l ei l l f o n l l a t i o ns y s i e m i s u s u a l l yv e r yc o m p l i c a t e d ,s o p e 叩l eo f t e na i l a l y z e 柚dd e s i g l lt l l es y s t e mt h m u g l lt h em o d d b u t t h e t r a d i t i o a lm o d e l i n gm e t l l o d sc 猢o tf i ti n w i t hm ec o m p l e xa i l d j n c o n s t a n tr e q u i f e m e t so fm o d e mi b f n l a t i o ns y s 把m s i n c et i i e1 9 9 0 s , o b j e c t - 嘶e n t e dt e c h n o l o g y h 髂b e c o m et h et e d e i l c yo fs o f 帆a r c e n g 加e e r i n g a 】1 d m a n yo b j c c t 一鲥e n t e dm o d e l i l l gl e c h n i q u e sa p p e a l o b j c c t - 耐e n t e dm o d c l i n gt e c h n o l o g yi sn e x i b l e ,t e u s a b l ea 1 1 dc 觚r e d u c c t h er i s ko fd e v e l o p m e tb e c a u s ei tm a k e st h ec o m p l e x i t ya n d c h a l l g e a b i l i t yi i ic o n t r o l ,s oo b j e c t - o r i e n t c dt e c h n o l o g yc 蛆i m p r o v et h e e 蚯c i e n c yo fs o f t v v a r ed e v e l o p m e n t a so b j e d - o r i c n t e dt c c l u l o l o g yb 弱e d o nu m l ( u n i 矗e dm o d e l i n gl a n g i l a g e ) u s e dm o s tw i d e i yn o w ,u m lh a s b e c o m ea c t u a l l yi i l m l s t r ys t 蛆d 缸d 血o b j e c t - o r i e m e dm o d e l i n g u m lc 锄e 幻l ob e i n gt l el l l 】蕾e dm o 如】如g 】a n g u a g ee x 橛l s i v e l y 伽 t h eb a s i so fb o o c h ,o m t 柚d0 0 s e nh a s9 0 0 dd c f i l l i t i o n ,i se a s yt o e x p r e s s ,p o w e r f u l 锄ds c a l a b l e u m lm a l 【e sm a n yl 【i n d so fm e 也0 dh e a d f o ru n i f ! i c a t j o ng r a d u a l l y ,d i s p e l sd i 疵r e n c ei ne x p r e s s i o n 锄dt e 珊i n d i 脏r e tm e m o d s 粕dp r e v e m su n e s s a r ) rc o n f i l s i o no fs y m b o la i i d u d e r s t a n d i n g nb r i d g e st h eg a pi ni n f b m a t i o ns y s t e mu n d e r s t a l i d i n g 1 1 l e r ei sn o tas t a 】以a r d p r o c e s sf o ro b j e c t - o d e m e dm o d e l i n g t 1 l e d e s i 绷e r so fu m lp r e s e n al i y c l ep r o c e s sc a l l e dr u p 皿a t i o n a l u n i f i e dp i o c e s s ) a d a p t e dw e l lt ou m lr u pa d o m sm a n yo u t s t a n d i n g a c l l i e v e m e n t si l lt h ef i e l do fo b j e c t 帕r i e n t e ds o f t w a r ee n g i l l e e 血g ni sa u s e - c a s ed r i v e n ,a r c h i t e c t u l - c e n t d c ,i t e r a t i v ca n di n c r e m e n t a ls o f t w a r e d e v e l o p m e n tp r o c e s s c o m p 缸i n gw i t ho 也c it f a d 试o n a lp i o c e s s e s ,r u p c a l le f 妣t i v e l yd e c r e a s er i s k sa l i da d a p tw e t 0r e q u i r e m e n t sc h a l l g e s d u r i i l gs o 腑a 陀d e v e l o p m e n t n j sp a p e rm a i n l yj l l t f o d u c c so b j e c l 一酬e n t e dm o d c l i n gt e c l l n o 王0 9 y b 鹅e do nu m l 卸do b j e c t o r i e n t e dm o d e l i n gp r o c e s su n d e rr u p b a s e d o nm ed e v e l 叩m e n to f1 a sc r r 柚s l a t i o na s s i s t a l l c cs y s t 啪) ,w ed i s c u s s t h e 印p l i c a t i o o fu m li n o d e l i n ga de x p l a i nt h ea n a l y s i sa i l dd e s i 驴o f 北京交通大学硕士学位论文 t l l eo b j e c t o r i e n t c ds y s t e mb a s c d u m li b e l i e v et h a ti tw i l lb eag o o d f e f e r e n c et 0o b j e c t - o r i e n t e dm o d d i n go fi n f o m a t i o s y s t e m i 【e y w o r d s :u m lr u p o b j e c t - o r i t e d ,s o 脚a r em o d e l i n 舀s 衄w a r e e n g i i l e e r i n g 独创性声明 独创性声明 本人声明,所呈交的学位论文是我个人在导师指导下进行的研究 工作及取得的研究成果。尽本人所知,除了文中特别加以标注和致谢 的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不 包含为获得北京交通大学或其他教学机构的学位或证书而使用过的 材料。与我一起工作的同志对本研究所做的任何贡献已在论文中作了 明确的说明并表示了谢意。 本人签名: 未:i 垒坐 日期:j 盘年三月日 关于论文使用授权的说明 r8 7 9 s 二 本人完全了解北京交通大学有关保留、使用学位论 文的规定,即:学校有权保留送交论文的复印件,允许 论文被查阅和借阅:学校可以公布论文的全部或部分内 容,可以采用影印、缩印或其他复制手段保存论文。论 文中所有创新和成果归北京交通大学计算机与信息技 术学院所有。未经许可,任何单位和个人不得拷贝。版 权所有,违者必究。 本人签名: 查:【兰鲴 日期:丛年上月 绪论 1 绪论 1 1 论文的研究背景与意义 随着计算机硬件性能的不断提高和价格的不断下降,计算机的应 用领域逐步扩大,人们对计算机应用领域的期望也不断增加。这使得 计算机软件的规模和复杂程度与日俱增,项目开发的风险也相应增 大。从2 0 世纪6 0 年代“软件危机”出现以来,人们一直在寻求更先 进的软件技术来解决软件领域出现的新问题。 面向对象软件开发方法由此产生。面向对象方法是一种运用对 象、类、继承、封装、消息传送和多态性等概念来构造系统的软件开 发方法。它强调以对象的观点来分析现实世界中的问题。在面向对象 系统中,世界被看成是独立的对象的集合,对象之间通过消息相互通 信。对象将属性和行为封装在一起,对一个对象的访问完全通过其外 部接口来进行,内部的实现细节和数据结构对外不可见。 面向对象方法首先在编程领域兴起,之后很快拓展到软件生存期 的分析和设计阶段,出现了许多面向对象建模技术。其中最著名的有 b o o c h 方法、j a c o b s o n 的o o s e 方法、c o a d 肿u r d o n 方法以及r u m b a u 鐾h 等人的o m t 方法等。这些方法都提出了面向对象领域的新概念、新 思想,同时又各有优缺点。具体而言。b 0 0 c h 方法在项目的设计和构 造阶段的表达能力比较强,o o s e 对以用例作为一种途径来驱动需求 捕获、分析和高层设计提供了极好的支持,而0 m t 适合于分析和描 述数据密集型信息系统。这些面向对象方法的主导思想基本一致,但 表达形式存在较大的差异,给用户的选择带来一定的困惑。为了使面 向对象方法向一致的方向发展,g m d yb 0 0 c h ,j 锄e sr u n l b a u g l t 和i v a r j a c o b s o n 三位面向对象领域的著名专家联合起来,创立了统一建模语 言( u n i f i e dm o d e l i n gl 丑目l a g cu m l ) 。u m l 一经出现便得到工业界和 学术界的广泛支持,迅速成为可视化建模语言事实上的工业标准。 u m l 融合了多种优秀的面向对象建模方法,以及多种得到认可的软件 工程方法,消除了因方法林立且相互独立带来的种种不便。它通过统 一的表示法,使不同知识背景的领域专家、系统分析和开发人员以及 北京交通大学硕士学位论文 用户可以方便地交流,并且支持从需求定义到系统实现的软件开发的 全过程。u m l 代表了面向对象的软件开发技术的发展方向。 如今,国外的许多软件企业已采用面向对象方法和u m l 建模技 术来开发软件,国内也有不少软件公司在尝试使用u m l 。但从总体上 看,国内对u m l 的掌握和使用还比较初步。为了缩短国内外的差距, 就必须对基于u m l 的面向对象建模技术不断地加以探索并在实际的 系统开发中加以应用,而这也正是本课题的目的和意义所在。 1 。2 论文的内容安排 本文致力于研究基于u m l 的面向对象建模技术及其在实际项目 中的应用,详细介绍了面向对象的软件建模技术、u m l 建模语言以及 特别适应于u m l 的软件过程r u p 。此外,笔者还参加了英译辅助系 统的开发,得到了宝贵的理论与实践结合的机会,促使了笔者对基于 u m l 的面向对象建模技术有了更深步的理解。 本文共分六章,各章节内容安排如下: 绪论:介绍了论文的研究背景与意义,及论文的内容安排。 第一章:软件工程概述。介绍了软件工程的由来、软件工程的研 究对象、基本原理及软件开发方法等相关内容。 第二章:面向对象建模技术。介绍了软件建模及几种经典的面向 对象软件建模技术。 第三章:统一建模语言u m l 。全面介绍了u m l 及其建模机制, 另外还简要介绍了建模工具r a t i o n a lr 0 s e 。 第四章:基于u m l 的统一过程。介绍了特别适应u m l 建模的软 件过程r u p 。 第五章:u l m ,建模技术在英译辅助系统中的应用。结合具体项目 英译辅助系统,详细介绍了基于u m l 的面向对象系统分析与设计及 其建模过程。 第六章:总结与展望。对本文工作做了总结,并提出了进一步的 工作内容。 2 软件工程概述 2 软件工程概述 2 1 软件工程的产生 软件工程是在克服6 0 年代末出现的“软件危机”的过程中逐渐 形成与发展起来的。自1 9 6 8 年在北大谣洋公约组织( n a ) 举行软 件可靠性的学术会议上正式提出软件工程概念以来,在不到4 0 年的 时间里,软件工程在理论和实践两方面都取得了长足的进步。 2 1 1 “软件危机” “软件危机”的出现是由于软件的规模越来越大,复杂度不断增 加,而软件需求量也不断增大,作坊式的软件开发模式及技术已不能 满足软件发展的需要。在1 9 世纪6 0 年代,很多的软件最后都得到了 一个悲惨的结局。很多的软件项目开发时间大大超出了规划的时间。 一些项目导致了财产的流失,甚至某些软件导致了人员伤亡。同时软 件开发人员也发现软件开发的难度越来越大。 l b m 3 6 0 就被认为是一个典型的案例f 1 】om m 3 6 0 的开发总投资5 亿美元,达到美国研究原子弹的曼哈顿计划投资2 0 亿美元的1 4 。在 研制期间,布鲁克斯( f r c d c r i c kp h m i p sb m o k s ,j r ) 主持了这个项目, 率领着2 0 0 0 名程序员夜以继日地工作,单单0 s ,3 6 0 操作系统的开发 就用了5 0 0 0 个人年。在当时,i b w 3 6 0 以其通用化、系列化和标准化 的特点,对全世界计算机产业的发展产生了深远的影响,以致被认为 是划时代的杰作,至今仍然被使用在i b m 3 6 0 系列主机中。但据统计, 这个操作系统每次发行的新版本都是从前一版本中找出上千个程序 错误而修正的结果。如今经历了数十年,这个极度复杂的软件项目甚 至产生了一套不包括在原始设计方案之中的工作系统。后来,布鲁克 斯在他的著作人月神话( 1 1 1 em y t h j c a lm 锄m o n t h ) 中对这个项目 的开发研制过程进行分析及总结,承认由于管理方面的原因,项目在 某些方面来说是失败的,甚至犯了一个价值数百万美元的错误。 软件的错误不但能导致巨大的财产损失,而且由于计算机软件被 广泛应用于人类社会的方方面面,这也使得软件的错误导致人员伤亡 北京交通大学硕士学位论文 成为了可能。2 0 0 2 年1 2 月欧洲阿里亚娜火箭的爆炸就是一个最为惨 痛的教训。在工业上,某些嵌入式系统导致机器的不正常运转,从而 常常使工作人员陷入险境。 2 0 世纪6 0 年代末至7 0 年代初,“软件危机”一词在计算机界广 为流传。事实上,“软件危机”几乎从计算机诞生的那一天起就出现 了,只不过到了1 9 6 8 年,北大西洋公约组织的计算机科学家在联邦 德国召开的国际学术会议上第一次提出了“软件危机( s o 脚a r e c r i s i s ) ”这个名词。 “软件危机”是指在计算机软件的开发和维护过程中所遇到的 一系列严重问题。这类问题绝不仅仅是“不能正常运行的软件”才具 有的,实际上几乎所有软件都不同程度地存在这类问题。概括来说, “软件危机”包含两方面问题:其一是如何开发软件,以满足不断增 长、日趋复杂的需求;其二是如何维护数量不断膨胀的软件产品。 具体地说,“软件危机”主要有下列表现【5 】: 1 对软件开发成本和进度的估计常常不准确,开发成本超出预 算,实际进度比预定计划一再拖延的现象并不罕见。 2 用户对“已完成”系统不满意的现象经常发生。 3 软件产品的质量往往靠不住。“缺陷”一大堆,“补丁”一个 接一个。 4 软件的可维护程度非常之低。 5 软件通常没有适当的文档资料。 6 软件的成本不断提高。 7 软件开发生产率的提高赶不上硬件的发展和人们需求的增长。 2 1 2 软件工程的定义 在软件的长期发展中,人们针对“软件危机”的表现和原因,经 过不断的实践和总结,越来越清楚地认识到:按照工程化的原则和方 法组织软件开发工作,是摆脱“软件危机”的一个主要出路。 1 9 6 8 年秋,n f t o 的科技委员会召集了近5 0 名一流的编程人员、 计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。 在会议上第一次提出了“软件工程”这个概念。当时提出这个概念的 蹦t zb a u e r 的主要思路是想将系统工程的原理应用到软件的开发和维 4 软件工程概述 护中去。 软件工程是一门研究如何用系统化、规范化、数量化等工程原则 和方法去进行软件的开发和维护的学科。可以定义为:软件工程是一 类设计软件的工程。软件工程应用计算机科学、数学及管理科学等原 理,借鉴传统工程的原则、方法,创建软件以达到提高质量、降低成 本的目的。其中:计算机科学、数学用于构建模型与算法;工程科学 用于制定规范、设计规范、评估成本及确定权衡;管理科学用于计划、 资源、质量、成本等管理。软件工程学是一门指导计算机软件开发和 维护的科学瞄j 。 软件工程包括两方面内容:软件开发技术和软件项目管理【3 】。其 中,软件开发技术包括软件开发方法学、软件工具和软件工程环境, 软件项目管理包括软件度量、项目估算、进度控制、人员组织、配置 管理、项目计划等。 2 2 软件工程的研究对象 软件工程是相当复杂的,涉及的因素很多,不同软件项目使用的 开发方法和技术也是不同的,而且有些项目的开发并无现成的技术, 带有不同程度的试探性。一般来说,软件工程包含4 个关键元素:方 法、语言、工具和过程1 3 j 。 软件方法提供如何构造软件的技术,包括以下内容:与项目有关 的计算和各种估算、系统和软件需求分析、数据结构设计、程序体系 结构、算法过程、编码、测试和维护等。软件工程的方法通常引入各 种专用的图形符号,以及一套软件质量的准则。概括地说,软件工程 方法规定了以下内容:明确的工作步骤与技术;具体的文档格式;明 确的评价标准。 软件语言用于支持软件的分析、设计和实现。随着编译程序和软 件技术的完善,传统的编程语言表述能力更强、更加灵活,而且支持 过程实现更加抽象的描述。与此同时,规格说明语言和设计语言也开 始有更大的可执行子集。而且现在还发展了原型开发语言,所谓原型 开发语言就是除必须具有可执行的能力外,还必须具有规格说明和设 计这两种语言的能力。 5 北京交通大学硕士学位论文 软件工具是人类在开发软件的活动中智力和体力的扩展和延伸, 为方法和语言提供自动或半自动化的支持。软件工具最初是零散的, 后来根据不同类型软件项目的要求建立了各种软件工具箱,支持软件 开发的全过程。更进一步,人们将用于开发软件的软、硬件工具和软 件工程数据库集成在一起,建立集成化的计算机辅助软件工程 ( c o m 口u t e r i a j d e ds o f h a e n g i n e e r i n g ) 系统,简称c a s e 。 软件过程贯穿于软件开发的各个环节。软件过程定义了方法使用 的顺序、可交付产品( 文档、报告以及格式) 的要求、为保证质量和 协调变化所需要的管理,以及软件开发过程各个阶段完成的标志。 从内容上说,软件工程包括软件开发理论和结构、软件开发技术 阻及软件工程管理和规范。其中,软件开发理论和结构包括:程序正 确性证明理论、软件可靠性理论、软件成本估算模型、软件开发模型 以及模块划分原理。软件开发技术包括:软件开发方法学、软件工具 以及软件环境。软件工程管理和规范包括:软件管理( 人员、计划、 标准、配置) 以及软件经济( 成本估算、质量评价) 。即软件工程可 分为理论、结构、方法、工具、环境、管理和规范等。理论和结构是 软件开发的基础,方法、工具、环境构成软件开发技术。好的工具促 进方法的研制,好的方法能改进工具,工具的集合构成软件开发环境。 管理是技术实现与开发质量的保证,规范是开发遵循的技术标准。 在软件工程中,软件的可靠性是软件在所给条件下和规定的时间 内,能完成所要求的功能的性质。软件工程的软件可靠性理论及其评 价方法,是贯穿整个软件工程各个阶段所必须考虑的问题。 软件工程的目标在于研究一套科学的工程化方法,并与之相适 应,发展一套方便的工具与环境,供软件开发者使用。 2 3 软件工程的基本原理 自从1 9 6 8 年提出软件工程概念以来,研究软件工程的专家学者 们陆续提出了许多关于软件工程的准则或信条。美国著名的软件工程 专家b o e h m 综合这些专家的意见,并总结了【w 公司多年开发软件 的经验,于1 9 8 3 年提出了软件工程的7 条基本原理【5 l 。b o e h m 认为, 这7 条原理是确保软件产品质量和开发效率的原理的最小集合。这7 6 软件工程概述 条原理是相互独立、缺一不可的最小集合,同时又是相当完备的。下 面简要介绍软件工程的7 条基本原理: 1 用分阶段的生命周期计划严格管理 这一条是吸取前人的教训而提出来的。统计表明,5 0 以上的失 败项目是由于计划不周而造成的。在软件开发与维护的漫长生命周期 中,需要完成许多性质各异的工作。这条原理意味着,应该把软件生 命周期分成若干阶段,并相应制定出切实可行的计划,然后严格按照 计划对软件的开发和维护进行管理。b o e l l m 认为,在整个软件生命周 期中应指定并严格执行六类计划:项目概要计划、里程碑计划、项目 控制计划、产品控制计划、验证计划和运行维护计划。 2 坚持进行阶段评审 统计结果显示大部分错误是设计错误,大约占6 3 ;错误发现得 越晚,改正错误付出的代价就越大,相差大约2 到3 个数量级。因此, 软件的质量保证工作不能等到编码结束之后再进行,应坚持进行严格 的阶段评审,以便尽早发现错误。 3 实行严格的产品控制 开发人员最痛恨的事情之一就是改动需求。但是需求的改动往往 是不可避免的。这就要求开发人员要采用科学的产品控制技术来顺应 这种要求,也就是要采用变动控制,又叫基准配置管理。当需求变动 时,其他各个阶段的文档或代码随之相应变动,以保证软件的一致性。 4 。采纳现代程序设计技术 从2 0 世纪6 0 、7 0 年代的结构化软件开发技术,到最近的面向对 象技术,从第一、第二代语言,到第四代语言,人们已经充分认识到: 方法比气力更有效。采用先进的技术既可以提高软件开发的效率,又 可以减少软件维护的成本。 5 结果应能清楚地审查 软件是一种看不见、摸不着的逻辑产品。软件开发小组的工作进 展情况可见性差,难于评价和管理。为更好地进行管理,应根据软件 开发的总目标及完成期限,尽量明确地规定开发小组的责任和产品标 准,从而使所得到的标准能清楚地审查。 北京交通大学硕士学位论文 6 开发小组的人员应少而精 开发人员的素质和数量是影响软件质量和开发效率的重要因素, 应该少而精。这一条基于两点原因:高素质开发人员的效率比低素质 开发人员的效率要高几倍到几十倍,开发工作中犯的错误也要少得 多;当开发小组为n 人时,可能的通信信道为n ( n 1 ) 2 ,可见随 着人数n 的增大,通信开销将急剧增大。 7 承认不断改进软件工程实践的必要性 遵从上述6 条基本原理,就能够较好地实现软件的工程化生产。 但是,上述6 条原理只是对现有的经验的总结和归纳,并不能保证赶 上技术不断前进发展的步伐。因此,b o e h m 提出应把承认不断改进软 件工程实践的必要性作为软件工程的第7 条原理。根据这条原理,不 仅要积极采纳新的软件开发技术,还要注意不断总结经验,收集进度 和消耗等数据,进行出错类型和问题报告统计。这些数据既可以用来 评估新的软件技术的效果,也可以用来指明必须着重注意的问题和应 该优先进行研究的工具和技术。 2 4 软件开发方法 为了克服“软件危机”,从6 0 年代末开始,人们一直在进行着软 件开发方法的研究与实践,并取得了一系列研究成果,对软件产业的 发展起了不可估量的作用。 软件工程的内容包括技术和管理两方面,两方面又紧密结合。通 常把在软件生命期中所使用的一整套技术的集合称为方法学 ( m e t h o d o l o g y ) 或范型口a r a d i g m ) 。 软件开发方法是一种使用早已定义好的技术集及符号表示习惯 来组织软件生产过程的方法,其方法一般表述成一系列的步骤,每一 步骤都与相应的技术和符号相关。其目标是要在规定的投资和时间 内,开发出符合用户的需求,高质量的软件,为此需要有成功的开发 方法。 软件工程方法学包括三要素:方法、工具和过程。方法是指完成 软件开发各项任务的技术方法,工具是指为方法的运用提供自动或者 半自动的支撑环境,过程是指为开发高质量软件所规定的各项任务的 8 软件工程概述 工作步骤。 软件开发方法可分为两大类:面向过程的开发方法和面向对象的 开发方法: 1 传统的面向过程的开发方法 这类开发方法都典型地包含了分析、设计、实现、确认( 测试) 、 演化( 维护) 等活动。典型的传统软件开发方法有:j a c k s o n 方法、 结构化开发方法、原型化方法、h 坤o 法、i d e f 法等。 2 面向对象的开发方法 从9 0 年代开始的面向对的开发方法逐渐已成为软件开发方法的 主流,这类方法是以对象作为基本的元素构建新系统的方法。具有代 表性的有:b 0 0 c h 方法、o m t 方法、o o s e 方法和c o a d 肺u r d 咖方 法以及u m l 统一建模语言。 9 面向对象建模技术 3 面向对象建模技术 3 1 面向对象的软件开发方法 长期以来,计算机软件一直被两大难题所困扰:一是如何超越程 序复杂性障碍,二是如何在计算机系统中自然地表示客观世界。特 * 是在计算机硬件飞速发展的今天,各种领域都对软件提出了更高的 要求。显然,结构化程序设计方法越来越难以克服随着软件规模的增 大而迅速增长的软件自身复杂性障碍,越来越无法满足用户经常的需 求变化。这就需要一个能够大力提高软件质量,缩短软件开发周期, 加强软件可靠性、可扩充性、可重用性和可维护性的新方法新技术的 诞生。在上述背景下,8 0 年代末,面向对象的软件分析、设计和实 现技术便应运而生。首先是诸如s m a l l t a l k ,c + ,j a v a 等面向对象的程 序设计语言得到广泛应用,它们的封装、继承、多态等特性在软件构 造、理解和复用等方面比传统程序设计语言更有优势。紧接着,面向 对象的思想应逐渐应用于软件设计阶段和分析阶段。随着面向对象技 术成为研究的热点出现了几卜种面向对象的软件开发方法。其中 b 0 0 c i l ,o m t ,0 0 s e 和c o a d 胁l r d 0 的方法在面向对象软件开发界得 到了广泛的认可。特别值得一提的是统一建模语言u m l ,该方法结合 了b o o c h ,o m t 和0 0 s e 方法的优点,统一了符号体系,并吸收了许 多经过实践检验的概念和技术。 面向对象的软件开发方法是一种运用对象、类、继承、封装、聚 合、消息传送、多态性等概念来构造系统的软件开发方法。其基本思 想是:对问题领域进行自然的分割,以更接近人类通常思维的方式建 立问题领域的模型,以便对客观的信息实体进行结构和行为的模拟, 从而使设计的软件更直接地表现问题的求解过程。 面向对象的软件开发是由面向对象分析( 0 0 a ) 、面向对象设计 ( 0 0 d ) 、面向对象编程( 0 0 p ) 、面向对象测试( 0 0 t ) 和面向对象 软件维护( 0 0 s m ) 等部分组成【4 j 。 1 o o a ( o b j e c - o r t e m e d a n m y s i s ) o o a 就是要解决“做什么”的问题。它的基本任务就是要建立 o o a 就是要解决“做什么”的问题。它的基本任务就是要建立 1 l 北京交通大学硕士学位论文 以下三种模型: 对象模型( 信息模型) :定义构成系统的类和对象,它们的属性 与操作。 状态模型( 动态模型) :描述任何时刻对象的联系及其联系的改 变,即时序。常用状态图,事件追踪图描述。 处理模型( 函数模型) :描述系统内部数据的传送处理。 2 o o d ( o b j e c t - o 一蚰t e dd e s i 舶) 在需求分析的基础上,进一步解决“如何作”的问题,o o d 法 也分为概要设计和详细设计: 概要设计:细化对象行为,添加新对象,认定类,组类库,确定 外部接口及主要数据结构。 详细设计:加细对象描述。 3 0 0 p ( o b j e c t - o 一蚰t e dp r o g m m ) 使用面向对象的程序设计语言,如c + + 进行程序设计,因为该类 语言支持对象封装性、运行多态性和继承性,因此比较容易实现。 用面向对象方法开发的软件,其结构基于客观世界界定的对象结 构,因此与传统的软件相比较,软件本身的内容结构发生了质的变化, 因而易复用性和易扩充性都得到了提高,而且能支持需求的变化。 4 o o t ( o b j e c t - o r 萱e n t e d i b s t ) 面向对象的测试是指,对于用o o 技术开发的软件,在测试过程 中继续运用o o 技术,进行以对象概念为中心的软件测试。 5 。o o s m ( o b j 髓t o r i e n t e ds o 矗w a 珊m 出n t 蛐a n 雠) 面向对象的软件工程方法为改进软件维护提供了有效的途径。程 序与问题域是一致的,各个阶段的表示是一致的,从而大大减少了理 解的难度。 3 2 软件建模 模型在数学上有着严格的定义和理论基础,生活中的模型由来己 久而且应用十分广泛。人们无论是对一个实物的建造还是对一个复杂 问题的求解,在真正实施前首先为其构造若干模型,例如建筑物的模 面向对象建模技术 型、汽车模型和建设蓝图等。模型是为了理解事物而对事物做出的一 种抽象,由于它忽略了事物不必要的细节,因而对事物的处理更加容 易。抽象建模已成为处理复杂事物的一种基本手段。在计算机应用领 域,为了构建复杂的软件系统,开发者必须从不同的角度考察该系统, 使用某种图形表示来构造抽象系统模型,并反复验证模型能否满足系 统需求,最后逐步完成整个系统的建模,这就是软件建模嘲。 3 2 1 软件建模的目的 对软件系统进行建模,其目的在于以下几点: 1 理解应用领域中的知识,捕获用户的需求 对系统进行分析的过程就是开发者不断学习用户领域知识的过 程。当开发者能建立出一个用户满意的模型时,说明他已经理解了用 户领域中的知识。正如j 锄e sr l l m b a u 曲所说:“建模就是要抓住系统 最本质的部分”。 2 与用户沟通 用户往往不是计算机专家,而开发者往往也不熟悉用户的领域, 二者的沟通就有一定的难度。通过建立一个双方都能理解的模型有利 于这种沟通,可以使项目投资者、分析人员、设计人员、程序员等达 成一致,从而为建立正确的软件系统打下良好的基础。 3 进行系统设计 在编写代码以前,软件系统的模型可以帮助软件开发人员方便地 研究软件的多种构架和设计方案,从中找出最适合的解决方案,简化 实现,模型能够说明在最终设计中所要解决的许多问题。 4 使实现细节和需求分开 软件系统的模型可以从多个角度来描述系统:有一些侧重于系统 的外部行为和系统中与现实世界对应的有关信息,有一些则侧重于描 述系统中的类以及类的内部操作。通过模型,可以将实现细节和需求 分开。 5 。设计出有用的实际产品 通过建模,可以得到这样一些实际产品:类的声明,数据库结构, 北京交通大学硕士学位论文 配置草案,或者还有初始的用户界面等,这些产品可以直接应用在后 边的阶段中。 6 通过模型可以建立系统的文档 软件系统用视图来组织信息,有静态结构视图、状态视图、交互 视图、反映需求的用例视图等。通过这些视图可以组织、查找、检查 以及编辑大型系统有关的信息。 7 利于我们理解复杂系统 对大型复杂系统直接理解往往有困难,通过建立模型,对系统进 行抽象,抓住系统的主要方面,这样有利于理解系统。 3 2 2 软件建模的主要手段一抽象 所谓抽象是指为了达到某种目的,将与问题有关的某些方面的特 征抽取出来,并略去与问题无关紧要的其他性质的一种方法。抽象总 是针对某种目的而展开的,它可以明确地展示和描述那些对某种目的 有重要影响的特征,从而避免不重要因素的干扰。同一事物存在多种 不同的抽象,抽象的选择随着目的的不同,所需抽取的事物的性质也 就不同。 与实物相比,任何抽象过程均是不完全的、不精确的,但这并不 能影响的它的作用。抽象的目的本身就是将事物限制在我们所能主导 的范畴内,从而有效地把握事物的本质。因此,在构造模型时不必去 追求绝对的真实、完全和精确,但必须充分满足某种具体目的的需求。 一个好的模型应该既能刻画问题的本质,又能略去其他相对次要 的方面。从这个角度来看,绝大多数的计算机语言都不利于构造算法 模型,因为他们强调的总是与算法无关的种种具体实现细节,从而无 法集中精力进行系统设计。 3 2 3 面向对象的软件建模 面向对象的软件建模是从软件系统的不同角度出发分别建模,建 立的每种模型都从不同的方面反映了软件系统的不同需求,若将这些 模型组合起来便构成了对系统的完整性描述。典型的面向对象建模综 合了对象建模、动态建模和功能建模等三种建模技术,并始终贯穿软 1 4 面向对象建模技术 件开发的分析、设计、编码和实现全过程。当然以上三种模型均可独 立进行测试和理解,具有很大程度上的模型独立性,但由于每个系统 都是由若干个相对独立部分组合而成的,所有这三个模型又不是绝对 独立的,模型之间存在必然的联系1 6 j 。 对象模型主要是用含有若干个对象的对象图来表示的,它描述的 是系统中对象的静态结构,每个对象包括对象名、对象属性、对象 操作三方面,并通过关联技术建立起对象与对象之间的关系。由于每 个系统包括若干物理实体,每个对象包括诸多属性和操作,因此在创 建对象时,先必须从客观世界中选取对具体应用有用的概念作为对 象,然后再定义对象中的属性和具体操作。对于具体的应用问题,如 何从客观世界中选取对象是一个十分有意义的研究课题。 动态模型是由对象之间的状态转换图来表示的。一张对象状态图 表示了相关联的所有对象的状态和相应事件的响应次序。动态模型描 述与时间和操作次序有关的系统属性,包括触发事件、事件序列、 事件状态等。 功能模型描述的是系统中与计算有关的系统功能、映射、约束和 功能依赖条件等,它只考虑系统中要实现什么功能。丽不关心系统怎 么实现及实现的先后次序。功能模型是由若干张数据流图组成的,每 张数据流图都说明一个数据流如何从外部输入经过功能处理得到外 部输出的。 三个模型描述的是系统的不同方面,但各个模型之间又是相互关 联的。对象模型描述了动态模型和功能模型中操作的数据结构。对象 模型中的操作对应于动态模型中的事件及功能模型中的功能。动态模 型描述对象的控制结构,它表示了各个对象的状态及改变状态时执行 的操作,描述了功能模型中执行处理的步骤地先后次序。功能模型描 述了由对象模型中对象处理和动态模型中操作处理的功能,同时也可 表示对象值上的约束。总之,上述三种模型相辅相成,共同构成一个 完整的系统模型,但一般来说对象模型是最基本的模型。 3 3 经典的面向对象建模技术 前面已经提到,2 0 世纪8 0 年代末以来,出现了许多面向对象建 北京交通大学硕士学位论文 模技术,其中b 0 0 c h 、o m t 和o o s e 以及较早的c o a d ,y 0 u r d o n 方法 得到了广泛的认可。特别是后来出现的统一建模语言u m l 该方法结 合了b o o c h ,o m t 和o o s e 方法的优点,统一了符号体系,业已成为 面向对象建模技术事实上的标准。因为b o o c h 、o m t 和o o s e 方法是 u m l 的直接来源,它们各有特点,适合于不同的领域,所以尽管u m l 统一了面向对象方法的符号体系,但这些方法仍然具有重要的作用, 它们可以作为建模过程的指导。在实际开发过程中,我们可以根据需 要选用或综合这几种方法来进行建模。下面,介绍这几种经典方法的 主要思想【5 1 0 3 3 1b c h 方法 b o o c h 方法是g r a d yb 0 0 c h 从1 9 8 3 年开始研究,1 9 9 1 年后走向成 熟的一种方法。b 0 0 c h 方法区分系统的逻辑和物理结构并描述这两种 结构的静态和动态语义。b o o c h 方法不是像瀑布模型一样的顺序模型, 它是一个简化的模型,是一种迭代和增量的方法,这种思想也是u m l 建模技术的基本特点之一。 b o o c h 方法被区分为微观和宏观的过程: 1 微观开发过程代表开发者或开发小组的日常活动,包含以下 任务: 1 ) 在一定抽象层次上标识类与对象,发现问题域中的类和对象 确定对象需要哪些行为来完成某些功能。 2 ) 标识类与对象的语义,目标是建立前一阶段抽取出来的类的 状态和行为。 3 ) 标识类与对象的关系,确定每一个类对象的边界,区分相互 协作的类对象,主要用类图来表达。 4 ) 实现类与对象,选择算法和数据结构实现类对象的语义。 2 宏观开发过程是微观开发过程的控制框架,这个更广的过程 确定一些相应的成果和活动,以帮助开发小组进行有效的风险评估以 及早对开发过程进行修改。宏观过程侧重风险和结构方面,对日程、 结构和完整性最为重要,它包含以下阶段: 1 ) 概念化,建立需求。概念化试图建立系统的核心需求,这是 一个非常具有创造性的过程,所以没有严格的开发规则可循。原型是 1 6 面向对象建模技术 这项活动的基本产品。 2 ) 分析,开发所需行为的模型。分析的目的是通过区分类和对 象为现实世界建模。这个阶段强调系统的行为,通过关注系统的行为, 可以区分出系统的功能点。 3 ) 设计,开发系统的体系结构,产生一个用于将来实现的体系 结构。 4 ) 演化,精化设计阶段的实现。演化的目的是不断增加和改变 实现,直到系统作为一个产品问世。 5 ) 维护,进行交付使用后的改进。这个过程主要是演化阶段的 继续。但现在很多对系统的改变主要是因为新的需求被加进来以及修 正系统中的b u g 。 b o o c h 方法是u m l 的主要来源,其面向对象的概念十分丰富。 主要概念有:类、对象、继承、元类、消息、域、操作、机制、模块、 子系统、进程等。它的模型主要包括:逻辑静态视图( 类图、对象图) 、 逻辑动态视图( 状态转移图、时态图) 、物理静态视图( 模块图、进程图) 以及物理动态视图。 b o o c h 方法的优点是它在项目的设计和构造阶段的表达能力特别 强,其迭代和增量的思想也是大型软件开发中的重要思想。 3 3 20 _ t 方法 o m t ( o b i e c tm o d e l i n g r c c h d i q u e ) 方法是由l o o m i s ,s h a n 和 r 啪b 卸g h 在1 9 8 7 年提出的,曾扩展应用于关系数据库的设计。 r u m b a u g h 在1 9 9 1 年正式把o m t 应用于面向对象的分析和设计,这 个方法是在实体一关系模型上扩展了类、继承和行为而得到的。0 m t 方法从三个视角描述系统,相应地提供了三种模型: 1 对象模型:描述对象的静态结构和它们之间的关系。其主要 概念包括:类、属性、操作、继承、关联、聚合。 2 动态模型:描述系统那些随时间变化的方面。其主要概念包 括:状态、子状态和超状态、事件、行为、活动。 3 。功能模型:描述系统内部数据值的转换。其主要概念包括: 加工、数据存储、数据流、角色。 此外,该方法还

温馨提示

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

评论

0/150

提交评论