Principle of emergence
Miten tämän voisi ymmärtää? Ehkäpä siten, että vaikka tietäisimme jonkin järjestelmän kaikki osat, emme välttämättä tietäisi, mitä järjestelmä kokonaisuutena tekee, mikä on sen suorituskyky ja millaisia muita ominaisuuksia järjestelmällä on. Pelkkä osaluettelo ei kerro järjestelmästä paljoakaan. Kun osat liitetään yhteen järjestelmän konseptin mukaisesti, ne alkavat vaikuttaa toisiinsa ja tästä vuorovaikutuksesta syntyy sekä järjestelmän haluttu toiminnallisuus että järjestelmän epätoivotut viat. Yleisesti ei ole helppoa ennustaa miten kukin osa vaikuttaa järjestelmän toiminnallisuuteen - ja siksi järjestelmän suunnittelussa on tutkittava useita vaihtoehtoja ja simuloitava kokonaisuutta eri abstraktiotasoilla. Ja testattava prototyypein.
Edellisestä seuraa, että mitä tahansa järjestelmää suunniteltaessa ja toteuttaessa on myös suunniteltava ja testattava järjestelmän simulointi- ja testausjärjestelmän. Ne saattavat olla jopa vaikeampia suunniteltavia ja toteutettavia kuin varsinainen järjestelmä. Tämä pätee erityisesti mekaanisiin järjestelmiin, mutta myös tietojärjestelmiin. On suuri virhe jättää arvioimatta simulointi- ja testausjärjestelmien kehittämiskulut projektin alussa - vaikka se on hyvin houkuttelevaa. Onneksi nykyään testijärjestelmien rakentaminen tietojärjestelmähankkeissa on helpottunut merkittävästi automaattisten DevOps-menetelmien myötä - ja myös pilvipalveluiden, joita käyttäen testiympäristöjä etc voi olla käytössä (lähes) rajattomasti, lähes viipeettä ja hyvin halvalla.
Kommentit