您现在的ä½�置:考试大 >> å»ºç­‘工程 >> å»ºç­‘周边 >> è¡Œä¸šè§†ç‚¹ >> æ–‡ç« å†…容

快速适应项目中的需求�化与软件�用

æ�¥æº�:考试大  2010å¹´2月26æ—¥   ã€�爱学习,爱考试大】
  软件å¤�用本质是为了快速适应ä¸�æ–­å�˜åŒ–的需求(adapt to changing needs ï¼‰ï¼Œä¸¤è€…目标是一致的,但是当我们过于注é‡�软件å¤�用(如组件å¤�用component reuseå�ˆè¯‘构件å¤�用)时,å�ƒä¸‡éœ€è¦�牢记:快速适应ä¸�æ–­å�˜åŒ–的需求是根本目的,它的é‡�è¦�性è¦�é‡�于组件å¤�用技术本身。本文试图é˜�述两者概念比较以å�Šæ—¶ä¸‹æµ�行的组件å¤�用技术概è¦�。
  适应需求�化现如今是一个计划赶�上�化的时代,�业竞争力��表现在�业适应�化能力的竞争,�能更快适应市场的�化,�就能够在竞争中胜出,这�快速适应能力如果�“人民战争�无疑是�现实的,软件�以帮助我们�适应这�快速�化。
  谈到这里,ç¨�å¾®å†�说明一下国人软件教育的误区,ä¸�错,软件曾ç»�是科学计算的工具,因此,我们é�žå¸¸æ³¨é‡�软件的算法和数æ�®ç»“构,甚至将之作为数学的è¡�生物,但是,现如今已ç»�æˆ�为一ç§�帮助我们快速å“�应å�˜åŒ–的有力工具,如果我们的教育背景中å�ªæœ‰ç®—法和数æ�®ç»“构,能够编制出应付快速å�˜åŒ–的软件å�—?很显然,他们是风马牛ä¸�相å�Šï¼Œç”±æ­¤å�¯è§�国人软件概念和软件教育的è�½å�Žæ€§ï¼Œåœ¨è¿™æ ·çš„软件认识背景下,固然设计模å¼�的崇高ä½�置得ä¸�到确立,软件设计被抛弃在脑å�Žï¼Œç¼–制出的大多数ä¼�业软件系统根本ä¸�具备应付å�˜åŒ–的能力,程åº�员拒ç»�频ç¹�更改程åº�,甚至借助技术原因阻扰软件的频ç¹�更改,这ç§�软件程åº�员和软件用户之间的矛盾å�¯ä»¥ç§°ä¸ºmiscommunication, miscommunication是导致软件系统的失败一个é‡�è¦�原因。
  国内早就有著�言论:“�上ERP等死;上了ERP找死�,如果你的�业�上ERP,那么你的�业就�能借助软件应付快速的市场等环境�化,那么必然会被淘汰;但是,如果上了一个�注�“适应需求�化�的ERP软件系统,那就是�业被僵化的ERP软件框死,丧失了使用ERP的根本目的。
  适应需求�化则�为现代软件系统一个孜孜�倦的追求目标,那么如何实现呢?
  原则:给予人们�以�剪他们系统的能力应适应需求�化,建立一个适应需求�化的系统,�许系统在一系列�的��控制的步骤上进行改�。
  组件诞生将��的通用的东西抽象出�,以达到在��项目中�用�用,将我们有�的精力集中在项目具体�化和特点上。当然这些抽象�用的东西之间彼此必须是�耦�,这样�能根�需求挑选组�。
  让我们先回顾一下软件的�展�,软件开�的�展�实际是一部我们�维�断抽象拔高的�展过程,这�抽象概念�常类似于建模的�考方�:概�贴切地�述事物,忽视次�的细节。抽象体现在软件开�上就是�个具体项目需�完�的代�行数�越�越少。
  从1970到1980这段时间,软件开�从机器语言到汇编语言。进而�展到高级语言,甚至一些CASE工具,��功能编程�展到��对象编程,功能模��用细化到类的�用,类的�用是�是通过设计模�实现的。
  进入90年代中期,诞生了基于组件的开å�‘模å¼�(CBD:component based development),CBD将抽象概念带往了一个新的方å�‘,与å‡�少代ç �æ•°é‡�相å��,CBD将功能å�„个方é�¢ç»†åŒ–分离到ä¸�å�Œçš„ã€�相互隔离层中,如表现层ã€�业务逻辑层ã€�æŒ�久层ã€�安全层以å�Šæ ¸å¿ƒå±‚等,并且å�¯ä»¥ç®¡ç�†è¿™äº›ç»„件之间的ä¾�赖关系,通过这ç§�分离,我们å�¯ä»¥æ��纯细化组件功能,进而产生å�¯ä»¥é‡�用的框架,如Struts框架å�¯ä»¥é‡�用在大部分应用系统的表现层中,,Struts+JdonFramework+Hibernate是一个框架组å�ˆï¼Œä»£è¡¨ä¸€ç§�架构设计,这ç§�架构设计其实å�¯ä»¥é‡�用在大部分应用系统,这ç§�é‡�用我称之为架构级别é‡�用。
  组件å¤�用软件组件(Software components)是软件æ��供业务或技术功能的基本å�•元或元素,这些å�•å…ƒå�¯ä»¥ç‹¬ç«‹åœ°è¢«éƒ¨ç½²ã€�他们å�¯ä»¥è‡ªæˆ‘管ç�†å¹¶ä¸”被虚拟部署到网络的任何地方,业务组件((Business components)执行业务逻辑ã€�é�µå¾ªä¸€å®šçš„业务规则并且管ç�†ç›¸åº”的数æ�®ï¼ˆæ•°æ�®åº“æ“�作称为manage corporate data);而技术组件(Technical components)则æ��供相应的平å�°ä»¥ä¾¿ä¸šåŠ¡ç»„ä»¶å�¯ä»¥ä¾�赖其上è¿�行,例如æ�ƒé™�ã€�组件管ç�†ç­‰ã€‚
  JdonFramework/Spring都属于一�技术组件框架,而我们具体项目的业务层代�如果能够�炼�以�用,则是业务组件;JdonFramework/Spring则都�供了业务组件赖于�行的一些核心底层机制,特别是组件的管�,如组件的创建�组件的获得�组件的资�管��组件的消亡等生命周期支�,所以,我们�以在JdonFramework/Spring中加入自己的业务组件,当然,JdonFramework还�供了Session等状�管�的支�功能,为业务组件�供了更广阔的生命周期支�。
  组件�用技术以�是�留在编译�期,也就是说:我们在编程时,导入所需�的其他组件Jar包,然�混�我们的项目编译部署,但是这需�通过专业技术人员实现,很显然是�能适应原则中�:给予人们�以�剪他们系统的能力应适应需求�化,这里的“人们�应该是指软件终用户,应该给予用户自己改�系统的能力,也就是说:需��供软件系统�行时能够报考改�自身的能力。
  组件å¤�用技术以å‰�å�œç•™åœ¨è½¯ä»¶ç¼–译阶段,现在则更é� å‰�,必须在软件è¿�行阶段,当然对技术è¦�求相当高,需è¦�语言支æŒ�RTTI(简å�•å�ˆç¥žç§˜çš„Class.forNameå�‘挥作用了),这在“Evolution, Architecture, and Metamorphosisâ€�一文中被认为是Metamorphosis,现在由于AOP技术出现,AOP有一ç§�报考Weaving技术,实际就是在软件è¿�行时实现报考拦截,这样给予终端用户更大的改å�˜ç³»ç»Ÿèƒ½åŠ›ï¼Œä»–ä»¬åŸºæœ¬å�¯ä»¥ä»¥æŠ¥è€ƒæ�’拔的概念实现多个组件的组å�ˆè¿�行。在“AOP vs Decoratorâ€�一文中,我把编译阶段的组件组å�ˆæ–¹å¼�(我更愿æ„�称为é�™æ€�组å�ˆï¼‰å’Œè¿�行时组å�ˆç­‰ä¸¤ç§�处ç�†æ–¹å¼�,å�ˆå¹¶ç§°ä¸ºè¿‡æ»¤å™¨æ¨¡å¼�,如果你希望采å�–组件å�¯æ�’æ‹”å¼�çš„å¤�用,就å�¯ä»¥ä½¿ç”¨è¿‡æ»¤å™¨æ¨¡å¼�。
  组件��拔更�为什么说组件的��拔�常��?
  组件�用目的是为了更好地适应需求�化,但是有了组件�用�代表就快速适应需求�化,因为组件本身也会产生设计错误(�炼得�够抽象或者组件很难以替代),这就必然导致软件系统得维护�本�高,那么快速适应需求�化的目标也就�为一纸空文。实践�明:组件设计问题已��为导致软件开�失败的一个主�因素。
  组件设计有两个主�风险:组件�纯的纯度和组件的替代方�。�炼的纯度也就是抽象的高度,组件的抽象程度越高,当然��用范围越广,但是往往我们�有�历多个项目�,��现自己的组件�炼还欠�候,这实际是组件的�炼过程�本。
  组件�练虽然�决于人为设计因素,但是在实现手段上也�赖于组件的替�方�,通过�常��频�的微调和更�,�能将组件�断�炼��想状��拢,所以,必须有一�方便的组件替�方��供频�更�支�,我们总�希望更�组件象以�更�汽车�动机�花塞一样,需�拆开汽车,打开�动机那样麻烦�?
  �考PC电脑硬件设计:更新CPU或内存�,��直接�拔就�以,这些部件和�版都是一��散的���拔的关系,如果软件组件替�是报考的��拔更加方便终端用户在软件系统交付�,根�需求改�他们的系统。组件��拔本质上是这些组件必须是化的�耦�,彼此�赖影��常�,���说:如果实现了��拔更�,说明你的组件已�实现�耦�了。
  那就有å�¯èƒ½è®¾è®¡ä¸€ç§�软件框架:它能够为æ¯�个部件æ��ä¾›é�žå¸¸æ£’çš„æœ�务访问,软件组件是 æ�¾è€¦å�ˆâ€™loosely coupled’,这些组件的大部分通过几行代ç �å°±å�¯ä»¥å®žçŽ°æ›¿æ�¢ã€‚ç›®å‰�è¿™ç§�方便的实现方å¼�是使用XML进行组件的é…�置。
  JdonFramework/Spring都是这样的一ç§�框架,JdonFramework更进步的是:JF框架本身的组件也是å�¯ä»¥æ›¿æ�¢çš„,例如你希望在JF中使用Springçš„é…�置文件,那么你å�ªè¦�å�šä¸€ä¸ªSpringé…�置文件的解æž�组件,然å�Žæ›¿æ�¢JF框架原æ�¥çš„XMLè§£æž�器就å�¯ä»¥äº†ã€‚无论EJB2/EJB3等在这方é�¢è¦�ç¨�逊于Ioc/AOP框架,对于支æŒ�EJB3çš„JBoss 4 è¿™æ ·æž¶æž„,需è¦�报考更æ�¢AOP拦截器还ä¸�是很方便,因为JBoss 4本身组件没有象JF那样å�šåˆ°å�¯æ�’æ‹”é…�置,ä¸�过,JBoss 5å·²ç»�开始走上这æ�¡è·¯ï¼Œä½¿ç”¨ä¸€ä¸ªå¾®æ ¸å¿ƒæ�¥ç®¡ç�†æ‰€æœ‰çš„å�¯æ�’拔组件,我曾ç»�在“JBoss 5迎æ�¥ä¸­é—´ä»¶å½»åº•çš„å�¯é…�置时代â€�一文中æ��出组件是å�¦æ–¹ä¾¿æ›¿æ�¢æ˜¯è¡¡é‡�一个组件框架的é‡�è¦�指标。
  在近的TheServerSide文章’Service Access’ to the software components中,主è¦�是谈论了表现层组件的替æ�¢è®¿é—®æ–¹å¼�,GIF这样图片组件ä¸�å�¯ä»¥éš�æ„�控制调整,基本ä¸�能å¤�用,但是通过SVG或XUI等支æŒ�XML组件报考替æ�¢æŠ€æœ¯çš„使用,则å�¯ä»¥å®žçŽ°æ˜¾ç¤ºå›¾å½¢ç»„ä»¶çš„å¤�用。
  SOA在软件è¿�行时,给予用户报考æ�’æ‹”å¼�æ›´æ�¢ç»„件,达到å¤�用的组件更加适å�ˆå�˜åŒ–的需求,这是软件业追求的目标,而SOA(Service Oriented Architecture)则是从å�¦å¤–一ç§�æ–¹å�‘也是在è¿�行时æ��供用户一ç§�改å�˜ç³»ç»Ÿçš„能力。
  SCBA(Services and Components Based Architecture), SCBA是通过å‡�少需求å�˜åŒ–带æ�¥çš„传递æ�Ÿè€—和时间æ�¥å®žçŽ°çš„ï¼Œå½“éœ€æ±‚å�˜åŒ–时,SOAçš„æœ�务将支æŒ�è·Ÿè¿›å�˜åŒ–和替æ�¢ã€‚
  SCBA更强调的是一�业务过程�用,而且是跨组织跨多个专业域范围的,例如我以�说的四色图实际是对跨域范围的业务总结,特别是ERP域范围,大多数�业系统都是由MI等四�原始模型组�的,例如JiveJdon3看上去�是一个论�系统,实际��是,它的Message模型�以�用在网站内容系统�新闻�布系统�电�商务系统�仓库管�系统�资�管�系统等跨域范围中(部分已�实现)。
  既然业务过程和IT系统å�¯ä»¥è·¨ç»„织跨域é‡�用,那么类似软件系统的维护和开å�‘å°±ä¸�å¿…å†�é‡�æ–°å¼€å�‘,JiveJdon3çš„Message模型é‡�用在新闻å�‘布系统中,我需è¦�把JiveJdon3的项目拷è´�到新闻å�‘布系统中,然å�Žå†�针对新闻å�‘布系统特点å�šäº›è£�剪修改,这这ç§�å¤�制业会带æ�¥å·¥ä½œé‡�和维护é‡�,而SCBA则å�¯ä»¥è§£å†³è¿™ä¸ªé—®é¢˜ï¼Œé€šè¿‡è¿�行时single-copy reuse分享å�„ç§�æœ�务功能。
  总结本文总结了软件å¤�用的ä¸�å�Œå±‚次:设计å¤�用ã€�组件架构å¤�用以å�Šä¸šåŠ¡æ¨¡åž‹å¤�用,å¤�用技术 çš„ä¸�æ–­å�‘展正是由于适应å�˜åŒ–需求的è¦�求ä¸�æ–­æ��高导致,本人从2002年开始从事å¤�用技术研究,åˆ�从å¤�用层次底层设计模å¼�开始,在国内媒体次全é�¢åˆ†æž�了GoF设计模å¼�,ç»�过这几年å�‘展,亲身体会å¤�用技术已ç»�进入了一个新的阶段。特写此文作为å°�结。 æ�¥æº�:考试大-建筑工程类考试

责编:ljwzmznd çº é”™

 
网�跟贴

暂无跟贴,欢迎您�表��

 
 
跟贴共0�
笔 � :
网�评论仅供其表达个人看法,并�表明考试大��其观点或�实其�述