Paketti/moduulirakenne ketterässä projektissa

Tämä on lyhyt aihe. Mutta olen nähnyt lukuisissa tuotantoprojekteissa pakettirakenteen joka on perua tutorialeista, esimerkeistä, pohjista, jne. Pakettirakenne jakautuu tekniikan mukaan – koska niin esimerkeissä usein toimitaan kun käydään läpi tekniikka kerrallaan. näyttääkö tutulta:

-com.munfirma.munprojekti.ejb
-com.munfirma.munprojekti.servlets
-com.munfirma.munprojekti.webservices
-com.munfirma.munprojekti.db

Tämä tuntuu alkuun selkeältä jaolta, mutta omaa kaksi vakavaa heikkoutta:

Kun projekti kasvaa, esim. db kansioon tulee lisää ja lisää komponentteja. Montako DAO komponenttia on projektissa? Montako ejb:tä? Kun niitä alkaa olemaan kymmeniä, tai jopa satoja, käy selväksi, että paketeissa on liikaa tavaraa. Lisänongelmana on nähdä mikä kaikki liittyy samaan asiaan.

Toinen ongelma on lähdekoodihallinta ja tiimityö. Kun tiimit tai työparit tai yksinäisetkin koodaajat tekevät työtään eri piirteiden parissa, tässä mallissa heidän tekemisensä erityisen herkästi heijastuvat muidenkin tonteille, aiheuttaen lähdekoodihallinnan konflikteja jotka täytyy selvittää ja jotka hidastavat kovasti työtä.

Eli tästä johtuen parempi ajattelutapa moduuleille/paketeille/kansiorakenteille onkin piirteiden tai käyttäjätarinoiden pohjalta. Esim. näin:

– com.munfirma.munprojekti.login
– com.munfirma.munprojekti.useradmin
– com.munfirma.munprojekti.common

Eli ideana on pistää esim. login pakettiin kaikki luokat jotka siihen liittyvät, oli se sitten EJB, servlet, managed bean, web service, apuluokka, rajapinta, tai mitä vain tarvitaan. Yleensä on tarpeen olla myös yleiskäyttöpaketti johon kaikkialta voi viitata. Tämä ratkaisee skaalautuvuuden ja tiimityön konflikteja aika mukavasti.

Hyvä huomata että tätäkin voi tehdä väärin: jos pakettien välillä on hurjasti riippuvuuksia ristiin rastiin ja eri suuntiin, hyödyt jäävät niittämättä. Olisi suotavaa että mennään rajapintojen läpi kun tarvitaan toisen paketin palveluita, ja kannattaa myös pohtia riippuvuuksien suuntaa ja facade-patternia.

Tämä on vain mielipide-osio, ei mitään tiedettä, mutta omat kokemukset tästä erittäin hyviä, kun molempia on tullut kokeiltua.

 

 

 

Advertisements

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s