关于怎样学习CBD/CBSE(Component-Based Development/ Component-Based Software Engineering,基于构件的软件开发/基于构件的软件工程),我也是摸着石头过河,随便说几句,仅供参考:
一. 知识基础:
首先你必须掌握软件工程知识、特别是当前软件工程的新理论、新方法和新技术,传统的软件工程的内容我想计算机专业的学生都学过,其实大多数中文教材作为入门都可以,这里我推荐Roger S. Pressman的Software Engineering, A Practitioner’s Approach, Fourth Edition. (国内有机械工业版的中译本《软件工程—实践者的研究方法》,黄柏素等译),内容比一本教材深入一些,新一些。如果要想全面了解软件工程最新的理论和实践,理所当然是周之英的《现代软件工程》,虽然我认为这本书在深度上还可以提高,而且由于是从一些论文编译来的,一些章节的内容有些零散,但总的来说大的方面没有遗漏,一个人出这样一本书一定是很辛苦的。闲话少说,我认为你起码必须学习以下的一些知识:面向对象方法学、软件体系结构、软件复用、领域工程,可能的话还有:需求工程、设计模式、软件过程控制(CMM,个人和小组过程)、形式化方法(推荐大家学一学Z语言),是不是要累死你了,没办法谁让你干这个辛苦行当,而且又其乐融融让你自觉自愿地舍身取义。
推荐文献:
-《The Future of Software Engineering》非常好的综述,几乎涉及了软件工程的所有方面,可以读你感兴趣的领域,文中推荐的网上资源也很好。
- A Comparison of Object Oriented Development Methodologies,http://www.toa.com/smnn?mcr.html,面向对象方法学大全,可以查到各种OO方法,以及对它们的比较。
-软件体系结构
Rick Kazman,Software Architecture,Handbook 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 Shaw,Some Patterns for Software Architectures,介绍了多种体系结构风格,这里比在她的专著Software Architectures中要更加全面、规范,这部分是原著的精华,非常有启发性。
-软件复用
Software Reuse Initiative, http://dii-sw.ncr.disa.mil/reuseic/pol-hist/primer/ 入门级教材
Hafedh Mili et al,Reusing 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,然后去做一个项目(可以小“题”大做)。你需要学习CORBA、COM/DECOM(现在是MS 的Web Service)和JAVABEAN/EJB(似乎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 Specification,OMG的CORBA规范,很厚的一本大部头,也很枯燥,也有了中译本,其实还是原文更准确,英文技术手册文字都不是很难。
CORBA Comparison Project: Final Report德国和捷克两个研究机构的CORBA开发工具比较报告, 介绍了ORL OMNIORB、IONA ORBIX和INTERPRISE VISIBROKER,挺好。
CORBA方面的资料太多,可以去OMG的网站去找: http://www.omg.org/。
- J2EE
张志伟等译,J2EE 构件企业系统,清华大学出版社,很全面,可惜没有电子版。如果看原版的J2EE技术蓝皮书会很辛苦。
- COM/DCOM我不很熟,曾推荐了一组.NET和Web 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)、接口/接口描述语言(interface/IDL)、应用工程(Application Engineering)、领域工程(Domain Engineering)、契约(contract)、COTS(我译为“商业成品构件”,怎么样?)、中间件(middleware)、连接件/端口/角色(connector/port/role)、产品线/产品族(Product Line/Product Family)、子系统(Subsystem)、服务/网络服务(service/web service)、构件适应/配置/部署(Component adaptation/configuration/deployment)、构件容器(container)、对象请求代理ORB(Object Request Broker)、设计模式(design pattern)、SOC/AOP/SOP(separation of concerns/Aspect-Oriented Programming/Subject-Oriented Programming),合成和生成复用(compositional/generative reuse),可复用资产(Reusable Asserts), 遗产系统(legacy)、企业应用集成( Enterprise Application Integration)、包装(wrap)、粒度(granularity)…….
然后了解CBD/CBSE的每个过程的目的、任务和活动:构件获取-构件评价-构件适应-构件部署-系统集成-系统运行-构件维护-构件升级。
我总结的CBD研究方向:(a)构件模型和构件表示;(b)软件构架技术;(c)构件库和构件获取;(d)构件的评价和度量;(e)构件的适应和演化;(f)构件的集成和连接;(g)CBD过程和管理,如果你想研究,你可以挑一个你感兴趣的方向开始工作,如果你想应用,那么这些知识就像软件工程和编程语言的关系,修行就得看各人了。
推荐几篇论文。
(1)入门
考虑到中文好读一些,首推计算机世界日报的99年3月15日的专题报道“软件复用”,非常好的一组入门级文章。还有对中科院软件所李京的专访也挺好:《分布对象技术的新进展》(微电脑世界2000年33期)。
《基于构件开发的11个步骤》(11 Steps to Component Based Development URL:http://www.flashline.com/content/steps/steps.jsp?sid=986880017671-3396000210-150);普及性的资料集,内容很丰富,偏向于技术介绍。
Faisal Siddiqui,CBSE: 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 University的Component Based Software Engineering - State of the Art report, 一个非常好的论文集,里面很多是CBD研究者所关心的,该学校设有CBD的博士学位,关于CBD的教学问题,也即学习问题,它们给出了一个全面系统的方案。
1998~2000 International Workshop on Component-Based Software Engineering; 会议论文集,有几十篇短文(以后我会挑一些出来点评)。
说明:
(1)以上推荐的文献都是一些实用的论文,并不取决它的权威性,一些经典的论文,例如软件体系结构方面,应该看David Garlan和Mary Shaw的Software Architecture: perspectives on an emerging discipline, 以及 Dewayne E. Perry 和Alexander L. Wolf 的 Foundations for the Study of Software Architecture,但是它们绝没有Rick Kazman 的Software Architecture内容新、综合全面,文章也短一些。
分享到:
相关推荐
CBSE&SOSE-Key Concepts and Principles.pdf
董事会结果检查器一次下载多个卷号的板结果的脚本。安装安装所需的模块 pip install -r requirements.txt用法在config.py输入您的学校代码和卷号范围,然后运行result.py python result.py结果将在results.html可用...
CBSE专注于借助可重用组件的软件开发,以及CBSE如何重用粒状组件并计划提供更好的质量和输出。 而OOSE用于面向对象程序设计中的软件设计。 该模型包括需求,分析,设计,实施和测试模型的所有阶段。 此外,在这里...
适用于CBSE Class XII Python的Jupyter笔记本最后一分钟回顾 CBSE计算机科学课程表 我从项目这个项目中免费借用了
cbse_practical cbse ke saare ans
Class-12-CBSE-Python-Project
cbse-class-10-study-material-website
cbse-web-scraper:一个简单的爬网程序
董事会实践:CBSE 12级董事会实践问题解决方案
Library-Management-System:CBSE第十二类的信息学实践项目
10级 课程大纲减少(2020-2021) CBSE 9级和10级英语语言文学CBSE 9级和10级数学CBSE 9级和10级科学CBSE 9和10类社会科学CBSE 9和10类印地语课程A CBSE 9和10类北印度语课程B CBSE 9和10级孟加拉语 电子书NCERT 10级...
对于那些认为程序冗长且不了解其工作原理的学生,这是12类cbse计算机科学实践的资料库。 该程序比实用书籍中的程序要短,并且易于理解,并且由12年级的学生(即我)自己制作。 我将添加更多实用信息,请继续关注。 ...
(CBSE) is the quality of the components used in a system. The reliability of a component-based software system depends on the reliability of the components that is made of. In CBSE, the proper search,...
怀疑不Chrome扩展 - 最佳EDU扩展怀疑已启动Chrome浏览器扩展,这是根据学生的学习需求,以适应6至12级,CBSE和其他州董事会考试,CBSE,NEET,IIT Jee等各种竞争考试的学习需求。借助数百万视频和文本解决方案,怀疑...
This is a book about component-based software engineering (CBSE). CBSE is the emerging discipline of the development of software components and the development of systems incorporating such ...
CBSE 董事会 Kendriya Vidyalaya No. 2, SVN 学校,直到我的 X 年级,后来我转到了一个州董事会,Sri Chaitanya 初级学院。 父亲是退役军人,母亲是家庭主妇。 我有个哥哥是软件工程师 我的兴趣包括学习新技术和提高...
对持续学习充满热情,同时为企业提供增长和可持续性。学术界 :bar_chart: Vidyant印度教PG学院,阿米纳巴德(2018-2020) 商学硕士(M.Com) 比例:62.86% A.伊斯兰学位学院,拉尔巴格(2015-2018) 商科学士(B....
针对构件的变化性问题一直都是基于构件的软件工程(CBSE)中的一个关键问题,首先对构件模型以及构件匹配原则进行形式化描述,构造了构件的接口关系矩阵;然后根据构件匹配原则,对构件接口关系矩阵进行分析,动态地...
由于采用基于构件的软件工程 (CBSE)技术 , Tiny OS可以看成是一个构件库 ,简化了无线传感器节点上的应用程序设计 ,但目前缺乏系统配套的构件管理工具和高效集成开发环境 ( I DE)。分析了构件化描述语言 nesC和 Tiny ...
您将获得学校教给您的所有Python代码,并将其作为家庭作业提供给您吉德特别适合CS学生(特别是CBSE董事会学生) 如果您有任何家庭作业,但该资料库中没有该家庭作业,请通知我们,我将尽快进行处理快乐学习尖端: ...