Metoder och verktyg för funktionssäkerhet Projektstart 1. Hantera kraven En bra process är grunden för att hantera kraven i ett säkerhetsprojekt. Det krävs att du har en tydlig spårbarhet mellan krav och test, samt på alla förändringar som sker under projektets gång. Det viktigt att t.ex. olika verktyg kan integreras för att arbetet i viss mån ska kunna automatiseras. Utifrån tillförlitlighet, säkerhetsnormer och spårbarhetsperspektiv är IBM Rational DOORS Next Generation ofta ett bra val för kravhantering. 2. Att välja rätt nivå på säkerhetsarbetet Du måste följa alla obligatoriska krav i en standard, samtidigt som du inte vill överarbeta din process då det blir dyrbart. Det finns ett bra verktyg för att komma igång och förstå vad som behöver göras för en viss säkerhetsnivå: RiskCAT för IEC 61508 (finns även för andra standarder). Detta program innehåller den officiella standarden och har alla paragrafer och punkter i standarden indexerade och vägda, så att du snabbt kan se vilka uppgifter som är obligatoriska, starkt rekommenderade eller bara rekommenderade utifrån standarden.
3. Projektets första faser med systemarkitektur, design och kravanalys Annex A i IEC 61508-3 I arkitekturfasen är semiformella metoder som SysML (System Modeling Language) en stor hjälp. Här görs allokering av funktionalitet till olika delsystem för att få en stabil arkitektur med väldefinierade gränssnitt. IBM Rational Rhapsody är ett bra verktyg för systemarkitektur som ger spårbarhet mellan modell och textuella krav, och ser till att dokumentationen hela tiden är uppdaterad. 4. Mjukvarudesign Även mjukvarudesign/implementation kan semi-formella metoder såsom UML (Unified Modeling Language) vara en stor hjälp för att göra lättöverskådliga tillståndmaskiner, och förtydliga spårbarhet, dokumentation, etc. Om man använder sig av modellbaserad mjukvaruutveckling med Rhapsody kan man generera en fullständig applikation, t.ex. med krav som kommentarer i koden. För säkerhetsfunktionella system finns färdiga ramverk som är MISRA-kompatibla och inte använder någon dynamisk minnesallokering. Handskriven applikationskod, eller den som genereras från Rhapsody, behöver testas. Att koden är genomtestad mäts vanligtvis genom att mäta kod- och modelltäckning som testfallen ger. Rhapsody s testmodul TestConductor används för just detta ändamål, och detta testverktyg är TÜVcertifierat. Det innebär att kodgenerering från Rhapsody kan användas i säkerhetskritiska applikationer, utan att behöva använda dyra certifierade kodgeneratorer. Det är outputen från systemet som testas, och då klassas Rhapsody som en lösning som ligger på lägsta påverkansnivå (dvs TCL1, Tool Confidence Level 1, som bl.a. benämns i ISO 26262). Ett verktyg som klassificeras till TCL1-nivån kräver inte att några speciella kvalifikationsmetoder behöver genomföras på detta verktyg. Med TestConductor kan du automatiskt skapa en testarkitektur för ditt system, och köra dina tester både på host och i target. Själva testerna är både black- och whitebox-typ, och är ofta på enhetsnivå (t.ex. funktioner, moduler och komponenter).
Modelleringsverktyg som stödjer ett specifikt språk: t.ex UML standardiserat och generellt modelleringsspråk Visuella modeller för systemstruktur och beteende Ett stöd för utvecklingsarbetets hela livscykel Spårbarhet mellan krav, design, programkod och tester Automatisk kodgenerering Automatisk dokumentation över livscykeln Integrerade miljöer (krav <-> modell) Underhåll av arkitektur, design, kod och dokumentation Exempel på modelleringsverktyg: IBM Rational Rhapsody 5. Implementation För att implementera programvara är de viktigaste verktygen kvalificerade kompilatorer och debuggers samt verktyg för statisk kodanalys som fullt ut stödjer gällande kodningsstandard samt minimerar kodningsfel. 6. Verktyg för kod Kompilatorer processorarkitekturer baserade på ARM Då ARM även skapar processor-ip så har de även den bästa och tidigaste förståelsen för kompilatorkraven. ARM supportar IEC 61508 och ISO 26262 med en TÜV certifierad kompilator. Ett ARM Compiler Qualification Kit förenklar ditt arbete att kvalificera verktyget i din miljö. Debuggers - Lauterbach Lauterbach verktyg fungerar för nästan alla processorarkitekturer. I ett system med redundant processorer eller multicore kan Lauterbach debugga samtliga CPU parallellt, t.ex injicera ett fel i en processor och samtidigt övervaka att systemet reagerar korrekt. Avancerat stöd för multi-core, SMP/AMP Klarar alla operativsystem och kompilatorer En mängd funktioner för att simulera interrupt, I / O-kanaler och felbeteende I realtid.
Lauterbach debugger med avancerad realtids-trace Utifrån inspelad data kan du exekvera/stega koden både framlänges och baklänges, och hela tiden ha full koll på minne, variabler, register etc. Trace-baserad (Code coverage) på assemblernivå. Mätning av kodtäckning görs i realtid utan instrumentering av koden. Analysen fyller de krav som ställs av säkerhetsstandards som ISO 26262, DO-178C, IEC 61508 och IEC 62304. Statisk kodanalys och kodningsstandarder Annex A i IEC 61508-3 (Software Verification) Statisk kodanalys rekommenderas i de flesta standarder, t.ex IEC 61508. Kodgranskning ska stödjas av kvalificerade verktyg som gör en formell granskning. Någon form av kodningsstandard och subset av ett programspråk rekommenderas. MISRA är ett vanligt förekommande regelverk för C och C++. Programming Research QAC/QAC++ och QA Verify PRQA's verktyg för statisk kodanalys är det vanligast förekommande I fordonsbranschen, och det är certifierat av TÜV SAAR för att användas i säkerhetskritiska projekt enligt IEC 61508, ISO 26262, EN 50128, IEC 60880 och IEC 62304. Verktygen stöder ett antal olika kodningsstandarder MISRA C:2004, C:2012 and C ++:2008 samt High Integrity C++ med support för t.ex C++11. Grammatech - CodeSonar CodeSonar är också TÜV certifierat (IEC 61508, ISO 26262, EN 50128) och erbjuder väldigt effektiv felsökning för vanliga programmeringsfel men även för säkerhetsluckor.
Enhets- och integrationstest Annex A i IEC 61508-3 (Software Verification) IEC 61508:2010 specificerar ett antal krav på dynamisk kod analys och test som inkluderar funktionstest och "white box testing". Hur mycket dokumentation av testtäckning du behöver beror på projektets SILnivå. De flesta kraven på test kräver en stor arbetsinsats, varför det lönar sig att satsa på verktyg som kan underlätta och automatisera testarbetet och dokumentationen. Om man istället väljer att utveckla sin programvara med handskriven kod (till skillnad från modellbaserad mjukvaruutveckning), så är ett enhetstestverktyg som används på kodnivå att föredra. Cantata är ett testverktyg som kan köra dina tester både på host och i target. Använder du en JTAGansluten debugger kan testerna köras som 'target in the loop' utan att påverka realtidsprestanda. Cantata enhetstest för C/C++ Cantata är certifierat av TÜV SAAR för att användas i upp till högsta säkerhetsnivå (SIL4) för följande standards: IEC 61508, IEC 62304, IEC 60880, EN 50128, ISO 26262. Ett Tool Qualification Pack följer med utan extra kostnad och består av: - Certified Cantata version 6.2 - En detaljerad Safety Manual - Instruktioner för hur man använder det enligt standarderna - Automatiserade testsviter för verifiering på användarens plattform