组件化开发概述
软件系统开发面临的困境
- 软件代码难以读懂和维护,业务逻辑分散在多个代码模块中
- 用户需求不断变化,再次开发一个新的软件成本高昂
突破尝试
- 我们应该“重用”,而不是每次都从头开始
- 大量的软件系统中都存在着功能重复的情况,因而开发可重用的软件组件是可能的。
组件与组件化开发
- “组件(Component)”,是指可以用于代码重用、单独发布和独立部署的软件模块。
- “组件化开发(Component-based Development)”:就是以可重用的软件组件为基础“装配出”软件的过程。
用什么来描述组件实现的功能?
- 组件的功能通过其“接口(Interface)”来表达。
- 组件通常是一个黑盒,我们通过其接口访问它,但并不需要关心内部结构及技术实现细节。
- 组件通常具有一定的独立性和比较强的可组合性。
- 创建可以当“积木”用的软件组件是组件化开发的核心工作之一
设计组件的基本原则
- 组件的设计首先是组件接口的设计,每个组件都应有一个明确的职责,体现为一个明确的组件接口。
- 组件的具体实现技术是第二步考虑的问题。
- 按照职责进行设计
为实现复用而设计
- 用组件进行开发,需要精心设计组件接口,达到以下目的:
- 允许围绕该组件的应用自由改变而无需改变组件本身,除非组件自己的功能需要改变。
仔细考虑组件功能集合的大小
- 组件的粒度用于衡量组件所提供的功能集大小、所封装的代码量多少等与“规模”相关的特性。
- 小组件:一个只允许输入邮编的文本框
- 大组件:Office软件包
- 粒度大小与灵活性通常成反比,与易用性成正比
组件化软件开发三板斧
- 重用已有组件
- 开发部分新组件
- 组合新旧组件搭建出新系统