# Eating the IT Elephant > ## Preface ## Preface [Brownfield software development](https://wiki.g15e.com/pages/Brownfield%20software%20development.txt): > IT systems are generally not implemented on Greenfields any more. The accumulated complexity since 1964 (IBM's System/360) means that the environment for most big IT projects is one of immense challenge, entangled in an almost uncountable number of environmental constraints. > > This is the underlying reason for the demise of most large-scale IT projects. … > > Big projects are usually executed on "contaminated" sites, where you need to be careful of where and how you build; a change in one place can ripple through to other systems in unexpected ways. Such sites are more brown than green, and the IT industry needs to adopt a [Brownfield-oriented approach](https://wiki.g15e.com/pages/Brownfield%20software%20development.txt) to address them successfully. ## Chapter 8. Brownfield Development > Brownfield essentially takes an iterative approach for design, development, and much of testing (in line with the modified V model we showed earlier). The main sequence of the method is essentially waterfall, however, and is split conventionally into four phases. > > - **Survey phase:** During the Survey Phase, the boundary of the solution is determined via a business context and a gathering of business events. The environment is scoured for potential inputs that lie within that boundary or interact over it. These inputs form part of a site survey, which is fed into the Inventory. The phase ends with an engineering plan being created, which structures the iterative engineering cycle that follows. > - **Engineering phase:** The Engineering Phase is executed at least three times, but should ideally be executed on a daily to weekly cycle. (On a large project, it might be executed more than 100 times.) It follows a process of discovery, engineering, generation, and testing with feedback within that process. During this phase, the description of the problem, the solution, and the patterns underpinning the solution are incrementally refined. The individual steps within the Engineering Phase are covered in more detail later in this chapter. A formal estimation of project size (based on the Inventory, use case list, and problem definition) should be used to determine the actual cycle numbers and dates for $n_1$, $n_2$, $n_{last}$ at the end of the Survey Phase and then should be revised at the end of Iteration {n_1}. The Engineering Phase finalizes the Problem Definition and Solution Definition. > - **Accept phase**: This phase performs the formal acceptance of the system by completing any remaining testing. The focus should be on acceptance and operational testing because other areas should be complete. > - **Deploy phase**: The accepted solution is handed over to service delivery and application maintenance personnel. Training and education for the new solution commences. The solution goes live. > > The lifecycle differs from that of the traditional waterfall method employed on large-scale developments and instead utilizes a more agile approach to the development lifecycle.