(计算机软件与理论专业论文)软件工程领域一种新型开发方法的研究与应用.pdf_第1页
(计算机软件与理论专业论文)软件工程领域一种新型开发方法的研究与应用.pdf_第2页
(计算机软件与理论专业论文)软件工程领域一种新型开发方法的研究与应用.pdf_第3页
(计算机软件与理论专业论文)软件工程领域一种新型开发方法的研究与应用.pdf_第4页
(计算机软件与理论专业论文)软件工程领域一种新型开发方法的研究与应用.pdf_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

s t u d y a n d a p p l i c a t i o n o f a n e w me t h o d i n t h e f i e l d o f s o f t w a r e e n g i n e e r i n g ab s t r a c t s o ft w a r e e n g i n e e r i n g m e a n s m a n a g i n g s o ft w a r e s p r o d u c t i o n , s t u d y , d e v e l o p m e n t , m a n a g e m e n t a n d s a f e g u a r d t h r o u g h t h e b a s e p r i n c i p l e a n d m e t h o d o f e n g i n e e r i n g s c i e n c e . i t i s a n e w s u b j e c t a m o n g s o ft w a r e s c i e n c e , s y s t e m e n g i n e e r i n g a n d m a n a g e m e n t e n g i n e e r i n g . d u r i n g m o r e t h a n 3 0 y e a r s d e v e l o p m e n t o f s o ft w a r e e n g i n e e r i n g , d e f e r e n t t h e o r y a n d m e t h o d c o n t i n u e t o e m e r g e , w h i c h g r e a t l y i m p r o v e s o ft w a r e p r o d u c t i v i t y a n d t h e s o ft w a r e s c i e n c e . h o w e v e r , m a n y u n c e rt a i n f a c t o r s i n s o ft w a r e s d e v e l o p m e n t l e a d t o l i m i t a t i o n s w h e n a p p l i e d i n p r a c t i c e . t h e t h e s i s f i r s t l y d i s c u s s e s t h e l i f e - c y c l e t h e o ry , p r o t o t y p e me t h o d , s t r u c t u r e d m e t h o d a n d o b j e c t - o r i e n t e d m e t h o d i n t h e s o ft w a r e e n g i n e e r i n g a r e a . we l l p o i n t o u t t h e i r a d v a n t a g e a n d l im i t a t i o n s i n p r a c t i c e o n e b y o n e . b a s e o n t h e s e m e t h o d s , w e l l p o s e a n e w s o ft w a r e d e v e l o p m e n t m e t h o d w h o s e m a i n b o d y i s o b j e c t - o r i e n t e d me t h o d , w h i c h i s b a s e d o n p r o t o t y p e me t h o d a n d c o m b i n e d t o s t ru c t u r e d m e t h o d . t h e n t h e t h e s i s w i l l d i s c u s s t h e f e a t u r e , fu n c t i o n , a n d t h e i m p l e m e n t a t i o n d e t a i l o f r e q u i r e m e n t a n a l y s i s a n d d e s i g n o f t h e n e w s o ft w a r e d e v e l o p m e n t m e t h o d . a ft e r th a t , w e l l a p p l y t h i s n e w s o ft w a r e d e v e l o p m e n t m e t h o d t o t h e d e v e l o p i n g p r o c e s s o f c a r d r e a d e r - a n a p p l y i n g s o ft w a r e u s e d f o r r e c o g n i z i n g e n g l i s h a n d c h i n e s e c a r d . t h e n w e l l d i s c u s s t h e s p e c i f i c i m p l e m e n t a t i o n , c h a r a c t e r a n d f u n c t i o n i n p r a c t i c e . a t l a s t , w e l l s u m ma r i z e t h e w h o l e t h e s i s a n d d r a w a c o n c l u s i o n . k e y w o r d : s o ft w a r e e n g i n e e r i n g , p r o t o t y p e me t h o d , s t ruc t u r e d me t h o d , o b j e c t - or i e n t e d me t h o d 引言 引 言 论文背景 7 0 年代中期以前,由于软件开发的个体化特征,使得软件复杂程度日益增大, 开发周期越来越长。用户对软件经常出现不满意的状况,也就是大家所熟知的 “ 软 件危机” 。为了摆脱软件危机的困境,北大西洋公约组织的科学委员会于1 9 6 8 年8 月 召开了有关的研讨会,首次提出了软件工程的概念,其基本思想是把经过时间考验 而证明正确管理技术和当前能够得到的最好的技术方法结合起来,采用工程的概 念、原理、技术和方法来开发和维护软件。 在软件工程的系统开发实践中, 探索和发展了许多指导系统开发的理论和方法, 如: 生命周期理论、 原型化方法、结构化方法、 面向对象的系统分析和设计法等等。 这些理论和方法都曾大大的促进了软件生产率的提高和软件科学的发展,都有其自 身的优点。 然而由 于系统开发过程的很多不确定性因素, 也就导致了各类方法应用 的局限性。 比如说,传统的结构化方法是软件工程领域最为成熟的方法,对于软件规模较 小,需求较明确的系统开发来说,采用该方法很有效;但碰到规模大、需求复杂易 变的系统开发时,它就无能为力了。面向对象的方法近十几年来发展很快,它从内 部结构上模拟客观世界, 采用对象的概念来对客观世界进行直接映象。对象不仅包 含数据, 还包含对数据操作的方法。它具有良 好的建模稳定性以及软件重用性。但 另一方面,它也有软件冗余部分多、系统内部的控制不清晰等缺点。尤其对于小系 统,从效率方面来看, 比结构化方法要低。 总之,一个软件系统的建设是一项工程的实施,将涉及诸多方面的问题。虽然 现行各种软件开发方法与理论有着这样那样的优点,但真正要做到实用、高效、全 面、生命周期长等特点,还需要开发人员的大量努力,根据实际系统的具体情况采 用更加全面、成熟的开发方法。 软件工程领域一种新型开发方法的研究与应用 论文结构 第一章,对软件工程领域几种开发方法进行探讨,在其基础上提出一种新型的 开发方法。 第二章,详细论述了这种新型开发方法特点、作用、以及需求分析、概要设计 阶段的实现细节。 第三章,把这种新型软件开发方法应用于c a r d r e a d e r 一 种用于中英文混合名片 识别的应用软件的开发过程中。在实践中探讨该方法的具体实现、特点与作用。 第四章,对全文进行总结。 软件工程领域一种新型开发方法的研究与应用 软件工程领域几种主要开发方法的探讨 第一章软件工程领域几种主要开发方法的探讨 自七十年代软件工程科学出现以来,各种方法与理论层出不穷,比较著名的 有软件生命周期理论、原型化方法、结构化方法、面向对象方法等。这些方法都曾 对软件科学的发展,软件生产率的提高起到极大的促进作用,但也或多或少具有一 定的局限性。在本文作者将给出一种以原型化方法为基础,面向对象方法为主,结 合结构化方法的新型开发方法,因而有必要在此先探讨一下这几种方法。 1 . 1 软件生命周期理论 传统的软件工程采用生命周期理论,从时间的角度对软件开发和维护的复杂 问题进行分解,把软件生存的漫长周期依次划分为若干阶段,每个阶段有相对独立 的任务,以简化工程技术管理要求,减轻管理工作负荷,提高管理质量, 从而达到 软件开发的目的。图1 . 1 是应用最广泛的软件工程生存周期模型一 瀑布模型软件开发 方法的示意图。 图1 . 1瀑布模型软件开发方法 瀑布式模型是先分析用户的需求,根据需求进行详细设计,编写程序代码、 测试模块和整个系统,交付使用并维护软件。当然,其中在编写程序代码时要注意 将整个系统划分成不同的功能模块, 然后进行组合。 这种模型适合于开发需求明确、 软件工程领域一种新型开发方法的研究与应用 软件工程领域几种主要开发方法的探讨 需求变化不大、规模较小的系统,但随着计算机应用范围的扩大及处理信息量的大 幅增加,其存在的问题也越来越明显,主要表现在两个方面: 1 .软件开发中的语义断层 这种语义断层造成了软件开发各阶段的过渡困难,使开发效率降低。 2 .不易适应需求变化 从图1 中看出,瀑布式模型要求用户首先要把软件需求定下来,作为整个软件 开发过程的出发点,并在以后的开发过程中尽量不予改变。但是,这要求是不合乎 实际情况的,因为在软件开发的初期阶段,用户和软件开发人员还没有深入进去, 用户还不清楚软件能做些什么,而软件开发人员也有可能对用户需求不够理解. 随 着软件开发的进展,双方彼此逐渐地熟悉对方的工作,必然导致软件需求的变化。 这使软件的可维护性降低,软件的实用性和寿命受到影响。 以瀑布式模型为代表的生命周期理论的这些缺陷,促使了诸如原型化方法、结 构化方法、面向对象方法的不断出现。但我们应充分认识到,生命周期理论对实现 软件生产的工程化起到了重要的促进作用,是未来软件开发方法的基础。 1 . 2 原型化方法 原型化方法,即原型开发模型通常称作快速原型 模型r p m ( r a p i d p r o t o t y p i n g m o d e l ) 、快速原型技术等,是为了克服瀑布模型的缺点而在8 0 年代初提出的一种软 件开发新方法。 飞 ,基本思想 一般认为,软件原型是软件系统的一个早期的、具体的可运行版本,它反映了 最终系统的部分重要特性。原型法的基本思想是首先确定用户的基本需求,在基本 需求分析完成后,在较短的时间里定义一个系统初始原型,然后利用原型来提炼用 户需求并修正和改进原型,逐步扩展,最后形成用户接收的原型系统。图1 . 2 a 是原 型化方法的模型,图1 . 2 b 是模型的细化。 软件工程领域一 种新型开发方法的研究与 应用 软件工程领域几种主要开发方法的探讨 图1 . 2 a原型开发模型 图1 . 2 b原型生存期 原型从本质上可分为两种类型:丢弃型原型和进化型原型。若从应用目的和场 合上来说,又可分为三种类型:研究型原型、试验型原型和进化型原理。其中,研 究和试验型原型被认为是可以丢弃的,因为当真正的系统实现后,这些原型就会被 丢弃。而在进化原型中,通过不断地提炼和修改,原型终究进化成最终产品,实际 上原型己变成了最终的系统。为此,在建立初始原型系统时常采取下述的作法: 原型系统仅包括未来系统的主要功能以及系统的重要接口。 为尽快向用户提供原型,开发原型时应尽量使用能缩短开发周期的语言和 软件工程领域一种新型开发方法的研究与应用 软 件 工 程 领 域 几 种l t 一 开 发ri m 亘 勺 士 主 竺一 - 一 一 工具。 通过对原型系统的建立和完善,作为帮助定义软件需求的一种手段。 2 ,优越性 强调了用户的参与:因为分析员不可能完全理解用户意图,很难适应实际 需要。而有些情况,很可能在原型需求分析时,用户自 身也未预料到或被 忽视。用户参与系统开发,可以培养一批有一定水平的系统维护人员,开 发者基本上可以免去系统维护这个阶段。开发过程中,用户单位主要参与 人员( 即原型解释人员) 的作用也是很关键的,他不仅要负责原型的解释、 补充和修改,而且还要对系统开发过程中的各个部分起监督和认可的作用。 每当一项相对独立的功能完成后,他应该认可该项功能,并签名以示负责, 同时还应向用户单位的高层领导汇报系统的进展情况等。 需求分析完善而彻底:原型技术的运用要点是,在设计过程中不断试验、 纠错、使用、评价和修改,获得新的原型版本,如此周而复始,逐步减少 分析和通信中的误解,弥补不足之处,进一步确定各种需求细节,适应需 求的变更,从而提高了最终产品的质量。 3 ,局限性 原型化方法在实际操作中的主要问题有两个: 它要求软件开发人员能迅速生成这些原型,但如果没有理想的有效工具支 持,其开发速度和进度会相当缓慢,特别是对大型复杂系统的原型,有可 能因原型的失败而导致失败。 原型化方法实际上是一个压缩或简化了的软件生存周期过程,其实现的策 略比较非形式化,对原型项目的控制和管理比较困难。 1 .3 结构化方法 结构化方法是基于软件工程生存周期的概念基础之上的,即结构化分析、结构 化设计和结构化程序设计,简写为s a - s d - s p 方法。在过去的三十多年中,人们在结 构化方法的研究及其应用上做了大量的工作。可以说,结构化方法是最为成熟、影 响最大的一种软件开发方法,直到现在,仍有6 0 %一7 0 % 的系统是用结构化方法开 软件工程领域一种新型开发方法的研究与应用 软 件 工 程 领 域 几 种 主 要 3 退友 ip d 一 1红 一 i ll 一一 . 发的。 1 ,基本思想 结构化方法采用 “ 自顶向下,逐步精化”的策略进行软件的分析与设计。其本 质是功能分解,围绕实现处理功能的 “ 过程” 来构造软件系统,从内部功能上模拟 客观世界。其主要工具是数据流图d f d ,通过不断将d f d 中复杂的处理分解成子数据 流图来简化问题。我们通过一个例子来看看结构化方法是怎样描述问题的。一个电 灯系统是由一个灯泡和一个开关组成的,我们用结构化方法所建立的模型如图1 . 3 a 所示: 图1 . 3 a电灯系统的d f d 2 ,优越性 结构化方法采用“ 自 顶向下,逐步精化” 的策略,围绕实现处理功能的 “ 过 程”来构造软件系统,使开发工作过程化、标准化。 结构化方法以数据流图d f d 为主要工具,通过不断将d f d 中复杂的处理分解 成子数据流图来构造模型,并辅以数据字典、加工说明等描述手段,增加 了软件规格说明的可读性和软件系统的可靠性。数据流图容易理解,有利 于开发人员与客户的交流。 从应用范围来看,结构化方法适用于数据少而操作多的问题。实践证明, 对于像操作系统这样的以功能为主的系统,结构化方法比较适应它。 从效率方面看,用结构化方法开发的软件运行效率较高。我们同面向对象 方法来比较。假设有两个对象a 和b ,它们有一个共同的操作p ,则在面向对 象方法中,就要把p 分别封装于a 和b ,这样p 的代码出现了两次,产生了冗 软件工程领域一种新型开发方法的研究与应用 软件工程领域几种主要开发方法的探讨 余。可以在a 和b 上增加一个父类以减小冗余,但如果父类太多势必影响运 行效率。若用结构化方法解决该问题,将a 和b 作为一个模块,p 作为另一个 模块c a 和b 都可以调用模块c ,这样既不产生代码冗余,又不降低运行效 率。 3 ,局限性 . 结构化方法是从软件开发人员的观点出发。假定一开始就能确定系统的需 求,而且这些需求不会发生变化( 或只允许很少的变化) 。这对于需求模糊 和需求易变的系统开发显然是不适合的。 结构化方法中数据与处理分离,使数据结构和构造程序一样复杂。随着计 算机应用范围的进一步拓展,要处理的数据类型和程序功能越来越复杂, 使得结构化方法难以适应新的要求。 结构化方法缺乏数据和代码保护机制,一个特定全程数据既可以被操作这 些数据的过程访问,也可以被其他过程访问;特定数据和特定过程缺乏保 护,一个外部过程可以轻易地修改或调用只能被特定过程修改或调用的数 据或过程, 这就给程序设计带来了不安定因素,一个不正常的数据修改或 者过程调用可能会破坏正常的程序执行流程或结果。 结构化方法缺乏代码重用机制,程序设计好后如果要对程序的功能进行修 改以进行代码重用,必然要修改已经设计好的源代码,而且全程变量的使 用导致修改工作经常是“ 牵一发而动全身” ,代码重用工作中过多的时间花 费在源程序的修改上。尽管有时功能接口 并没有发生变化,代码重用工作 也要修改己经设计好的源代码,程序代码的维护工作变得困难。 结构化方法设计的软件模块间调用复杂,各个模块h 相互依赖,这对于测 试和维护都造成了很大的困难。 1 .4 面向对象方法 面向对象方法与技术起源于面向对象的编程语言( o o p l ) . 8 0 年代大批o o p l 的出 现和不断提高标志着0 0 ( 面向对象) 技术开始走向繁荣和实用,8 0 年代后期到9 0 年代 相继出现了一大批关于面向对象的分析与设计的论文和专著,进入9 0 年代以来,在 软件工程领域一种新型开发方法的研究与应用 软 件 工 程 领 域 几 种 主 要 开 发 方 y 9 i l i _ 学术界,面向对象的方法与技术已成为最受关注的研究热点,越来越多的学术会议 和学术期刊把而向对象列为主要议题之一,并且每年都有许多关于面向对象的专著 出版。在产业界,越来越多的公司从传统的软件开发技术转向面向对象技术,并以 此作为提高公司形象和产品信誉的标志。这一切都向人们表明,9 0 年代的面向对象 方法己在计算机科学技术领域占据了无可争议的主流地位。 1 ,基本概念 面向对象方法的出发点是尽可能模拟人类习惯的思维方式,使开发软件的方法 与过程尽可能接近人类认识世界的方法和过程,也就是说,使得描述问 题的问题空 间与在计算机上解决问题的问题空间在结构上尽可能一致。它基于p a r n a s 的信息隐 蔽和c u t t a g 的抽象数据类型概念, 把系统中的所有资源( 包括数据、 方法以 及系统) 都看成对象,每个对象将一组数据类型和过程( 操作、方法) 封装在一起,使得这组 过程了解这一数据类型的处理,并在定义对象时可以规定外界( 其他对象) 在其上运 行的权限( 即可交互的消息) 。可用公式表示为: o b j e c t o r i e n t e d m e t h o d=o b j e c t s+c l a s s e s+i n h e r i t a n c e s+m e s s a g e s ( 1 ) 对象( o b j e c t ) 对一个信息及其相应处理的描述,它由属性和作用于属性之上的方法集组成, 其中的属性是反映对象当前的状态;而方法分为两类。一类是通过返回对象当前的 某个属性值来向外界反映对象当前的状态,另一类是通过改变对象的某些属性值来 改变对象当前的状态。 ( 2 ) 类( c l a s s ) 用来描述具有相同属性和方法的对象的集合,它定义了该集合中的每个对象所 共有的属性和方法,是建立对象的模板或蓝图,也就是说,类是对一组对象的抽象 概括,而每个对象都是某个类的一个具体的实例。 ( 3 ) 继 承( i n h e r i t a n c e ) 用来说明子类( 派生类) 和父类( 基类) 的关系。通常下层的派生类具有和上层的 基类相同的特性( 包括数据和方法) 。 ( 4 ) 消息( m e s s a g e ) 软件工程领域一种新型开发方法的研究与应用 软件工程领域几种主要开发方法的探讨 用于请求对象执行某一处理或回答某些信息的要求,是对象执行类中所定义的 某个操作的规格说明,用于表征对象间相互关系,面向对象程序的执行通过在对象 间传递消息来完成。 不同于结构化方法从内部功能上模拟客观世界,面向对象方法从内部结构上入 手。这里的对象是客观世界的直接映象。对于上一结所述电灯系统的建模问题,我 们现用面向对象方法中的o m t 方法分析如下图1 . 4 a : 电大 i 开关灯泡 亮灭 开关 图1 . 4 a电灯系统的对象图 2 ,面向对象方法的基本特征 ( 1 ) 封装性( e n c a p s u l a t i o n ) 封装是一种组织软件的方法。它的基本思想是把客观世界中联系紧密的元素及 其相关操作组织在一起, 构造具有独立含义的软件实现, 使其相互关系隐藏在内部, 而对外仅仅表现为与其它封装体间的接口( i n t e r f a c e ) 关系,封装的目的是信息隐 藏。对象是按照封装的方法构造的与客观世界具体成分相对应的软件模块,对象中 封装的是属性和方法,类是对对象的抽象及描述。类中定义的属性以及方法可以分 为公有的( p u b l i c ) 和私有的( p r i v a t e ) ,私有的属性和方法只能被类内部定义的方 法访问或调用, 只有公有的属性和方法才能成为类的接口, 被外部过程访问或调用。 这样就防止了一个不正常的数据修改或者过程调用破坏正常的程序执行流程或结果 的情况。 软件工 程领域一种新型开发方法的研究与应用 软件工程领域几种主要开发方法的探讨 ( 2 ) 继 承 性( i n h e r i t a n c e ) 继承用于描述类之间的共同性质。它减少了相似类的重复说明,体现出了一般 化及特殊化的原则。继承提供了一种明确表述共性的方法,使得程序员对共同的属 性以及方法只说明一次,并且在具体的情况下可以扩展细化这些属性及方法。继承 对于软件开发有许多好处: 软件复用性:如果一个操作是从另一个类继承来的,这个操作的所有源代 码不用重写。 代码复用:面向对象程序设计中存在多层次的代码复用,在一个层次上, 许多不相千的程序员及项目 可以使用相同的类。 界面接口( i n t e r f a c e ) 的一致性:当许多类都从同一类继承时,在所有情况 下,这些类继承的操作都是相同的,这样就很容易保证相似的类的界面也 是相似的。 ( 3 ) 多态性( p o l y m o r p h i s m ) 在程序设计语言中,多态性指相同的语言结构可以代表不同类型的实体或者对 不同类型的实体进行操作。在面向对象程序设计语言中, 对于类和对象之间的继承 关系有一种独特的多态现象:如果类p 是类s 的父类,则子类s 的一个对象s 可以用在 父类p 的一个对象p 所使用的任何地方,这就意味着一个公共的消息集( 即操作) 可以 送到类p 和类s 的对象上, 这正体现了多态性。 多态性与语言的运行时链接( r u n - t i m e l i n k )有关,运行时链接表示系统在运行期间根据接收对象的类型将一个选择器和 实现它的特定方法链接在一起, 这种链接方式比 起编译时链接( c o m p i l e - t i m e l i n k ) 在实现多态性方面具有很大的方便性和灵活性。多态性的优点在于:高层代码( 算 法) 只写一次,而通过提供不同的底层服务来满足复用的要求。在面向对象的程序 设计中,各种多态性方法以及其它方法相组合使用可以大大提高代码复用及共享。 3 ,面向对象程序设计的基本过程 面向对象方法由面向 对象分析、面向对象设计和面向对象程序设计,即o o a - o o d - o o p 组成,其实现的基本过程如图1 . 4 6 : 软件工程领域一种新型开发方法的研究与应用 软件工程领域儿种主要开发方法的探讨 用对象构造系统框架 建立类的层次结构 分析并确定对象类 图1 .4 b面向对象方法实现过程图 ( 1 ) 面向对象的分析( o o a ) 分析现实世界问题内所涉及的对象、 对象之间的关系和作用,然后构造该问题 的对象模型,并且力争这个 “ 模型”能真实地反映出所要求解的实质问题,即通过 数据抽象和过程抽象确定对象的意义和行为,尽可能早地避免考虑一些细节,实现 现实世界到概念模型的面向对象转化。 ( 2 ) 面向对象的设计( o o d ) 根据所应用的面向对象软件开发环境的功能强弱,以最少地改变原问题对象模 型为原则对它进行一定的改造,实现概念模型到计算机模型的面向对象转化。 ( 3 ) 面向对象的实现( o o p ) 它是软件具体功能的实现,是对对象的必要细节加以刻划,是面向对象程序设 计由抽象到具体的实现步骤,即实现最终用面向对象的编程实现该模型。 4 ,优越性 同结构化方法的第一项优点一样,面向对象方法采用对象和类这些统一的 概念来构造软件系统,使开发工作过程化、标准化。 面向对象方法需求分析彻底,而且它是根据稳定的对象建立系统模型,因 而中心模型往往很稳定,可以很好地适应需求的变化。 面向对象方法的封装性,避免了传统程序设计中数据和操作的潜在的不一 致性,它通过隐藏细节减少了程序代码间的相互依赖性,方便了对象的构 造和扩充,极大的增加了可维护性。封装的另一作用是把对象作为一个不 可分割的整体,便于编程人员进行抽象思维。 软件r程领域一种新型开发方法的研究与应用 软件工程领域几种主要开发方法的探讨 面向对象方法的继承性和多态性大大提高了软件的可重用性。而且,通过 继承,当要对软件进行扩充时,可以从类库中直接派生新类,并为该新类 添加相应的代码即可。使用这种方式进行软件扩充,由于不需要了解原有 程序的内部细节,原有程序也无需进行修改,大大提高了软件的可靠性与 安全性。 在面向对象方法中,对象之间一般通过消息建立相互之间的联系。对象根 据消息的不同,选择对象的不同方法对消息进行处理和响应,从而实现对 操作过程的间接调用。每一个对象相当于一个信息处理中心,接受并处理 各种消息。 这种方式是多任务系统的一种具体实现,构成了面向对象程序 设计方法的核心。这种方法带来的最重要的变革在于帮助软件系统摆脱了 原有面向过程的程序设计方法的缺陷,使得应用程序之间的通讯标准化。 这种方式使应用程序之间、不同系统之间实现协同工作成为可能。这一结 构导致系统的开发方式由 独立开发为主转变为系统集成为主。 5 ,局限性 面向对象方法仍然是一种非形式化方法,其对象的确定有时也会因客观边 界模糊而难以确定,这样就很难保证软件描述的正确性。 对于数据库、信息管理等需求易变、模糊的系统,用面向对象方法非常有 效。但对于那些需求明确,规模较小,或者数据少而操作多的问题,面向 对象方法就显出 其效率低下,软件冗余部分多的缺陷来了。实践证明,此 时采用结构化方法比较有效。 总的说来,尽管面向对象思想提出了一些很明显的优点,但它也无可避免的具 有很多问题:它并不能单独地在总体上处理表述许多与系统开发问题领域有关的问 题。流行的面向对象方法普遍不能克服传统的结构化方法的主要局限性,更不能想 象 “ 对象”将会解决伴随系统开发而来的所有问题,因为系统开发的本质困难是不 可回避的。笔者相信,面向对象方法应该被视为对软件开发者具有潜在用途的另外 一种方法,只是方法集成策略的一个方面。作为一种新的系统开发策略,它应该和 己存在的策略互相补充、 互为协调, 而不是消除系统开发的实质性困难的万能方法。 软件工程领域一种新型开发方法的研究与应用 软 件 工 程 领 域 几 种 主 要 开 义 鑫 友 丛 a 于 n ; 上一一一一一一 一 一- 一 - 一一 下面, 本文将结合软件工程中各种开发方法的长处, 提出一种以原型化方法为基础, 以面向对象方法为主,结合结构化方法的新型软件开发方法。 软件工程领域一种新型开发方法的研究与应用 一种新型软件开发方法 第二章一种新型软件开发方法 本章将对我们提出的这种新型软件开发方法进行详细的论述。我们首先介 绍其基本思想,然后按生命周期理论划分的需求分析与概要设计两阶段对其实 现过程进行详细的论述。 a . 1 基本思想 由上一章的论述我们可以看到,传统的结构化方法是软件工程领域最为成 熟的方法,对于能够预先指定需求的系统开发,采用该方法最有效,但对于需 求模糊或需求易变的系统开发,实践证明这种方法是不适用的。 原型化法在充分了解用户需求的基础上快速开发出原型,该原型包含目 标 软件的关键问 题并反应目 标软件的大致面貌,软件开发者可利用原型得到系统 可用性的反馈信息,未来用户也可以 利用原型得到宝贵的早期经验,从而尽早 获得更完整、更正确的需求与设计。这极大的方便了系统开发者与最终用户的 沟通,因而能开发出最终真正满足用户需求的系统。但传统的原型化方法对于 系统的需求分析与设计缺乏有效的方法,软件开发人员往往是根据其以往的经 验来构建软件原型,而这些经验是难以总结和获取的,这也增加了软件维护和 重用的难度。 面向 对象方法在需求分析、可维护性、可重用性这几个软件开发的关键环 节和质量指标上有了实质性的突破,解决了传统软件工程很难解决的一些问题。 它提供从需求分析、设计到实现的一致的表示方法,从而增加了开发者之间、 开发者和用户之间对系统的共同理解。 我们提出的这种新型的软件开发方法是建立在原型化方法的基础之上,以 面向对象方法为主,结合结构化方法。首先,通过对系统规模和需求性质的分 析决定是采用结构化方法还是面向对象方法来进行需求分析,然后通过迅速开 发原型来和用户进行充分的沟通,以达到对需求的彻底而全面的分析。接下来, 放弃对需求分析阶段开发原型的演进,转而结合面向对象方法或结构化方法进 入概要设计阶段,利用这些方法的优点对软件整体结构进行完善、一致的描述, 达到良 好的可维护性与可重用性。 下面我们来对该方法的需求分析阶段与概要设计阶段进行详细的论述。 软件工 程领域一种新型开发方法的研究与应用 一种新型软件开发方法 2 . 2 需求分析阶段论述 根据软件生存周期的划分,需求分析阶段的目的是得出目 标系统 “ 做什么” 的结论。该阶段的产品是对系统创建的一系列模型和各模块对应的原型。实现 过程如图2 . 2 a 所示: 小,不明确大,明确 软件规模大,需 求明确? 结构化分析面向对象分析 图 2 .2 a需求分析实现过程 2 . 2 . 1 可行性分析 我们这里所说的可行性分析,是指根据系统的性质,来决定是采用结构化 方法还是采用面向对象方法来进行需求分析。我们给出下面两种判断依据: 结构化方法适合于软件规模小、需求明确的系统;而软件规模大、需求模 糊易变的系统,适合使用面向对象方法。 结构化方法适用于数据少而操作多的问题,如操作系统的设计:而面向对 软件工程领域一种新型开发方法的研究与应用 一种新型软件开发方法 象方法则适用于数据库、信息管理等以数据为主而操作较少的系统。 经过具体问题的具体分析,选择了合适的方法后,我们就要进入系统建模 阶段,来构造系统模型。 2 . 2 .2 系统建模 这个阶段是对系统进行建模。我们对结构化分析方法不再论述,而专注于 讨论面向对象分析方法。这里我们选择面向对象技术中的o mt 方法。 一、o mt 方法概述 o m t ( o b j e c t m o d e l i n g t e c h n i q u e ) 方法是美国通用电 力研究和发展中 心的 l a m e s 等人建立的,它是众多面向 对象方法中较为出色的一种。 它通过自 底向上 的归纳和自 顶向下的分解相结合,以对象建模为基础,从而不仅考虑了输入、 输出数据结构,实际上也包含了所有对象的数据结构,达到了在需求分析、可 维护性和可靠性这几个软件开发的关键环节和质量指标上的实质性突破。 o m t 方法覆盖了软件开发中的分析、设计和实现三个阶段。它具体包含下面 四个步骤: . 分析:基于问题和用户需求的描述,建立现实世界的模型。 . 系统设计:结合问题域的知识和目 标系统的体系结构 ( 求解域) , 将目 标系统分解为子系统. . 对象设计:基于分析模型和求解域中的体系结构等添加的实现细节, 完成系统设计。 . 实现:将设计转换为特定的编程语言或硬件,同时保持可追踪性、灵 活性和可扩展性。 o m t 支持三种基本模型, 这些模型贯穿于每个步骤,在每个步骤中被不断的 精化和扩充。这三种模型是: . 对象模型,用类和关系来刻画系统的静态结构。 . 动态模型,用事件和对象状态来刻画系统的动态特性。 . 功能模型,按照对象的操作来描述如何从输入给出输出结果。 o m t 方法的中心思想就在于从这三个不同的角度和观点对所要考虑的系统进 行建模。o m t 的创建者认为这三个模型足以包括典型的软件开发的整个过程。 例 如:数据结构可用对象模型来表示,在某一时刻的操作序列可用动态模型来表 软件工程领域一种新型开发方法的研究与应用 一种新型软件开发方法 系统管理员;负责整个系统的维护。 程序员:负责他所对应的模块的修改和维护。 最终用户:负责他所对应的模块的修改和维护。 具体权限设置如表1 : 表1 三级权限表 系统管理员程序员最终用户 应 用 程 序 对 象 增加 修改 删除 x 应 用 增加 修改 删除x 注: “ ” “x , “ ” 表示所对应的部分具有操作权限; 表示所对应的部分没有操作权限; 表示所对应的部分如果由自己开发或使用则具有操作权限; 按照传统的原型化方法,经过程序开发人员与用户的共同 修改得到的原型, 经过进一步的具体化可以演进为目 标系统。但我们这里的原型开发的目的是为 全面彻底的需求分析而服务的, 所以 现在放弃这些用于需求分析的原型,转而 根据生命周期的阶段划分,进入概要设计阶段。 2 . 3 概要设计阶段论述 概要设计阶段的任务是制定解决问题的策略并为实现解决方案打下整体基 础。在我们这里就是对上一阶段经过需求分析建立起来的系统模型,设计并构 造其解决方案。 当然,分析和设计应该说是一个连续的过程,很难把二者截然分开。但是 我们应该记住分析与设计之间的区别,这一点非常有用。在作出一项决定前应 该先问问自己,这个决定是与问题域有关还是与实现域有关?所得到的答案能 软件工程领域一种新型开发方法的研究与应用 一种新型软件开发方法 帮助我们作出正确的决定,并在整个应用开发过程中包持可回溯性。 结构化设计是把结构化分析得来的数据流图转化为一个个功能模块,把数 据字典转化为数据结构。我们这里不再详述。我们的重点仍然是面向对象设计 方法中的o m丁 方法。 o mt 方法的设计阶段包括两个方面:系统设计和对象设计。下面我们将一 一进行详细论述。 2 .3 . 1 系统设计 系统设计是对解决方案的高层体系结构的设计。它主要包括:高层系统决 策,基础软件系统结构决策,解决方案的结构化。 系统设计包括下面步骤: ( 1 )解决方案的结构化,也即把目 标系统分解为子系统: . 结合问题域的知识和目 标系统的体系结构 ( 求解域) ,将目 标系统分解 为子系统。 . 把分解的子系统分配到系统的各个构造模块中去。 ( 2 )系统决策: . 选择系统实现的平台。 . 选择合适的数据存储方法。 . 选择合适的技术和产品实现主要的系统构造模块。 . 构造物理结构,以 对实现平台和编程模块给出逻辑系统和应用部件的分 布。 图2 . 3 . 1 a描述了系统设计的概况: 软件工程领域一种新型开发方法的研究与应用 一种新型软件开发方法 图2 .3 . 1 a系统设计的概况图 图2 . 3 . 1 b描述了实现系统设计的基本步骤: 完成 把系统分解为 子系统 把子系统分配到 各个构造模块中 选择系统实现的 平台 选择合适的数据 存储方法 为各模块选择合 适的技术和产品 构造物理结构 图 2 .3 . 1 b系统设计基本步骤图 软件工程领域一种新型开发方法的研究与应用 一 种新型软件开发方法 1 ,把目 标系统分解为子系统 子系统这个词用来指一组关联紧密的类。之所以要把目 标系统分成许多子 系统有以下原因: . 简化复杂的设计工作 ( 分而治之) . 可以由多个或多组设计者分担设计任务 . 将设计者任为可能要改变的设计决策独立出来 . 区分所提供的服务不同的抽象层次 . 确定单元的分布 ( 对分布式对象应用) 如果子系统成功地进行了抽象,使应用结构更易于理解,就达到了第一个 目 标。 如果设计小组之间依赖性不强( 即如果他们不是很依赖彼此的设计决策) , 可以达到第二个目 标。 将应用的目标系统划分为子系统时的一条准则是划分的方式应使子系统间 信息流最小。 设计应用系统结构时即使用分块又使用分层技术。一开始,把应用分成垂 直的子系统,这些子系统 ( 类)提供了应用基于功能分块的基础. 而每个子系统又可以 通过分层子系统的方式进行组织。许多良 好的工程系 统是用层次的方法构造的. “ 一个分层系统是虚拟世界的一个有序集合,每一个 系统都根据其下的一个系统进行构造,又为其上的一个系统提供实现基础。 ”一 个分层的应用结构能帮助产生更简洁、移植性更好的设计。 一个层次可再划分成许多模块,这样所得到的将是一个分层和分块相结合 的应用系统结构。 下图2 . 3 . 1 c 描述了划分子系统的过程: 软件工程领域一种新型开发方法的研究与应用 一种新型软件开发方法 图2 .3 . 1 c划分子系统过程图 2 ,系统决策 要让应用系统能够工作,首先必须选择实现应用设计的系统平台和总体结 构。换句话说,逻辑系统结构必须映射到实现系统环境.然后选择合适的数据 存储方法。再为各个主要的系统构造模块选择合适的技术和产品。最后构造物 理结构,以对实现平台和编程模块给出 逻辑系统和应用部件的分布。 2 .3 . 2 对象设计 对象设计包括精化和勾勒出对象细节的过程。主要产物是细化的对象模型。 系统分析中应用分块时得到的子系统也可以作为在开发者之间分配开发任 务的单位。由于子系统之间的依赖性较弱,开发者们可以独立地开发所分配的 子系统,到系统集成阶段再把这些子系统合而为一。 在分析过程中,对于对象模型中的每个类定义了属性 ( 对象负责维护的知 识)和对象必须向其他类提供的服务。对象模型还显示了类之间的关联 ( 即每 一类对象的关于其它类的知识) 。 在上述基础上着手设计所需的实现域类:为每个子系统确定实现类并刻划 细节。 构成运行应用系统的对象类集合往往比分析阶段所确定的类集合大的多。 软件工程领域一种新型开发方法的 研究与应用 一种新型软件开发方法 分析阶段对象模型中确定的初始应用类只代表应用的核心业务行为,我们必须 设计其他实现域类以提供应用的实际功能。实现应用所需的额外的类包括表示 用户界面的类和提供服务功能 ( 例如输入数据验证,数据库操作和通讯界面) 的服务类等。设计者在具体设计时很可能需要创造一些这种实现域类。 对象设计包括下面步骤: . 对于功能模型中的每一个功能和动态模型中的每一个事件定义操作,来 补充对象模型。 . 为操作设计实现算法。 . 增加与删除类。显然,设计阶段的对象模型将包括额外的实现域类,但 是分析阶段确定的一些类可能不再合适,他们将被删除。可能要创建超 类或抽象类以将公共特性和行为抽象出来,己进行一般化或复用。 . 调整继承关系。 . 为属性定义值的类型,值域和初时值为了实现做准备。我们需要为属性 定义上述内容。 . 设计关联的实现。 . 精化类关系。 下图 2 .3 .2 a 是对象设计的概述: 图2 .3 .2 a对象设计概述图 软件工程领域一种新型开发方法的研究与应用 一种新型软件开发方法 下图2 . 3 .2 b 是对象设计的过程描述: 图2 .3 .2 b对象设计过程图 “ 正确的”设计不是一次就能得到的,错误是存在的。必须要进行原型设 计工作才能发现其中的一些错误。 在实践中,设计和原型设计是反复进行的, 直到得到一个满意的设计。 软件工程领域一种新型开发方法的研究与应用 11 用x 13 工 一- 一 一一 第三章应用实例 在本章中我们将要提供一个基于应用软件 c a r d r e a d e r 的实例。它的主要目 的是举例说明前面所介绍的软件开发方法的使用。 3 . 1 c a r d r e a d e r 简介 c a r d r e a d e r 是一个面向最终用户的,中英文名片混合识别管理

温馨提示

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

评论

0/150

提交评论