Ketterä suunnittelu haltuun


2014-09-22, 12:19 Kirjoittanut Tommi Palomäki

Suunnittelu projektin alkumetreillä

Varhainen suunnittelu on onnistuneen ohjelmistoprojektin edellytys. Takavuosina yleinen big design up front -lähestymistapa on saanut monet ohjelmistokehittäjät vastustamaan suunnittelua ja dokumentointia. Arkkitehtuuriset päätökset projektin alkumetreillä ovat kuitenkin usein sellaisia, joita on kaikista työläin perua tai refaktoroida myöhemmin. Siksi järkevä määrä suunnittelua projektin alussa varmistaa projektin kokonaisaikataulua ja -kustannuksia.

Ohjelmiston suunnittelu pohjautuu yleensä ei-toiminnallisiin vaatimuksiin. Näitä ovat esimerkiksi ohjelmiston ylläpidettävyys, robustisuus, skaalautuvuus, tehokkuus ja tietoturvallisuus. Näistä ei-toiminnallisista vaatimuksista käytetään muun muassa nimitystä architecture drivers tai driving requirements. SEI määrittelee asian seuraavasti: "The combination of functional, quality-attribute, and business requirements that shape the architecture or the element under consideration". Näiden vaatimusten kartoitus projektin alussa antaa projektille hyvät lähtökohdat.

Suunnittelu Agile-projektissa

Yleisesti ajatellaan, että Agile-projektissa ei tarvitse suunnitella ohjelmiston arkkitehtuuria. Kuitenkin Agile Manifesto toteaa seuraavasti: "The best architectures, requirements, and designs emerge from self-organizing teams". Toisin sanottuna Agile-tiimin yksi keskeisimpiä tehtäviä on panostaa arkkitehtuuriin, vaatimuksiin ja suunnitteluun.

Agile-projektissa suunnittelua tehdään koko ajan projektin kuluessa. Tästä käytetään nimitystä Agile Design. Yksi tapa panostaa varhaiseen suunnitteluun on varata ensimmäinen sprintti alustavalle suunnittelulle, ks. tarkemmin Initial Architecture Modeling. Vähänkin laajemmassa projektissa yksi sprintti alkuun ei kuitenkaan riitä, vaan usein monta ensimmäistä sprinttiä menee suunnitteluun ja protoiluun.

IEEE on julkaissut aiheesta hyvän artikkelin, Agility and Architecture: Can They Coexist? Artikkelissa käsitellään arkkitehdin roolia, arkkitehtuurin tärkeyttä ja dokumentoinnin tärkeyttä Agile-projektissa.

Vertailukohtaa rakennustekniikasta

Ohjelmiston suunnitteluun voidaan ottaa vertailukohtaa rakennustekniikasta, missä on pitkään kehittyneet tavat jäsentää suunnittelua, tarkastaa suunnitelmat ja valvoa niiden toteutumista. Analogiaa rakennussuunnittelun ja ohjelmiston suunnittelun välillä voisi kuvata vaikka seuraavanlaisesti:

Samoin kuin pääpiirustuksia ei kannata tehdä tutustumatta yleis- ja asemakaavaan, on ohjelmistoarkkitehtuurin välttämätöntä olla linjassa yritys- ja järjestelmäarkkitehtuurin kanssa. Ohjelmistoprojektissa "piirustukset ja kuvat" kehittyvät ja tarkentuvat projektin edetessä. Suunnitelmat on kuitenkin tärkeä olla olemassa ja suunnitteluperusteet tiedossa, niin että suunnitelmia voidaan päivittää matkan varrella ja muutoksista aiheutuvaa kustannusta pystytään kartoittamaan.

Suunnitteluun panostaminen kannattaa

Suunnitteluun panostaminen säästää projektin kokonaiskustannuksissa. Suunnittelu alkaa projektin alkumetreillä ja sitä jatketaan sitä mukaa kuin tieto lisääntyy. Hyvä suunnittelu varmistaa edellytykset täyttää sekä ohjelmiston toiminnalliset että ei-toiminnalliset vaatimukset.


comments powered by Disqus