




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 随着计算机技术应用的日 益广泛, 应用软件的复杂程度也愈来愈高。 如何更合理 的设计开发软件,更科学的管理软件开发的过程,己 经成为人们广泛关注的话题。 软件复用是提高软件生产效率和软件质量的一个可行方法。 但在很长一段时间 里, 软件复用整体上对软件产业的影响并不尽如人意。 人们总希望能够得到通用度尽 可能高的构件, 其适用范围也应尽可能地广泛。 但过高的要求就会导致技术复杂性太 强, 实现难度大, 应用前景不乐观。 丰富的应用工程知识有益于获得需求规约、 设计、 实现等可复用信息, 便于领域工程各个阶段的抽象。 因此, 如果我们将复用研究工作 主要集中在某个熟悉的特定领域, 力求开发在该领域内复用度较高的领域构件, 则今 后在该领域内开发类似或相近系统时,就可以 将精力集中在每个系统的 特有成分上, 从而降低开发成本, 提高开发质量和效率。 构件技术把构件从系统逻辑中 清晰地隔离出来, 用来开发复杂的系统, 而且使得 系统的造价更低,稳定性更好,并且更利于系统的维护。软件复用和 i n t e r n e t 等技 术的发展, 使得越来越多的不同的领域专家参与构件的开发、 测试, 大规模的可复用 构件库的存在成为可能。 工作流是针对工作中具有固定程序的常规活动而提出的一个概念。 通过将工作活 动分解成定义良 好的任务、 角色、 规则和过程来进行执行和监控, 达到提高生产组织 水平和工作效率的目的。 本课题的研究目 标是对r b a c 模型进行扩展, 形成时间 敏感的r b a c 模型和资源敏 感的r b a c 模型。并将其应用于工作流系统中,利用办公自 动化系统中的公文流转来 验证模型的可行性,最后使用可复用构件技术的概念、方法分析,制作构件。 关键词:软件复用:r b a c 模型;工作流;构件 ab s t r a c t a l o n g w i t h c o m p u t e r t e c h n o l o g y a p p l i c a t i o n d a y b y d a y b r o a d , t h e a p p l i c a t i o n s o f t w a r e c o m p l e x d e g r e e i n c r e a s i n g l y is a l s o h i g h . h o w t h e m o r e r e a s o n a b l e d e s i g n d e v e l o p m e n t s o f t w a r e , t h e m o r e s c i e n t i fi c c o n t r o l s o f t w a r e d o e s d e v e l o p t h e p ro c e s s , o n e s e l f a f t e r b e c o m e s t h e t o p i c w h i c h t h e p e o p l e w i d e l y p a y a t t e n t i o n . s o ft w a r e r e u s e i s a f e as i b l e m e t h o d f o r e n h a n c i n g t h e s o f t w a r e p r o d u c t i o n e f f i c i e n c y a n d q u a l i t y . b u t i n v e ry l o n g p e r i o d o f t i m e , s o f e w a r e r e u s e i n t h e w h o l e t o t h e s o f tw a r e in d u s tr y i n fl u e n ce n o t e n t ir e ly a s d e s ir e d . t h e p e o p le a lw a y s 如 p e d c a n o b t a in th e g e n e r a l a s f a r a s p o s s i b l e h i g h c o m p o n e n t ; i t s a p p l i c a b l e s c o p e a l s o s h o u l d as f a r a s p o s s i b l e b r o a d . b u t t h e h i g h r e q u i r e m e n t h a s b e e n a b l e t o c a u s e t h e t e c h n i c a l c o m p l e x i t y t o o t o b e s t ro n g , t h e i m p l e m e n t a t i o n d i f f i c u l t y i s b i g , t h e a p p l i c a t i o n f o r e g r o u n d i s n o t o p t im i s t i c . t h e r i c h a p p l i c a t i o n p ro j e c t k n o w l e d g e i s b e n e f i c i a l i n o b t a i n s t h e d e m a n d t e r m s o f a n a g re e m e n t , t h e d e s i g n , t h e i m p l e m e n t a t i o n a n d s o o n m a y d u p l i c a t e u s e th e i n f o r m a t i o n , i s a d v a n t a g e o u s f o r t h e , d o m a i n p r o j e c t e a c h p h a s e a b s t r a c t . t h e r e f o r e , i f w e w i l l t u rn r o u n d w i t h t h e r e s e a r c h w o r k m a i n l y c o n c e n t r a t e i n s o m e fa m i li a r s p e c k d o m a i n , w i l l m a k e e v e r y e f f o rt t o d e v e l o p i n t h i s d o m a in t u rn s r o u n d w i t h t h e h i g h d o m a i n c o m p o n e n t , t h e n w i ll f r o m n o w o n d e v e l o p s i m i l a r o r t i m e t h e c l o s e s y s t e m i n t h i s d o m a in , m i g h t c o n c e n t r a t e t h e e n e r g y i n o n e a c h s y s t e m u n i q u e in g r e d i e n t , t h u s w i l l r e d u ce t h e d e v e lo p m e n t c o s t , w i ll i m p r o v e t h e d e v e lo p m e n t q u a l it y a n d t h e e f f i c i e n c y . t h e c o m p o n e n t t e c h n o l o g y i s o l a t e s c l e a r l y t h e c o m p o n e n t f r o m t h e s y s t e m l o g i c , u s e s f o r t o d e v e l o p t h e c o m p l e x s y s t e m , m o r e o v e r c a u s e s t h e s y s t e m t h e c o n s t r u c t i o n c a s t t o b e l o w e r , t h e s t a b i li t y i s b e t t e r , a n d f a v o r s t h e s y s t e m小 . s a f e g u a r d 城 g . t h e s o ft w a r e t u rn s r o u n d w i t h w i t h t e c h n i c a l t h e a n d s o o n i n t e rn e t d e v e l o p m e n t , c a u s e s t h e m o r e a n d m o r e m a n y d i ff e r e n t d o m a i n s e x p e rt t o p a r ti c ip a t e i n t h e c o m p o n e n t th e d e v e lo p m e n t, th e t e s t, l a r g e - s c a le m a y d u p l i c a t e p o s s i b l y u s e t h e c o m p o n e n t b as e t h e e x i s t e n c e i n t o . t h e w o r k fl o w i s a i m s a t i n t h e w o r k t o h a v e a c o n c o p t w h i c h t h e f i x e d r o u t i n e t h e c o n v e n t i o n a l a c t i v i t y p r o p o s e d . t h r o u g h w i l l w o r k t h e a c t i v i t y t o r e s o l v e t h e d e f i n i t i o n g o o d t a s k / r o l e , t h e r o l e , t h e r u l e a n d t h e p r o c e s s c a r r i e s o n e x e c u t i n g a n d t h e m o n i to r i n g , a c h i e v e s t h e e n h a n cem e n t p r o d u c t i o n o r g a n iz a t i o n l e v e l a n d t h e w o r k i n g e f f i c ie n c y t a r g e t . t h i s t o p i c r e s e a r c h a i m i s c a r r i e s o n t h e e x p a n s i o n t o t h e r b a c m o d e l , f o r m s t h e t i m e s e n s i t i v e r b a c m o d e l a n d t h e r e s o u r c e s e n s i t i v e r b a c m o d e l , a n d a p p l i e s i t i n t h e w o r k fl o w i n t h e s y s t e m , i n t h e u s e o ff i ce a u t o m a t i o n s y s t e m a r c h i v e s p a s t c o n f i r m t h e m o d e l t h e f e a s i b i l i t y , f i n a l l y u s e s m a y t u rn ro u n d w i t h t h e r e u s a b l e c o m p o n e n t , t h e m e t h o d a n a l y s i s , m a n u f a c t u r e s t h e c o m p o n e n t . k e y w o r d : s o f t w a r e r e u s e ; r b a c m o d e l ; w o r k fl o w ; c o m p o n e n t 独创性声明 本人声明 所呈交的学位论文是本人在导师指导下进行的研究 工作及取得的研究成果。据我所知,除了文中特别加以标注和致 谢的地方外, 论文中不包含其他人己经发表或撰写过的研究成果, 也不包含为获得东北师范大学或其他教育机构的学位或证书而使 用过的材料。与我一同工作的同志对本研究所做的任何贡献均己 在论文中作了明确的说明并表示谢意。 学 位 论 文 作 者 签 名 : ih 如l- 日 期 : 学位论文版权使用授权书 本学位论文作者完全了解东北师范大学有关保留、使用学位 论文的规定,即:东北师范大学 有权保留 并向国家有关部门或机 构送交学位论文的复印件和磁盘,允许论文被查阅和借阅。本人 授权东北师范大学可以 将学位论文的全部或部分内容编入有关数 据库进行检索、可以采用影印、缩印或其它复制手段保存、汇编 学位论文。 ( 保密的学位论文在解密后适用本授权书) 学 位 论 文 作 者 签 名 :妞执扶 日期: 7 4 e r r . 2 6 指 导 教 师 签 名 : 石 z 叹 日期 : o s - s , 枯 学位论文作者毕业后去向: 工 作 单 位 : 划 晒一if i a a 1 通讯地址: 电话: 邮编: 引言 软件开发是一门 综合性学科, 它包括哲学、 基础科学、 技术科学、 工程管理四个 知识层次。 软件开发的初期阶段, 我们称为程序设计时代, 软件开发处于小作坊个体 生产方式水平。到了6 0 年代中期,出 现了一些大型复杂的软件系统,人们认识到以 个人的能力难以完成一个大系统的任务。w . e . d i j k s t r a首先提出了一种解决方案, 采用结构程序设计方法, 就是把软件开发看作数学求解,沿用数学上的枚举、抽象、 归纳、 类比 等思维方式, 把问 题简化。 用工程的概念、 方法、 原理和技术来开发和维 护软件, 产生了结构化分析和设计的方法。 这种开发方法长期左右着我国的软件开发, 无疑起到了重要作用, 然而它仍然存在着认知上的缺陷, 如开发周期长、 成本高、 质 量差, 特别是所开发的软件不能适应系统的不断演化。 到7 0 年代, 人们认识到, 仅从软件结构上脉络清晰是远远不够的, 这只是 “ 表”, 不是“ 里”, 软件在结构上还应该适应客观世界的自 然结构。 m . a . j a c k s o n 认为应用 软件应该忠于现实、 高于现实, 提出j s d 系统开发方法, 其指导思想是 “ 仿真客观世 界”, 采用自 底后上的 设计步骤o j s d 方法第一次揭示了客观世界与软件系统之间的 关系, 因而所开发的软件悟性好、 实用性强。 然而j s d 方法也存在着固有的缺陷: 如 何仿真要确定系统的实体和活动, 它没有给出 准则可循: 没有区分客观世界的模型和 软件系统模型, 不能直接映射过去, 其结果是系统结构混乱、 效率低,软件成份复用 性差。 到了8 0 年代,面向对象重新崛起,面向对象的认识论是将系统看成由多个对象 组成, 通过对象之间的通信形成了系统, 为客观世界过渡到软件系统提供了途径和编 程的思维方法。 当 前, 软件的 趋势是朝着更大更复杂的系统发展。 这部分地是因为计算机的处理 能力每年都在增大, 导致用户对它的期望更多。同时, 随着计算机应用日益普及和深 化, 正在运行使用着的计算机软件的数量以 惊人的速度急剧膨胀, 现代软件的规模越 来越庞大, 软件企业也面临着越来越激烈的市场竞争。 我们对强大、 复杂软件的需要 与软件开发的当前状况并不一致。 现在, 大多数人还在使用的旧方法来开发软件。 这 就是症结所在。 除非我们革新我们的方法, 否则, 我们无法达到开发当前所需的复杂 软件的目 标。 衡量一个成功的软件设计和开发的标准是: 软件质量好, 开发周期短, 投入资源 少。到达这个目 标有两条途径: 1 通过采用先进的开发技术和工具、提高软件开发人员的技术,来提高软件质 量。 2 .使用软件复用技术, 再利用已 有的高 质量的 软件开发成果拿来,以 提高软 件 的生产效率。 构件 ( c o m p o n e n t ) 是可复用的软件组成成份, 可被用来构造其他软件。 它可以 是被 封装的 对 象类、 类树、 一些功能 模块、 软件框架 ( f r a m w o r k ) , 软件构 架 ( 或体 系结构a r c h i t e c t u r a l ) 、 文档、 分析件、 设计模式 ( p a t t e r n ) 等。 构件分为构件类 和构 件实 例, 通 过 给出 构 件 类的 参 数, 生 成实 例, 通 过 实 例的 组 装和 控制 来 构 造 相 应 的应用软件。 构件技术把构件从系统逻辑中清晰地隔离出来, 可以用来开发复杂的系统, 组织 大规模的开发, 而且使得系统的造价更低, 稳定性更好, 并且更利于系统的维护, 所 以 构 件 技术 受 到了 人 们的 广 泛关 注。 软 件复 用 和i n t e r n e t 等 技 术的 发 展, 使 得 越来 越多的不同的 领域专家参与构件的开发、 测试, 大规模的可复用构件库的存在成为可 能, 构件用户通过各种渠道获得所需的可重用构件的机会也越来越大, 基于构件的软 件复用己成为软件工程的一个必行之路。 软件复用的思想提出得很早, 但在很长一段时间里, 软件复用整体上对软件产业 的 影 响 并 不 尽 如 人 意 , 其 中 的 原 因 很 复 杂 , 但 人 们 对 复 角 程 度 的 期 望 性 过 高 是 一 个 重 要 因 素 。 人 们 总 希 望 梅 够 得 到 通 用 度 尽 可 能 高 的 构 件 , 其 适 用 范 围 也 应 尽 可 能 地 广 泛 , 但过高的 要求就 会导 致 技术复 杂性太强, 实 现难度大, 应用前 景不乐观。 丰富的 应用 工 程知 识 有 益 于 获 褥需 求 规约、 设 计、 实 现 等 可复 用 信息, 便 于 领 域工 程各 个 阶 段的 抽象。 因此, 如果我们将复用研究工作主要集中 在某个熟悉的 特定领域, 力求开发在 该 领域内 复 用度 较高的 领 域构件, 那么, 今后 在该领 域内 开发 类似或相 近系 统时, 就 可以 将精力 集中 在每 个系 统的 特有成分上, 从而降 低开 发 成本, 提高 开发 质量和 效率。 本 课 题 的 研究目 标是 对r b a c 模型 进 行 扩展, 形 成时 间 敏感的r b a c 模 型 和 资 源 敏 感的r b a c 模型。 然后用于工作流系统中, 并利用o a 系统中的公文流转来验证模型的 可行性,级后使用可复用构件技术的概念分析、制作构件。 第一章、软件复用与构件 1 . 1 软件复用的相关概念 软件复用一词是由d . m e 工 t r o y 在1 9 6 8 年的n a t o 会议上首先提出的, 软件复用是 将己 有的软件及其有效成分用于构造新的软件或系统 , , 。它不仅是对软件程序的复 用, 还包括对软件生产过程中其它劳动成果的复用, 如项目 计划书、 可行性报告、 需 求分析、 概要设计、 详细设计、编码( 源程序) 、 测试用例、 文档与使用手册等等。因 此,软件复用包括软件产品复用和软件过程复用两部分的内容。 软件复用是指重复使用 “ 为了复用目的而设计的软件”的过程, 而可复用软件则 是指为了复用目的而设计的软件。 软件复用更强调的是复用的目的, 它是一种系统化 的方法, 为了复用而进行设计, 为了复用而开发, 并且要有效地组织和管理这些复用 产品,方便人们查找和使用,基于复用品进行开发。 软件复用不同于软件移植。 软件移植是指对软件进行修改和扩充, 使之在保留原 有功能、 适应原有平台的 基础上, 可以 运行于新的软硬件平台。 而复用则指在多个系 统中, 尤其是在新系统中使用已 有的软件成分。 软件复用可以有效的提高软件开发效 率, 提高软件质量, 降低软件开发和维护的成本, 是解决“ 软件危机” 一条可行的 道 路, , 。 软件复用是在软件开发中避免重复劳动的解决方案, 其出发点是应用系统的开发 不再采用一切“ 从零开始” 的模式, 而是以己 有的工作为基础, 充分利用过去应用系 统开发中积累的知识和经验,如:需求分析结果、设计方案、源代码、 测试计划及测 试案例等, 从而 将开发的 重点 集中 于 应用的 特有构 成成分3 。 通过软 件复 用, 在应用 系统开发中可以 充分的利用己 有的开发成果, 消除了包括分析、 设计、 编码、 测试等 在内的许多重复劳动, 提高软件生产率,同时, 通过复用高质量的己有成果,避免了 重新开发可能引入的错误和不当,从而提高软件的质量。 1 .2 软件复用的方式 目 前最有可能产生显著效益的复用是对软件生命周期中一些主要开发阶段的软 件制品的复用们 , 按抽象程度的高低, 可以 划分为如下的复用级别: i . 代码的复用。 包括目 标代码和源代码的复用。其中目 标代码的复用级别最低 历史也最久,当 前大部分编程语言的运行支持系统都提供了 连接 ( l i n k ) ,绑定 ( b i n d i n g ) 等功能 来支持这种复用。 源代码的复用级别略高于目 标代码的复用, 程序 员在编程时把一些想复用的代码段复制到自己 的程序中, 但这样往往会产生一些新旧 代 码 不匹 配的 错 误。 想 大 规模的 实 现 源 程序的 复 用 只 有 依 靠含 有大 量 可复 用 构 件的 构 件库。 如“ 对象链接 及嵌入” ( o l e ) 技术, 既支持在源程序级定 义构 件并 用以 构造 新的系统, 又使这些构件在目 标代码的级别上仍然是一些独立的可复用构件, 能够在 运行时 被灵活的 得新组合为各种不同的 应用. 2 . 设计的复用。 设计结果比 源程序的 抽象级别更高, 因此它的复用受实现环境的 影响较少, 从而使可复用构件被复用的机会更多, 并且所需的修改更少。 这种复用有 三 种 途 径, 第 一 种 途 径 是 从 现 有 系 统 的 设 计 结 果 中 提 取 一 些 可 复 用的 设 计 构 件, 并 把 这些构件应用于新系统的设计; 第二种途径是把一个现有系统的全部设计文档在新的 软 硬 件 平 台 上 重 新 实 现, 也 就 是 把 一 个 设 计 运 用 于 多 个 异 体 的 实 现; 第 三 种 途 径 是 独 立于任何具体的 应用, 有计划地开发一些可复用的设计构件。 3 . 分析的箕用。 这是比 设计结果更高级别的复用, 可复 用的分 析构件是针对问 题 域的某些事物或某些问题的抽象程度更高的解法,受设计技术及实现条件的影响很 少 , 所 以 可 复 用 的 机 拿 更 大 复 用 的 途 径 也 有 兰 种, 即 从 现 有 系 统 的 分 析 结 果 中 提 取 可复用构件用于新系统的分析; 用一份完整的分析文档作输入产生针对不同 软硬件平 台 和其它实 现条件的 多项设计; 独立于 具体应用, 专门 开发一 些可复 用的 分 析构 件。 4 . 测 试 信 息 的 复 用 。 主 要 包 括 测 试 用 例 的 复 用 和 测 试 过 程 信 息 的 复 用 。 前 者 是 把 一 个 软 样的 测 试用 例 在新 的 软 件 测 试中 使 用, 或 者在 软 件作出 修改 时 在新 的 一 轮 侧 试 中 使 用。 后 者 最 在 测 试 过 程中 通过 软 件工 具自 动 地记 录 铡 试的 过 程信 息, 包 括 测 试员 的每一个操作、 输入参数、 测试用例及运行环境等一切信息. 这种复用的级别j不便 和分析、 设计、 编程的复用级别作准确的比 较, 因为 被复 用的 不是同 一事物的 不同 抽 象层次, 而是另一种信息, 但从这些信息的形态看, 大体处于与程序代码相当的级别。 由 于 软 件 生 产 过 程主 要 是 正向 过 程, 即 大部 分软 件的 生 产 过 程是 使软 件 产品 从 抽 象级别 较高的 形态向 抽象 级别较低的形 态演化, 所以 较高 级别的复用 容易 带动 较低级 别的 复 用, 因 而复 用的 级别 越高, 可得到的回 报也 越大, 因 此分析结 果和设 计结果 在 目 前很受重视。 用户可购买生产商的分析件和设计件,自 己设计或编程, 掌握系统的 剪裁、扩充、维护、演化等活动。 1 . 3 软件复用技术 自 从软件复用思想产生以 来, 人们就致力与软件复用的技术的研究和实践。 其间 出现多种软件复用技术,如: 库函数,模板,面向对象、设计模式、组件、框架、构 架。下面是这些复用技术的 一些介绍和比 较5 1 1 .库函数, 库函数是很早的软件复用技术。 很多编程语言为了 增强自 身的功能, 都提供了大量的库函数。 对于库函数的使用者, 他只要知道函数的名称, 返回值的类 型,函数参数和函数功能就可以对其进行调用。 2 .面向对象,面向 对象技术是近三十年来学术界和工业界研究和应用的一个热 点。 面向对象技术通过方法、 消息、 类、 继承、 封装和实例等机制构造软件系统, 并 为软件复用提供强有力的支持。 面向对象方法已 成为当今最有效、 最先进的软件开发 方 法 。 与 函 数 库 对 应 一 很 多 面 向 对 象 语 言 为 应 用 程 序 开 发 者 提 供了 易 于 使 用 的 类 库 , 如 v c + + 中的m f c . 3 ,模板, 模板相当于工业生产中所用的“ 模具” 。 有各种各样的模板 ( 如文档模 板,网页模板等) ,利用这些模板可以比较快速地建立对应的软件产品。模板把不变 的封装在内部, 对可能变化的部分提供了 通用接口, 由使用者来对这些接口 进行设定 或实现。 4 .设计模式,设计模式作为复用设计信息的一种技术,在面向对象设计中越来 越来流行。 设计模式描述了 在我们周围不断重复发生的问 题, 该问 题的解决方案的核 心和解决方案实施的上下文。 设计模式命名一种技术并且描述它的成本和收益, 共享 一系列模式的开发者拥有共同的语言来描述他们的设计。 5 .构件, 基于构件的软件复用作为一种提高软件生产率和软件质量的有效途径, 一般来说, 基于构件的复用包括三个相关的过程:构件的开发、构件的管理和基于构 件组装的系统开发(e 7普通意义上的构件应是抽象的系统特征单元, 具有封装性和 信 息隐蔽, 其功能由它的接口定义。 构件可以是原子的, 也可以是复合的。 因此它可以 是函数, 过程或对象类, 也可以是更大规模的单元。 一个子系统是包含其它构件的构 件。 构件是可配置和共享的, 这是基于构件开发的基石, 且构件之间能相互提供服务。 6 .构架,构架式计算机软件构架的简称,是可以复用的、需要再扩展才能实现 的“ 半完成” 的软件。 构架提供应用域的可扩展的 模板, 它具有完整的结构, 基本的 元件和明确说明接口的组装其他构件或程序的扩展点。 构架也是一种构件, 可以 被组 装, , 。 了 框架,把软件的构建过程与传统的建筑过程相类比;框架的作用相当于为我 们的房屋搭建的 “ 架子, 。框架从复用意义上说,是一个介于构件和构架之间的一个 概念。构件,框架和构架的主要区别在于它们对复用的支持程度的不同。 1 .4 面向对象与软件复用 1 . 4 . 1 0 0 方法对软件复用的支持 支持软件复用是人们对面向对象方法寄托的主要希望之一, 也是这种方法受到广 泛重视的主要原因之一。 面向对象方法之所以特别有利于软件复用, 是由于它的主要 概念及原则与软件复用的要求十分吻合(e 7 面向 对象方法从面向 对象的编程发展到面向对象的分析与设计, 使这种方法支持 软件复用的固有特征能够从软件生命周期的前期阶段开始发挥作用,从而使00方法 对软 件复用的 支 持达到了 较高 的级别。 与其它软 件工 程方法相比, 面向 对 象方法的一 个重要优点是, 它可以 在整个软件生命周期达到概念、 原则、 术语及表示法的高度一 致。 这种一 致 性 使 得 各 个 系统 成 分 尽管 在不同 的 开 发 与 演 化阶 段有 不同 的 形 杏, 但 可 具有贯穿 整个软 件生命周 期的良 好映 射。 这一优 点使o d 方法不但能 在各个级别支 持 软件复用, 而且能 对各个级别的复用形成统一的、 高 效的支持, 达到良 好的全局效果。 做到这一点的必要条件是, 从面向 对象软件开发的前期阶段一 。 以 就把支持软件复 用作为一个重点问 题来考虑。 运用o o a 方法所定义的对象类具有适合作为可复用构件 的许多特征,o o a 结果对问题撼的良 好映射,使同 类系统的开发者容易从问题出 发, 在己 有的o o a 结果中发现不同 粒度的可复用构件zs 1 . o o a 模型 o d a 方 法建 立 的 系 统 模 型 分为 基 本 模型( 类图) 和 补充 模型( 主 题图 与 交 互图 ) , 强调 在o o a 基本 模型中 只 表示 最重要的系统 建模信息, 较为细节的 信息则 在详 细说明 中 结出。 这种 表示策 略使o o a 基 本模型体 现了 更商的 抽象, 更 容易 成为一 个可复用的 系统构架。 当 这个构架在不同的应用系统中复用时, 在很多情祝下可通过不同的详细 说明体现系统之间的 差异,因 此对系统构件的改动较少。 2 . o o a 与o o d 的分工 o o a 只 注!与 问 题域 及 系 统 责 任有 关的 信息 , o o d 考 虑与实 现 条 件有 关的 因 素。 这 种 分 工 使o q a 型 独 立 于 a 体 的 实 现 条 件 从 而 使 分 析 结 果 可 以 在 问 题 域 及 系 统 责 任 相同 而实 现 条件 互 异 的多 个 系 统中 复 用, 并为 从同 一 领 域的 多 个系 统的 分 析 模型 提 炼领域模型创造了有利条件。 3对象的表示 所有的 对象都用类作为其抽象描述. 对象的一切信息, 包括对象的属性、 行为及 其对外关 系等等都是 通过 对象 类来表示的。 类作为一 种可复用构件, 在运用于不同 系 统时,不会出 现因该类对象实 例不同而使系统模型有所不同的情况。 4 一 般一州特殊结构 引入对一般一一特殊结构中多态性的表示法, 从而增强了类的可复用性. 通过对 多态性的表示,使一个类可以在需求相似而未必完全相同的系统中被复用。 5 . 整体部分结构 把部分类作为可复用构件在整个类中使用, 这种策略的原理与在特殊 类中使用一 般类是一致的, 但在某些情况下, 对问 题域的映射比 通过继承实现复用显得更为自 然。 另外还可通过整体一 部分结构支持领域复用的策略一 从整体对象中分离出一组可在 领域范围内 复用的 属性与服务,定义为部分对象, 使之成为领域复用构件。 6 .实例连接 建议用简单的二元关系表示各种复杂关系和多元关系。 这一策略使构成系统的基 本成分 对象类) 以 及它们之间的关系在表示形式和实现技术上都是规范和一致的这 种规范性和一致性对于可复用构件的组织、管理和使用,都是很有益的。 7 .类描述模板 作为o o a 详细说明主要成分的类描述模板, 对于对象之间关系的描述注意到使用 者 与 被 使 用 者的 区 别 , 仅 在 使 用 者 一 端 给出 类之 间 关系 的 描 述 信 息。 达说 明 可 复 用 构 件之间的依赖关系不是对等的。 因此, 在继承、 聚合、 实例连接及消息连接等关系的 使用者一端描述这些关系, 有利于这些关系信息和由它们指出的被依赖成份的同时复 用.在被用者一端不描述这些关系,则避免了因复用场合的不同所引起的修改。 8 .使用 c a s e 由于使用c a s e 是对用户需求的一种规范化描述,因此它比普通形式的需求文档 具有更强的可复用性。 每个使用c a s e是对一个活动者使用系统的一项功能时的交互 活动所进行描述,它具有完整性和一定的独立性,因此很适于作为可复用构件。 1 . 4 . 2 复 用 技 术对0 0 方 法的 支 持 面向 对象的软件开发和软件复用之间的关系是相辅相成的。一方面,0 0方法的 基本概念、 原则与技术提供了实现软件复用的有利条件; 另一方面, 软件复用技术也 对面向 对象的软件开发提供了有力的支持u o 工 .类库 在面向 对象的软件开发中, 类库是实现对象类复用的基本条件。 人们己经开发了 许多基于各种o o p l 的编程类库,有力地支持了 源程序级的软件复用,但要在更高的 级别上实现软件复用, 仅有编程类库是不够的。 实现o o a 结果和o o d 结果的复用, 必 须有分析类库和设计类库的支持。为了更好地支持多个级别的软件复用,可以在o o a 类库、o o d 类库和o o p 类库之间建立各个类在不同开发阶段的对应与演化关系。即建 立一种线索,表明每个o o a 的类对应着哪个 ( 或哪些) o o d 类,以及每个o o d 类对应 着各种0 0 编程语言类库中的哪个o o p 类。 2 .构件库 类 库 可 以 看 作 一 种 特 殊 的 可 复 用 构 件 库 , 它 为 在 面 向 对 象 的 软 件 开 发 中 实 现 软 件 复用提供了一种荃本的支持。 但类库只能存储和管理以类为单位的可复用构件, 不能 保存其它形式的构件; 但是它可以更多地保持类构件之间的结构与连接关系。 构件库 中的可复用构件, 既可以是类, 也可以是其它系统单位; 其组织方式, 可以不考虑对 象类特有的各种关系, 只按一般的构件描述、 分类及检索方法进行组织。 在面向对象 的软件开发中, 可以提炼比 对象类粒度更大的可复用构件, 例如把某些结构或某些主 题作为可复用构件;也可以 提炼其它形式的构件,例如u s e c a s e或交互图。这些构 件库中, 构件的形式及内容比 类库更丰富, 可为面向 对象的软件开发担供更强的支持。 3 构架库 如果在某个应用领域中己经运用o o a 技术建立过一个或几个系统的。 以模型, 则 每个0 以模型都应该保存起来, 为该领域新系统的开发提供参考。 当一个领域已有多 个o o a 模型时, 可以 通过进一步抽象而产生一个可复用的 软件构架。 形成这种可复用 软件构架的更正规的途径是开展领域分析. 通过正规的领域分析获得的软件构架将更 准确地反映一个领域中各个应用系统的共性,具有更强的可复用价值。 4 .工具 有效的实行软件复用需要有一些支持复用的软件工具, 包括类库或构件/ 构架库 的 管 理、 维护 与 浏览 工具 , 构 件 提取 及描 述 工具, 以 及 构 件检 索工 具 等 等。 以 复 用 支 持为背景的o o a 工具和o o d 工具在设计上也有相应的 要求, 工具对o o a / o o d 过程的支 持 功能 应 包 括 : 从 类 库 或 构 件 / 构 架 库中 寻 找 可 复 用 构 件 ; 对 构 件 进 行 修 改 , 并 加 入 当 前的系统模型; 把当前系统开发中 新定义的类 ( 或其它构件) 提交到类库 ( 或构件 库) 。 5 .o o a 过程 在复 用技 术 支持 下 的o o a 过 程, 可以 按两 种 策略 进 行组 织。 第一 种策 略 是, 荃 本 保持某种o o a 方法所建议的o o a 过程原貌, 在此基础上对其中的 各个活动引 入复用技 术的支持:另一种策略是重新组织。 ) a 过程。 第 一 种 策 略 是 在 原 有 的 o o a 过 程 基 础 上 增 加 复 用 技 术 的 支 持 , 应 补 充 说 明 的 一 点 是, 复 用 技术 支 持下的o o a 过 程 应 增 加一 个 提 交新 构 件的 活 动。 即 在一 个 具 体应 用系 统 的 开 发 中 如 果 窄 c 了 一 些 有 希 望 被 其 它 系 统 复 用 的 构 件 , 则 应 该 把 它 提 交 到 可 复 用构件库中。 第二种策略的 前提是: 在对一个系统进行面向对象的分析之前, 己 经用 面向 对 象 方法 对该 系 绕所 属 的 领 域 进行 过 领域 分 析, 得 到了 一 个 用 面向 对 象 方 法 表示 的 领域构 架和一批类构件,并且具有构件/ 构架库、 类库及相应工具的支持。 在这种 条件下, 盆新考虑o o a 过程中 各个活 动的内 容及活动之间的关系, 力求以 组装的方式 产生o o a 模型,将使o o a 过程更为合理,并达到更高的开发效率。 1 . 5 构件定义及属性 1 . 5 . 1 构件的定义 构 件的 广 义定 义: 构 件 是 计算 机 软 件 构 件的 简 称, 是 在 软 件生 命 周 期 各阶 段 可以 被复用的软件实体, 它可以是设计、 代码或软件开发过程的其它产品. 如可组装的软 件 、 程 序 模 板 、 程 序 的 原 代 码 或 目 标 模 块 和 软 件 需 求 说 明 、 规 格 说 明 、 程 序 说 明 、 数 据说 明、 测 试说明 和铡 试案 例 等软 件成 分。 “ 复 用” 指 在同 一系 统的 其它 地方 或 另 一 个系统中使用已 有的软件构件ll。 0 0 技术是在, 数据+ 算法 的基础上提升了对事物的认识方法, 对象的概念符合人 们认识世界的习惯。 而构件的思想则更多地将重点从建模本身发展到对软件生产的考 虑, 即构件可以 在应用领域的软件生产中作为零件纳入新的体系中 被重用。 因 此, 构 件是0 0 思想的沿袭和扩展,认识事物的角度从对象个体本身上升到个体在群体中的 作用。 软件构件技术的出 现是在复杂软件系统的开发过程中 作为一个关键的元件。 当系 统变得越大, 越复杂和更有相关性, 在这些系统的开发和设计中的相关性和祸合特性 就变成了重要的驱动器。 实际上自 从软件出 现以来软件构件的概念就己 经被很好的应 用了,只是在后来的软件发展的挑战与应用中该概念得已明确的形成。 还有一些不同视角的构件定义: m i c h a e l s p a r l i n g的 构 件定义一 个软件构 件是 指物理上的 可执行的 软 件包, 有 着明 确的 和公开的接口定义【y o d s o u z a 和w i l l s 的构件定义: 一个相关的软件包, 该开发包能独立的作为一个独立的应用单元, 也可以同别的 构件一起组成一个更大的 应用系 统p 3 7 。 类 似的s z y p e r s k i 给出 构件的 定义如 下: 软 件构件是这 样一 种成分 单元, 具有明确的专门的接口 和清晰的上下依赖关系。 软件构件能独立的利用或作为第三方 软件的组成部分叫。 国内的一些研究者有构件的定义为, 通常把独立于特定的 程序语言和应用系统可 重用和自 包含的软件成分称为软件构件。 即“ 为了 复用的目 的而设计的软件” 中的“ 软 件” 就指软件构件 l5) 软件构件是可重用的用以 构造系统的软件单元, 可以 是被封装的 对象类、 一些功 能模块、 软件框架、 软件系统通模型和软件文档等。 在软件系统实现级, 软件构件和 软件本身并没有明确的界限, 一个构件在某种情况下可以作为独立的软件运行, 在另 一种情况下可以 和其它构件构成一个新的软件系统叫。 1 . 5 . 2 构件的 基本属性. i .构件是可独立配置的单元,因此构件必须自 包容。 2 .构件强调与环境和其他构件的分离,因此构件的实现是严格封装的,外界没 机会或没必要知道构件内部的实现细节。 3 . 构件可以 在适当的环境中 被复合使用,因此构件需要提供清楚的接口 规范, 可以与环境交互。 4 .构件不应当是持续的,即构件没有个体特有的属性,理解为构件不应当与自 身副本区别, 在任何环境中, 最多仅有特定构件的一份副本。 可以看出, 构件沿袭了对象的封装特性, 但同时并不局限在一个对象, 其内部可 以封装一个或多个类 原型对象甚至过程, 结构是灵活的。 构件突出了自 包容和被包 容的特性,这就是作为软件生产线上作为零件的必要特征i r7 1 . 6 可复用构件 软 件 构 件是 指 应 用系 统中 可以 明 确 辨 识的 有 机构 成 成分, 它 具 有 相 对 独 立 性、 互 换性和功能性的特征, 即软件构件不依存于某一个系统, 它可以被相同的构件所替换, 并且具有实际的功能意义。 可复用构件则是指具有相对独立的功能 和可复用价值的构 件。 可复 用构件应具备以下特征: 首先是有用性, 必须提供有用的功能; 其次是可用 性, 必须易于理解和使用; 第三是独立性, 一个可复用构件应该解决一个相对独立的 问 题, 或者解决一个大问 题中 某个相对独立的部分。 构件对外接口 应尽可能简单, 所 完成的功能应尽可能集中, 否则很难复用。 第四是可靠性, 构件自 身及其变形必须能 正确工作; 第四是适应性, 应易于通过参数化等方式在不同语境中进行配置, 第五是 标准化: 必须符合一定的标准, 否则它将很难在新的系统中被复用。 标准化对软件复 用是至关重要的: 最后是可移植性,能在不同的硬件平台和软件环境中工作。 第二章、领域工程 2 . 1 领域工程定义 领域工程是为一组相似或相近系统的应用工程建立基本能力和必备基础的过程, 它畏盖了建立可复用的软件构件的所有活动。 其中 领域 是指
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版中级注册安全工程师(注安师)考试题库全考点含答案
- 阿拉山口市2025-2026学年八年级上学期语文月考模拟试卷
- 安徽省池州市石台县2023-2024学年高一下学期期末考试化学试题含参考答案
- 2025 年小升初茂名市初一新生分班考试语文试卷(带答案解析)-(人教版)
- 一例胸腔积液患者的护理查房课件
- 河北省2025年房地产经纪人:业主义务考试试题
- 山西省2025年企业法律顾问考试:绩效考核管理试题
- DB21-T 1638-2025 城市轨道交通自动售检票系统技术规范总体要求
- 社区消防知识培训课件教学
- 2024-2025学年河南省南阳市唐河县人教版五年级下册期中测试数学试卷(含答案)
- 840DSL内部培训教案课件
- 九三学社入社申请书模板(最新版)
- 2022年高校教师资格证《高校教师职业道德》考试题库(全真题库)
- 教师培训课件怎样做好教学“六认真”
- NB∕T 10731-2021 煤矿井下防水密闭墙设计施工及验收规范
- 《用户体验要素》以用户为中心的产品设计课件
- 千方百剂操作流程
- DB32T 1553-2017 高速公路工程工程量清单计价规范
- 北师大版数学九年级上册全册同步练习附答案
- 国家赔偿法完整版教学ppt课件全套教程
- 《中华人民共和国职业分类大典》电子版
评论
0/150
提交评论