What Is the Starting Point?
So how do you achieve solution value, and how do you begin to organize your thoughts on where to start in application development? If we had to identify the single architectural principle that is the foundation of J2EE and at the heart of the WebSphere product family, we would have to choose layering. Commonly, application development is accomplished in a vertical fashion. At a minimum the division and estimation of work is determined by defining the application's primary user interfaces.
Business rules, behavior, and data are obtained and manipulated based upon activity conveyed via the user interface. It is the responsibility of the architecture to provide a blueprint that guides developers on when and how objects are defined during the development process. The importance of establishing this blueprint is realized in support of the iterative development process, where vertical slices of application functionality are delivered in iterations made up of planning, development, and assessment activities. The architecture must support vertical and horizontal dimensions of an application. Horizontal development activities consist of applying logging, exception handling, and start up/shutdown mechanisms. Basically, this is behavior that must be provided by all applications. Vertical activities involve implementing slices of application functionality from presentation to data source access. Having the infrastructure in place to allow development to occur in these two dimensions is the responsibility of the architecture.
Most experienced IT professionals will agree that developing and adhering to a standard architecture is key to the success of large-scale software development. Computer science pioneer Edsger Dijkstra validated this notion when he developed THE operating system in 1968. Since then, layered architectures have proven their viability in technological domains such as hardware and networking.
Layering has proven itself in the operating system domain; however, the same benefits are available when applied to e-commerce or thin-client oriented applications. Layered architectures have become essential in supporting the iterative development process by promoting reusability, scalability, and maintainability. Next we will define and justify a layered architecture for J2EE and WebSphere that is the foundation for the remainder of this book.