Easing the creation and maintenance of software systems through the use of domain machines
thesisposted on 05.07.2013 by Ian A. Coutts
In order to distinguish essays and pre-prints from academic theses, we have a separate category. These are often much longer text based documents than a paper.
Current approaches to the realisation of software systems employ elegant domain abstractions to handle system complexity. However, we do not preserve these abstractions within the systems we create: rather, we defer to the language imposed by the underlying architecture of computer hardware. Consequently, the intended purpose of much of the software which comprises these systems becomes lost. This results in software systems which require an in-depth knowledge of the specific implementation in order to support subsequent change. It is the use of computers in "real world" systems whose scale and complexity is orders of magnitude greater than was originally anticipated by the inventors of software languages that has contributed to the problem. In order to address this problem, research into the application of novel techniques for large scale system realisation is needed. This research investigates the creation and use of domain machines which directly execute domain abstractions, thereby preserving the structure and intent of the original system design. The author proposes a framework for the realisation of domain machines which when populated can provide separate specialised support for the particular characteristics of a software system design. The proposed framework is applied to two separate and very different case studies that are both: on a scale with systems in industry and commerce; and are tested through integration with an industrial/commercial software environment. The research proves that adopting the framework is an improvement on traditional approaches to large scale system construction and evolution, and also that the framework is not specific to a single application domain.
- Mechanical, Electrical and Manufacturing Engineering