基于构件的开发

  构件与软件重用

  构件(componet,又称组件)是一个功能相对独立的、具有可复用价值的软件单元。在面向对象方法中,一个构件有一组对象构成,包含了一些协作的类的集合,他们共同工作来提供一种系统功能。

  软件重用

  可重用性(可复用性)是指系统和(或)其组成部分能在其他系统中重复使用的程度。软件开发的全生命周期都有可复用价值,包括项目的组织、软件需求、设计、文档、实现、测试方法和测试用例,都是可以被重复利用和借鉴的有效资源。可重用性体现在软件的各个层次,通用的、可重用性高的软件模块往往已经由操作系统或开发工具提供,如通用库、标准组件和标准模板库等,他们并不需要程序员重新开发。

  软件重用(软件复用)是使用已有的软件产品(如设计、代码、文档等)来开发新的软件系统的过程。软件重用的形式大体可以分为垂直式重用和水平式重用。水平式重用是重用不同应用领域中的软件元素,如数据结构、排序算法、人机界面构件等。标准函数库是一种典型的原始的水平式重用机制。垂直式重用是在一类具有较多公共性的应用领域之间重用软件构件。由于在两个截然不同的应用领域之间进行软件重用潜力不大,所以垂直式重用受到广泛关注。

  垂直式重用活动的主要关键点在于领域分析:根据应用领域的特征和相识性,预测软件构件的可重用性。一但根据领域分析确认了软件构件的可重用价值,即可进行软件构件的开发,并对具有可重用价值的软件构件做一般化处理,使他们能够适应新的类似的应用领域。然后将软件构件和他们的文档存入可重用构件库,成为可供未来开发项目使用的可重用资源。

  软件重用的范围不仅涉及源程序代码,Caper Jones定义了10种可能重用的软件要素,分别是项目计划、成本估计、架构、需求模型和规格说明、设计、源程序代码、用户文档和技术文档、用户界面、数据结构和测试用例。

  有一个组织叫做基于面向对象技术的重用(Reuse Based on Object-Oriented Techniques, REBOOT)开发了支持重用的两种过程模型,分别是为重用开发和利用重用进行开发。该组织还开发了一系列工具,称为REBOOT环境。它们强调的一个原则是“未来重用者的需求,就是对可重用构件的信心”。开发者的倾向是抵制重用,因为他们缺乏这种信心。为了克服这种状态,REBOOT推荐一种文档结构,包括测试信心和重用者的经验。

  美国国防部的一项称为可适应、可靠性的软件技术(Software Technology for Adaptable, Reliable Software,STARS)关注过程、架构和重用三者的集成。STARS认为软件产品线开发的软件周期应该包括过程驱动、软件架构、领域工程、可重用构件库这四个概念。

  系统的软件重用由可重用的资产(构件)的开发、管理、支持和重用4个过程组成。工作在重用资产开发过程中的是构件开发者和领域工程师,工作在应用项目开发过程中的是应用工程师。如果要系统地实施重用,需要遵循以下原则:

  (1)需要高层领导支持,并需要有长期的经费支持。

  (2)为了渐进地推行系统的重用,需要规划和调整系统的架构、开发过程、组织结构,并以小规模的先行项目为典型示范,而后在铺开。

  (3)为了重用,先规划架构及其逐步实施的过程。

  (4)过渡到明确的重用组织机构,将可重用构件的创建工作与重用工作分离开,并且提供明确的支持职能。

  (5)在真实的环境中,进行可重用构件的创建和改进工作。

  (6)要将应用系统和可重用构件作为一个经济核算的产品整体进行管理,应当注重公用构件在应用系统及其子系统领域中的高盈利作用。

  (7)要认识到单独的对象技术或者单独的构件技术是不够的。

  (8)采用竞赛和更换负责人的办法,进行开发单位的文化建设和演化。

  (9)对基础设施、重用教育、技巧培训,要投资和持续地改进。

  (10)要采用度量方法测量重用过程,并要优化重用程序。

  构件标准

  构件是软件系统可替换的、物理的组成部分,它封装了实现体(实现某个职能),并提供了一组接口的实现方法。可以认为构件是一个封装的代码模块或大粒度额运行时模块,也可以将构件理解为具有一定功能、能够独立工作或与其他构件组合起来协调工作的对象。

  对于构件,应当按可重用的要求进行设计、实现、打包、编写文档。构件应当是内聚的,并具有相当稳定的、公开的接口。为了使构件更切合实际、更有效地被重用,构件应当具备可变性,以提高其通用性。构件应向重用者提供一些公共特性,另一方面还要提供可变的特性。针对不同的应用系统,只需要对其可变部分进行适当的调整,重用者要根据重用的具体需要,改造构件的可变特性,即客户化。需要进行客户化的构件称为抽象构件,而可以直接重用的构件称为具体构件。通用性越好,其被重用的面就越广。变化性越好,构件就越易于调整,以便适用于具体的应用环境。

  为了将不同软件生产商在不同软硬件平台上开发的构件组装成一个应用系统,必须解决异构平台各构件间的互操作问题,目前已出现了一些支持互操作的构件标准,3个主要流派为OMG(Object Management Group,对象管理集团)的CORBA(Common Object Request Broker Architecture,公共对象请求代理)、Microsoft 的COM(Common Object Model,构件对象模型)/DCOM(Distributed Component Object Model,分布式构件对象模型)和Sun的EJB(Enterprise JavaBean,企业JavaBean)。

  CORBA是由OMG制定的一个工业标准,其主要目标是提供一种机制,使得对象可以透明地发出请求和获得应答,从而建立起一个异质的分布式应用环境。CORBA技术规范的主要内容包括接口定义语言、接口池、动态调用接口、对象适配器等。

  EJB是用于开发和部署多层结构的、分布式的、面向对象的java应用系统的跨平台的构建架构。

  Microsoft的分布式DCOM扩展可COM,使其能偶支持在局域网、广域网甚至Internet上不同计算机的对象之间通信。

  

