A software development paradigm with the tug specification language for developing reliable programs

The quality of software depends mainly on the effectiveness of the software development paradigm. Existing software development paradigms are not flexible and practical enough for developing a system that needs the mix of existing paradigms used in the production of that system. This dissertation presents a formal specification language, called TUG, to support a system to be developed through an integration of conventional software development, operational specification, rapid prototyping via software transformations, software reuse, and analysis of TUG specifications. The language development was based on the theory of definite clause grammars. A language processor was developed to realize the language. A set of transformation rules were also developed to derive a Prolog program from a specification in the language. A software transformation approach is presented to show how the derived program is modified whenever there is a change in a specification. With the aid of software transformations, a prototype in Prolog is constructed or modified automatically. The language was also developed to support software reuse at the specification level by incorporating several features such as polymorphism, overloading, schemes, root type, subtypes, renaming, extending, and sharing in the language. Techniques are also presented to analyze a specification. The use of the language in the software development paradigm is illustrated through case studies. The software development paradigm with the aid of the TUG specification language improves the software development process by delivering an operational prototype early to the user and increasing the role of automation. The pursuit of these improvements contributes to the production of reliable and reusable programs.