TEEMA-ARTIKKELI. Arkkitehtuurit ja koodin laatu Tomas Nyström, Accenture



Samankaltaiset tiedostot
Vielä ei ole myöhäistä

Koulutuksen suhdannevaihtelut. Zeppeliinistä suihkukoneaikaan

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

17/20: Keittokirja IV

Kokonaisarkkitehtuuri ja päätöksenteko

Web-palvelu voidaan ajatella jaettavaksi kahteen erilliseen kokonaisuuteen: itse palvelun toiminnallisuuden toteuttava osa ja osa, joka mahdollistaa k

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat

Enterprise SOA. Nyt. Systeemi-integraattorin näkökulma

Järjestelmäarkkitehtuuri (TK081702) Yritysarkkitehtuuri. Muutostarpeet

Ohjelmistojen suunnittelu

Uudelleenkäytön jako kahteen

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Kokemuksia yritysarkkitehtuurista

KONEAUTOMAATION LAATU JA TURVALLISUUS Marko Varpunen

TOIMINNALLINEN MÄÄRITTELY MS

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Master data tietojen ja kriteeristön sekä hallintamallin määrittely ja suunnittelu TRE:933/ /2011

UUSI ARKKITEHTUURI PAREMMAT PALVELUT. Järjestelmäarkkitehtuurihankkeet

Totuus IdM-projekteista

Älykästä. kulunvalvontaa. toimii asiakkaan omassa tietoverkossa

Käytännön haasteita ja ratkaisuja integraation toteutuksessa. Jukka Jääheimo Teknologiajohtaja Solita Oy


Onnistunut SAP-projekti laadunvarmistuksen keinoin

TeliaSonera. Marko Koukka. IT viikon seminaari Identiteetin hallinta palveluna, Sonera Secure IDM

13/20: Kierrätys kannattaa koodaamisessakin

Miten yhteiskunnalliset haasteet, julkiset palvelut ja yritysten liiketoiminta kohtaavat vai kohtaavatko?

Yhteinen opintohallinnon järjestelmä

Ohjelmistojen mallintaminen, mallintaminen ja UML

AVOIN LÄHDEKOODI JA SEN MERKITYS LIIKETOIMINNASSA

Integraatiotekniikan valinta - tie onnistumiseen.

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services

ohjelman arkkitehtuurista.

Juhani Gurney Teknologiajohtaja. Peppi-projekti ja ESP (Eduix SOA Platform)

Fiksumpi käyttöliittymä kuntaan. Miten kuntien tietojärjestelmät saadaan palvelemaan kuntalaisia? LapIT-päivät 2015

T Tietojenkäsittelyopin ohjelmatyö Hirviöryhmä loppukatselmointi. Hirviö. Projektikatselmointi

Standardien PCI DSS 3.0 ja Katakri II vertailu

Suorituskyvyn varmistaminen sovelluskehityksen eri vaiheissa Paavo Häkkinen, Presales Teamleader Compuware Finland

KUVApuhelinhanke alkukyselyt:

Software product lines

J2EE vs..net Olli Sakari

Tietojärjestelmän osat

JHS XXX ICT-palvelujen kehittäminen: Laadunvarmistus Liite 6: Katselmointi

Merlin Systems Oy. Kommunikaatiokartoitus päätöksenteon pohjaksi. Riku Pyrrö, Merlin Systems Oy

Järjestelmäarkkitehtuuri (TK081702) SOA, Service-oriented architecture SOA,

Arkkitehtuurien tutkimus Outi Räihä. OHJ-3200 Ohjelmistoarkkitehtuurit. Darwin-projekti. Johdanto

Suomen avoimien tietojärjestelmien keskus COSS ry

Tietokannan tietoturva. Heli Helskyaho Tietoturva-aamupäivä, Oracle House

Liiketoimintajärjestelmien integrointi

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

LAADUN VARMISTAMISEN JOHTAMINEN. Pasi Riihilahti RAY Kehitysjohtaja

TIEDÄTKÖ TUKEEKO HR YRITYKSESI LIIKETOIMINTAA? mittaamalla oikea suunta johtamiseen

UCOT-Sovellusprojekti. Testausraportti

