如何学习CBD/CBSE?

 

如何学习CBD/CBSE

作者: 贾育

email: jia_yu@263.net

 

[版权所有 任何形式的拷贝和引用必须得到作者的许可]

 

关于怎样学习CBD/CBSEComponent-Based Development/ Component-Based Software Engineering,基于构件的软件开发/基于构件的软件工程),我也是摸着石头过河,随便说几句,仅供参考:

 

一.  知识基础:

 

首先你必须掌握软件工程知识、特别是当前软件工程的新理论、新方法和新技术,传统的软件工程的内容我想计算机专业的学生都学过,其实大多数中文教材作为入门都可以,这里我推荐Roger S. PressmanSoftware Engineering, A Practitioner’s Approach, Fourth Edition. (国内有机械工业版的中译本《软件工程—实践者的研究方法》,黄柏素等译),内容比一本教材深入一些,新一些。如果要想全面了解软件工程最新的理论和实践,理所当然是周之英的《现代软件工程》,虽然我认为这本书在深度上还可以提高,而且由于是从一些论文编译来的,一些章节的内容有些零散,但总的来说大的方面没有遗漏,一个人出这样一本书一定是很辛苦的。闲话少说,我认为你起码必须学习以下的一些知识:面向对象方法学、软件体系结构、软件复用、领域工程,可能的话还有:需求工程、设计模式、软件过程控制(CMM,个人和小组过程)、形式化方法(推荐大家学一学Z语言),是不是要累死你了,没办法谁让你干这个辛苦行当,而且又其乐融融让你自觉自愿地舍身取义。

       推荐文献:

-The Future of Software Engineering》非常好的综述,几乎涉及了软件工程的所有方面,可以读你感兴趣的领域,文中推荐的网上资源也很好。

- A Comparison of Object Oriented Development Methodologieshttp://www.toa.com/smnn?mcr.html,面向对象方法学大全,可以查到各种OO方法,以及对它们的比较。

-软件体系结构

Rick KazmanSoftware ArchitectureHandbook of Software Engineering and Knowledge Engineering 介绍了主要的SA的概念和观点,可以结合《The Future of Software Engineering》里Galan的文章一起看。

Felix Bachmann et al, The Architecture Based Design Method, TECHNICAL REPORT CMU/SEI-2000-TR-001 Len Bass et al, Architecture-Based Development TECHNICAL REPORT CMU/SEI-99-TR-007 这两篇CMU的技术报告系统介绍了SA的设计和开发方法,给出了SA工程化的可操作的方法。

Mary ShawSome Patterns for Software Architectures,介绍了多种体系结构风格,这里比在她的专著Software Architectures中要更加全面、规范,这部分是原著的精华,非常有启发性。

-软件复用

Software Reuse Initiative http://dii-sw.ncr.disa.mil/reuseic/pol-hist/primer/ 入门级教材

Hafedh Mili et alReusing Software: Issues And Research Directions 内容充实,观点深刻,指导性很强,可惜插图看不到。

DEPARTMENT of DEFENSE SOFTWARE REUSE INITIATIVE TECHNOLOGY ROADMAP Version 2.2 http://dii-sw.ncr.disa.mil/reuseic/pol-hist/Roadmap/Cover.html 全面介绍了复用原理和技术,状况、方向分析十分透彻。

其他领域没有以上这两个密切,但也可CBD有关,我以后再介绍,否则喧宾夺主了。

 

二.  实践基础

 

软件工程有理论,但更重要的是实践。它的许多方法只能在实际项目中才能体会,我周围一些没有工作经验的软工硕士大谈软工无用论时,唉,只能嗤之以鼻。

你至少要掌握一门面向对象编程语言,最好是JAVA,然后去做一个项目(可以小“题”大做)。你需要学习CORBACOM/DECOM(现在是MS Web Service)和JAVABEANEJB(似乎J2EE提法简洁一些,可大家都这么说)之一,尝试去写一些分布式对象,注意,构件的内涵不止面向对象,好在他们正朝着构件技术发展,例如CORBA CCM。建议大家学一学CORBA 开发工具可以用VisiBroker。你还要学一点UML,现在有人提出把UML作为CBD的建模工具,无论出于什么目的,UML对你肯定有帮助;至于Web Service,如果你有兴趣,自然少不了SOAP之类的新玩意(涉及不深,不敢乱说)。

推荐文献:

- CORBA

 Sams Teach Yourself CORBA in 14 Days,入门教材

 The Common Object Request Broker: Architecture and SpecificationOMGCORBA规范,很厚的一本大部头,也很枯燥,也有了中译本,其实还是原文更准确,英文技术手册文字都不是很难。

