TY - JOUR
T1 - Java-MaC
T2 - A Run-Time Assurance Approach for Java Programs
AU - Kim, Moonzoo
AU - Viswanathan, Mahesh
AU - Kannan, Sampath
AU - Lee, Insup
AU - Sokolsky, Oleg
N1 - Funding Information:
∗This research was supported in part by NSF CCR-9988409, NSF CCR-0086147, NSF CCR-0209024, ARO DAAD19-01-1-0473, and ONR N00014-97-1-0505.
PY - 2004/3
Y1 - 2004/3
N2 - We describe Java-MaC, a prototype implementation of the Monitoring and Checking (MaC) architecture for Java programs. The MaC architecture provides assurance that the target program is running correctly with respect to a formal requirements specification by monitoring and checking the execution of the target program at run-time. MaC bridges the gap between formal verification, which ensures the correctness of a design rather than an implementation, and testing, which does not provide formal guarantees about the correctness of the system. Use of formal requirement specifications in run-time monitoring and checking is the salient aspect of the MaC architecture. MaC is a lightweight formal method solution which works as a viable complement to the current heavyweight formal methods. In addition, analysis processes of the architecture including instrumentation of the target program, monitoring, and checking are performed fully automatically without human direction, which increases the accuracy of the analysis. Another important feature of the architecture is the clear separation between monitoring implementation-dependent low-level behaviors and checking high-level behaviors, which allows the reuse of a high-level requirement specification even when the target program implementation changes. Furthermore, this separation makes the architecture modular and allows the flexibility of incorporating third party tools into the architecture. The paper presents an overview of the MaC architecture and a prototype implementation Java-MaC.
AB - We describe Java-MaC, a prototype implementation of the Monitoring and Checking (MaC) architecture for Java programs. The MaC architecture provides assurance that the target program is running correctly with respect to a formal requirements specification by monitoring and checking the execution of the target program at run-time. MaC bridges the gap between formal verification, which ensures the correctness of a design rather than an implementation, and testing, which does not provide formal guarantees about the correctness of the system. Use of formal requirement specifications in run-time monitoring and checking is the salient aspect of the MaC architecture. MaC is a lightweight formal method solution which works as a viable complement to the current heavyweight formal methods. In addition, analysis processes of the architecture including instrumentation of the target program, monitoring, and checking are performed fully automatically without human direction, which increases the accuracy of the analysis. Another important feature of the architecture is the clear separation between monitoring implementation-dependent low-level behaviors and checking high-level behaviors, which allows the reuse of a high-level requirement specification even when the target program implementation changes. Furthermore, this separation makes the architecture modular and allows the flexibility of incorporating third party tools into the architecture. The paper presents an overview of the MaC architecture and a prototype implementation Java-MaC.
KW - Execution trace validation
KW - Formal specification
KW - Java
KW - Java bytecode engineering
KW - Program instrumentation
KW - Run-time monitoring and checking
KW - Software reliability
UR - http://www.scopus.com/inward/record.url?scp=1842638523&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=1842638523&partnerID=8YFLogxK
U2 - 10.1023/B:FORM.0000017719.43755.7c
DO - 10.1023/B:FORM.0000017719.43755.7c
M3 - Article
AN - SCOPUS:1842638523
SN - 0925-9856
VL - 24
SP - 129
EP - 155
JO - Formal Methods in System Design
JF - Formal Methods in System Design
IS - 2
ER -