Tässä keskitymme palveluiden kehittämiseen ja niistä viestimiseen jotta osaaminen olisi nähtävissä tuotteena. Aluksi jako neljään.

Toimittaja Looginen väylärakenne + kirjastot. Kalle Launiala, ProtonIT Oy kalle.launiala@protonit.net

Ohjelmistotuotannon itse-automatisointi Avoin menetelmä nykyisten tekijöiden työn radikaaliin tehostamiseen

Testiautomaatio tietovarastossa. Automaattisen regressiotestauksen periaate ja hyödyt

Järjestelmäarkkitehtuuri (TK081702) Lähtökohta. Integroinnin tavoitteet

ITK130 Ohjelmistojen luonne

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A Kandidaatintyö ja seminaari

Suomen avoimien tietojärjestelmien keskus COSS ry

10 SYYTÄ VALITA VISMA JÄRJESTELMÄTOIMITTAJAKSI

Pilviratkaisut ovat entistä suositumpia. Mutta mikä on oikea ratkaisu sinun maailmassasi? Lähde matkalle läpi avaruuden, ajaan ja maalaisjärjen

Oppijan polku - kohti eoppijaa. Mika Tammilehto

Mitä apua arvoketjuajattelusta

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

Verkostojen rakentaminen ja ylläpito, tiedon elinkaariajattelu projektitoiminnassa. Ilkka Lehtinen, COSS

Antti Ylä-Jarkko Tietohallintojohtaja Vantaan kaupunki. Epäsovinnaisia tuottavuusratkaisuja kuntakentässä

Tapahtuipa Testaajalle...

Case TUHTI. Projektin tunnuslukuja. ! Suuri perusjärjestelmäuudistus! Työt alkoivat kesällä ! Java luokkia n. 5000

Hankinnan problematiikka

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

Ajankohtaista peltolohkorekisterissä

SOA & Ajax Sanahelinää vai toimivaa käytäntöä sähköisessä asioinnissa? Fenix hankejohtaja Harri Juuti Projektipäällikkö Teemu Karvonen

Kuinka IdM-hanke pidetään raiteillaan

Onnistunut ohjelmistoprojekti

1.2 Mahdollista joustava muutos suojaustasolta toiselle tilanteen mukaan myös ylöspäin

Ympäristöystävällinen IT

Kansallinen ASPAtietojärjestelmä

Testauksen tuki nopealle tuotekehitykselle. Antti Jääskeläinen Matti Vuori

Kuka on arvokas? Liite: EE2015_kuka on arvokas_tulosteet.pdf tulosta oppilaiden lomakkeet tehtäviin 1 ja 2.

Projektinhallinta TARJA NISKANEN LÄHTEENÄ MM. KEHITTÄJÄN KARTTAKIRJA

TERADATAN JA SAS DI STUDION YHTEISELO CASE LÄHITAPIOLA

Esityksen tiivistelmä Elina Hiltunen

IT Service Desk palvelun käyttöönotto palvelukeskuksissa

PILETTI. Tekninen vaatimusmäärittely. v. 0.2

Miten johdan huolto- ja korjaamotoimintaa laadukkaasti? Autokauppa Finlandiatalo

Nimeni on. Tänään on (pvm). Kellonaika. Haastateltavana on. Haastattelu tapahtuu VSSHP:n lasten ja nuorten oikeuspsykiatrian tutkimusyksikössä.

Ohjelmoinnin perusteet, syksy 2006

Mallinnusinnovaatioiden edistäminen infra-alalla hankinnan keinoin

Mitä muutoksia pilvipalvelut tulevat aikaansaamaan tietoteknisten ratkaisujen hankinta- ja toimitusmalleissa? Miten pilvipalvelut muokkaavat

AVOIMEN TUOTTEEN HALLINTAMALLIT. Kunnassa toteutettujen tietojärjestelmien uudelleenkäyttö. Yhteentoimivuutta avoimesti

Kokonais-IS-arkkitehtuuri korkeakouluissa Tietohallinnon näkökulma

Uusia tuulia Soneran verkkoratkaisuissa

Parempaa liiketoimintaa henkilöstöjohtamisen uusilla välineillä

b) Määritä myös seuraavat joukot ja anna kussakin tapauksessa lyhyt sanallinen perustelu.

