Formal Engineering of Software Library Systems

The reuse of complete software developments and the processes used to create them has the potential to signi cantly ease the process of software engineering, by providing a source of veri ed software artefacts. Software libraries are collections of software artefacts which have been aggregated to form a resource-rich environment, from which software engineers can reuse the e orts of others during subsequent software development. By storing such information, software libraries serve as a vehicle for the exchange of ideas and experience between software engineers. It is argued that reuse of software artefacts can be achieved through the utilisation of software libraries. However, software library systems are not yet common or mature phenomena, and as such are themselves candidates for software engineering analysis. The goal of this thesis is to provide a reasoned formal speci cation of a software library system, to serve as a precise, clear context in which to analyse and discuss general software library structures and processes. This yields a formal basis for the continuing development of software library designs and implementations, promoting the development of new reuseoriented software engineering techniques. Through formalisation of software libraries, de ciencies of existing software libraries are identi ed, suggesting new ways of modelling library artefacts and operations. As the new models are developed, processes for formulating library policies are proposed. A library of object-oriented class declarations is also developed to serve as an illustration of the new models and processes. Ultimately, the formal speci cations and processes gathered together in this thesis form a coherent description of software library systems. This promotes the e ective reuse of software artefacts by providing a more formal structure for their storage and dissemination.