The Java Technology Landscape
In This ChapterKeeping up with technology has always been a concern of Remulak Productions. Chapter 4 presented the preliminary execution architecture of the company's order-processing application, based on what was known at that point in the project. Much of that preliminary architecture still holds true. However, the architectural components set out then dealt more with the technical architecturethat is, the tools and product sets for building and implementing the solution. We have not yet determined the approaches to take for the application architecture and data access architecture. This chapter reconfirms the technology architecture selected earlier and explores options for the other two types of architectures.
To review the need for a sound technical architecture.
To discuss the application architecture and why separation of services is so critical to the application's resiliency.
To explore the issues concerning the selection of a data access architecture.
To discuss the mechanisms available for enabling communication among the application's logical layers.
To explore the use of Java servlets and JavaServer Pages (JSP) as a mechanism of the Web server to respond to HTML forms-based input.
To cover how to manage transactions within the application via a framework such as Enterprise JavaBeans (EJB).
Next Steps of the Elaboration Phase
Before exploring the technology landscape of the project, let's revisit the Unified Process. Figure 8-1 shows the process model, with the focus on the Elaboration phase.
Figure 8-1 Unified Process model: Elaboration phase
In this chapter we focus on the architecture activities within the Unified Process. In particular, the following workflows and activity sets are emphasized:
Analysis and Design: Define Candidate Architecture
Analysis and Design: Perform Architecture Synthesis
Analysis and Design: Refine the Architecture
Test: Design Test
A key artifact produced at this point in the project is the Software Architecture Document (SAD).
Architecture is a heavily used term in our industry. Many excellent studies have focused on effective architectures over the years, and using my own experiences, along with what I have learned from others, I categorize architecture into the following three areas:
Technology: This architecture deals with the many tools required to construct the application. These tools include the database technology, construction tools, source control, configuration management, transaction monitor software, and software distribution. Although going into the project we might know which tools to use, focusing on the technology architecture now will confirm that our choices are correct on the basis of what is currently known about the application.
Data access: This architecture deals with how the data will be accessed in the application, including the database replication technology and the data access infrastructure (JDBC in the case of our application).
Application segmentation: This architecture deals with how to segment the application, including the layering strategy that will separate the various layers of the application and how the layers will be managed.
These three architectures are assessed collectively with respect to known requirements, and the appropriate mix for the application is selected. This unique set of technology, product, and architecture choices is called the application's execution architecture.