Project-TOP QUALITY GATE

Oliotietokannat. Nääsvillen Oliopäivät Pekka Kähkipuro Kehitysjohtaja, FT

Mitä avoimuus oikeasti on yhteensopivuus vai yhteistoiminnallisuus. Annual Report Jukka Karhu Aluepäällikkö/South Finland

Tiedolla johtaminen ja sähköiset palvelut. Sami Niskanen, Jari Uotila & Matti Koskivirta

AS Automaatio- ja systeemitekniikan projektityöt

Transkriptio:

TEEMA-ARTIKKELI Arkkitehtuurit ja koodin laatu Tomas Nyström, Accenture Arkkitehtuuri ja koodin laatu ovat käsitteitä joista harvemmin löytyy kaksi täysin samaa mieltä olevaa henkilöä. Meille on jokaiselle muodostunut oma käsitys joka perustuu sekoitukseen käytännön kokemusta ja teoriaa. Käytännön kokemus tulee yleensä kantapään kautta projekteissa ja teoreettinen näkemys taas eri yritysten omista malleista ja terminologiasta. Varsinkin sana arkkitehtuuri on tietotekniikan piirissä kokenut aikamoisen inflaation viime aikoina kaikki haluavat yleensä olla arkkitehtejä, kaikkeen on olemassa arkkitehtuuri ja jos jokin kilke ei omaa hyvää arkkitehtuuria ei se luonnollisesti voi olla mistään kotoisin. Koodin laadusta on (ainakin subjektiivisella tasolla) yleensä myös aika erilaisia näkemyksiä, riippuen hieman siitä istuuko ostajan vai toimittajan riveissä. Tässä artikkelissa on tarkoitus käsitellä käytännönläheisesti sitä miten eri arkkitehtuurit vaikuttavat koodin laatuun, eli ottaa härkää sarvista kiinni, katsoa sitä tiukasti silmiin ja katsoa mitä siitä seuraa. Ensin määritellään arkkitehtuuri ja koodin laatu erikseen ja sitten katsotaan yhtymäkohtaa. Arkkitehtuureille määritelmä Meille kaikille on ajan myötä muodostunut korvien väliin tietty kehikko, jota käytämme kaiken sisään tulevan syötteen analysointiin. Tämä kehikko on meidän henkilökohtainen tapamme luokitella ja käsitellä informaatiota. Arkkitehtuuri on pitkälti sama asia; arkkitehtuurin avulla pilkotaan isompi käsitealue pienempiin osiin ja mietitään osien välille rajapinnat tai suhteet. Käytännön elämästä löytyvät arkkitehtuurit ovat, tilanteesta ja tekijöidensä taustoista johtuen, harvemmin yhdenmittaisia. Mitään kaikkien arkkitehtuurien äitiä ei ole olemassa, ainoastaan kirjava joukko eri arkkitehtuureja jossa hyvin voidaan kahdella samannimisellä arkkitehtuurilla tarkoittaa kahta aivan eri asiaa. Jos nopeasti vilkaisee alan lehdissä käytett ävää terminologiaa (tai sitten vaik kapa työpaikkailmoituksia) niin sieltä löytyy järjestelmä-, ohjelmisto-, integraatio-, sovellus-, infrastruktuuri-, laitteisto-, verkko-, palvelin-, portaali-, Java EE-,.NET-, tietoturva-, SOA-, kehitys-, ylläpito-, operointi-, suorituskyky-, jne. arkkitehtejä tai -arkkitehtuureja. Tästä joukosta on aika vaikea löytää/etsiä punaista lankaa koodin laadun suhteen. On siis tarpeen ottaa käyttöön hieman matkan varrella opittua ja hyväksi todettua teoriaa, eli Accenturella yleisesti käytössä oleva tapa luokitella ja käsitellä arkkitehtuureja (katso kuva 1). Idea on yksinkertaisesti ottaa jokaisesta tietojärjestelmästä löytyvät korkean tason 8 Systeemityö 3/2005

