工厂是一个使用标准部件、工具和生产流程来规模化生产产品设备的组织,它广泛用在工业中,然而在软件开发行业中却很少提起。现在我们写的很多应用共性大于差异,但是我们仍然需要从头开始构建任何一个项目,这是非常低效的。由于没有一种方法可以让我们像工业上一样进行规模化生产,我们就需要不停地重复着一些代码工作,规模化一直是我们需要解决的主要问题之一。
几年前看过两本介绍软件工厂方面的书籍Software Factories(2004年)和Practical.Software.Factories.in.dot.NET,由于现在考虑OpenExpressApp的建模支持,所以又重新整理一下并与大家分享一下软件工厂的内容。
软件工厂是由微软提出来的,它作为一种创新的方法,可以帮助我们基于可重用流程和软件框架之上创建产品线,采用软件工厂将会帮助我们从系统化的重用获得规模化开发,获得更快的交付时间,更少的测试但更高的质量以及更好的可维护性等。
软件工厂是什么?
A software factory is a software product line that configures extensible tools, processes, and content using a software factory template based on a software factory schema to automate the development and maintenance of variants of an archetypical product by adapting, assembling, and configuring framework-based components.
Schema是分类或汇总开发工件的一个一致的方法,它在开发产品时是可配置的
产品线
MDD是什么?
高级别的开发流程
提炼功能模型
架构定义流程
Software Factories书籍内容框架
- 第1部分:介绍一下软件工厂
- 第1章:讲述一个全书引用的一个例子,用来了解软件开发人员面对的挑战。
- 第2章:描述当前方法和实践处理复杂性带来的问题
- 第3章:描述当前方法和实践处理改变带来的问题
- 第4章:描述面向对面不能很好的克服的一些长期问题,并介绍一些重要的创新,这些是软件工厂的基本组成
- 第5章:详细的描述软件工厂,并展现了一种规模工业化的愿景
- 第2部分:这部分包含多个主题,每一个描述了一个在第一部分介绍的重要创新,这些章节可以按照顺序的去读
- 第6章-第9章:讨论模型驱动开发(MDD)。第6、7两章讨论模型、模式和建模相关内容,第8、9章讲解语言本质以及构建语言族的工具
- 第10-11章:讨论产品族开发。第10章描述系统化的重用,第11章描述软件产品线内容
- 第12-13章:讨论基于组装的开发。第12章看了一下基于平台的抽象,包括类、库和框架,第13章讨论组件和服务
- 第14-15章:讨论了生成开发相关内容。第14章讲解了映射和转换,第15章讨论了如何从模型生成代码和其他生成工件
- 第3部分:回顾了一下第1部分的内容,梳理了一下第2部分内容。第16章引用了一个软件工厂例子,第17章回答了一些常问的问题
- 附件:描述抽象和提炼,以及UML的优劣
如果想快速阅读,可以先看第1、5、6、17章,然后通过第4章可以对重要的创新有个全面的了解,通过第1、2、3可以了解当前方法的一些问题。如果想阅读详细的讨论,则可以依次看低6到15章内容。