CORBA Comparison Project: Final Report德国和捷克两个研究机构的CORBA开发工具比较报告, 介绍了ORL OMNIORBIONA ORBIXINTERPRISE VISIBROKER,挺好。

CORBA方面的资料太多,可以去OMG的网站去找: http://www.omg.org/

- J2EE

张志伟等译,J2EE 构件企业系统,清华大学出版社,很全面,可惜没有电子版。如果看原版的J2EE技术蓝皮书会很辛苦。

- COM/DCOM我不很熟,曾推荐了一组.NETWeb Service的文章,大家可以读一读。

- UML

首推《UML用户手册》,邵维忠等在1999年第4期“计算机研究与发展”上的综述《统一建模语言UML述评》也非常好。

 UML在构件上的应用请看Desmond D'Souza Catalysis -- Objects, Components and Frameworks with UML 该书没有电子版,不过网上可以找到相关的论文。

 

开发工具各取所好,VisiBroker Delph 6网上都有,需要的话我可以上传下载网址, CORBA方面它们的商品化水准最高。

 

三.  CBD的常见术语和概念

 

CBD学习当然要从概念开始,因为是一门新学科(或只能称为新方向),相关概念多得有时让人丈二和尚摸不着头脑,罗列一些,供大家参考:

构件(component)、构架(Software Architecture)、框架(framework)、构件框架/构件基础设施(component framework/component Infrastructure)、对象/分布式对象(Object /Distributed OO)、接口/接口描述语言(interfaceIDL)、应用工程(Application Engineering)、领域工程(Domain Engineering)、契约(contract)、COTS(我译为“商业成品构件”,怎么样?)、中间件(middleware)、连接件/端口/角色(connectorport/role)、产品线/产品族(Product Line/Product Family)、子系统(Subsystem)、服务/网络服务(service/web service)、构件适应/配置/部署(Component adaptation/configuration/deployment)、构件容器(container)、对象请求代理ORBObject Request Broker)、设计模式(design pattern)、SOCAOPSOPseparation of concernsAspect-Oriented ProgrammingSubject-Oriented Programming),合成和生成复用(compositionalgenerative reuse,可复用资产(Reusable Asserts, 遗产系统(legacy)、企业应用集成( Enterprise Application Integration)、包装(wrap)、粒度(granularity…….

 

     然后了解CBDCBSE的每个过程的目的、任务和活动:构件获取-构件评价-构件适应-构件部署-系统集成-系统运行-构件维护-构件升级。

我总结的CBD研究方向:a构件模型和构件表示;b软件构架技术;c构件库和构件获取;d)构件的评价和度量;(e)构件的适应和演化;(f)构件的集成和连接;(gCBD过程和管理,如果你想研究,你可以挑一个你感兴趣的方向开始工作,如果你想应用,那么这些知识就像软件工程和编程语言的关系,修行就得看各人了。

推荐几篇论文。

1)入门

考虑到中文好读一些,首推计算机世界日报的99315日的专题报道“软件复用”,非常好的一组入门级文章。还有对中科院软件所李京的专访也挺好:《分布对象技术的新进展》(微电脑世界200033期)。

《基于构件开发的11个步骤》(11 Steps to Component Based Development  URLhttp://www.flashline.com/content/steps/steps.jsp?sid=986880017671-3396000210-150);普及性的资料集,内容很丰富,偏向于技术介绍。

Faisal SiddiquiCBSE: A look at reusable software components;很规矩的概述。

Component Software Glossary;构件软件术语表, 现在新的软件术语层出不穷,去那里看看能不能找到解释。

Alan Brown, An Introduction to Component-Based Development Brown的讲稿,学习CBD的快餐。Brown写了很多关于构件论文和专著,到这里找:http://www.alanbrown.net/online.html

2)提高

Mälardalen UniversityComponent Based Software Engineering  - State of the Art report 一个非常好的论文集,里面很多是CBD研究者所关心的,该学校设有CBD的博士学位,关于CBD的教学问题,也即学习问题,它们给出了一个全面系统的方案。

19982000 International Workshop on Component-Based Software Engineering 会议论文集,有几十篇短文(以后我会挑一些出来点评)。

说明:

1)以上推荐的文献都是一些实用的论文,并不取决它的权威性,一些经典的论文,例如软件体系结构方面,应该看David GarlanMary ShawSoftware Architecture: perspectives on an emerging discipline, 以及 Dewayne E. Perry Alexander L. Wolf Foundations for the Study of Software Architecture,但是它们绝没有Rick Kazman Software Architecture内容新、综合全面,文章也短一些。

2)除特别说明,所有文章均取自网上,有些我已上传,没有的,如果谁急需请告诉我。

3)应网友请求匆忙成文,我会不断修订,权当版本1.0,请各位DX多提意见。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值