The Design of Component-Based Systems
the first clash with the hostile main force. Only a layman can pretend to
trace throughout the course of a campaign the prosecution of a rigid
plan, arranged beforehand in all its details and adhered to the last. All
successive acts of war are therefore not premediated executions but
spontaneous acts guided by military tactics.
Field Marshal Helmuth von Moltke, "the Elder"
This chapter describes the initiating design question. It identifies a main design thread is identified, along with a more promising but speculative contingency plan. The case study describes an attempt to demonstrate the viability of this contingency plan.
13.1 Where are We?
The close of Chapter 12 posed a number of questions about how to transform the unstructured manifest depicted in Figure 12-3 into something more tangible. At root, each of these questions tries to clarify the implications of a number of a priori technology commitments.
During the earliest stage of the design two overall approaches surfaced. The first approach used Web server scripting to produce dynamic Web content and to act as a gateway interface between browsers and back-end DIRS services. The second approach used Java applets running in browsers to communicate with DIRS services. Each approach had its strengths and weaknesses:
The Web server scripting approach promised to be easy to implement, at least in the early stages. On the other hand, there were concerns that the approach would lock the project into a proprietary scripting language, this was dangerous considering how fast that segment of the technology market was changing. There were also worries about the long-term maintainability of this approach.
The applets approach promised to be a flexible way to deliver applications to geographically distributed users. This design also made fewer commitments to vendorspecific features of either HTTP browsers or servers. On the other hand there were serious concerns about the performance and security attributes of this approach.
After much gnashing of teeth, the project architect committed to the server-side approach, while simultaneously exploring the feasibility of the applet approach. If its feasibility could be demonstrated before the server-side approach had progressed too far, a switch-over could be effected without impact to the overall project schedule. There was, after all, considerably more development on other aspects of DIRS. The case study begins in earnest from the situation depicted in Figure 13-1. The main design branch was the Server-Side JavaScript (SSJS) ensemble, while the main contingency was the applet ensemble.
Figure 13-1 Main Design Path and Contingency Plan.