Kosemudel (ingl. k. waterfall model) on lineaarne jadapõhine tarkvaraarendusprotsessi elutsükli lähenemismeetod. See on üks esimesi elutsükli mudeleid ning kasutab projektisiseselt loogilist arenduse elutsükli sammude järjestust. Seda saab võrrelda sellega, kuidas vesi voolab kosest alla. Meetodi käigus püstitatakse konkreetsed lõpp-eesmärgid ning peale nende saavutamist pole neid enam võimalik täiendada. Tänapäeval on kosemudeli asemel pigem enamlevinud dünaamilisemad agiilsed mudelid.
Tagasipäärdumine eelmisesse etappi on ekeruline ning kui eelneas etapis tuvastatakse viga, saab selle juurde tagasi tulla alles siis, kui tarkvara on juba kasutusse läinud.
Dokumenteeritakse arendatava toote/süsteemi nõuded, käitumine, sihtriistvara jne. Etapp võib jaguneda kaheks - eraldi süsteemi ja nõuete analüüs.
Kavandatakse arendatava toote süsteem ja struktuur, keskendudes selle funktsionaalsetele omadustele. Need võivad olla andmestruktuurid, tarkvara arhitektuur, liideste omadused ja protseduurilised ning algoritmilised detailid. Etapi jooksul tehtud töö dokumenteeritakse ning dokumentatsiooni põhjal hinnatakse teostuse jooksul projekti kvaliteeti.
Eelmistes etappides valminud kavandi järgi toimub toote arendus, mille käigus luuakse programm või moodulite kogum. Testitakse valminud mooduleid ja moodulikogumikke. Olenevalt dokumenteeritud kavandi detailsusest oleneb sellest etapist projekti arenduslihtsus - mida detailsem on projekt, seda lihtsam ja mehhaanilisem saab olla teostuse etapp.
Toimub kogu valminud tarkvarasüsteemi testimine, peale mida tarnitakse toodet kliendile ja/või sihtrühmale. Testitakse lähtuvalt süsteemi ühilduvusest varem dokumenteerituga (kas süsteem oma funktsionaalsuse osas nõudeid täidab ning kontrollitakse süsteemi detaile).
Tegemist on kõige pikema tarkvara elutsükli etapiga. Süsteemi võidakse muuta, kui kasutajad avastavad vigu, ümbrus ja töökeskkond muutuvad või klient vajab uut funktsionaalsust. Arendustöö teostamiseks korratakse kõiki eelnevaid etappe, kuid ainult olemasoleva süsteemi muutmise eesmärgil.
Iga etapi tulemusena tekib dokumentatsioon, mis kirjeldab vastavas etapis saavutatud tulemit. Kogu dokumentatsioon kinnitatakse, järgnev etapp ei tohi olla samaaegselt töös, kui eelmine pole lõpetatud.
| Eelised | Probleemid |
|---|---|
| Selgesti defineeritud eesmärgid ja tähtajad | Testimine toimub enamasti elutsükli lõpus |
| Heade kodeerimispraktikate kinnistamine meeskonnas | Mudel on liiga jäik, töö käigus leitud suuremate vigade korral võib osutuda vajalikuks alustada kogu tsükkel uuesti nullist |
| Konkreetne struktuur lihtsustab ülesannete korraldust ja jälgimist | Ei anna ruumi töö käigus esitatud uuenduste või muudatuste soovidele kliendi poolt |