Software Model Checking For Distributed Applications Using Hybridization Of Centralization And Cache Approaches - Hing, Ratana (2024)
Developing reliable distributed systems poses significant challenges due to the non-deterministic nature of thread and process execution, as well as communication channels. Software model checking offers a means to verify system correctness by exhaustively analyzing all program execution paths. However, the existing bytecode model checker, capable of verifying multiple processes, suffers from state space explosion and computational overhead. This thesis introduces Java PathFinder (JPF)-Nas-Hybrid (JNH), a novel model checker addressing these limitations. JNH employs a redesigned inter-process communication (IPC) model and integrates a scalable caching mechanism. This mechanism efficiently stores communication data between processes, mitigating computational overhead and state space explosion during model checking. By optimizing resource utilization and minimizing overhead, JNH significantly improves verification performance. Key enhancements include the development of a scalable caching mechanism integrated into the centralization IPC model, relocating request and response trees, and processing data in multi-byte chunks. JNH's creation involves extending from the JPF-core system and modifying Java network libraries. Additionally, the thesis explores bug detection strategies, distinguishing between local and global bugs, and evaluates various search strategies to explore distributed program state spaces. Through comprehensive testing and statistical analysis, the research provides insights into effective bug detection approaches, further advancing model-checking methodologies.