Synopsis
Rationale Software engineering aims to develop software by using approaches which en able large and complex program suites to be developed in a systematic way. However, it is well known that it is difficult to obtain the level of assurance of correctness required for safety critical software using old fashioned program ming techniques. The level of safety required becomes particularly high in software which is to function without a break for long periods of time, since the software cannot be restarted and errors can accumulate. Consequently programming for mission critical systems, for example, needs to address the requirements of correctness with particular care. In the search for techniques for making software cheaper and more reliable, two important but largely independent influences have been visible in recent years. These are: • Object Technology • Formal Methods First, it has become evident that objects are, and will remain an important concept in software. Experimental languages of the 1970's introduced various concepts of package, cluster, module, etc. giving concrete expression to the importance of modularity and encapsulation, the construction of software com ponents hiding their state representations and algorithmic mechanisms from users, exporting only those features (mainly the procedure calling mechanisms) which were needed in order to use the objects. This gives the software com ponents a level of abstraction, separating the view of what a module does for the system from the details of how it does them.
Synopsis
This text presents an overview of two approaches to software engineering - formal methods and object-oriented techniques. By extracting the best aspects of each, the text demonstrates how better and safer software is being developed. Three main strands of research are identified and discussed: the application of formal methods to object technology; the extension of formal methods with object-oriented concepts; and the formal foundations of object technology. Examples of each approach are included and areas such as concurrency and real time, which are especially important in the development of large scale, distributed and safety critical systems, are addressed.
"About this title" may belong to another edition of this title.