Overview: This research project focuses on new ways to address conformance testing and system integration of object-oriented software whose specification is dependent upon the use and integration of independent software components. The components themselves may be specified at different times by different specification groups, yet the integration of all of the pieces must work together under the rules of a new or revised system specification. The goals of this project are to prototype and simulate oo-specifications and to discover new methods for efficient and effective testing of object-oriented, component-based software systems.
Industry Need Addressed: Business software is often constructed from a combination of off-the-shelf components, with new components integrated to satisfy new requirements. The original components are often sealed so that the source code is not available, yet objects in the new components will interoperate via messages with objects in existing components according to expected interface rules derived from formal or informal specification of each component. Newer and more efficient means of specifying and testing such business software will result in lower development costs and higher quality.
NIST/ITL Approach: We assume that each component is object-oriented, that is, it consists of objects with state and behavior. State is determined by state variables for each object and behavior is determined by methods that operate on one or more objects to read or modify state variables. We represent state and behavior as a finite state machine where predicates on state variables determine a state and where transitions result from state transition specifications for each method. The feasible processes of object-oriented software can then be represented as data flows on a directed graph, where nodes are determined from states, guards, and transitions of the finite state machine, and where edges are determined from data and control flow resulting from method invocation. An appropriate set of test specifications to cover all potential data flow can then be derived from the directed graph. Recent developments include a component testing architecture that consists of specification representation, rapid prototyping, and test generation, as well as a test harness for system analysis and test execution. An overall goal is to automate the entire process so that prototyping, testing and analysis can be derived directly from object-oriented specifications, such as those using UML modeling facilities.
Impact: This project contributes to the advancement of software specification and testing methodologies, and to practical application of the results to object-oriented software systems, thereby contributing directly toward the ITL mission of promoting and improving the quality of software. More efficient and automated methods of specification and testing will have a positive impact on the software industry as a whole.