A software application to be used in an environment includes environmental, behavioral, design, and run-time model creating portions. The environmental portion includes a first set of attributes of the environment, wherein each of the first set of attributes has a declaration and a decomposition into environmental classes. The behavioral portion describes behavior of the software application at a boundary of the software application and the environment, wherein the behavioral model includes a second set of attributes, and each of the second set of attributes has at least one of a declaration and function. The design portion includes a first decomposition of the second set of attributes into a first plurality of groups. The run-time portion includes a second decomposition of the second set of attributes into a second plurality of groups, wherein the run-time model can record the decomposition of the software application into run-time components.