Analogical specification reuse during requirements analysis
This thesis investigates analogy as a paradigm for retrieving, understanding and customising reusable specifications during requirements engineering. Cooperation between software engineers and support tools is necessary for effective analogical reuse. Retrieval uses a computational implementation of analogical reasoning to search and match many reusable specifications. On the other hand understanding, transferring and adapting specifications requires cooperation between the tool and software engineer. Cooperative support was designed for less-experienced software engineers with most to gain from successful specification reuse. Deliverables from this research have implications for software engineering, artificial intelligence, cognitive science and human-computer interaction. Specification retrieval is founded on a framework of software engineering analogies. This framework includes a set of domain abstractions describing key facts about software engineering domains. A computational model of analogical reasoning which matches domain descriptions to these abstractions was designed, implemented and evaluated during user studies with a prototype reuse advisor. An intelligent dialogue acts as a front-end to this retrieval mechanism by acquiring key domain facts prior to retrieving domain abstractions. This dialogue was designed from empirical studies of software engineering behaviour during requirements capture and modelling. Design of support tools for specification understanding and transfer was based on cognitive task and reasoning models of software engineering behaviour during analogical reuse and mental models of analogical understanding. Two empirical studies of inexperienced software engineers identified problematic mental laziness manifest as specification copying. A third study of expert software engineers who successfully reused specifications identified strategies for effective reuse. Detailed findings from all three studies informed the design of tool-based support for specification understanding and transfer. Findings also have implications for the design of tools to support other requirements engineering activities.