PI: David H. Lorenz Co-PI's: Paul C. Attie, Dana H. Brooks Northeastern University
SoD: Design Locality: A Concept for Controlling the Design Complexity of Large Software Systems
Large software systems are extremely difficult to design correctly. This difficulty stems largely from the exponential number of ways in which components can interact. This project's objective is to develop a design methodology for constraining interaction in large complex software systems. The central idea is design locality: synthesis, verification and analysis are applied to small subsystems; local properties are verified for subsystems in isolation and then combined to deduce global properties.
Our approach is ``design for verifiability'': design a large system so that verification is tractable. A mixed methodology will be developed: top-down for design, bottom-up for analysis and verification. A well-designed system can be decomposed top-down into small subsystems while its global properties follow bottom-up from subsystem properties.
A goal is systems representation in "pairwise normal form": code that synchronizes a pair of components is cleanly separated from code that synchronizes other (even overlapping) pairs. Pairwise composition is a separation of concerns solution that facilitates modularity, modifiability, and maintenance, applicable to component assembly. Our test cases are aspect-oriented programming and the SCIRun software, which builds dataflow networks of components for integrated and interactive scientific computation and visualization.