时间: 2024-08-28 22:38:30

基于构件的开发的相关文章

优分享VR开源啦,优分享VR是基于Google VR开发的一款手机VR视频资源的聚合软件

欢迎来到优分享VR开源项目 优分享VR 开源中国Git地址: http://git.oschina.net/xumingwang/youkes_vr 优分享VR是 优分享安卓APP VR视频播放开源部分.其它开源部分:优分享开源浏览器 优分享VR是基于Google VR开发的一款手机VR视频资源的聚合软件.由于google vr sdk现在出于初级阶段,所以本软件也不能完美的支持一些VR视频资源的播放,不过随着Google VR的发展,优分享也会与时俱进的支持更多的VR视频资源. 优分享VR安卓

基于Laravel+Swoole开发智能家居后端

基于Laravel+Swoole开发智能家居后端 在上一篇<Laravel如何优雅的使用Swoole>中我已经大概谈到了Laravel结合Swoole的用法. 今天,我参与的智能家居项目基本上已经结束了Web服务器及android端的开发(熬了个通宵突击把剩下的做了,好累), 趁热来聊聊基于Laravel+Swoole开发智能家居后端的关键技术点. 16进制ASCII码协议的解析 硬件我不谈,我只需要关心数据解析.如何基于Swoole如果在php中解析16进制的ascii码,这种文章还比较少呢

04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s

 1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2  spring-mvc结构 DispatcherServlet:中央控制器,把请求给转发到具体的控制类 Controller:具体处理请求的控制器(配置文件方式需要配置,注解方式不用配置) handlerMapping:映射处理器,负责映射中央处理器转发给controller时的映射策略 ModelAndView:服务

深入浅出Docker(五):基于Fig搭建开发环境

概述 在搭建开发环境时,我们都希望搭建过程能够简单,并且一劳永逸,其他的同事可以复用已经搭建好的开发环境以节省开发时间.而在搭建开发环境时,我们经常会被复杂的配置以及重复的下载安装所困扰.在Docker技术未出现之前,我们可以使用Pupet.Chef.Ansible等配置管理工具把复杂的配置管理起来,这样的管理配置技术仍然是目前比较流行的方式之一.配置管理工具使用的都是自己的DSL语法定义,考虑到环境的复杂性,配置一套通用的开发环境需要针对各个系统定制,对于大部分开发环境这种维护成本仍然是很高的

SOAP协议和基于SOAP的开发流程详述

[文章摘要] 简单对象访问协议(SOAP)是交换数据的一种协议规范,是一种轻量的.简单的.基于XML的协议,它被设计成在WEB上交换结构化的和固化的信息. 在实际的软件开发项目中,SOAP大多用于处理用户数据,也即实现开户.销户.改户和查户等功能. 本文根据作者实际从事过的基于SOAP的项目开发,对SOAP协议和基于SOAP的开发流程进行了详细的介绍.希望大家通过此文,能够对基于SOAP协议的开发有一个全面的了解. 一.soapUI和SOAP代码生成框架简介 "工欲善其事,必先利其器"

你也可以玩转Skype -- 基于Skype API开发外壳程序入门

原文:你也可以玩转Skype -- 基于Skype API开发外壳程序入门 Skype是目前这个星球上最厉害的IM+VOIP软件,Skype现在已经改变了全球2.8亿人的生活方式.你,值得拥有! :) Skype中文官网:http://skype.tom.com/ Skype全球官网:http://www.skype.com/ Skype也是世界上最开放,最具创新意识的IM工具,他提供了Skype API, Skype4COM, Skype4Java几种形式的开发接口给Skype爱好者编写Sky

基于Library去开发android SDK——sdk打包

以上我们完成了sdk开发环境的搭建,以及sdk中功能代码的具体实现,这一篇将介绍如何通过gradle实现我们sdk打包. 1.在我们的mylibrary的gradle中做如下配置: task makeJar(type: Copy) { delete 'build/libs/mylibrary.jar' //删除已经存在的jar包 from('build/intermediates/bundles/default/')//从该目录下加载要打包的文件 into('build/outputs/')//

android基于插件式开发

之前没有听过app插件式开发今天就做一下学习的笔记.这里的插件式开发通俗的讲就是把一个很大的app分成n多个比较小的app,其中有一个app是主app.网上查了一下采用了这种开发模式的有支付宝客户端.QQ换肤其他的就不得而知了有人说微信也是基于插件的但是微信在更新的时候会下载全部的应用程序把旧的完全覆盖所以猜想应该目前不是吧. 基于插件的开发列举两个比较突出的优点: 1.应用程序非常容易扩招,比如有一个新的领域要加到旧的应用程序中来只需把这个新的领域做为一个插件,只开发这个小的app就可以了旧的

推荐18个基于 HTML5 Canvas 开发的图表库 - 梦想天空(山边小溪) - 博客园

推荐18个基于 HTML5 Canvas 开发的图表库 - 梦想天空(山边小溪) - 博客园 推荐18个基于 HTML5 Canvas 开发的图表库