To illustrate how all the tools and techniques described in this book can be brought together, I will put together the framework of a build and release process for a working example. Although this example is not especially large or complex, it is based on real-world scenarios. It should give you an idea of how the automation of the software build and release process can affect an organization.
Welcome to RationalBank
Throughout the book, you will see references to RationalBank. This is a mythical retail banking organization whose current work includes implementing an online Internet banking application. The application is a traditional three-tier model with a number of components: a Web client customer front end, a thick client administrative front end, some middle-tier business logic, and a back-end database. Figure 1.3 shows a deployment diagram for each of these components.
Figure 1.3. RationalBank deployment diagram
Each of the components shown in Figure 1.3 is developed as an individual project:
Each project is developed in isolation before being integrated into the application as a whole and therefore has its own directory structure and build scripts. Due to the nature of the application, several build and runtime dependencies exist between the projects. For example, both the RationalBankWeb and RationalBankAdmin projects require the build outputs of the RationalBankModel project. This environment is sufficiently complex for you to see how automating the build and release process can add value and would work in different environments.
To simplify the explanation of how a build and release environment can be constructed, all the examples and listings in this book focus on RationalBankModel.