Information and Software Technology - Software quality assurance
An axiomatic basis for computer programming
Communications of the ACM
Supporting Source Code Difference Analysis
ICSM '04 Proceedings of the 20th IEEE International Conference on Software Maintenance
Cutpoints for formal equivalence verification of embedded software
Proceedings of the 5th ACM international conference on Embedded software
Program element matching for multi-version program analyses
Proceedings of the 2006 international workshop on Mining software repositories
JDiff: A differencing technique and tool for object-oriented programs
Automated Software Engineering
Equivalence checking in C-based system-level design by sequentializing concurrent behaviors
ACST'07 Proceedings of the third conference on IASTED International Conference: Advances in Computer Science and Technology
Back to the future: revisiting precise program verification using SMT solvers
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Finding programming errors earlier by evaluating runtime monitors ahead-of-time
Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering
Differential symbolic execution
Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering
Semantics-aware trace analysis
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
seL4: formal verification of an operating-system kernel
Communications of the ACM
An operating system abstraction layer for portable applications in wireless sensor networks
Proceedings of the 2010 ACM Symposium on Applied Computing
KLEE: unassisted and automatic generation of high-coverage tests for complex systems programs
OSDI'08 Proceedings of the 8th USENIX conference on Operating systems design and implementation
Architecture-based unit testing of the flight software product line
SPLC'10 Proceedings of the 14th international conference on Software product lines: going beyond
Data Mining: Practical Machine Learning Tools and Techniques
Data Mining: Practical Machine Learning Tools and Techniques
Directed incremental symbolic execution
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
A Context-Source Abstraction Layer for Context-aware Middleware
ITNG '11 Proceedings of the 2011 Eighth International Conference on Information Technology: New Generations
Practical, low-effort equivalence verification of real code
CAV'11 Proceedings of the 23rd international conference on Computer aided verification
Nearest neighbor pattern classification
IEEE Transactions on Information Theory
Hi-index | 0.00 |
Exchangeability between software components such as operating systems, middleware, databases, and hardware components is a common requirement in many software systems. One way to enable exchangeability is to promote indirect use through a common interface and an implementation for each component that wraps the original component. As developers use the interface instead of the underlying component, they assume that the software system will behave in a specific way independently of the actual component in use. However, differences in the implementations of the wrappers may lead to different behavior when one component is changed for another, which might lead to failures in the field. This work reports on a simple, yet effective approach to detect these differences. The approach is based on tool-supported reviews leveraging lightweight static analysis and machine learning. The approach is evaluated in a case study that analyzes NASAs Operating System Abstraction Layer (OSAL), which is used in various space missions. We detected 84 corner-case issues of which 57 turned out to be bugs that could have resulted in runtime failures.