Runtime Monitoring of Functional Component Changes with Behavior Models

460 views
376 views

Published on

Presentation of the "Runtime Monitoring of Functional Component Changes with Behavior Models" paper at Models@runtime2011

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
460
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Runtime Monitoring of Functional Component Changes with Behavior Models

    1. 1. Runtime Monitoring of Functional Component Changes with Behavior Models Carlo Ghezzi Andrea Mocci Mario Sangiorgio
    2. 2. OPEN ENVIRONMENTApplication Service 2
    3. 3. ISSUESLack of formal Services may changespecifications behavior 3
    4. 4. GOALS Recover specifications Detect changesand keep them updated 4
    5. 5. GOALS Recover specifications Detect changesand keep them updated AT RUNTIME 4
    6. 6. APPROACHDESIGN TIME RUN TIME Specification Update Specification Monitoring Change Detection Inference 5
    7. 7. pop() pu pop() sh ) (2 p( Stack ) po size() = 0Stack() top() push(2) push(1) po =Exception ) p( (1 ) sh push(2) SPECIFICATIONS pu pop() pop() Stack Stack size() = 1 size() ≥ 2 top() = 2 top() = 2 push(2) pop(), push(2) Figure 2: Outline of the Synthesis Algorithm pop() push(2) Stack Stack Stack pop push size() = 2 size() = 1 size() = 2 top() = 1 top() = 1 top() = 2 push push(1) pop() pop() S0 S1 Stack push(1) pop Stack size() = 0 popStack() top() pop() =Exception State push pop size top Observer Abstraction push(2) S0 — EmptyStackException — EmptyStackException pop() pop() pop() S1 — — — — Stack Stack Stack Modifier Behavior Abstraction size() = 2 size() = 1 size() = 2 S0 Variant Invariant Invariant Invariant top() = 1 top() = 2 top() = 2 S1 Variant Variant Invariant Invariant push(1) push(2) Figure 3: Outline of the Synthesis Algorithm Behavioral Protocol Behavior Equivalence Models Models 6
    8. 8. BEHAVIORAL EQUIVALENCE MODELS Based on behavioral equivalenceTwo objects x and y are behaviorally equivalent if and only if for every possible sequence s made of modifiers and ending with an observer s(x) = s(y) Built exploring exhaustively a small scopeHypothesis: A small but Precise Finite-State Modelcaptures “by example” all the relevant behavior of a component 7
    9. 9. BEHAVIORAL EQUIVALENCE MODELS pop() push(2) Stack Stack Stack size() = 2 size() = 1 size() = 2 top() = 1 top() = 1 top() = 2 push(1) pop() pop() push(1) Stack size() = 0 Stack() top() pop() =Exception push(2) pop() pop() pop() Stack Stack Stack size() = 2 size() = 1 size() = 2 top() = 1 top() = 2 top() = 2 push(1) push(2) 8
    10. 10. BEHAVIORAL EQUIVALENCE MODELS pop() push(2) Stack Stack Stack size() = 2 size() = 1 size() = 2 top() = 1 top() = 1 top() = 2 push(1) pop() pop() push(1) Stack size() = 0 Stack() top() pop() =Exception push(2) pop() pop() pop() Stack Stack Stack size() = 2 size() = 1 size() = 2 top() = 1 top() = 2 top() = 2 push(1) push(2) Small scope 8
    11. 11. BEHAVIORAL EQUIVALENCE MODELS pop() push(2) Stack Stack Stack size() = 2 size() = 1 size() = 2 top() = 1 top() = 1 top() = 2 push(1) pop() pop() push(1) Stack size() = 0 Exhaustive Stack() pop() top() search =Exception push(2) pop() pop() pop() Stack Stack Stack size() = 2 size() = 1 size() = 2 top() = 1 top() = 2 top() = 2 push(1) push(2) Small scope 8
    12. 12. BEHAVIORAL EQUIVALENCE MODELS pop() push(2) Stack Stack Stack size() = 2 size() = 1 size() = 2 top() = 1 top() = 1 top() = 2 push(1) pop() pop() push(1) Up to a bound Stack size() = 0 Exhaustive Stack() pop() top() search =Exception push(2) pop() pop() pop() Stack Stack Stack size() = 2 size() = 1 size() = 2 top() = 1 top() = 2 top() = 2 push(1) push(2) Small scope 8
    13. 13. BEHAVIORAL EQUIVALENCE MODELS PROs CONs Precise description of the Limited to the observed component behavior (small) scope 9
    14. 14. BEHAVIORAL EQUIVALENCE MODELS PROs CONs Precise description of the Limited to the observed component behavior (small) scope NEED FOR MORE GENERAL MODELS! 9
    15. 15. PROTOCOL BEHAVIOR MODELS Abstraction of the information in the Behavioral Equivalence Models Normal or exceptional result Effects on component’s state 10
    16. 16. PROTOCOL BEHAVIOR MODELS pop push push Stack S0 S1 pop popState push pop size top Observer AbstractionS0 — EmptyStackException — EmptyStackExceptionS1 — — — — Modifier Behavior AbstractionS0 Variant Invariant Invariant InvariantS1 Variant Variant Invariant Invariant 11
    17. 17. PROTOCOL BEHAVIOR MODELS No parameters pop push push Stack S0 S1 pop popState push pop size top Observer AbstractionS0 — EmptyStackException — EmptyStackExceptionS1 — — — — Modifier Behavior AbstractionS0 Variant Invariant Invariant InvariantS1 Variant Variant Invariant Invariant 11
    18. 18. PROTOCOL BEHAVIOR MODELS No parameters pop push push Stack S0 S1 pop Result type popState push pop size top Observer AbstractionS0 — EmptyStackException — EmptyStackExceptionS1 — — — — Modifier Behavior AbstractionS0 Variant Invariant Invariant InvariantS1 Variant Variant Invariant Invariant 11
    19. 19. PROTOCOL BEHAVIOR MODELS No parameters pop push push Stack S0 S1 pop Result type popState push pop size top Observer AbstractionS0 — EmptyStackException — EmptyStackExceptionS1 — — — — Modifier Behavior AbstractionS0 Variant Invariant Invariant InvariantS1 Variant Variant Invariant InvariantEffects on state 11
    20. 20. A MORE COMPLEX EXAMPLE void putNextEntry(Entry entry); void write(String data); void close();StorageService Exception thrown on not allowed operationsSet-like behavior and complex interaction protocol 12
    21. 21. INITIAL MODEL* c, w w, pE S2 c c, w, pE pE c pE cS S0 S1 pE S4 S5 pE pE w, pE w c w S3Legend: S:StorageService, w:write, c:close, pE:putNextEntryState close putN extEntry write Observer AbstractionS0 ZipException — ZipExceptionS1 — [−, ZipException] —S2 — [−, ZipException] ZipExceptionS3 — ZipException —S4 — ZipException ZipExceptionS5 — IOException IOException *derived from Modifier Behavior Abstraction test casesS0 Invariant Variant Invariant containingS1 Variant Variant InvariantS2 Variant Invariant Invariant entries e, fS3 Variant Variant Invariant and writingS4 Variant Invariant Invariant “0” 13S5 Invariant Invariant Invariant
    22. 22. INITIAL MODEL* c, w w, pE S2 c c, w, pE pE c pE c S S0 S1 pE S4 S5 pE pE w, pE w c w S3First entry inserted Legend: S:StorageService, w:write, c:close, pE:putNextEntry State close putN extEntry write Observer Abstraction S0 ZipException — ZipException S1 — [−, ZipException] — S2 — [−, ZipException] ZipException S3 — ZipException — S4 — ZipException ZipException S5 — IOException IOException *derived from Modifier Behavior Abstraction test cases S0 Invariant Variant Invariant containing S1 Variant Variant Invariant S2 Variant Invariant Invariant entries e, f S3 Variant Variant Invariant and writing S4 Variant Invariant Invariant “0” 13 S5 Invariant Invariant Invariant
    23. 23. INITIAL MODEL* blocks write Duplicate entry c, w w, pE S2 c c, w, pE pE c pE c S S0 S1 pE S4 S5 pE pE w, pE w c w S3First entry inserted Legend: S:StorageService, w:write, c:close, pE:putNextEntry State close putN extEntry write Observer Abstraction S0 ZipException — ZipException S1 — [−, ZipException] — S2 — [−, ZipException] ZipException S3 — ZipException — S4 — ZipException ZipException S5 — IOException IOException *derived from Modifier Behavior Abstraction test cases S0 Invariant Variant Invariant containing S1 Variant Variant Invariant S2 Variant Invariant Invariant entries e, f S3 Variant Variant Invariant and writing S4 Variant Invariant Invariant “0” 13 S5 Invariant Invariant Invariant
    24. 24. INITIAL MODEL* blocks write Duplicate entry c, w w, pE S2 c c, w, pE pE c pE c S S0 S1 pE S4 S5 pE pE w, pE w c w S3First entry inserted Two valid entries inserted Legend: S:StorageService, w:write, c:close, pE:putNextEntry State close putN extEntry write Observer Abstraction S0 ZipException — ZipException S1 — [−, ZipException] — S2 — [−, ZipException] ZipException S3 — ZipException — S4 — ZipException ZipException S5 — IOException IOException *derived from Modifier Behavior Abstraction test cases S0 Invariant Variant Invariant containing S1 Variant Variant Invariant S2 Variant Invariant Invariant entries e, f S3 Variant Variant Invariant and writing S4 Variant Invariant Invariant “0” 13 S5 Invariant Invariant Invariant
    25. 25. INITIAL MODEL* blocks write Duplicate entry c, w w, pE S2 c c, w, pE pE c pE c No more valid S S0 S1 pE S4 S5 entries pE pE w, pE available? w c w S3First entry inserted Two valid entries inserted Legend: S:StorageService, w:write, c:close, pE:putNextEntry State close putN extEntry write Observer Abstraction S0 ZipException — ZipException S1 — [−, ZipException] — S2 — [−, ZipException] ZipException S3 — ZipException — S4 — ZipException ZipException S5 — IOException IOException *derived from Modifier Behavior Abstraction test cases S0 Invariant Variant Invariant containing S1 Variant Variant Invariant S2 Variant Invariant Invariant entries e, f S3 Variant Variant Invariant and writing S4 Variant Invariant Invariant “0” 13 S5 Invariant Invariant Invariant
    26. 26. EXAMPLELet’s use the model and update it at runtime! 14
    27. 27. MONITORING Behavior ModelsExecution traces are checked against the models 15
    28. 28. MONITORING ISSUES Observed traces may not be enough Observations may affect component’s state 16
    29. 29. ASSUMPTIONS Behavior ModelsClones available to the monitor 17
    30. 30. VIOLATION DETECTIONExecution Protocol Trace Behavior Model 18
    31. 31. CHECKING THE PROTOCOL OPERATION OUTCOME STATEs = StorageService(); - S0 c, w w, pE S2 c c, w, pE pE s.putNextEntry(a) - S1 c pE c s.putNextEntry(a) - ? S S0 S1 pE S4 S5 pE pE w, pE w c w S3 Legend: S:StorageService, w:write, c:close, pE:putNextEntry State close putN extEntry write Observer Abstraction S0 ZipException — ZipException S1 — [−, ZipException] — S2 — [−, ZipException] ZipException S3 — ZipException — S4 — ZipException ZipException S5 — IOException IOException Modifier Behavior Abstraction S0 Invariant Variant Invariant S1 Variant Variant Invariant S2 Variant Invariant Invariant S3 Variant Variant Invariant S4 Variant Invariant Invariant S5 Invariant Invariant Invariant 19
    32. 32. CHECKING THE PROTOCOL OPERATION OUTCOME STATEs = StorageService(); - S0 c, w w, pE S2 c c, w, pE pE s.putNextEntry(a) - S1 c pE c s.putNextEntry(a) - ? S S0 S1 pE S4 S5 pE pE w, pE w c w S3 Legend: S:StorageService, w:write, c:close, pE:putNextEntry State close putN extEntry write Observer Abstraction S0 ZipException — ZipException S1 — [−, ZipException] — S2 — [−, ZipException] ZipException S3 — ZipException — S4 — ZipException ZipException S5 — IOException IOException Modifier Behavior Abstraction S0 Invariant Variant Invariant S1 Variant Variant Invariant S2 Variant Invariant Invariant S3 Variant Variant Invariant S4 Variant Invariant Invariant S5 Invariant Invariant Invariant 19
    33. 33. CHECKING THE PROTOCOL OPERATION OUTCOME STATEs = StorageService(); - S0 c, w w, pE S2 c c, w, pE pE s.putNextEntry(a) - S1 c pE c s.putNextEntry(a) - ? S S0 S1 pE S4 S5 pE pE w, pE w c w S3 Legend: S:StorageService, w:write, c:close, pE:putNextEntry State close putN extEntry write Observer Abstraction S0 ZipException — ZipException S1 — [−, ZipException] — S2 — [−, ZipException] ZipException S3 — ZipException — S4 — ZipException ZipException S5 — IOException IOException Modifier Behavior Abstraction S0 Invariant Variant Invariant S1 Variant Variant Invariant S2 Variant Invariant Invariant S3 Variant Variant Invariant S4 Variant Invariant Invariant S5 Invariant Invariant Invariant 19
    34. 34. CHECKING THE PROTOCOL OPERATION OUTCOME STATEs = StorageService(); - S0 c, w w, pE S2 c c, w, pE pE s.putNextEntry(a) - S1 c pE c s.putNextEntry(a) - ? S S0 S1 pE S4 S5 pE pE w, pE It depends on the w w S3 c outcome of next Legend: State close S:StorageService, w:write, c:close, pE:putNextEntry putN extEntry write operations S0 ZipException Observer Abstraction — ZipException S1 — [−, ZipException] — S2 — [−, ZipException] ZipException S3 — ZipException — Check on the clone S4 S5 — — ZipException IOException Modifier Behavior Abstraction ZipException IOException results of a S0 S1 Invariant Variant Variant Variant Invariant Invariantdiscriminating operation S2 Variant Invariant Invariant S3 Variant Variant Invariant S4 Variant Invariant Invariant with known instances S5 Invariant Invariant Invariant 19
    35. 35. PROTOCOL VIOLATION (1) OPERATION OUTCOME STATEs = StorageService(); - S0 c, w w, pE S2 c c, w, pE S1 pE s.putNextEntry(a) - c pE c s.putNextEntry(a) - S2 S S0 S1 pE S4 S5 pE pE w, pE s.putNextEntry(b) - S2 w c w S3 s.write(data) - ? Legend: S:StorageService, w:write, c:close, pE:putNextEntry State close putN extEntry write Observer Abstraction S0 ZipException — ZipException S1 — [−, ZipException] — S2 — [−, ZipException] ZipException S3 — ZipException — S4 — ZipException ZipException S5 — IOException IOException Modifier Behavior Abstraction S0 Invariant Variant Invariant S1 Variant Variant Invariant S2 Variant Invariant Invariant S3 Variant Variant Invariant S4 Variant Invariant Invariant S5 Invariant Invariant Invariant 20
    36. 36. PROTOCOL VIOLATION (1) OPERATION OUTCOME STATEs = StorageService(); - S0 c, w w, pE S2 c c, w, pE S1 pE s.putNextEntry(a) - c pE c s.putNextEntry(a) - S2 S S0 S1 pE S4 S5 pE pE w, pE s.putNextEntry(b) - S2 w c w S3 s.write(data) - ? Legend: S:StorageService, w:write, c:close, pE:putNextEntry State close putN extEntry write Observer Abstraction S0 ZipException — ZipException S1 — [−, ZipException] — S2 — [−, ZipException] ZipException S3 — ZipException — S4 — ZipException ZipException S5 — IOException IOException Modifier Behavior Abstraction S0 Invariant Variant Invariant S1 Variant Variant Invariant S2 Variant Invariant Invariant S3 Variant Variant Invariant S4 Variant Invariant Invariant S5 Invariant Invariant Invariant 20
    37. 37. PROTOCOL VIOLATION (1) OPERATION OUTCOME STATEs = StorageService(); - S0 c, w w, pE S2 c c, w, pE S1 pE s.putNextEntry(a) - c pE c s.putNextEntry(a) - S2 S S0 S1 pE S4 S5 pE pE w, pE s.putNextEntry(b) - S2 w c w S3 s.write(data) - ? Legend: S:StorageService, w:write, c:close, pE:putNextEntry State close putN extEntry write Observer Abstraction S0 ZipException — ZipException S1 — [−, ZipException] — S2 — [−, ZipException] ZipException S3 — ZipException — S4 — ZipException ZipException S5 — IOException IOException Modifier Behavior Abstraction S0 Invariant Variant Invariant S1 Variant Variant Invariant S2 Variant Invariant Invariant S3 Variant Variant Invariant S4 Variant Invariant Invariant S5 Invariant Invariant Invariant 20
    38. 38. PROTOCOL VIOLATION (1) OPERATION OUTCOME STATEs = StorageService(); - S0 c, w w, pE S2 c c, w, pE S1 pE s.putNextEntry(a) - c pE c s.putNextEntry(a) - S2 S S0 S1 pE S4 S5 pE pE w, pE s.putNextEntry(b) - S2 w c w S3 s.write(data) - ? Legend: S:StorageService, w:write, c:close, pE:putNextEntry State close putN extEntry write Observer Abstraction S0 ZipException — ZipException S1 — [−, ZipException] — As seen before the test S2 S3 S4 — — — [−, ZipException] ZipException ZipException — ZipException ZipExceptionscope was too small, but S5 — IOException Modifier Behavior Abstraction IOException we can fix the model! S0 Invariant Variant Invariant S1 Variant Variant Invariant S2 Variant Invariant Invariant S3 Variant Variant Invariant S4 Variant Invariant Invariant S5 Invariant Invariant Invariant 20
    39. 39. PROTOCOL VIOLATION (2) OPERATION OUTCOME STATEs = StorageService(); - S0 c, w w, pE S2 c c, w, pE pE s.write(“”) - ? c pE c S S0 S1 pE S4 S5 pE pE w, pE w c w S3 Legend: S:StorageService, w:write, c:close, pE:putNextEntry State close putN extEntry write Observer Abstraction S0 ZipException — ZipException S1 — [−, ZipException] — S2 — [−, ZipException] ZipException S3 — ZipException — S4 — ZipException ZipException S5 — IOException IOException Modifier Behavior Abstraction S0 Invariant Variant Invariant S1 Variant Variant Invariant S2 Variant Invariant Invariant S3 Variant Variant Invariant S4 Variant Invariant Invariant S5 Invariant Invariant Invariant 21
    40. 40. PROTOCOL VIOLATION (2) OPERATION OUTCOME STATEs = StorageService(); - S0 c, w w, pE S2 c c, w, pE pE s.write(“”) - ? c pE c S S0 S1 pE S4 S5 pE pE w, pE w c w S3 Legend: S:StorageService, w:write, c:close, pE:putNextEntry State close putN extEntry write Observer Abstraction S0 ZipException — ZipException S1 — [−, ZipException] — S2 — [−, ZipException] ZipException S3 — ZipException — S4 — ZipException ZipException S5 — IOException IOException Modifier Behavior Abstraction S0 Invariant Variant Invariant S1 Variant Variant Invariant S2 Variant Invariant Invariant S3 Variant Variant Invariant S4 Variant Invariant Invariant S5 Invariant Invariant Invariant 21
    41. 41. PROTOCOL VIOLATION (2) OPERATION OUTCOME STATEs = StorageService(); - S0 c, w w, pE S2 c c, w, pE pE s.write(“”) - ? c pE c S S0 S1 pE S4 S5 pE pE w, pE w c w S3 Legend: S:StorageService, w:write, c:close, pE:putNextEntryZipException expected! State close putN extEntry Observer Abstraction write S0 ZipException — ZipException S1 — [−, ZipException] — S2 — [−, ZipException] ZipException Special values are S3 S4 S5 — — — ZipException ZipException IOException — ZipException IOException unknown in advance S0 Invariant Modifier Behavior Abstraction Variant Invariant S1 Variant Variant Invariant S2 Variant Invariant Invariant S3 Variant Variant Invariant S4 Variant Invariant Invariant S5 Invariant Invariant Invariant 21
    42. 42. VIOLATION INTERPRETATION Protocol Behavior Model Behavioral Equivalence Model 22
    43. 43. IS THE VIOLATION A CHANGE? We can tell it replaying the traces contained in the Behavioral Equivalence Model Everything still works: Different results:previously unobserved behavior change detected 23
    44. 44. MODEL UPDATES Old BehaviorEquivalence Model 24
    45. 45. MODEL UPDATES Old BehaviorEquivalence Model Trace exposing new behavior 24
    46. 46. MODEL UPDATES Old BehaviorEquivalence Model Extended scopesfor existing models Trace exposing new behavior 24
    47. 47. MODEL UPDATES Old BehaviorEquivalence Model Set of Behavior Extended scopes Equivalencefor existing models Models Trace exposing new behavior 24
    48. 48. MODEL UPDATES Old BehaviorEquivalence Model Set of Behavior Extended scopes Equivalencefor existing models Models Trace exposing new behavior Incremental Add only new information 24
    49. 49. MODEL UPDATES Old BehaviorEquivalence Model Set of Behavior Extended scopes Updated Protocol Equivalencefor existing models Behavior Model Models Trace exposing new behavior Incremental Add only new information 24
    50. 50. UPDATED MODEL c, w pE, w c pE w, pE pE c S S0 S1 pE S2 c S5 pE pE c pE c, w, pE S3 S4 w w, pELegend: S:StorageService, w:write, c:close, pE:putNextEntryState close putN extEntry write Observer AbstractionS0 ZipException — ZipExceptionS1 — [−, ZipException] —S2 — [−, ZipException] ZipExceptionS3 — ZipException —S4 — ZipException ZipExceptionS5 — IOException IOException Modifier Behavior AbstractionS0 Invariant Variant InvariantS1 Variant Variant InvariantS2 Variant Invariant InvariantS3 Variant Variant InvariantS4 Variant Invariant InvariantS5 Invariant Invariant Invariant 25
    51. 51. UPDATED MODEL c, w pE, w c pE w, pE pE c S S0 S1 pE S2 c S5 pE pE cFirst entry inserted pE c, w, pE S3 S4 w w, pE Legend: S:StorageService, w:write, c:close, pE:putNextEntry State close putN extEntry write Observer Abstraction S0 ZipException — ZipException S1 — [−, ZipException] — S2 — [−, ZipException] ZipException S3 — ZipException — S4 — ZipException ZipException S5 — IOException IOException Modifier Behavior Abstraction S0 Invariant Variant Invariant S1 Variant Variant Invariant S2 Variant Invariant Invariant S3 Variant Variant Invariant S4 Variant Invariant Invariant S5 Invariant Invariant Invariant 25
    52. 52. UPDATED MODEL c c, w pE, w Duplicate entry pE w, pE pE c S S0 S1 pE S2 c S5 pE pE cFirst entry inserted pE c, w, pE S3 S4 w w, pE Legend: S:StorageService, w:write, c:close, pE:putNextEntry State close putN extEntry write Observer Abstraction S0 ZipException — ZipException S1 — [−, ZipException] — S2 — [−, ZipException] ZipException S3 — ZipException — S4 — ZipException ZipException S5 — IOException IOException Modifier Behavior Abstraction S0 Invariant Variant Invariant S1 Variant Variant Invariant S2 Variant Invariant Invariant S3 Variant Variant Invariant S4 Variant Invariant Invariant S5 Invariant Invariant Invariant 25
    53. 53. UPDATED MODEL c c, w pE, w Duplicate entry pE w, pE pE c S S0 S1 pE S2 c S5 pE pE cFirst entry inserted pE c, w, pE S3 S4 w w, pE Scope effects Legend: S:StorageService, w:write, c:close, pE:putNextEntry State close putN extEntry write Observer Abstraction S0 ZipException — ZipException S1 — [−, ZipException] — S2 — [−, ZipException] ZipException S3 — ZipException — S4 — ZipException ZipException S5 — IOException IOException Modifier Behavior Abstraction S0 Invariant Variant Invariant S1 Variant Variant Invariant S2 Variant Invariant Invariant S3 Variant Variant Invariant S4 Variant Invariant Invariant S5 Invariant Invariant Invariant 25
    54. 54. CHANGE DETECTION Effectiveness of changedetection proved injecting faults in the component Always working and always exceptional implementation for each method 26
    55. 55. CONCLUSIONS✓Behavioral Models at run time✓Specification of a software component✓Functional change detection 27
    56. 56. FUTURE WORK•Relax assumptions•Tackle scope effects•Minimization of the scope size•Model interacting objects 28

    ×