(这个问题琢磨了好几天,越琢磨越觉得是个大问题,都快理解不了了,从朴素的想法开始,然后看了几篇paper,然后彻底就晕了:好大的范围啊。可能看paper,琢磨paper的哥们姐们都有类似的感觉。)
第一个毫无疑问:经验。项目或者产品中反复出现的same job,有必要extracted and generalized into component,借用Refactoring的术语就是Extract Component,这也应当是构件最踏实、最稳妥的诞生方式;第二种就是把构件当作普通软件一样看待了:客户提出需求,根据需求开发,Components-by-Design,Flashline公司的一项业务。还有其他方式么?没了,其他的都可以归为这两类。其实就是bottom-up方式和top-down方式。
1. Extract Component就涉及到构件内部结构问题:如何从一堆class,或者好一些package中Extract出一个足够general的component?
( 按照费曼的话者应当是一个“显然的问题”。这哥们眼中只有三类问题:显然的,不显然的,费解的;显然的就是任何受过训练的哥们花点儿时间都能搞定;不显然的是搞定了就能得诺贝尔;费解的,呵呵,他说混沌算一个)
那我们看看这个问题有多显然。我琢磨这个是因为看到Agile Software Development,chapter22,Bob说如果包结构不好,也就是H因子(Relational Cohesion,一个表示“包内聚程度”的度量量)太小,D'因子(Normalized Distance from the Main Sequence,表示“包抽象程度和稳定(stability)程度是否平衡”的度量量)也太小,就会导致development environment will be sensitive to change, which may cause unnecessary rerelease and retesting。我第一个念头就是Component is immunity to low-abstraction (H偏小)。不是么?Component需要的、提供的都是通过interface来定义的,那么不就天生programming to interface。但是,是这样么?好像没这么简单。
Clemens说基本上采用一中Component Arch或者Component Framework时候,Component Model就订了,没错,但这是说结构,不是内容,内容哪儿来?一个哥们说One answer is ontologies,一堆Knowledge engineering的东西(
where do components come from): You can build an ontology, develop domain architectures and templates
from it, and create component-based systems that facilitate the sharing
of information based on the ontology.
2.那第二个component by design怎么样呢?TDD这么好,能不能Test-Driven Component Development (TDCD)?后来感觉是扯淡,TDD,模式等东西力量之源就是“模糊”,很像咱们中国古人搞得一套,说不清楚,但是就是好用。形式化不是万能的:XP核心就是不定的重构(你说改也行,但这是有保证的改,不是瞎改,除了莫扎特的音乐,啥不是改出来的)但构件就要形式化,哪一个contractual specified interface得非多少力气去与变化的需求同步去?tools?感觉不是那么好影射的,所以和小董张罗了一阵觉得没戏,就撂下了,原谅我,小董。
最新对构件的认识:这就是比对象好一点儿的东西,或者说白了,就是人们用对象用多了,知道怎么用了:清晰的 explicit的contextual dependencies,接口和实现一定要分析,粒度大点儿,也就是抽象程度高了(是么?那Facade不也是干这个的么)等等,等等,好好看看Agile Dev书和J2EE without EJB后,感觉component就是个新名词,Spring哥们不明白Object和Component本质区别在那儿,还在他的书中(J2EE without EJB)质疑了一把,我觉得有道理——不是墙头草啊!否定之否定吗,不过我准备把这个问题扔给Clemens老兄,看他怎么回答,呵呵,期待啊!(谢谢他老哥们,那么忙还顾得上回复我的弱问题,交情啊)
所以,总结是,不需要Component,好好用Object就够了(看以后会不会再变?)对了,Spring中的bean就是POJO,那XML定义的组合不就是构件组合模型么?以我一个老构件工作者的眼光就要大喊:我靠,构件吗!
最近在乖乖的看component-based os方面的文章,回头好好说说OS中的构件是个啥样,先预报一句:It's really a big surprise!
相关推荐
WHAT IS 构件? 构件是系统中可替换的物理部分,它包装了实现而且遵从并提供一组接口的实现。构件可以是一个物理单元,如动态链接库(dll)、可执行文件(exe),或者是一个逻辑单元,如 COM+、CORBA 及企业级 Java...
我们采用了三种构件获取方式:通过改造现有系统获得构件、使用构件库中现成的构件、集成第三方的服务来实现。 构件开发是基于构件的软件开发的第二步。在构件的设计过程中,应尽可能将同一功能的不同表现封装到一个...
2. **标识接口的构件表示法**:除了基本的构件表示外,还包括了构件的供给接口和需求接口的标识,以便更直观地展示构件的功能和服务需求。 通过上述分析可以看出,构件图在系统设计和开发过程中起着至关重要的作用...
构件库的核心思想是代码复用,它允许开发者不必从零开始编写每一个功能,而是可以利用已经验证过的、高质量的软件组件。这不仅节约了时间和资源,还降低了出错的可能性,因为已有的构件通常经过了充分的测试和优化。...
### SOA SCA服务构件架构Spring构件实现方案 #### 一、引言 随着企业级应用的日益复杂,传统的单体应用已经难以满足快速变化的业务需求。面向服务的架构(SOA)作为一种灵活的服务组织方式,通过将复杂的业务功能...
在IT行业中,构件模型(Component Model)是一种软件开发方法,它允许开发者将应用程序分解为可重用的、独立的功能单元,这些单元被称为构件。构件模型促进了软件的模块化,提高了开发效率,降低了维护成本,同时也...
软件构件技术是现代软件开发领域中的重要组成部分,它代表着软件工程的一种进化,是从传统的面向对象编程向着更加模块化、可重用和标准化方向发展的重要里程碑。面向对象技术为软件构件提供了基础,但构件技术更注重...
TEKLA构件材料表,TEKLA构件材料表,TEKLA构件材料表,TEKLA构件材料表
- **是否按照需求规约构造了高质量的构件?** - **是否遵循了既定的构件标准和模型?** - **所选择的可复用构件是否适合当前的系统?** - **在系统中是否正确地实现了构件的复用?** - **对构件进行了必要的修改或...
综上所述,软件复用与软件构件技术是软件工程领域的核心策略,它们旨在通过高效地利用已有资源来提升软件开发的效率和质量。随着技术的进步,未来我们将看到更多创新的复用方法和构件模型,进一步推动软件产业的发展...
### 部件是否就是业务构件? #### 一、引言 随着信息技术的发展,软件复用的概念逐渐成为软件工程领域的重要研究方向之一。本文旨在探讨软件领域的“部件”与“业务构件”之间的区别与联系。根据给定的信息,我们...
小程序 型钢构件设计软件(学生必备)小程序 型钢构件设计软件(学生必备)小程序 型钢构件设计软件(学生必备)小程序 型钢构件设计软件(学生必备)小程序 型钢构件设计软件(学生必备)小程序 型钢构件设计软件...
常用设计编程工具 型钢构件设计软件.zip常用设计编程工具 型钢构件设计软件.zip常用设计编程工具 型钢构件设计软件.zip常用设计编程工具 型钢构件设计软件.zip常用设计编程工具 型钢构件设计软件.zip常用设计编程...
面向构件的软件开发 确定业务范围和框架 确定应用环境和技术 选择开发平台 建立构件化开发体系 建立构件库
**ASP.NET构件概述** 在ASP.NET开发环境中,构件(Control)是构建Web应用程序的基本单元,它们为开发者提供了丰富的功能和灵活性。ASP.NET构件是可重用的代码单元,可以是HTML元素、服务器控件或者自定义用户控件...
开发者需要根据项目的具体需求,挑选合适的构件,并通过接口规范将它们有效地集成在一起。同时,构件的测试也显得尤为重要,开发者必须确保每个构件及其组合都能够稳定运行。在部署阶段,也要考虑到构件的安装、配置...
这有助于开发者更好地理解构件的工作原理,并为后续实现提供清晰的蓝图。 4. 实现:根据设计规范,编写构件的源代码。这可能包括选择合适的编程语言,实现构件的功能,以及创建必要的测试用例。 5. 测试:对构件...
大量实践经验表明,将构件技术引入到嵌入式系统的开发与利用当中,能够有效...文章从多个角度切入,着重分析以Java程序语言为主体的嵌入式构件模型MJ概念,并针对MJ涉及元素、符合方式及交互性等动态特征作深入浅出的研究。