Font Size: a A A

Connecting software design principles to source code for improved ease of change

Posted on:2006-03-02Degree:Ph.DType:Dissertation
University:University of WashingtonCandidate:Sazawal, VibhaFull Text:PDF
GTID:1458390008457776Subject:Computer Science
Abstract/Summary:
Software is repeatedly modified, refactored, and extended. As a result, programmers often intend to build software that is easy to change. Unfortunately, as software systems evolve, they often grow more brittle. Each subsequent change becomes more difficult than the previous one.; One cause for increasing brittleness is the semantic gap that divides code from the design principles that govern ease of change. When working directly with existing code, programmers may not realize that their changes violate a design principle. This dissertation presents an approach, based on design snippets, that helps programmers adhere to design principles and make better ongoing design decisions as they actively work with code.; Design snippets are abstractions of software that are co-displayed with code. Design snippets help programmers build and maintain connections between the code they are actively working on and relevant design principles. Programmers view design snippets as they write or modify code, without switching contexts. Design snippets are scoped to focus only on details related to the code currently being edited or viewed.; The Design Snippets Tool, a plug-in to the Eclipse IDE, generates four types of design snippets from Java code and displays these snippets with Java source files. The snippets generated by the tool support information hiding and low coupling, two important design principles related to ease of change. As programmers modify existing code, the Design Snippets Tool automatically updates the snippets displayed.; Empirical studies show that design snippets help programmers make decisions by providing them with relevant design information---information they use to identify design problems, facilitate thinking about design principles, plan modifications, and review the effects of modifications on the design of their system.
Keywords/Search Tags:Design principles, Code, Software, Design snippets, Programmers, Change, Ease
Related items