我在Fluent NHibernate Wiki中阅读了以下句子:
...; 然而,对于大多数新建的应用程序(和相当多的改扩建之辈)自动映射将能者多。
什么是绿地和棕地应用?
Answers:
在其他学科(例如软件工程)中,未开发的项目也没有先前工作所施加的任何约束。类比于在未开发土地上进行改造或拆除现有结构的未开发土地上的建设。
(摘自http://en.wikipedia.org/wiki/Greenfield_project)
棕地开发是IT行业中常用的术语,用于描述在现有(旧)软件应用程序/系统直接存在时需要开发和部署新软件系统的问题空间。这意味着任何新的软件体系结构都必须考虑并与已经就地运行的实时软件共存。
(摘自http://en.wikipedia.org/wiki/Brownfield_(software_development))
根据我对James Gregory(Fluent NHibernate背后的人)的了解,我认为Wikipedia上关于Brownfield的条目在理论上有些偏颇。在Brownfield Application Development中,我们将其定义为:
先前创建的项目或代码库,可能会因不良做法,结构和设计而受到污染,但有可能通过全面而定向的重构来恢复
简短版本:一个需要工作但仍在积极开发中的现有项目(与大多数旧系统不同)。
关于公司决定“绿地”或“棕地”或重构遗留代码的决定存在很多争论。
做出决定时需要考虑许多因素-最重要的是开发新应用程序的可用资金。在许多情况下,遗留应用程序是该公司当前的摇钱树,而对该遗留代码的任何未开发的替代都不会产生一个红色的美元,除非它已经完全开发并由第一个付费客户掌握。
尽管对于大多数软件工程师而言,他们更喜欢“启动新的绿色项目”,因为他们通常讨厌OPC(其他人的代码),但这可能并不总是公司的长期财务状况。
我写了一篇文章,以我在20年前工作过的一家公司的非常真实的经验为基础,分析了未开发项目所涉及的风险(显示我现在的年龄;)。你可以在这里阅读它:
http://stepaheadsoftware.blogspot.com.au/2012/09/greenfield-or-refactor-legacy-code-base.html