Undertaking the rapid development of enterprise software requires having a strategy in place that sees the entire project team suitably equipped for the task. The techniques and practices introduced throughout this book each contribute toward developing quality software for the J2EE platform faster. However, to gain maximum advantage from the topics covered, project teams must be suitably prepared for their use.
Preparation requires underpinning the topics discussed with proper tools, training, research, and ongoing support and investment from management. Combining these critical elements, along with suitable techniques from this book, gives rise to the concept of producing an adaptive foundation as the basis for the rapid development of enterprise software. The term adaptive foundation reflects both the need to have a base in place for project teams and that the elements that make up this base must have the capacity to accommodate the changing nature of business software.
Why a Foundation?
The term foundation cements the concept of requiring the necessary building blocks to be in place in order to perform rapid development. Arguably, the term framework would have been equally applicable. However, framework is already a well-used term within software engineering, and the intent was to avoid confusion with established frameworks such as Apache Struts or even J2EE.
Frameworks such as these form only part of the foundation for an effective rapid development strategy.
Perhaps the biggest schedule killers are the continual changes that bombard a development project throughout its lifecycle. These changes originate from a variety of sources, including changes in requirements, design, scope, and even in team members, customers, and management. All have the potential to adversely impact the delivery timeframe of a software business solution.
The software engineering practices we adopt must be flexible enough to absorb the impact of such changes, allowing the course of the project to change direction when required and hence generate a system that meets the needs of the customer.
The techniques and practices included in this book all fit the criterion of being able to operate within a fluid and dynamic development environment. Within these pages, you'll therefore find such practices as iterative development, active code generation, test-driven development, and aspect-oriented programming. These practices, and others like them, serve to supplement the enterprise development services already available on the J2EE platform.