HELIA 1 (23) Luento 8 Ohjelmiston suunnittelusta... 2 Suunnittelumenetelmä... 2 Mihin menetelmää tarvitaan?... 3 Yleinen vaihejakomalli ja tietojärjestelmän elinkaari... 4 Tavoitteiden asettaminen - Esitutkimus... 6 Sisällön määrittely... 7 Rakenteen ja toiminnan suunnittelu... 8 Toteutus... 8 Testaus... 9 Käyttöönotto... 10 Ylläpito... 11 Suunnittelun lähestymistavat (suunnitteluparadigmat)... 12 Toimintokeskeinen lähestymistapa... 12 Tietokeskeinen lähestymistapa... 13 Objektipohjainen lähestymistapa... 15 Dialektinen kehitysennuste?... 16 Suunnittelun lähestymistavat ja ohjelmistotyökalut... 17 Suunnittelun prosessimallit... 17 Erillinen määrittely- ja toteutusvaihe: Vesiputousmalli... 18 Käyttöliittymän näkökulma... 18 Etuja... 18 Ongelmia... 18 Prototyyppisuunnittelu: Kehittyvä prosessimalli... 19 Käyttöliittymän näkökulma... 19 Etuja... 20 Ongelmia... 20 Kompromissi?... 21 Lisätekniikoita... 22 Osittaminen... 22 RAD (Rapid Application Development)... 23
HELIA 2 (23) Ohjelmiston suunnittelusta Suunnittelumenetelmä 1. Mistä lähtökohdista ongelmaa tarkastellaan 2. Miten projekti jaetaan vaiheisiin? 3. Mitä tehtäviä kunkin vaiheen aikana tehdään? 4. Mitä tulosteita tuotetaan ja missä vaiheessa? 5. Mitä sääntöjä noudatetaan? 6. Millaisia työkaluja voidaan käyttää? Recommended collection of philosophies, procedures, rules, techniques, tools, documentation, management of information systems Suunnittelumenetelmiä on satoja ellei tuhansia
HELIA 3 (23) Mihin menetelmää tarvitaan? 1. Kokonaisuuden hallinta lopputuloksen abstraktisuus J jako osiin konkretisoi J kaikkea ei tarvitse itse pohtia, tietää ja muistaa; "pyörä on jo keksitty..." 2. Projektin hallinta aikataulu resurssien allokointi projektin ohjaus & koordinointi J vaihejako tukee suunnittelua, seurantaa ja ohjausta Í laadukas rakennusprosessi J laadukas järjestelmä / tuote J tyytyväinen asiakas Ä menetelmä ei takaa onnistunutta tuotetta!
HELIA 4 (23) Yleinen vaihejakomalli ja tietojärjestelmän elinkaari 1. Esitutkimus 2. Sisällön suunnittelu 3. Rakenteen ja toiminnan suunnittelu 4. Toteutus 5. Käyttöönotto 6. Ylläpito Valitse oikea mittakaava (Riittävän hierarkian periaate): Mittava ongelma vaati mittavat työkalut, pieni ongelma saadaan selvitettyä kevyemmällä kalustolla. Määritys 10 % Suunnittelu 20 % Toteutus 25 % Käyttöönotto 5 % Ylläpito ja 40 % jatkokehittäminen
HELIA 5 (23) Hyödyt hyödyt. perusinvestointi juoksevat kustannukset ylläpitoinvestoinnit aika Rakentaminen Käyttö ja ylläpito Kustannukset Kustannusten jakautuminen elinkaaren eri vaiheisiin
HELIA 6 (23) Tavoitteiden asettaminen - Esitutkimus Tärkeintä tietojärjestelmäprojektissa on selvittää, mitä tavoitellaan. Ä Keitä tietosysteemi palvelee? Ä Mitkä ovat tietosysteemin tavoitteet? (kvalitatiiviset & kvantitatiiviset) Ä Mitä mahdollisia haittavaikutuksia? Ä Mikä on kokonaishyöty (hyödyt / kustannukset)? Ydinkysymys: Miksi? Tavoitteet ovat aluksi usein abstrakteja ja selkiintymättömiä. Å Projektivaiheiden / suunnittelutehtävien on tuettava tavoitteiden asteittaista tarkentumista. liikkumavara Projektin edistyminen 1. Tilannekartoitus 2. Tavoitteenasettelu
HELIA 7 (23) Sisällön määrittely Mitä tietoja tarvitaan lopputulosten tuottamiseksi? Mitä tietoja kohdealueella käsitellään? Miten tulostiedot voidaan tuottaa määritetyistä lähtötiedoista? Ydinkysymys: Mitä? 1. Toimintojen määrittely 2. Tietosisällön määrittely
HELIA 8 (23) Rakenteen ja toiminnan suunnittelu Ydinkysymys: Miten? Miten tietosysteemi toimii? Millaisista toiminnallisista osista tietosysteemi koostuu? Pyri modulaarisuuteen! Rajanveto rakenteen ja toiminnan suunnittelun ja toteutuksen välillä on häilyvä Esim. raporttien tulosteet ja käynnistystavat voidaan määritellä melko tarkkaan etukäteen käyttöliittymiä ei kannata suunnitella liian tiukasti, testausvaiheessa järjestelmä saattaa tuottaa ikävän yllätyksen Å hyvä käyttöliittymäratkaisu ratkeaa usein vasta konkreettisessa koekäyttötilanteessa. Toteutus
HELIA 9 (23) Testaus jokaisen projektivaiheen jälkeen saavutettua (ja dokumentoitua) tilaa verrataan alkuperäisiin tavoitteisiin keskeisintä kun tietosysteemi on saavuttanut konkreettisen muodon ja järjestelmän käyttöön (palveluihin ja käyttöliittymään) liittyvät yksityiskohtaiset ratkaisut kiinnitetään tee testaus systemaattisesti, laadi suunnitelma 1. Modulitestaus 2. Systeemitestaus 3. Käyttöönottotestaus Ä Testaus kattaa koko toteutetun atk-järjestelmän (ohjelmat, käyttöohjeet, tiedostoratkaisut), mahdollisesti myös manuaalisesti hoidettavien tehtävien ohjeistuksen, lomakkeet yms.
HELIA 10 (23) Käyttöönotto a) uuden ja vanhan järjestelmän rinnakkainajo? b) vaiheittainen käyttöönotto? c) kerrasta poikki? tee hallitusti, tee suunnitelma 1. Tekniset valmiudet 2. Toiminnalliset valmiudet 3. Perustiedot & tietovarastot
HELIA 11 (23) Ylläpito 1. Ylläpito käyttäjien ja käyttöoikeuksien hallinta laiteresurssien hallinta ohjelmistoversioiden hallinta ylläpitorutiinien automatisointi resurssienkäytön seuranta virhetilanteista toipuminen ja niiden ennaltaehkäisy uusien työntekijöiden kouluttaminen käyttöohjeiden ym. dokumenttien pito ajantasalla 2. Muutostarpeiden dokumentointi käyttäjien ja hyväksikäyttäjien palautteen systemaattinen käsittely järjestelmän käytönaikainen systemaattinen seuranta (resurssien käyttö, virhetilanteet) Määritys 10 % Suunnittelu 20 % Toteutus 25 % Käyttöönotto 5 % Ylläpito ja 40 % jatkokehittäminen
HELIA 12 (23) Suunnittelun lähestymistavat (suunnitteluparadigmat) Toimintokeskeinen lähestymistapa kulta-aika 70-luvulla, edelleen laajalti käytössä Uudestisyntyi 90-luvulla: prosessikeskeisenä lähestymistapana suunnitellaan aluksi toiminta, edetään toiminnan suunnittelusta toimintojen ja tehtävien suunnitteluun paikannetaan toimintoihin ja tehtäviin liittyvät tiedot perusajatuksena on, että tieto ikään kuin 'virtaa' tietosysteemin / toiminnon / tehtävän lävitse tyypillinen tapa lähestyä tietotarpeita on informaatioanalyysi, l. kartoitetaan toiminnoittain / tehtävittäin halutut tulostiedot sekä näiden aikaansaamiseksi tarvittavat syöttötiedot vanhemmat systeemisuunnittelun menetelmät (ISAC, SADT) ovat toimintokeskeisiä
HELIA 13 (23) Tietokeskeinen lähestymistapa 80-luku, nykyään laajalti käytössä tieto ei 'virtaa' vaan muodostaa tietosysteemin pysyvän ytimen, kohdealueen kuvauksen, jonka päälle sovelluksia voidaan rakentaa tietotarpeet määritellään käsiteanalyysin avulla, (kohdealueen oliot, niiden ominaisuudet ja niiden väliset suhteet) määrittelyn tulos esitetään käsitekaaviona. Toimintojen suunnittelu voi edetä samanaikaisesti, mutta ohjelman suunnittelu rakentuu tietokannan päälle
HELIA 14 (23) Ongelmia: Käsitekaavio ei sellaisenaan kuvaa tietojärjestelmän toimintaa. Toimintokeskeinen suunnittelu (esim. toimintomatriisi) taas ei kykene kuvaamaan järjestelmän tietojen välisiä riippuvuussuhteita. Tietokannan eheyden turvaaminen on tällöin huomattavasti ongelmallisempaa. Tietokantojen suunnittelussa Tietokeskeinen suunnittelu ja käsiteanalyysi eli tietojen muodostaman kokonaisuuden kuvaus Turvaa parhaiten tietokannan eheyden, johdonmukaisuuden ja luotettavuuden Ohjelmiston suunnittelussa Toimintokeskeinen suunnittelu Jos toimintojen, työtapojen, käyttöliittymien ja näyttöjen suunnittelu on laiminlyöty, kostautuu se toteutusvaiheessa ainakin työn hitautena Myös prototyyppisuunnittelu soveltuu ohjelmistojen suunnitteluun Käyttöliittymän suunnittelussa Kannatta hyödyntää molempia: Käsiteanalyysi antaa lähtökohdan näyttöjen tietosisällöstä ja tietojen välisistä suhteista Toimintoanalyysi antaa lähtökohdan toimintojen ryhmittelylle, näyttöjen tietosisällölle ja toiminnoille
HELIA 15 (23) Objektipohjainen lähestymistapa 90-luku, tällä hetkellä erittäin voimakkaassa kasvussa. Pyrkii tavallaan yhdistämään em. paradigmat ja ylittämään niille tyypilliset ongelmat Objektisuunnittelun perustehtävä on objektimallintaminen, joka muistuttaa suuresti käsiteanalyysiä Objektianalyysin jälkeen dynaaminen mallintaminen (tilasiirtymät) ja funktionaalinen mallintaminen (toiminnallisuus) Ä Onko oliomaailman sisälläkin tieto- ja toimintopohjainen koulukunta? Rumbaugh (OMT): Olio käsite Jacobson (OOSE): Käyttötapaus tehtävä Å Unified method, jossa OMT ja OOSE yhdistetään
HELIA 16 (23) Dialektinen kehitysennuste? SYNTEESI ANTITEESI TEESI MONTA VEHNÄJYVÄÄ VEHNÄKASVI VENHÄNJYVÄ OLIO- / PROSESSIKESKEINEN? (1990) TIETOKESKEINEN (1980) TOIMINTOKESKEINEN (1970)
HELIA 17 (23) Suunnittelun lähestymistavat ja ohjelmistotyökalut Monet välineet ovat joko tieto- tai toimintoorientoituneita ja soveltuvat erilailla erityyppiseen suunnitteluun: Perinteiset 3 GL välineet on kehitetty tyypillisesti toimintopohjaiseen suunnitteluun ja toteutukseen 4 GL välineet on kehitetty tyypillisesti tietopohjaiseen suunnitteluun ja toteutukseen Oliokielet on kehitetty oliopohjaiseen suunnitteluun ja toteutukseen Suunnittelun prosessimallit 1. Erillinen määrittely- ja toteutusvaihe (vesiputousmalli) 2. Prototyyppiavusteinen suunnittelu 3. RAD
HELIA 18 (23) Erillinen määrittely- ja toteutusvaihe: Vesiputousmalli perinteinen tapa, 1970-luvulta lähtien tietojärjestelmä voidaan määritellä "loppuun asti" eli hyvin suunniteltu on 95% tehty vaiheet toteutetaan peräkkäisinä työvaiheina, joissa edellisen työvaiheen tulokset dokumentoidaan ja ne toimivat seuraavan vaiheen lähtötietoina Käyttöliittymän näkökulma Käyttöliittymän suunnittelu suunnitteluvaiheen loppupuolella, toteutus toteutusvaiheessa Käyttöliittymän suunnittelu ja toteutus ilman käyttäjäpalautetta Etuja Selkeä ohjeistus Tuttu, perinteinen ja laajalle levinnyt Useimmat CASE-tuotteet tukevat Ongelmia Käyttäjien on vaikea hahmottaa tulevaa tietosysteemiä pelkkien määrittelyasiakirjojen ja keskustelujen perusteella! Yksityiskohtatasolle viety "paperisuunnittelu" on raskasta. etenkin käyttöliittymän suunnittelu on "epäluonnollista" Konkreettinen palaute tehdyistä ratkaisuista vasta kuukausien päästä!
HELIA 19 (23) Prototyyppisuunnittelu: Kehittyvä prosessimalli 1980-luvulla mikrotietokoneiden esiinmarssin myötä samanaikaisesti määrittelyjen edetessä rakennetaan tietojärjestelmää välitön palaute: tarkistukset ja korjaukset voidaan toteuttaa ja testata välittömästi. Sovellus kehitetään iteratiivisina kehityskierroksina Määrittelyn lähtötietoina 1 kierroksella käyttäjien haastattelu, seuraavilla kierroksilla arvioinnit Sovellus on valmis kun arviointivaiheessa ei enää löydy oleellisia parannusesityksiä 1. Määrittely 2. Suunnittelu 3. Prototyypin toteutus 4. Testaus Käyttöliittymän näkökulma Käyttöliittymää kehitetään iteratiivisesti käyttäjäpalautteen perusteella
HELIA 20 (23) Etuja Kussakin iteraatiossa mukana sekä suunnittelua että toteutusta Kukin iteraatiokierros tuottaa lopputuloksen (proton) Yksittäisten suunnitteluideoiden kustannusarviointi helppoa Ongelmia Menetelmää ei ole tarkoin määritelty Suunnittelutyön dokumentointi ei ole tuettu Alkuvaiheessa tehdyt ratkaisut saattavat roikkua mukana painolastina Projekti ei koskaan valmistu, eli raja suunnitteluprosessin ja tuotantokäytön välillä hämärtyy Suorituskyky usein huonompi kuin perinteisesti toteutettujen systeemien
HELIA 21 (23) Kompromissi? Prototyyppisuunnittelun vahva alue on käyttöliittymän suunnittelu ts. miten tietojärjestelmä näyttäytyy käyttäjälle Tietojen välisten suhteiden ja niiden muodostaman kokonaisuuden hahmotus ei saa jäädä pelkäksi protoiluksi! Å Prototyyppiä käytetään suunnitelmien "testaustyökaluna". Å Suunnitteluprosessi viedään kuitenkin päätökseen, l. määritellään ja kiinnitetään tietojärjestelmän ominaisuudet (tietosisältö, toiminnallisuus, käyttöliittymä) Ohjelma (ja tietokantakuvaukset) kirjoitetaan tarvittaessa uudestaan
HELIA 22 (23) Lisätekniikoita Osittaminen Ä Sekä vesiputousmallia että prototyyppimallia voidaan tukea osittamalla: Kokonaisuus jaetaan pienempiin helpommin hahmotettaviin osakokonaisuuksiin Tavoitteena mahdollisimman itsenäiset osakokonaisuudet Ä Jakaminen voidaan tarvittaessa toistaa... Ä Yleissuunnitelma osien välisestä kommunikaatiosta Ä Kunkin osan suunnittelu ja toteutus melko itsenäisesti Å Modulaarisuus ( -> olioajattelu) Ä Osat voivat valmistua myös eri aikaan Etuja yksinkertaisempia osakokonaisuuksia suunniteltavaksi ja toteutettavaksi osia voidaan priorisoida tarpeen mukaan Haittoja Osiin jako kriittinen! Uusi suunnitteluongelma: osien yhteensovittaminen Mahd. epäyhtenäinen toimintatapa
HELIA 23 (23) RAD (Rapid Application Development) Tavoitteena toteuttaa sovellus mahdollisimman nopeasti Ei tarkasti määritelty menetelmä vaan joukko löyhästi yhteensidottuja sovelluskehitysperiaatteita 1. Kehittämistarpeiden kartoitus 1 2 vko 2. Sovelluksen rajaus ja määrittely 1 3 vko 3. Käyttöliittymän suunnittelu 3 5 vko 4. Toteutus & testaus 4 17 vko 5. Käyttöönotto 1 3 vko Alustava tietojärjestelmän määritys Suunnitteluistunnot, jossa määritystä (tyypillisesti tietovirtakaaviota) käydään läpi CASE työkalujen ja sovelluskehittimien hyödyntäminen Suunnittelupäätösten dokumentointi (ja allekirjoitukset!) Iteratiivinen suunnitteluprosessi Usein olio-lähestymistapa