There have been extraordinary developments in software systems in recent years. New programming paradigms have been introduced: functional programming, logic programming, and object-oriented programming. The understanding and practice of each of these areas has advanced rapidly. Also the development of formal specification of software systems has progressed enormously.