Building Blocks

The design of a software program — just like that of a physical structure — must specify a set of quality building blocks. Without them, no project can succeed, no matter how clever the methods used to guide construction.

Before discussing the major subsystems of the LongJump architecture, it is important to understand the required building blocks that would be used to actually create a LongJump application. The list below provides an overview.

The following sections describe these building blocks in detail.

Hardware

Generic, inexpensive hardware (based on common Intel and AMD microprocessors, PCI busses, etc.) is the best choice for the server side. Modern generic hardware will — if used with well-designed software — operate quickly and reliably. Installing additional generic servers for increased redundancy and performance is almost always far cheaper than using highly proprietary hardware. For example, massive installations of Linux-based PCs have been used to create powerful supercomputers [Gro02] — at less than one-tenth the traditional supercomputer price.

On the client side, far less control is possible — users would be reluctant to switch platforms just to use one application. Mobile wireless devices in particular can be highly variable. Ways to deal with this situation are presented in the subsection Client Building Blocks.