Kehitys- ja operointiarkkitehtuurin väliin tulee itse sovellus ja kaikki tarvittava jotta sovellus teknisesti toimisi. Sovellus itsessään ei ole mikään arkkitehtuuri mutta sitä tukemaan on oltava sovellusarkkitehtuuri. Erona näissä on se että sovellus on vain ja ainoastaan puhdasta ajonaikaista liiketoimintalogiikkaa kun taas sovellusarkkitehtuuri on määritelmä siitä miten sovelluslogiikka on pilkottu osiin ja mitkä osien suhteet ovat. Sovellusarkkitehtuuriin voi myös laskea sellaiset sovelluksen osat jotka ovat sovelluksen eri osille yhtenäisiä ja jotka luodaan keskitetysti uudelleenkäytön varmistamiseksi. Sovellusta ja sovellusarkkitehtuuria tukemaan on oltava ajonaikainen arkkitehtuuri. Ajonaikaiseen arkkitehtuuriin kuuluu tarvittava teknologiapino, alkaen verkosta, laitteistosta jne päätyen teknisiin ohjelmistopalveluihin (kuten esimerkiksi Java EE palvelut, kirjastot jne) jotka ovat sovellusriippumattomia mutta joita ilman itse sovellus ja sovellusarkkitehtuuri eivät toimi. Kuva 1: Perusarkkitehtuurit joiden avulla voidaan määrittää mikä tahansa sovellus kokonaisuudet sekä tekniseltä puolelta että toteutusprojektin elinkaaren puolelta ja nimetä ne mahdollisimman johdonmukaisesti. Näiden peruskomponenttien päälle on sitten helppo määritellä kaikki muu. Tämän artikkelin kannalta sovelluskehityksen elinkaaren aloittaa kehitysvaihe jossa järjestelmä toteutetaan. Tätä vaihetta tukemaan on oltava kehitysarkkitehtuuri. Kehitysarkkitehtuuri kattaa kaiken toteutusvaiheen työn tekemiselle vaadittavat edellytykset laitteistosta, kehitysvälineistä, versionhallinnasta jne., aina työkaluohjeistukseen ja metodologiaan saakka. Toteutusprojektin elinkaaren toisessa päässä on vaihe jossa sovellus on tuotannossa (tai esimerkiksi jakelussa jos kyseessä ei suoraan ole itsenäinen sovellus) ja tarve on ylläpitää, tukea ja kenties varmistaa että sovellus toimii tuotannossa. Tätä kokonaisuutta kutsutaan operointiarkkitehtuuriksi. Operointi siis tässä tarkoittaa kaikkea sitä minkä on toimittava jotta sovellus toimii asetettujen palvelutasojen mukaan. Kehitys-, sovellus-, ajonaikainen ja operointiarkkitehtuuri yhdessä yksiselitteisesti määrittelevät minkä tahansa korkeamman tason arkkitehtuurin. Esimerkiksi integraatioarkkitehtuuri on näiden instanssi jossa kehitysarkkitehtuuri määrittää työvälineet ja ohjeistuksen integraation toteutukseen, ajonaikainen arkkitehtuuri on tarpeista riippuen esimerkiksi jono- tai EAI-paketti ja operointiarkkitehtuuri on sitten näiden ylläpito ja tuki. Sovellusarkkitehtuuri integraatioarkkitehtuurin tapauksessa on esimerkiksi integraation ohjeistus niin että yhtenäinen tietomalli tai palvelupohjainen rajapintaratkaisu toteutuu. Räätäliprojekteissa arkkitehtuureilla on keskeinen rooli kun taas pakettiprojekteissa suuri osa arkkitehtuurivalinnoista on ennalta määriteltyjä. Esimerkiksi SAP moduuliprojektissa kaikki tarvittavat työvälineet ovat osa SAP:in tarjontaa. Kuvassa 2 on vielä kuvattu näiden perusarkkitehtuurien suhteet. Huomionarvoista on se että kehitysarkkitehtuurin pitää tarvittaessa myös pystyä luomaan ja tukemaan ajonaikaisen arkkitehtuurin osia. Koodin laatuun vaikuttavat tekijät Koodin laadulle kuulee monia määritelmiä kuten virheettömyys, Systeemityö 3/2005 9

