Empiirinen ohjelmistotutkimus on 40 vuoden aikana löytänyt ohjelmistotekniikassa paljon käytännössä toimivia periaatteita eli niin sanottuja hyviksi havaittuja menetelmiä. Empiirinen tutkimus perustuu aistihavaintoihin, lakeihin ja teorioihin. Ohjelmistotekniikassa empiirisellä tutkimuksella on oma asemansa, ja tutkimuksen tuloksena on koottu joukko lakeja, hypoteeseja sekä teoreemoja. Laki syntyy, kun havaitulla ilmiöllä on jokin tunnistettu ja toistuva tekijä. Lain tehtävänä on selittää miten jokin ilmiö toimii, mutta se ei vielä kerro sitä, miksi ilmiö toimii juuri niin kuin sen on havaittu tekevän. Teoria puolestaan selittää, miksi laki on pätevä. Empiirinen ohjelmistotutkimus on tuottanut toistaiseksi vielä vähän teorioita ja lakienkin tulkinnat ovat kiistanalaisia.
Ohjelmistotekniikan yksi kuuluisimmista laeista on Glassin laki: "Puutteelliset vaatimukset ovat tärkein projektien epäonnistumisen syy." Tämän lain esitti ohjelmistotekniikan tunnettu evankelista Robert Glass (s. 1932) vaatimusmäärittelyistä tekemiensä tapaustutkimusten tulosten pohjalta. Glass teki epäonnistuneista projekteista havaintoja, joista tärkeimpiä olivat:
- vaatimuksia oli liikaa,
- vaatimuksia ilmeni myöhään ja ne muuttuivat,
- vaatimukset olivat moniselitteisiä ja
- vaatimukset olivat epätäydellisiä.
Puutteellinen tai huono vaatimusmäärittely on iso ongelma ohjelmistoprojektille. Glassin lain taustalla on joukko havaintoja, jotka toisaalta ovat melko yleisiä vielä nykyään ja toistuvat edelleen ohjelmistoprojekteissa. Määrittelytyö epäonnistuu tai määrittelyssä syntyy ongelmia, koska vaatimukset kartoitetaan usein huonosti. Vaatimuksia ei myöskään määritellä riittävän tarkasti, mikä osaltaan johtaa huonoon tulokseen vaatimusmäärittelyssä. Vakavan ongelman muodostavat myös väärin ymmärretyt vaatimukset sekä projektin aikana muuttuvat vaatimukset. Usein vaatimuksia ei osata tarkentaa ja ne vain kirjataan osaksi määrittelyä sen enempää niitä pohtimatta.
Tavallisimmin virhe syntyy määrittelemällä vaatimus epätäydellisesti tai virheellisesti. Vanha viisaus väittää, että mitä useampi kokki sitä suurempi soppa. Näin olisi myös Glassin lain taustalla, sillä vaatimusmäärittelyssä syntyy erityisen paljon ongelmia, kun määrittelytyö ulkoistetaan kolmannelle osapuolelle. Vaatimusten ymmärtäminen on jo sinänsä vaikeaa niin tilaavalle eli asiakkaalle kuin toteuttavallekin osapuolelle. Työ tuskin tulee yhtään helpommaksi ottamalla alihankkija projektiin mukaan. Vaatimusmäärittelyä ei saa ymmärtää vain pakollisena osana ohjelmistoprojektia. Sitä ei siis saa nähdä byrokratiana, jonka tavoitteena on ainoastaan tuottaa vaatimusmäärittelydokumentti liitettäväksi osaksi projektin dokumentaatiota. Määrittelytyössä vaaditaan tarkkuutta ja vaatimukset on verifioitava, jotta mahdolliset ongelmat havaitaan ja kyetään korjaamaan ajoissa.
Teoreettisesti tarkasteltuna Glassin laista voidaan päätellä vaatimusten määrittelyn olevan vaikeaa. Vaikeaksi työn tekee esimerkiksi asiakkaan kykenemättömyys ilmaista vaatimuksiaan. Projektiryhmä ei välttämättä ymmärrä riittävästi asiakkaan liiketoimintaa ja siksi ei aina kykene edes vastaanottamaan esitettyjä vaatimuksia. Työvaihe on lisäksi hyvin työintensiivinen. Sidosryhmiltä ja projektiryhmältä vaaditaan keskittymistä vaatimusmäärittelyyn. Asiakaskaan saati sitten muut osallistujat eivät tiedä kaikkea eivätkä osaa jakaa tietojaan, mikä tekee työstä entistä haastavamman.
Vaikka suuri osa ohjelmistoprojekteista onnistuu, parantamisen varaa on yhä. Osa projekteista onnistuu tuurilla, kun tavoitteena on varmasti onnistuva projekti. Glassin laki selittää erään syyn epäonnistumisiin, mutta ei suinkaan ole ainoa selitys. Vaatimusmäärittely on kriittinen vaihe ohjelmistoprojektissa eikä sitä tulisi ohittaa olankohautuksella. Liian usein pienissäkin ohjelmistoprojekteissa syöksytään toteutukseen eli ohjelman koodaamiseen, vaikka tavoitteet eivät ole vielä täysin selvillä. Tästä on seurauksena ikuisuudelta tuntuva korjausten ja parantelujen kehä eikä projekti näytä koskaan valmistuvan. Vaatimusten määrittelyyn tulee panostaa iso osa projektille varatusta ajasta, sillä Glassin lain perusteella projektilla on hyvä mahdollisuus epäonnistua puutteellisten vaatimusten vuoksi.