Lyhyt yhteenveto ohjelmistovaatimuksista standardissa ISO 13849-1 Dr. Michael Huelke, BGIA in close collaboration with Philippe Lubineau and Daniel Renault, CETIM Käännös/m atti.sundquist@ sundcon.fi Sichere Applikationssoftware 04.2005 Ohjelmistovaatimusten asettaminen Ohjelmistokehitys Application languages Sovellusohjelmiston kielet: e.g.ladder, tikapuumalli, toimintalohko Function Block Diagram Ohjelmiston käyttö Turvallisuuteen liittyvä sovellus Perusohjelmiston System languages kielet: e.g.a ssem bler, Assembler, C/C++,Java C/C++,Java hajautettu ohjelmisto, perusohjelmisto, käyttöjärjestelmä Laitteet
Kohdan 4.6 rakenteiset vaatimukset 4.6.1 4.6.2 Yleiset vaatimukset, tavoitteet, V-malli Turvallisuuteen liittyvä sulautettu ohjelmisto Perusvaatimukset: PL a,b Lisävaatimukset: PL c,d Erikoisvaatimukset: PL e 4.6.3 Turvallisuuteen liittyvä sovellusohjelmisto Perusvaatimukset: PL a,b Lisävaatimukset, lisää tehokkuutta: PL c,d and e 4.6.4 Ohjelmistoon perustuva parametrointi Principles of 13849-1 software requirements Periaatteita: Standardi kattaa kaikki PL-tasot ja sekä perus- että sovellusohjelmistot Virheitä välttävä ja puolustuksellinen ohjelmointi Virheet syntyvät pääasiassa eritelmien ja ohjelmistosuunnittelun yhteydessä Perustuu standardiin IEC 61508-3, mutta on käytännönläheisempi.
Yksinkertaistettu ohjelmiston suunnittelun elinkaarimalli Turvajärjestelmän vaatimusten eritelmä Ohjelmiston turvallisuusvaatimusten eritelmä kelpuutus Kelpuutusja kelpuutettu ohjelmisto integrointitestaus Järjestelmäsuunnittelu modulien suunnittelu moduli testaus tulos todentaminen koodaus Vaatimusten pääluokat (1) Vikojen välttäminen: toiminnat, todentaminen ja kelpoistaminen, V- malli dokumentointi ja rakenteen hallinta laadunvalvontajärjestelmä turvallisuuden toimintatasoille PL = c, d tai e soveltuvat toimenpiteet muutosten jälkeen.
Vaatimusten pääluokat (2) Puolustuksellinen suunnittelu ja ohjelmointi: soveltuvat työkalut soveltuvat kielet (alaohjelmat) etukäteen varmistettujen ohjelmamodulien käyttö turvallisuuteen liittyvien ja liittymättömien ohjelmistojen käyttö modulaarinen ja rakenteinen ohjelmointi koodausohjeiden käyttö ulkoisten virheiden havaitseminen (esim. luotettavuustestaukset). Määritelmät ja lyhenteet language type of SW Limited Variability Language e.g. LVL ISO 13849-1 Safety Related Application Software Full Variability Language e.g. FVL ISO 13849-1 ISO 13849-1 SRAS Safety Related Embedded Software SRES
Ohjelmiston vaatim usm äärittely Seuraavat asiat olisi tarkistettava jokaisen toiminnon todentamisessa: rajoitetaan järjestelmän erittelyn virheellisiä tulkintatapauksia vältetään erittelyn aukkoja, jotka voivat johtaa etukäteen tuntemattomaan turvallisuuteen liittyvien ohjausjärjestelmän osien käyttäytymiseen määritetään tarkasti toimintojen aloittamisen ja lopettamisen olosuhteet varmistetaan tarkasti, että kaikki mahdolliset tapaukset tulevat käsitellyksi johdonmukaisuuden testaukset erilaiset parametrointitapaukset vikaantumista seuraava reaktio. Ohjelmointi olisi jäsenneltävä siten, että siinä on nähtävissä yhdenmukainen ja ymmärrettävä runko, joka tekee mahdolliseksi paikantaa helposti eri prosessit. Tämä edellyttää: - tyypillisten ohjelmien tai toimilohkojen ohjelmointimallien käyttöä. - ohjelman osittamista segmentteihin, jotta tunnistettaisiin ohjelman pääosat siten, että ne vastaavat tuloja, prosessointia ja lähtöjä - kommentteja ohjelman lähdekoodin jokaiseen ohjelmaosioon - kuvausta toimilohkon roolista sitä kutsuttaessa - että muistipaikoissa olisi käytettävä vain yhden tyyppistä dataa ja ne olisi merkittävä yksilöllisillä tunnisteilla - että ohjelman suoritusjärjestys ei riippuisi sellaista muuttujista kuten ohjelman suorituksen aikana laskettavista hyppyosoitteista, mutta ehdolliset hypyt olisivat kuitenkin sallittuja.
Muuttujien käyttöä koskevat ohjelmointisäännöt: minkä tahansa lähdön aloittaminen tai lopettaminen saisi tapahtua vain kerran ohjelmisto olisi jäsenneltävä siten, että yhtälöt muuttujien päivittämiseen keskitetään - jokaisella yleismuuttujalla (tulotiedoilla ja lähtötiedoilla) olisi oltava muistamista helpottava nimi, joka on tarpeeksi yksilöllinen ja se on kuvattava ohjelman lähdekoodin kommentissa. Ohjelmointisäännöt toimilohkon tasolla #1 käytetään etupäässä toimilohkoja, jotka turvallisuuteen liittyvien ohjausjärjestelmän osien valmistaja on kelpuuttanut ja tarkistanut siten, että näille kelpuutetuille lohkoille oletetut toimintaedellytykset vastaavat ohjelmalle asetettuja edellytyksiä koodattujen lohkojen koko olisi rajoitettava seuraavien ohjeellisten arvojen mukaisesti: i) muuttujat: tulotietoina enintään kahdeksannumeroisia lukuja ja kaksi kokonaislukua, yksi tulotieto ii) toimintakoodi: enintään kymmenen paikallista muuttujaa ja enintään 20 Boolean yhtälöä - toimilohkot eivät saisi muuttaa yleismuuttujia (jatkuu)
Ohjelmointisäännöt toimilohkon tasolla #2 kelpoisuusalueen varmistamiseksi olisi numeerisia arvoja valvottava etukäteen annettujen vertailutestausten avulla toimilohkon olisi pyrittävä havaitsemaan käsiteltävien muuttujien epäjohdonmukaisuudet lohkon vikakoodin olisi oltava käytettävissä, jotta erotettaisiin eri viat toisistaan vikakoodit ja lohkon tila olisi vian paljastamisen jälkeen kuvattava kommenteilla lohkon palautus alkutilaan tai palauttaminen normaaliin tilaan olisi kuvattava kommenteilla.