Kuva 2: Perusarkkitehtuurien suhteet tehokkuus, riittävä kommenttien määrä, selkeys jne. Kaikki nämä ovat oikeassa sekä samalla väärässä, kaikki riippuu siitä mitä ollaan tekemässä. Koodin virheettömyys ei juuri auta ellei kehitystiimille ole pystytty kommunikoimaan kunnolla mitä sovelluksen tulisi tehdä. Ainoa toimiva tapa kuvata vaadittava koodin laatu (ja siis samalla sovelluksen laatu) on vaatimusten kautta. Vaatimukset voidaan karkeasti ottaen jakaa kahteen osioon; toiminnallisiin ja ei-toiminnallisiin vaatimuksiin. Toiminnalliset vaatimukset kuvaavat sovelluksen toiminnan ja ei-toiminnalliset sille annetut tekniset vaatimukset kuten esimerkiksi suorituskyky (vasteaika, käyttäjien määrä jne tietyllä laitteistolla) tai yhteensopivuus jonkun olemassa olevan teknologian kanssa. Laadukas koodi / sovellus on siis sellainen joka täyttää toiminnalliset ja ei-toiminnalliset vaatimukset. Saavutetaanko asetetut vaatimukset riippuu tietysti vaatimusten tasosta, mutta myös muista asioista. Karkeasti ottaen lopulliseen laatuun projektin kannalta vaikuttavat (katso kuva 3): a) projektihallinnan alueen asiat b) yksilön osaaminen c) vaatimukset sekä loppukäyttäjien osallistuminen ja d) sovelluksen rakenne, sovelluskehityksen abstraktiotaso sekä kehitysympäristön tehokkuus Näistä alueista pystytään suoraan arkkitehtuurin avulla vaikuttamaan alueeseen d; tosin on hyvä pitää mielessä että mikäli alueen d tehtävät / toiminnot helpottuvat on niillä vuorostaan painetta helpottava vaikutus muille alueille. Sovelluksen rakenteen vaikutus koodin laatuun Liiketoiminta miettii vaatimuksia mutta ei yleensä osaa ottaa kantaa siihen miten ne tulisi toteuttaa, teknologiaihminen taas tietää mikä on mahdollista ja mikä ei mutta harvemmin ymmärtää liiketoimintaa, sovelluksen rakenne määräytyy molempien pohjalta ja siksi sovellusarkkitehtuuri, alue tekniikan ja liiketoiminnan välissä, on erittäin kriittinen lopputuloksen eli laadun - kannalta. Ääripäässä sovelluksella ei ole rakennetta. Sovellus on tällöin monoliitti jossa ei ole minkäänlaisia sisäisiä rajapintoja. Kukaan ei halua monoliittia ja niillä joilla sellaisia on pyrkivät niistä eroon. Modulaarisuus on avainsana ja sovelluksen rakenne määrittää modulaarisuuden tason. Esimerkkejä modulaarisuudesta on se että sovellusarkkitehtuuri on identifioinut eri liiketoimintavaatimusten pohjalta sovelluksen toiminnalliset riippuvuussuhteet ja projekti on jaettu tiimeihin näiden pohjalta. Tällä tavoin eri tiimien väliset riippuvuudet ovat minimoitu ja teknisesti tiimit voivat edetä omaa tahtiaan muista riippumatta, ääripäässä tämä tarkoittaa jopa sitä että sovelluksen eri osia voidaan tuotannossa päivittää muista riippumatta. Projektiorganisaatio vastaa sovellusarkkitehtuurista jos projekti on itsenäinen, muuten osavastuu kuulu hankeorganisaatiolle. Yksittäinen kehittäjä kokee modulaarisuuden yksinkertaistavana tekijänä joka auttaa häntä keskittymään omaan alueeseensa ilman että muilta alueilta tulee liikaa häiriötekijöitä tai monimutkaisuutta lisääviä vaatimuksia. Sovelluksen rakenne on hyvin dokumentoituna myös äärimmäisen hyvä kommunikoinnin työväline niin kehittäjien kuin kehittäjien ja liiketoiminnan välillä. Sovelluksen rakenne vaikuttaa suuresti myös ylläpitovaiheeseen, erityisesti sen kustannuksiin. 10 Systeemityö 3/2005

