基于构件的软件开发(Component-Based Software Development,CBSD)是一种基于分布对象技术,强调通过可复用构件设计与构造软件系统的软件复用途径。基于构件的软件系统中的构件可以是COTS(Commercial-Off-The-Shelf)构件,也可以是通过其他途径获得的构件(如自行开发)。CBSD体现了“购买而不是重新构造”的哲学,将软件开发的重点从程序编写转移到了基于已有构件的组装,以更快地构造系统,减轻用来支持和升级大中型软件系统所需要的维护负担,从而降低软件开发的费用。
请围绕“基于CBSD的软件架构设计与应用”论题,依次从以下3个方面进行论述。
1.概要叙述你参与管理和开发的软件项目及你在其中所承担的主要工作。
2.简要介绍基于构件的软件开发过程模型,具体论述你在所管理和开发的软件工程项目中选择了哪种典型的构件平台并说明理由,如何具体实施的,最终实际效果如何。
3.论述你在该项目实施过程中遇到的问题及解决的办法,以及你进一步应用软件复用技术的有关设想。
参考答案:1.简要介绍你参与规划、设计和实施的大中型信息系统软件工程项目的基本情况,简要说明自己在该项目中的角色、所承担的主要任务及开展的主要工作。论文叙述自己参与设计和实施的信息系统项目应有一定的规模,自己在该项目中担任的主要工作应有一定的分量。
2.构件(Component)是某系统中有价值的、几乎独立的并可替换的一个部分,它在良好定义的体系结构语境内满足某清晰的功能。构件是一个独立发布的功能部分,可以通过其接口访问它的服务。
软件构件是软件系统中具有相对独立功能,可以明确标识,接口由规约指定,与语境有明显依赖关系,可独立部署,且多由第三方提供的可组装软件实体。软件构件需承载有用的功能,并遵循某种构件模型。可复用构件是指具有可复用价值的构件。商用成品构件(Commercial Off-The-Shelf,COTS)是指由第三方开发的满足一定构件标准的,可组装的软件构件。
基于构件的软件工程(CBSE)不是针对某个特定的软件系统,而是针对一类软件系统的共同的特征、知识和需求。基于构件的软件的开发过程包括两个并发的子过程,一个是领域工程,另一个是基于构件的开发。领域工程完成一组可复用构件的标示、构造、分类和传播;基于构件的开发完成使用可复用构件构造新的软件系统。基于构件的软件开发过程(CBSD)模型如图6-11所示。
在图6-11中,领域工程步骤如下。
(1)领域分析,即对特定应用领域中共同的特征、知识、需求的标识、分析和规约。其目标是发现和挖掘在特定领域内可以被复用的构件。换而言之,领域分析不是针对某个特定的软件系统,而是针对一类软件系统的共同的特征、知识和需求。是比需求分析更一般、更抽象、更广泛的特征。
(2)建立领域特定的基准体系结构模型:在领域分析的基础上,构造该领域的基准体系结构,这个基准体系结构应是可以裁剪和扩充的,并可供该领域的应用复用。
(3)标识候选构件:在领域分析和领域基准体系结构模型的基础上标识该领域的候选构件。
(4)泛化(Generalizadon)和可变性(Variability)分析:提高其通用性,同时寻找候选构件在不同应用中的变化点(Variation Point),通过设置参数、继承或其他手段,使可变部分局部化。
(5)重建构件:在泛化和可变性分析的基础上,重建构件,使它成为可复用构件。
(6)构件的测试:对重建的可复用的构件要严格测试,以提高其可靠性。
(7)构件的包装:经测试的构件应根据构件库的要求,对其进行包装,以便构件库对其进行分类储存和检索。
(8)构件入库:包装后的构件即可存入构件库。
在图6-11中,应用系统工程的步骤如下。
(1)建立应用系统的体系结构模型:可以使用构件生产者提供的领域特定的基准体系结构经裁剪和/或扩充而获得。
(2)寻找候选构件:根据应用系统的体系结构模型,从构件库或其他可利用的构件源中寻找候选构件。
(3)评价和选择合适的构件:评价候选构件以判断是否适合于待开发的软件。
(4)构件的修改(Modify)和特化(Specialize):在复用时对构件进行特化以满足特定应用的需要。
(5)开发未被复用的部分:对新系统中未复用的部分进行开发。
(6)构件的组装:将特化和修改后的可复用构件和新开发的部分组装成一个新的软件系统。
(7)集成测试:对组装后的软件系统进行集成测试。
(8)评价被复用的构件,并推荐可能的新构件。
通常,要经过2~3个采用复用的生产周期(3年左右)复用才能带来显著的效益。开发基于构件的软件系统受到以下几方面因素的影响。
(1)COTS构件质量的提高和种类的增加。
(2)要求降低系统开发和维护成本的经济压力,通常约有30%~50%的复用可使生产率提高25%~40%。
(3)构件集成技术的出现。
(4)软件开发组织内可以用于新系统开发的已有软件制品的数量增加。
基于构件的应用系统体系结构描述了组成应用系统的构件,构件之间的组织结构、交互、约束和关系,并给出了对系统的组成、结构,以及系统如何工作的较为宏观的描述。基于构件的体系结构层次包括逻辑体系结构和物理体系结构。其中,逻辑体系结构以接口形式对每组服务进行描述,并描述那些包如何交互来满足通常的用户使用场景;物理体系结构描述系统的物理设计,包括硬件及其拓扑结构、网络和通信协议、基础设施(如运行平台、中间件和数据库管理系统等),以及软件系统的部署。逻辑体系结构展示系统设计的蓝图,可用于验证系统是否提供了适当的功能,并能在系统功能需求变化时方便地改变系统的设计;物理体系结构展示了系统的实现构架,有助于理解系统的许多非功能属性,如性能、吞吐量,以及服务的可用性等。
常见的基于构件的应用系统开发方法有:RUP(Rational’s Unified Process),这是一个关于软件开发的广泛的过程框架,覆盖了整个软件生命周期,使用UML进行分析和设计建模,鼓励使用CBSD方法;The SelectPerspecfive Method是一个支持通用的构件设计方法,并以Select Component Manager为目标,通用构件设计准则使用UML作为构件设计符号;Sterling Software的Enterprise-CBD方法鼓励使用UML的扩展形式把构件的规格说明和实现分离,允许制作技术中立的规格说明,然后再使用不同的实现技术来实现规格说明等。这些开发方法的共同点是,关注构件库中的构件、接口的设计和基于构件构架的应用程序组装。接口描述是构件使用者能依赖的所有信息,因此构件接口描述的表达能力和完整性是CBSD方法主要关注的问题之一。
典型的构件开发平台有对象管理组织(OMG)的CORBA(公共对象请求代理架构)平台,Sun公司主导的J2EE平台和微软公司的NET平台等。结合项目实际情况,论述你选择了哪种典型的构件平台来开发的论文开头提及的软件工程项目,描述具体开发过程中所采用的技术、方法和步骤,这些技术和方法要针对该工程项目的实际特点,具有一定的广度和深度。
3.说明你在该项目实施过程中遇到的具体问题,以及解决这些问题所采取的方法、策略和措施,以及它们对该工程项目后期的工作产生了哪些积极(或消极)的影响(效果和存在的问题)。结果评价要客观、适当,对需要进一步改进的地方,应有具体的着眼点,不可脱离实际提出过高的要求,不能泛泛而谈。
论文最后可以进一步讨论你应用软件复用技术的相关设想,以及在该工程项目中获得的几点体会。论文的最后一句可延伸说明,在今后的工作过程中,如果碰到类似的IT项目你将如何应用这些经验或教训。
4.论文写作过程中值得关注的一些要点如下(全书同)。
(1)整篇论文要结构合理、切中要害、陈述完整、言简意赅、语言流畅、字迹清楚,切忌对知识点的堆积、长篇大论、言之无物。
(2)选择自己参与过的工程项目进行分析论述,所述项目切题真实,介绍清楚。
(3)下午试卷II是论述题目,问题中提到的中心内容在题目的说明中都有所涉及。在答题时首先要冷静并认真阅读题目,找出和问题相关的知识点,确定考题的关键考点,这是答题的前提。
(4)摘要是全文概括,千万不要写成引言。
(5)围绕论文主题,对所参与的项目进行科学叙述与评价,要有具体的着眼点,不能泛泛而谈,尽可能从字里行间让阅卷者体会到你的实际工作能力、业务水平和项目实践经验。
(6)在考试过程中应注意技巧,让答题的思路最大限度地符合出题的思路,避免跑题,这样容易得到阅卷老师的共鸣。
(7)根据考生对所参与的项目中针对本论文主题的相关叙述与评价,可确定他(她)有无参与信息系统项目开发过程的实践经验。