GGrantIndex
← Search

CAREER: From Incidental Algorithms to Reusable Components: Managing the Emergent Complexity of Large-Scale Software Systems

$426,579FY2009CSENSF

Texas A&M Engineering Experiment Station, College Station TX

Investigators

Abstract

This award is funded under the American Recovery and Reinvestment Act of 2009 (Public Law 111-5). Real-world software systems are large, complex artifacts built up over multiple layers of abstraction using diverse collections of components. Though individual components are often reusable, code that manages interactions between components seldom is. Such code is large-scale itself, and encodes significant amounts of application logic. A potential for communication between components, typically effected by message passing between objects, forms incidental structures in a program. Though such structures are real data structures, they lack an explicit representation in program code and at run time, and are thus difficult to reuse, manipulate programmatically, and reason about. This project focuses on identifying incidental structures that arise in important domains of mainstream programming---human interfaces in particular---and modeling them as declaratively specified explicit software artifacts. The hypothesis is that large amounts of ad-hoc code can be obsoleted, and replaced by reusable algorithms and components. The particular source of incidental data structures in user interfaces is the event handling code, implementing propagation of values, validation logic, interface element enabling logic, scripting support, etc. The project seeks to demonstrate that these functionalities, typically implemented with application-specific non-reusable code, are not specific to a particular user interface; they can be realized with reusable generic algorithms, parameterized over a (declaratively specified) model that captures the relations, as a system of constraints, between values manipulated by the user interface. The proposed work will impact future large-scale software development, aiming to realize substantially increased productivity and software that is more reliable, efficient, and predictable.

View original record on NSF Award Search →