Paper: "Crossing the Boundaries while Analyzing Heterogeneous Component-Based Software Systems"
Authors: Amir Reza Yazdanshenas, Leon Moonen
Session: Research Track Session 7: Components
5. Case Description
Start with clear More costumers: More costumers:
design & documents new requirements scalability
Input1 Output1
Input2
A A
Output2
• Inhibit Input1
A A Output1
D D
Input3
D D
Output3 • Override
Input4 Output4
Input5
D D
Output5
• Suppress
D D
Input6
D D
Output6 • Acknowledge CascIn CascOut
Input7 Output7
A D
D Output8
Output9 A A
D
Similar to digital circuit CascIn
CascOut
design components!
Workaround:
• Cascading modules
• Voting modules
5
7. Case Description…
Potentially unlimited number of configurations
– No default/standard configuration of components!
– Separate configuration for each installation
– (examples omitted due to NDA)
7
8. Problem Statement
logic
Comp. 1 Comp. 3
Input Output
Comp. 2 Comp. n
8
9. Problem Statement
Do sensor signals reach the correct output actuators?
logic
Input Output
For certification purposes,
can we provide source based evidence?
9
10. Tracking Information Flow
“find source based evidence that
signals from sensors trigger the correct
actuators”
is there information flow from
the desired sensors to the selected actuator?
are the desired sensors (input ports)
part of the backward program slice
for the selected actuator (output port)?
10
11. Heterogeneous Systems
Deployed system is not just set of components
– actual behavior depends on composition &
configuration
– literature focuses on analysis of homogeneous
systems
⚡ Existing slicing tools are language specific
⚡ no support for “external” artifacts
11
13. Shared Memory Communication
main
cause & effect
cause matrix effect
input A 1 2 3 j
output B
2
3
effect
output C
input B cause i
output D
effect
13
19. Conclusion
void main() { void main() { void main() { void main() {
int sum, I; int sum, I; int sum, I; int sum, I;
while ( i<11 ){ while ( i<11 ){ while ( i<11 ){ while ( i<11 ){
sum = add(sum) sum = add(sum) sum = add(sum) sum = add(sum)
i = add(i, 1); i = add(i, 1); i = add(i, 1); i = add(i, 1);
… … … …
sensor.C input.C voter.C output.C
19
22. Precision & Scalability Tests
Identical results with CodeSurfer on an
example program
Kongsberg code base:
22
23. Precision & Scalability Tests
Identical results with CodeSurfer on an
example program
Kongsberg code base:
23
24. Limitations
Bit manipulation: no precise information flow
– granularity limitation in Codesurfer implementation
Implemented for C with proprietary composition
– experiment with other languages, e.g. Java and other
composition languages/frameworks
Future Work
Abstraction and visualization
– improve comprehensibility of results
– present the result in multiple abstraction layers
– separate Intra- and Inter- component information
flows
24