`
xiebh
  • 浏览: 612663 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

如何学习CBD/CBSE?

阅读更多
关于怎样学习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

    本文旨在比较分析基于组件的软件工程(Component-Based Software Engineering, CBSE)和服务导向的软件工程(Service-Oriented Software Engineering, SOSE)这两个当前软件行业和工程界最为重要的范式。文中首先...

    cbse_results:一次获取多个卷号的 CBSE XII 结果的脚本

    董事会结果检查器一次下载多个卷号的板结果的脚本。安装安装所需的模块 pip install -r requirements.txt用法在config.py输入您的学校代码和卷号范围,然后运行result.py python result.py结果将在results.html可用...

    CBSE_XII_Python

    标题“CBSE_XII_Python”表明这是一份针对印度中央板校际教育委员会...通过系统地学习和练习这些知识点,CBSE十二年级的学生将能够为Python部分的考试做好充分准备,并在未来进一步的计算机科学学习中打下坚实的基础。

    cbse_practical

    "cbse_practical" 这个压缩包文件很可能包含了与印度中央中等教育委员会(CBSE,Central Board of Secondary Education)实践课程相关的资料。CBSE是印度一个重要的教育机构,负责制定中学教育的标准和课程。描述中...

    cbse-class-10-study-material-website

    标题 "cbse-class-10-study-material-website" 暗示了这是一个与CBSE(Central Board of Secondary Education,印度中央中等教育委员会)10年级学习资源相关的网站项目。这个项目可能包含了帮助学生准备10年级考试的...

    cbse-web-scraper:一个简单的爬网程序

    **cbse-web-scraper** 是一个专为爬取特定网页数据而设计的简单爬网程序。这个工具可能主要用于抓取CBSE(Central Board of Secondary Education,印度中央中等教育委员会)网站上的信息,如考试成绩、课程大纲或...

    Class-12-CBSE-Python-Project

    【标题】"Class-12-CBSE-Python-Project" 涉及的是一个针对印度中央中等教育委员会(CBSE)12年级学生的Python编程项目。这个项目旨在帮助学生掌握Python语言的基础知识和应用技能,以符合CBSE的教学大纲要求。 ...

    董事会实践:CBSE 12级董事会实践问题解决方案

    在CBSE 12级的课程中,学生会学习到Python的基本概念,如变量、数据类型、控制结构(如if-else、for循环、while循环)、函数定义和调用、模块和库的使用,以及面向对象编程的基本原理。 "董事会实践"部分可能包括一...

    Library-Management-System:CBSE第十二类的信息学实践项目

    《Library-Management-System: CBSE第十二类的信息学实践项目》是一个专为CBSE(Central Board of Secondary Education,印度中央中等教育委员会)第十二年级设计的编程实践项目,旨在帮助学生掌握Java编程语言,并...

    chiragnahata.ml

    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级...

    Class-12-Python-Practicals:对于那些认为程序冗长且不了解其工作原理的学生,这是12类cbse计算机科学实用知识的存储库

    对于那些认为程序冗长且不了解其工作原理的学生,这是12类cbse计算机科学实践的资料库。 该程序比实用书籍中的程序要短,并且易于理解,并且由12年级的学生(即我)自己制作。 我将添加更多实用信息,请继续关注。 ...

    SD大会精品讲座:够了,让我们实践吧(英文授课)

    他提出并发展了多个重要的软件工程方法论,如Use Case建模和Component-Based Software Engineering (CBSE)等。 - **Pan Wei Ng** 和 **Ian Spence**:同样是软件工程领域的专家,他们与Ivar Jacobson合作推广“实践...

    基于构件的软件工程理论与方法研究.pdf

    构件基础软件工程(Component-Based Software Engineering,CBSE)是软件工程领域的一个重要分支,它关注于通过复用预先开发好的软件构件来设计、实现、部署和维护复杂的软件系统。CBSE提供了将软件开发过程模块化的...

    Component_Based_Software_Engineering.rar_engineering_turkish

    组件化软件工程(Component-Based Software Engineering,简称CBSE)是一种现代软件开发方法,它强调将软件构建为可重用的独立组件,这些组件可以像积木一样组合在一起,以创建复杂的系统。这种方法促进了代码的模块...

    Doubtnut Search-crx插件

    怀疑不Chrome扩展 - 最佳EDU扩展怀疑已启动Chrome浏览器扩展,这是根据学生的学习需求,以适应6至12级,CBSE和其他州董事会考试,CBSE,NEET,IIT Jee等各种竞争考试的学习需求。借助数百万视频和文本解决方案,怀疑...

    Building Reliable Component-Based Software Systems

    《构建可靠的基于组件的软件系统》是一本关于组件化软件工程(CBSE)的专业书籍,主要探讨了如何开发软件组件...通过学习和应用书中的原则和最佳实践,开发者可以提高软件开发的效率,同时确保系统的灵活性和扩展性。

    计算机英语期末非客观题.docx

    8. **组件化软件工程(Component-Based Software Engineering, CBSE)**:利用预先开发好的组件来构建软件,可以降低开发成本,减少风险,提高代码复用性和软件质量。 9. **数据库模型**:在数据库设计中,历史上有...

    后端研究-基于Java的构件组装工具的研究.pdf

    在CBSE中,存在一组预先建造好的、标准化的软件构件可供复用,根据具体应用来设计系统的构架,然后应用系统通过使用这些构件组装而成。 领域工程是CBSE的一个重要组成部分,探索应用领域的共性和差异性,找到对这类...

    谷歌师兄的leetcode刷题笔记-SineNitish:我的GitHub个人资料的配置文件

    CBSE 董事会 Kendriya Vidyalaya No. 2, SVN 学校,直到我的 X 年级,后来我转到了一个州董事会,Sri Chaitanya 初级学院。 父亲是退役军人,母亲是家庭主妇。 我有个哥哥是软件工程师 我的兴趣包括学习新技术和提高...

Global site tag (gtag.js) - Google Analytics