The second half of the twentieth century has witnessed remarkable advances in technology. The unquestioned leader in this race has been computer technology. Even the most modest personal computers today have computing power that would have astounded the leading technol- ogists a few decades earlier, and what's more, similar advances are pre- dicted for many years to come. Looking towards the future, it has been conservatively estimated that in 2047 computers could easily be 100,000 times more powerful than they were in 1997 (Moore's law [Moore] would lead to an increase on the order of around 10 billion) [Bell]. Because of its enormous capability, computer technology is becoming pervasive across the technology spectrum. Nowadays it is not surpris- ing to discover that very common household gadgets like your toaster contain computer technology. Televisions, microwave ovens, and even electric shavers contain software. And what's more, the use of computer technology has been estimated to double every two years [Gibbs]. In order to keep up with the growing technology demands and to fully utilize the ever more powerful computing platforms, software projects have become more and more ambitious. This has lead to software systems becoming dominant forces in system functionality. Further- more, the ambition to realize significant portions of a system's function- ality through software has extended into the high consequence realm. Presently, software controls many critical functions in (1) airplanes, (2) electronic commerce, (3) space-bound systems, (4) medical systems, and (5) various transportation systems such as automobiles and trains.