Kehitysympäristön vaikutus koodin laatuun Sovelluskehityksessä kehitysympäristön tehokkuus ja käytettävyys on huomattavassa asemassa projektin ajankäytön suhteen. Varsinkin Java-sovelluskehityksessä kehitysympäristöjen tehokkuus vaihtelee, sovelluskehityssyklistä huomattavan suuri osa voi esimerkiksi kulua sovelluksen kääntämiseen ja asentamiseen sovelluspalvelimelle. Kuva 3: Sovellusprojektin kannalta keskeiset seikat jotka yleensä vaikuttavat koodin laatuun. Kehityksen abstraktiotason vaikutus koodin laatuun Kehityksen abstraktio nousee yleensä aina kulloinkin muodissa olevan ohjelmointikielien iän myötä. Tyypillisesti ensin tulevat kirjastot ja uudelleenkäytettävät koodinpätkät, sitten erilaiset patternit joiden avulla kehittäjän vapausasteita rajataan. Tyypillistä on myös että jossain vaiheessa tulee kehittimiä jotka rupeavat abstrahoimaan alla olevaa ja generoimaan koodia mallien pohjalta. Kehittäjän kannalta kaikki tämä on ajonaikaista arkkitehtuuria, mitä korkeammalle tasolle ajonaikainen arkkitehtuuri on projektissa saatu, sen yksinkertaisempaa sovelluskehitys on. Tästä seuraa että tarve kirjoittaa koodia vähenee ja kehittäjällä on korkeampi tuottavuus suhteessa käytettyihin tunteihin. Esimerkki tästä evoluutiosta on lokiin kirjoittaminen: ensin Javapuolella tuli itse tehdä kaikki, sitten tuli Log4J ja nyt lokitus onkin jo osa standardia. Tänä päivänä.net ja Java ovat ylivoimaisesti suosituimmat perustat joille ajonaikaiset arkkitehtuurit rakennetaan - rakennetaan koska vieläkään ne eivät kata kaikkia tarpeita. Mikäli projekti itse pyrkii luomaan oman ajonaikaisen arkkitehtuurin kasvaa riski laadullisille tai aikataulullisille vaikeuksille. Onkin yleensä järkevää tarjota projektille valmiina ajonaikainen arkkitehtuuri toisen (osa-)projektin toteuttamana. Tehokas kehitysympäristö kattaa itse koodin tekemisen lisäksi kaikki kehitykseen vaadittavat osa-alueet, eli koko kehitysarkkitehtuurin. Kun ajonaikaisen arkkitehtuurin puolella koodin määrää vähennetään ja laatua nostetaan kehityksen abstraktiotasoa nostamalla niin kehitysarkkitehtuuri vastaavasti nostaa koodin laatua varmistamalla että tehdään oikeita asioita. Konkreettisesti kehitysympäristö pitää olla sellainen että vaatimukset saadaan dokumentoitua, prosessi ja työkalusetti tukevat tehokasta ja jäljitettävää sovellusdesignin luomista vaatimusten pohjalta, vaatimukset ja koodi pysyvät samalla tasolla (koska kyllähän ne vaatimukset kuitenkin muuttuvat). Testitapausten luonti on oltava sekä kattavaa että ylläpidettävää (automatisoitu) ja testitapaukset on oltava linkattuja vaatimuksiin. Tämä ei ehkä kuulosta vaikealta - mutta monesti suutarin lapsilla ei ole kenkiä. Suoraan itse koodia tarkkailevia osia kehitysarkkitehtuurissa ovat automaattisesti ajettavat yksikkötestit, testien kattavuuden seuraa- Systeemityö 3/2005 11

