HELIA 1 (19) Luento 9 Suunnittelumenetelmien soveltuvuudesta... 2 Sovellustyyppi... 2 Projektikohtaiset tekijät... 3 Henkilöstötekijät... 3 Ongelma-alueeseen liittyvät tekijät... 3 Tuotteeseen liittyvät tekijät... 4 Resursseihin liittyvät tekijät... 4 Organisaatiotekijät... 4 Suunnittelumenetelmien paremmuudesta... 5 Millainen on parempi lopputuote?... 6 Millainen on parempi kehitysprosessi?... 8 Suunnittelumenetelmän valinnasta... 9 Taas kriteerejä... 10 Vaatimukset muuttuvat... 11 Ohjelman suunnittelusta... 12 Kuvauksista ohjelmaksi?... 13 Rakenteellinen ohjelmointi... 14 Rakenteet... 14 Kontrollirakenteet... 15 Tietorakenteet... 16 Modulaarisuus... 18 Ohjelmakoodi dokumenttina... 19
HELIA 2 (19) Suunnittelumenetelmien soveltuvuudesta Sovellustyyppi 1. Liiketoimintatietojärjestelmä Tiedon tallennus ja haku keskeistä Isot tietokannat Paljon yhtäaikaisia käyttäjiä Transaktion hallinta tärkeää Heym, Österle 2. Toimistautomaatio työasemaohjelmat toimistotyöympäristö tekstinkäsittely, taulukkolaskenta, kullakin ohjelmalla yksi käyttäjä 3. Teollisuusautomaatio Toisen laitteen valvonta ja hallinta Mekaaninen / kemiallinen tuotanto 4. Tietokoneavusteiset suunnittelu- ym. työkalut Toisen teknisen tuotteen suunnittelun apuväline CAD, CAM, CASE Kaikki CA (Computer Aided) tekniikka (?) 5. Tiedonvälitysohjelmisto Tiedonvälitys tietojäresjtelmien välillä Tiedoston siirto, sähköposti, sähköinen kauppa, 6. Tekoälyohjelmisto 7. Työryhmäohjelmistot Piirteitä tiedonvälitys- ja liiketoimintaohjelmistoista Asiakirjanhallintajärejstelmät, work-flow,
HELIA 3 (19) Projektikohtaiset tekijät Henkilöstötekijät Alexander - Davis Tekijä 1 2 3 Käyttäjien Aloittelija Kokenut Asiantuntija kokemus sovellusalueesta Käyttäjien kyky Huono Normaali Hyvä ilmaista vaatimuksia Kehittäjien Aloittelija Kokenut Asiantuntija kokemus sovellusalueesta Kehittäjien yleinen ammattitaito Aloittelija Kokenut Asiantuntija Ongelma-alueeseen liittyvät tekijät Tekijä 1 2 3 Sovellusalueen Uusi Normaali Vakiintunut kypsyys Ongelman kompleksisuus Yksinkertainen Vaikea Monimutkainen Mahdollisuus Välttämätön Toivottava Mahdoton toimittaa osittain toimiva tuote Muutostiheys Usein Jonkin Harvoin verran Muutosten koko Hyvin suuria Tavanomaisia Pieniä
HELIA 4 (19) Tuotteeseen liittyvät tekijät Resursseihin liittyvät tekijät Organisaatiotekijät Tekijä 1 2 3 Tuotteen koko Suuri Keskikokoinen Pieni Tuotteen kompleksisuus Monimutkainen Vaikea Yksinkertainen Tuotteen Joustavat Kohtuulliset Vaativat laatuvaatimukset Käyttöliittymävaatimukset Vähäiset Merkittävät Kriittiset Tekijä 1 2 3 Rahoitusprofiili Loppupainoinepainoinen Alku- Tasainen Rahoituksen Niukka Riittävä Runsas saatavuus Henkilöstön Loppupainoinepainoinen Alku- Tasainen saatavuusprofiili Henkilöstön Niukka Riittävä Runsas saatavuus Yhteydet loppukäyttäjiin Puuttuvat Rajoitetut Hyvät Tekijä 1 2 3 Projektinhallintakäytännöt Tiukka Joustava Väljä Laadunvalvonnan taso Heikko Keskinkertainen Edistyksellinen
HELIA 5 (19) Suunnittelumenetelmien paremmuudesta Menetelmän käytön tavoitteet: 1. laadukas rakennusprosessi 2. laadukas järjestelmä / tuote 3. tyytyväinen asiakas
HELIA 6 (19) Millainen on parempi lopputuote? Hyväksyttävyys Käyttäjän näkökulma Luotettavuus Toiminnallisuus Tavoitettavuus Oikea-aikaisuus Oppimisen helppous Yhtenäisyys Yksinkertaisuus Läpinäkyvyys Käyttökelpoisuus / Käytettävyys Testattavuus Omistajan näkökulma Kannattavuus Joustavuus muutoksille Ylläpidettävyys Taloudellisuus Tehokkuus Skaalautuvuus Kehittämisen nopeus acceptability reliability functionality availability timeliness ease of learning cohesiveness simplicity visibility usability testability feasibility flexibility maintainability economy efficiency scalability Ylläpitäjän / tietohallinnon näkökulma Yhteensopivuus compatibility Vikasietoisuus robustness Turvallisuus security Siirrettävyys portability Modulaarisuus low coupling Hyvä dokumentointi
HELIA 7 (19) Amerikkalainen kehittämiskulttuuri Yrityksen johto päättää, mitä tietojärjestelmiä ja kuinka yrityksen asioiden hoitamiseen käytetään Tavoitteena mahdollisimman korkea tuottavuuden nousu Käyttäjien tehtävä on käyttää yrityksen johdon heille tarjoamia työvälineitä (tietojärjestelmiä) Käyttäjien mielipiteitä ei juuri kuulla järjestelmän suunnittelun ja toteuttamisen aikana Pohjoismainen kehittämiskulttuuri Yrityksen työntekijät ovat mukana kehittämässä yrityksen toimintaa Työntekijöiltä odotetaan oman työnsä kehittämistä Yrityksen työntekijöitä kuullaan sovelluksia suunniteltaessa Projekti voidaan jopa antaa heidän johdettavakseen
HELIA 8 (19) Millainen on parempi kehitysprosessi? Ä Johdettavampi, hallittavampi, valvottavampi Ä Tuottavampi Ä Ennustettavampi Ä Riskien parempi hallinta Ä Nopeampi Ä Ammattitaitovaatimuksia vähemmän Ä Halvempi Ä Laadukkaampi tuote Å Koneelle tehtäväksi! Å CASE-välineet
HELIA 9 (19) Suunnittelumenetelmän valinnasta Menetelmän pitäisi tarjota suunnittelijalle paras tapa kehittää järjestelmä MENETELMA ONGELMA YMPARISTO SUUNNITTELU & TOTEUTUS TULOS TIEDOT & TAIDOT TAVAT & ASENTEET Ä Pysyykö tulos samana jos tekijät vaihtuu? Ä Pysyykö tulos samana jos tekijä tekee sen uudelleen?
HELIA 10 (19) Taas kriteerejä 1. Kattavuus suhteessa ohjelman elinkaareen 2. Ovatko vaiheet hyvin määriteltyjä 3. Miten vaiheiden tulokset esitetään 4. Millaisiin sovelluksiin menetelmä soveltuu 5. Tukeeko tietokannan suunnittelua 6. Tukeeko toiminnallisuuden suunnittelua 7. Tukeeko käyttöliittymän suunnittelua 8. Tukeeko käyttäjien osallistumista & sitoutumista 9. Tukeeko laadunvarmistusta 10. Tukeeko aikataulutusta ja kustannusarviointia 11. Tietokoneavusteisuus Tasoajattelun tuki? 1. Käsitetaso käyttäjien kieli 2. Looginen taso kohteiden ominaisuudet, suhteet ja käsittely 3. Fyysinen taso kohteiden ominaisuudet, suhteet ja käsittely atk-toteutuksena
HELIA 11 (19) Vaatimukset muuttuvat Ennen Opeteltiin perusteellisesti yksi suunnittelumenetelmä Vaiheistettiin suunnittelu ja toteutus kiinteällä tavalla Liitettiin menetelmään tietyt dokumentointikäytännöt Kaikkia suunnitteluongelmia lähestyttiin samalla menetelmällä Ts suunnitteluongelma, tilaajat, käyttäjät, suunnittelijat ja toteuttajat sopeutuivat valittuun menetelmään Nyt Käytössä useita menetelmiä, joita voidaan käyttää jopa rinnan eri tavoin yhdistellen Suunnittelun ja toteutuksen vaiheistus ei ole yhtä selkeä Kiinteää dokumentointitapaa ei välttämättä ole Suunnitteluongelman luonne määrää käytettävän menetelmän ja sen soveltamistavan Ts. suunnittelutyö määrää menetelmän. Suunnittelijoiden ja toteuttajien tulisi osata soveltaa useampia suunnittelu- ja toteutusmenetelmiä Tilaaja ja käyttäjä osallisena paitsi suunnittelu myös toteutustyössä
HELIA 12 (19) Ohjelman suunnittelusta Varmista että olet ymmärtänyt ohjelman tehtävän ennen ohjelmoinnin suunnittelua. Täsmennä puutteet tai epäselvyydet. Selvitä kaikkien käytettävien tietojen rakenteet ja saantitavat. Selvitä kaikki käsittelysäännöt. Tarkenna tarvittaessa käyttöliittymäkuvauksia Varmista vaatimukset loppukäyttäjien kanssa Käyttöliittymä Sovelluslogiikka Tietoliikenne Käyttöliittymä Tiedonhallinta Tiedonhallinta
HELIA 13 (19) Kuvauksista ohjelmaksi? Määrittely- (ja suunnittelu-) vaiheessa tuotettujen kuvausten perusteella suunnittelijoiden (ja toteuttajien) pitäisi pystyä suunnittelemaan (ja toteuttamaaan ) ohjelma Kuvausta lukevat Tilaajat Käyttäjät Määrittelijät Suunnittelijat Toteuttajat Ä Mistä yhteinen (kuvaus)kieli Tilaajan pitää ymmärtää kuvaus, jotta hän voisi sen hyväksyä Suunnittelijan pitää ymmärtää kuvaus, jotta hän voi tehdä sen perusteella työmääräarvion Käytännön ratkaisut: a) Seinätaulutekniikka b) Proto Ä Miten paljon prototyyppiin saa tulla muutoksia sen hyväksymisen jälkeen?
HELIA 14 (19) Rakenteellinen ohjelmointi Ohjelmoinnissa on viimeisen kolmenkymmenen vuoden aikana nähtävissä 4 murrosta. 1. Siirtyminen assemblereistä lausekieliin. 2. Rakenteellisen ohjelmoinnin läpimurto. 3. Sovelluskehittimien ja CASE-tuotteiden hyödyntäminen 4. Olio-ohjelmoinnin ja suunnittelun käyttöönotto. Rakenteet ohjelmat helppolukuisempia ohjelmat helpompia ylläpitää 1. Kontrollirakenteet 2. Tietorakenteet
HELIA 15 (19) Kontrollirakenteet 1. Peräkkäisrakenteet 2. Valintarakenteet (if-lauseet, case-lauseet, ) 3. Toistorakenteista. (do until, do while ) Å Sodanjulistus goto-käskyille. Å Sodanjulistus pitkille ohjelmapötkylöille Täydellinen tuki rakenteelliselle ohjelmoinnille tuli yleisesti käytettyihin ohjelmointikieliin 80-luvulla.
HELIA 16 (19) Tietorakenteet Skalaarit tietotyypit kokonaisluku, liukuluku, binääriluku, totuusarvo, merkkijono Skalaarien tietotyyppien operaatiot on tavallisesti tarkoin määritelty ohjelmointikielen määrittelyssä Rakenteiset tietotyypit Rakenteeltaan määritelty kokonaisuus skalaareja tietotyyppejä Muodostetaan pääsääntöisesti skalaarien tietotyyppien avulla Lisäksi voidaan käyttää osoittimia tai viittauksia Rakenteisten tietotyyppine käsittely vaihtelee jossain määrin ohjelmointiympäristöstä toiseen Tyypillisiä rakenteita taulukot ja tietueet Vektorirakenteiden lisäksi osoittimien avulla toteutettavat dynaamiset rakenteet Listat Pinot Puut Abstraktit tietotyypit käyttäjän määrittelemät Oliot Olion toteutus aina yksilöllinen, ei siis ohjelmointiympäristön määräämä Olion määrittelyn yhteydessä määritellään sekä tietorakenne että sallitut operaatiot Å Muuttujien esittely
HELIA 17 (19) Modulaarisuus Ongelman (ja ohjelman) jäsentäminen itsenäisiin alitehtäviin (aliohjelmiin) Aliohjelmat eli ohjelmamodulit ovat mahdollisimman riippumattomia muusta koodista, ts. jäsentäminen tehdään siten, että modulien välillä on mahdollisimman vähän tiedonvaihtoa Hyvin määritellyt rajapinnat: Tiedonvälitys mieluiten palautusarvon ja parametrien kautta. Ao. rajapinta ainoa liitos ulkomaailmaan, Globaaleja muuttujia mahdollisimman vähän Ylläpidettävyys paranee: Muutokset ohjelmien eri osissa vaikuttavat mahdollisimman vähän muualla. Toisaalta muutos yhdessä paikassa riittää Uudelleenkäytettävyys paranee Moduleita voi kopioida ohjelmasta toiseen. Työn jaon mahdollisuudet paranevat Voi olla vaikea toteuttaa (joskus myös vaikea ymmärtää ) Modulilla voidaan viitata a) Ohjelman sisäiseen aliohjelmaan / funktioon b) Ohjelman ulkopuolella sijaitsevaan ohjelmakirjastoon joka linkitetään sovellusohjelmaan Modulille määritellään Nimi Parametrit Palautusarvot, jos kyseessä on funktio
HELIA 18 (19) Ohjelmakoodi dokumenttina Vakioille on annettava nimet - ei lukuliteraaleja koodiin. Vakioille, muuttujille, aliohjelmille ja funktioille tulee antaa kuvaavat nimet, ei kryptisiä lyhenteitä. Litterääriohjelmointi: koodi ja selitykset samassa tiedostossa Viittaukset suunnitteludokumentteihin (?)