Tentative steps toward a development method for interfering programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Observer-A Concept for Formal On-Line Validation of Distributed Systems
IEEE Transactions on Software Engineering
Building systems from commerical components
Building systems from commerical components
Building Reliable Component-Based Software Systems
Building Reliable Component-Based Software Systems
Dependability: Basic Concepts and Terminology
Dependability: Basic Concepts and Terminology
Testing Component-Based Software: A Cautionary Tale
IEEE Software
Hierarchical Error Detection in a Software Implemented Fault Tolerance (SIFT) Environment
IEEE Transactions on Knowledge and Data Engineering
Assume-Guarantee Supervisor for Concurrent Systems
IPDPS '01 Proceedings of the 15th International Parallel & Distributed Processing Symposium
Assume-Guarantee Algorithms for Automatic Detection of Software Failures
IFM '02 Proceedings of the Third International Conference on Integrated Formal Methods
Runtime verification of .NET contracts
Journal of Systems and Software - Special issue on: Component-based software engineering
Java-MaC: A Run-Time Assurance Approach for Java Programs
Formal Methods in System Design
Intrusion detection aware component-based systems: A specification-based framework
Journal of Systems and Software
Journal of Systems and Software
Taxonomy and classification of automatic monitoring of program security vulnerability exploitations
Journal of Systems and Software
Hi-index | 0.00 |
The quality of software components is very important for the overall service quality of the component-based software systems. Several factors make exhaustive testing of components very difficult. Furthermore, the behavioral correctness of each independently produced component does not guarantee the behavioral correctness of the composed software system. Experience shows that there are faults in components which elude the testing effort and do not surface until the system is operating. In this paper, a specification-based software monitor is presented which can be used for detecting certain kinds of errors and failures of a component as well as the whole system while the system is operating. The behavior of each component is assumed to be specified in a formalism based on communicating finite state machines with addressing variables, and inter-component communications are achieved via asynchronous message passing. The monitor passively observes the external input/output and receives partial state information of the target system or component. These are used to interpret the specification. The approach is compositional as it achieves global monitoring by analyzing the behavior of the components of a system individually, and then combining the results obtained from the independent component analyses. The paper describes the architecture and operations of the monitor and includes illustrative examples. Techniques for dealing with non-determinism and concurrency issues in monitoring a concurrent component-based system are also discussed.