Ohjelmistotekniikan lakeja

Empiirinen ohjelmistotutkimus on osa tietojenkäsittelytiedettä. Siinä tutkitaan lähinnä empiirisin menetelmin tietojenkäsittelyssä havaittuja lainalaisuuksia ja esitetään havainnoista hypoteeseja. Hyväksi havaitut menetelmät eli best practices ovat käytännössä toimivia periaatteita, joita empiirinen ohjelmistotutkimus pyrkii validoimaan. Tutkimus perustuu havaintoihin, lakeihin ja teorioihin. Yleensä tutkimus etenee havainnoista johdettuihin lakeihin, jotka puolestaan yleistetään teorioiksi. Eräitä tunnettuja ohjelmistotekniikan lainalaisuuksia on esitelty alan kirjallisuudessa laajasti. Olen koonnut luettelon tunnetuimmista ohjelmistotekniikan laeista, jotka voidaan edelleen ryhmitellä ohjelmistoprojektin eri vaiheisiin.

Vaatimusmäärittely

Glassin laki

Puutteelliset vaatimukset ovat tärkein projektien epäonnistumisen syy.

Boehmin I laki

Mitä myöhemmin virheet löytyvät, sitä kalliimmiksi niiden korjaaminen tulee.

Boehmin II laki

Prototyyppien käyttö vähentää virheitä.

Davisin laki

Mallin hyöty riippuu näkökulmasta, mutta yksi malli ei ole paras kaikkiin tarkoituksiin.

Suunnittelu

Curtisin laki

Hyvä suunnittelu vaatii syvällistä tuotteen sovellusalueen hallintaa.

Simonin laki

Hierarkkisuus vähentää kompleksisuutta.

Constantinen laki

Rakenne on stabiili, jos sen yhtenäisyys on vahva ja kytkentäaste matala.

Parnasin laki

Vain piilotettua tietoa voidaan muuttaa ilman riskiä.

Testaus

Faganin laki

Tarkastukset parantavat merkittävästi tuottavuutta, laatua ja projektien stabiiliutta.

Porter-Vottan laki

Tarkastusten tehokkuus ei juuri riipu niiden järjestelytavasta.

Basilin laki

Näkökulmaperustaiset tarkastukset ovat (erittäin) tehokkaita.

Hetzel-Myersin laki

Useaa verifiointi- ja validointitekniikkaa käyttämällä savutetaan parempia tuloksia kuin yhdelläkään menetelmällä yksin.

Dijkstran laki

Täydellinen testaus on mahdotonta.

Weinbergin laki

Ohjelmoija ei sovellu testaamaan kirjoittamaansa koodia.

Ylläpito

Lehmanin I laki

Käytössä olevaa järjestelmää tullaan muuttamaan.

Lehmanin II laki

Kehittyvä järjestelmä monimutkaistuu ajan kanssa, ellei kehitystä pysäytetä lisätyöllä.

Lehmanin III laki

Järjestelmän evoluutio määräytyy (liiketoiminnan) palauteprosessin mukaan.

Basili-Möllerin laki

Pienillä muutoksilla on suuria muutoksia korkeampi virhetiheys.

Projektinhallinta

Sackmanin II laki

Ohjelmistotuotantoprojektien työntekijöiden tehokkuus vaihtelee merkittävästi.

Nelson-Jonesin laki

Työntekijän tuottavuus on monen tekijän summa.

Boehmin III laki

Kehitystyöhön vaadittava työmäärä on tuotteen koon funktio.

DeMarco-Glassin laki

Useimpien projektien kustannusarvioilla on taipumus jäädä liian mataliksi.

Humphreyn laki

Kehittyneet prosessit ja henkilökohtainen kurinalaisuus parantavat suunnittelua, lisäävät tuottavuutta ja vähentävät virheitä.

Brooksin laki

Uusien työntekijöiden lisääminen myöhässä olevaan projektiin saa projektin myöhästymään lisää.

Luettelo ei ole täydellinen, vaan listaa kaikkein yleisimmät ja tunnetuimmat ohjelmistotekniikan lait. En ole tässä listassa myöskään selostanut lakeja, sillä se on jonkun seuraavan jutun paikka.

Julkaistu Mondayna 24.9.2007 klo 17:54 avainsanalla opiskelu.

Edellinen
Thinglink-tavaratietokanta
Seuraava
Fysiikan lakeja