CAREER: Synthesizing Architectural Tactics
Rochester Institute Of Tech, Rochester NY
Investigators
Abstract
Software architecture refers to the discipline of designing the structure of software systems. The structure consists of software elements (or modules or components) and relations among them, as well as properties and constraints on the structure and behavior of the elements. The term “architecture” used in this sense is a metaphor, analogous to the architecture of a building. The software architecture serves as a blueprint for the system and the developing project, and guides the design and development of the software. During the designing of a software architecture, attributes such as reliability, availability, security, and performance are addressed by posing and comparing alternate solutions, understanding their trade-offs, and ultimately making a series of interrelated design decisions with the intention of optimizing the degree to which each of the quality concerns is satisfied. As in building architecture, the software architecture discipline has developed standard methods, called architectural tactics, of making these architectural design decisions. The main objective of this project is to develop and validate new technologies that could make software architecture design more intuitive, particularly for novice programmers and new learners. The vision is to someday be able to have programmers express their design intent intuitively and generate error-free software programs. Software architecture design is notoriously difficult to learn and even harder to master. In order to satisfy quality attribute scenarios, appropriate architectural solutions need to be chosen and implemented. These solutions are often based on well-known architectural tactics and software frameworks that deliver these tactics. This project presents a solution to change software design and programming from purely manual and exclusive tasks to one in which a programmer and an automated tactic synthesis tool collaborate to generate defect-free software design and implementation that satisfy quality attributes scenarios. This project will create (1) a context-aware inference algorithm capable of recommending suitable architectural tactics to programmers, (2) learning by example techniques for inferring the specification models that describe how a tactic can be implemented using a software framework, and (3) automated tools and an intuitive domain-specific language for the synthesis of tactical code. In addition, this research will design, develop, evaluate, and release new interventions in terms of software design strategies that can help novices and new learners during software design and programming activities. This award reflects NSF's statutory mission and has been deemed worthy of support through evaluation using the Foundation's intellectual merit and broader impacts review criteria.
View original record on NSF Award Search →