Pålitlig och feltolerant programvara Laboratoriet för pålitliga datorsystem Institutionen för datorteknik Chalmers tekniska högskola 1 1
Vision Pålitliga datorsystem tack vare programvara 2 2
3 3 Vad är pålitlighet? DEPENDABILITY Readiness for usage Continuity of service Avoidance of catastophical consequences on the environment Preservation of confidentality and of integrity AVAILABILITY RELIABILITY SAFETY SECURITY
4 4 Hur vi skapar pålitlighet Faults Impairments Errors Dependability Means Failures Procurement Validation Fault prevention Fault tolerance Fault removal Availability Fault forecasting Attributes Reliability Safety Security
5 5 Felkedjan Adjudged or hypothesized cause System internal effect User perceived effect... FAILURE FAULT ERROR FAILURE FAULT... Activation (internal) Occurrence (external) Deviation of delivered service from compliance to system specification Fault - fault, bug, defect, mistake, et c Failure - failure, crash, breakdown, malfunction, denial of service, et c
Konstruktionsprinciper N-version programming - N-versions programmering Recovery block - Återhämtningsblock Data diversity - Diversifierade källdata View diversity - Diversifierad översättning Consensus recovery blocks - Återhämtningsblock med samstämmighet Robust data structures - Robusta datastrukturer Resourceful systems - Diversitet i funktioner Recovery blocks and exception handling - Återhämtningsblock med undantagshantering 6 6
7 7 N-version programming - NVP Input Version 1 Version 2 Decision mechanism Result... Version n failed raise error
NVP egenskaper Error detection by voting Relative result judgement Forward error recovery Parallel execution ADVANTAGES Increased run-time reliability Probability of common cause failure is reduced Residual design faults can be detected and masked at run-time without loss of service DISADVANTAGES Specification errors may remain undetected Comparision of N versions may be difficult Additional software for syncronization voting may cause common mode failures Increased development and maintenance cost compared to a single version, N = 3 => 1.8-2.7 8 8
9 9 Recovery blocks - RB Input roll back and try alternate Primary Recovery cache Alternate 1 Acceptance test passed Result... Alternate n-1 failed and alternates exhausted Switch raise error
RB egenskaper Error detection by acceptance test Absolute result judgement with respect to specification Backward error recovery Sequential execution ADVANTAGES Increased run-time reliability Provides diversity at the program, module and procedure level DISADVANTAGES Not easy to find reliable acceptance tests Not efficient in situations with strict timing restrictions The technique can only be used where side effects can be reversed Increased development and maintenance cost compared to a single version, N = 2 => 1.3-2.2 10 10
11 11 Tekniker för att bygga pålitliga system Analys Analytiska metoder, Markovmodellering Petrinät Konstruktion Simulering Bygge Felinjicering
Vad har vi gjort hittills? Kartlagt principer och metoder för att bygga feltolerant programvara med betoning på kostnadsaspekter Undersökt möjligheterna att skapa realistiska modeller av kvarvarande fel i välprovad programvara. Undersökt olika metoder att emulera programfel i en utrustning för experimentell verifiering av feltolerans Undersökt metoder att automatiskt generera program ur en given specifikation Kört experiment på system från verkliga tillämpningar 12 12
13 13 Testbänk för felinjicering Fault activator Log file Analysis tool Input data generator I I Control module F Golden version Environment simulator O G O FTAM Logging mechanism
14 14 Fel och sätten att tåla dem 7: Error tolerated 5: Error detected 6: Error detected Detection 5 Error processing 8: Recovery incomplete 9: Recovery failed 1: Fault 2: Error activation propagation Fault Error Propagated 4: Error error overwritten 3: Error activation Failure J. Christmansson AnExploration of Models for Software Faults and Errors
15 15 Provningsmiljön User input Campaign specification I/O FIC 3 Readouts Faults or errors I/O Reset Target system Signals Environment simulator Data analyzer Readouts Trigger Error injector
Mätningar på existerande system Felinjicering med ändring av källtext Felinjicering med ändring i maskinkod Algoritmer och metoder för feltolerant programvara Studier av dessa i verkliga system Infångning ochuppbromsning av flygplan Styrenheter i fordon 16 16
Mätningar på automatgenererade program Ställ upp specifikationer för programmet Börja med en godtycklig variant av programmet Kör den och notera resultatet Förändra programmet till en ny version Kör den och notera resultatet Mät förbättringen och sätt en vikt på programversionen Rekombinera programversionerna med hänsyn till deras vikter Upprepa 17 17
Felmodeller Data processing Data storage Data flow Control Timing Control Flow 18 18
19 19 Felmodeller (forts.) Byzantine Computation Timing Omission Crash
20 20 ODC felmodeller Checking Assignment Missing or incorrect validation of parameters or data in conditional statements Values assigned incorrectly or not at all Algorithm Timing/ Serialization Interface Function Efficiency or correctness problems related to the algorithm or data structure Necessary serialization of shared resources is missing or done in an incorrect way Communication problems between modules, components, device drivers or users and software Some capability that is not implemented or implemented incorrectly
Forskningsfrågor Kan algoritmer som automatiskt tar fram program användas för att uppnå styrd diversitet? Vilka är kostnaderna för att uppnå diversitet? Hur kvantifierar man skillnader i struktur och felbeteende hos olika programversioner? Kan svårigheten hos ett styrproblem visualiseras och vara underlag för analys och konstruktion i utvecklingsprocessen? Hur mycket ökar feltoleransen med olika formar av feltolerans? Kan man göra felinjicering på gränssnitten i ett datorbaserat system i stället för i programmen? Vilken inverkan har olika algoritmer och mekanismer på prestanda? Vad är kostnaden för de olika systemen? 21 21
Mål på kort sikt Analytisk modellering som underlag för felinjicering Utveckling av principer för att bygga feltolerant Undersökning av existerande system för evaluering av metoder att mäta pålitlighet Under de närmaste två åren skapa metoder att verifiera programvarusystem ur pålitlighetssynvinkel 22 22
Mål på lång sikt Metoder att bygga pålitliga datorsystem att bygga programvara så felfri som möjligt att finna och eliminera fel vid systemprov att förutsäga felfrekvens efter driftsättning att tolerera de fel, som trots allt kvarstår 23 23