Ohjelmistovaatimukset

Ohjelmistovaatimukset (engl. software requirements) ovat kuvauksia palveluista, joita ohjelmiston on tarjottava ja rajoitteista, joiden alla sen on toimittava. Vaatimukset voivat vaihdella korkeatasoisista abstrakteista lausunnoista yksityiskohtaisiin matemaattisiin toiminnallisiin määrittelyihin.
Vaatimus on jotain, jota ohjelmiston on tehtävä tukeakseen omistajansa liiketoimintaa tai laadullinen ominaisuus, joka tekee siitä hyväksyttävän ja kiinnostavan omistajalle.
Vaatimusmäärittely tai vaatimusanalyysi on prosessi, jossa päätetään asiakkaan tarvitsemat palvelut sekä rajoitteet, joiden alla se luodaan ja joiden alla sen on toimittava. Vaatimukset voivat olla pohja sopimuksen tarjoukselle ja pohja itse sopimukselle.
Vaatimustyyppejä ovat:
käyttäjävaatimukset
lausunnot luonnollisella kielellä sekä kaaviot palveluista ja rajoitteista
tehdään asiakkaille
järjestelmävaatimukset
rakenteellinen dokumentti, jossa on yksityiskohtaiset kuvaukset palveluista
kirjoitetaan sopimuksena asiakkaan ja toimittajan välillä
ohjelmistomäärittely
yksityiskohtainen ohjelmiston kuvaus, joka voi toimia pohjana suunnittelulle tai toteutukselle
kirjoitetaan ohjelmistokehittäjille
Toiminnalliset vaatimukset (engl. functional requirements) ovat lausuntoja palveluista, joita järjestelmän on tarjottava, miten järjestelmä reagoi tiettyihin syötteisiin ja miten järjestelmä toimii tietyissä tilanteissa. Toiminnalliset vaatimukset riippuvat ohjelmiston tyypistä, ennakoiduista käyttäjistä ja järjestelmästä, jossa ohjelmistoa käytetään.
Ei-toiminnalliset (engl. non-functional requirements) vaatimukset ovat rajoitteita palveluille tai toiminnoille joita järjestelmä tarjoaa kuten ajoitusrajoitteita, rajoitteita kehitysprosessille, standardeja ja niin edelleen. Ei-toiminnallisia vaatimuksia ovat tuotevaatimukset (esimerkiksi suorituskyky, luotettavuus ja niin edelleen). Lisäksi on järjestöllisiä vaatimuksia (kuten yrityksen käytännöt) ja ulkoisia vaatimuksia (kuten yhteensopivuusvaatimukset, lainsäädännölliset vaatimukset ja niin edelleen).
Aluevaatimukset (engl. domain requirements) tulevat sovellusalueesta, joka voi vastata alueen ominaispiirteitä. Voivat olla toiminnallisia tai ei-toiminnallisia. Voivat olla rajoitteita olemassa oleville vaatimuksille tai voivat määritellä tiettyjä laskutoimituksia.
Käyttäjävaatimukset (engl. user requirements) ovat toiminnallisia tai ei-toiminnallisia vaatimuksia, jotka kuvataan siten, että ne ovat ymmärrettäviä järjestelmän käyttäjille ilman teknistä tietotaitoa. Käyttäjävaatimukset kuvataan luonnollisella kielellä, jonka ongelmia ovat epätäsmällisyys (lukijat ja kirjoittavat eivät välttämättä tulkitse sanoja samoin), ylijoustavuus (sama asia voidaan kuvata useilla eri tavoilla), vaatimusten sulautuminen (useita eri vaatimuksia saatetaan ilmaista yhdessä) ja modularisaation puute (luonnolliset kielet eivät ole riittäviä rakenteeseen).
Ohjelmiston vaatimusmäärittely on dokumentti, jossa lausutaan mitä ohjelmiston kehittäjiltä vaaditaan, mutta se ei ole ohjelmiston suunnitteludokumentti.
Monimutkaisten projektien vaatimusten hallintaan liittyy myös vaatimusten jäljitettävyys tuotekehityksen aikana: tämä sisältää tiedon vaatimukseen liittyvistä aktiviteeteista.
Vaatimusten löytämiseen, varmistamiseen ja dokumentoimiseen on erilaisia prosesseja: jotta oikea tuote voidaan tehdä on löydettävä oikeat vaatimukset.