minen, koodin laadun semanttinen analyysi jne. Integroimalla nämä kyvykkyydet osaksi kehitysprosessia luodaan kyky löytää potentiaalisia laadullisia ongelmakohtia aikaisemmin kehitysvaiheessa. Mitä aikaisemmin laadullinen ongelma löytyy, sen halvempaa sen korjaaminen on. Positiivisen vaikutuksen uudelleenkäyttö Kehitys- ja ajonaikainen arkkitehtuuri ovat tehokkaimmillaan silloin kun ne ovat valmiiksi olemassa ja niitä käytetään muissakin projekteissa tai hankkeissa. Tämä on tietyllä tavalla arkkitehtuurien uudelleenkäyttöä ja samalla syy miksi markkinoilla onkin aika paljon puolivalmisteita eli portaali-, sisällönhallinta- jne. tuotteita joiden avulla ajonaikaisen arkkitehtuurin rakentaminen on kustannustehokkaampaa, nopeampaa ja riskittömämpää. Kaikkein tehokkaimmat IT-organisaatiot tuottavat arkkitehtuurikyvykkyyden keskitetysti; näin syntyy kustannustehokas sekä vakaa pohja jolle kukin projekti tai hanke voi rakentua. On selvää että kaikilla projekteilla on omia erityistarpeitaan ja siksi tärkeä ominaispiirre keskitetyssä kyvykkyydessä on jatkuva kehitys ja ylläpito projektien tarpeiden mukaan. Arkkitehtuurien kehityssuunnat Vaikka sana arkkitehtuuri onkin yleisesti käytössä, sen takaa löytyy harvemmin holistinen lähestymistapa, joka kattaa kehitys-, sovellus-, ajonaikaisen sekä operointiarkkitehtuurin. Edistymistä on tosin selvästi havaittavissa kun yritykset ovat siirtymässä kustannustehokkuudesta tuottavuuden ja laadun optimointiin (mikä sitten oikeasti johtaa kustannustehokkuuteen). Kehitysarkkitehtuuri on alue jossa selvästi on suurin ero nykytilan ja tehokkaan ja optimoidun sovelluskehityksen välillä. Markkinoilla on olemassa välineet joiden pohjalle ratkaisun voi perustaa, työsarkaa onkin enemmän metodologian sekä tuoteohjeistuksen puolella. Ajonaikainen arkkitehtuuri on alue jossa on jo pitkään rakennettu projektien tarpeisiin yksittäisratkaisuja. Jatkossakin jokaisella projektilla on edelleenkin omat tarpeensa mutta nyt kun sekä Java että.net tarjoavat hyvän perustan ollaan siirtymässä arvoketjussa ylöspäin mallipohjaiseen sovelluskehitykseen. Mallipohjaisessa sovelluskehityksessä koodi generoidaan osin automaattisesti esimerkiksi UML-pohjaisista malleista. Mallipohjaisuuden lisäksi selvä trendi on myös puolivalmistepinojen esiinmarssi. Esimerkiksi BEA Aqualogic, SAP NetWeaver sekä Windows Server System siirtävät ajonaikaisen arkkitehtuurin uudelle tasolle jossa valmiita kehikkoja ja palveluita on sovelluskehityksen tarpeisiin yhä enemmän. Yhteenveto Arkkitehtuureilla ja koodin laadulla on selvästi positiivinen yhteys. Mustaa valkoisella on sitten vaikeampi tuottaa koska harvemmin sama projekti tehdään sekä arkkitehtuurilla että ilman ihan vain vertailun vuoksi. Projektin koolla on huomattava vaikutus tilanteeseen. Pienempi projekti ilman kunnon arkkitehtuuria selviää varmaankin hyvin maaliin hieman verenmaku suussa, mikäli projekti on muuten hoidettu mallikkaasti, tosin ylläpitovaiheessa tulee todennäköisesti ongelmia. Suurempi projekti taas todennäköisesti kaatuu arkkitehtuurin puutteeseen jo projektin aikana vaikka muuten asiat olisivat kunnossa. Hyvin toimiva ITorganisaatio tuottaa projektien käyttöön tehokkaan ja toimivan kehitys- ja ajonaikaisen arkkitehtuurin jolloin jokaisen projektin ei erikseen tarvitse keksiä pyörää uudelleen. Projektipäällikön tehtävänä on varmistaa että sovellusarkkitehtuurin eteen tehdään töitä ja lopputulos on ymmärrettävä ja ylläpidettävä kokonaisuus. On kuitenkin hyvä muistaa että koodin laatuun vaikuttaa huomattavasti enemmän vaatimusten taso ja projektin realistinen alkuasetelma. Jos projekti onnistuu ja laatu on hyvää voi hyvin olla että lopputulos on kuitenkin nolla jos muutoshallintaa ja tuotantoon ottoa ei ole hoidettu kunnolla. Tomas Nyström Johtava konsultti, Accenture tomas.nystrom@accenture.com 12 Systeemityö 3/2005