译者序
项目、产品、框架都是软件的不同形态。
项目针对的是特定的用户群,例如某个企业。它不需要很大的灵活性,因为需求是相对固定的,但有很强的特殊性,必须能够满足用户的一些极端需求。
产品针对的是某个领域的用户,例如某种类型的企业。它需要满足这一类用户群中的通用需要,并可以根据不同用户的需要做一定程度的定制。
而框架是针对那些开发应用(项目或产品)的人而设计的,它的目标是使那些开发应用的人能够快速地制造出高质量的软件。这一目标决定了框架开发具有高度的灵活性,并允许将部分的实现留由应用开发人员完成。
在现实中……很多产品可能具有产品特色,但是又是以项目为单位开发的,甚至可能已经发展出一定的框架来了。
前言
框架是一门艺术,它在提供可重用的内容(例如供业务应用使用的,预定义的业务对象和业务流程)和灵活性(允许对内容进行定制,以准确地满足框架用户需要)之间保持一种平衡。
这是一种极其微妙的权衡艺术,如果过度的提供灵活性,那么框架就会分裂成微小的业务对象和低层次的业务流程——更像是一个类库。另外一方面,如果过分注重内容,我们就会面临着使定制复杂到难以使用的风险——就像使用一个现存的系统来构建另一个系统一样。如何有效地找到这个平衡点,是那些希望成为框架设计者所需要学习的。