Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

Samankaltaiset tiedostot
Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

Kurssin aihepiiri: ohjelmistotuotannon alkeita

Ohjelmistojen mallinnus, s2008 HY/TKTL, 28/10/2008. Harri Laine 1. Ohjelmisto

Ohjelmistojen mallinnus (OMa) - Johdatus ohjelmistotuotantoon Harri Laine 1

Ohjelmistojen mallintaminen. Matti Luukkainen

Ohjelmistojen suunnittelu

Tietojärjestelmän osat

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Projektityö

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Ohjelmistojen mallintaminen, mallintaminen ja UML

Oleelliset vaikeudet OT:ssa 1/2

Ohjelmointitekniikka lyhyesti Survival Kit 1 Evtek KA ELINKAARIMALLEISTA

2. Ohjelmistotuotantoprosessi

Ohjelmistotekniikka - Luento 2

Prosessimalli. 2. Ohjelmistotuotantoprosessi. Prosessimallin vaihejako. Prosessimallien perustehtävät. Ohjelmiston suunnittelu. Vaatimusmäärittely

Ohjelmistotekniikan menetelmät, käyttötapauksiin perustuva vaatimusmäärittely

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Ohjelmistotekniikan menetelmät, kesä 2008

TOIMINNALLINEN MÄÄRITTELY MS

Agenda. Johdanto Ominaispiirteitä Kokonaisjärjestelmän määrittely Eri alojen edustajien roolit Sulautetut järjestelmät ja sulautettu ohjelmointi

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

13/20: Kierrätys kannattaa koodaamisessakin

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

Avoimen ja yhteisen rajapinnan hallintasuunnitelma v.1.4

Projektisuunnitelma. KotKot. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ohjelmistojen mallintaminen, kurssikoe esimerkkivastauksia

Ohjelmistotekniikan menetelmät, kevät 2008

Suunnitteluvaihe prosessissa

Avoimen ja yhteisen rajapinnan hallintamalli

Ohjelmistojen mallintaminen, kesä 2009

Ohjelmistojen mallintaminen. Luento 2, pe 5.11.

Ohjelmistotuotanto, prosessit Syksy Ohjelmistotuotantoprosessi. Prosessimalli. Prosessimallien perustehtävät. Prosessimallin vaihejako

Ohjelmistojen mallintaminen, kesä 2010

Ohjelmistojen mallintaminen

1. Johdanto. Ohjelmistotuotannon ongelmia

Ohjelmistojen mallintaminen, mallinnustekniikat käytännössä

Ohjelmiston testaus ja laatu. Testaustasot

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Uudelleenkäytön jako kahteen

Ohjelmistojen mallintaminen. Luento 11, 7.12.

TIETOTEKNIIKAN KOULUTUSOHJELMA

Työn ositusmalleista. Luennon tavoitteista. Motivointia. Walker Royce, Software Project Management, A Unified Framework

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

Convergence of messaging

Ohjelmistojen mallintaminen

Ohjelmiston toteutussuunnitelma

Ohjelmistoprosessit ja ohjelmistojen laatu Ohjelmistoprosessit ja ohjelmistojen laatu (4op)

Kooste kotitehtävien vastauksista. Kotitehtävä 6 - Ylläpito- ja kehittämismalli

EUREFin vaikutukset organisaatioiden tietojärjestelmiin

$$$ Raha ratkaisee. $$$ Raha ratkaisee. Ohjelmistotuote. Ohjelmistotekniikan määritelmä

Onnistunut SAP-projekti laadunvarmistuksen keinoin

Onnistunut ohjelmistoprojekti

Mylab Projektitoiminnan kehittäminen. PM Club Tampere

UCOT-Sovellusprojekti. Testausraportti

OHJELMISTOKEHITYS -suuntautumisvaihtoehto

ITK130 Ohjelmistojen luonne

Yhteenvetoa, pieniä laajennuksia, tulevaisuuden haasteita

Ohjelmistojen mallintaminen Tietovuokaaviot Harri Laine 1

Helia Ohjelmointitaito Tuomas Kaipainen Mermit Business Applications Oy Mermit Business Applications

Johdantoluento. Ohjelmien ylläpito

Software engineering

käyttötapaukset mod. testaus

OHJ-1010 Tietotekniikan perusteet 4 op Syksy Luento 9: Ohjelmistotuotanto, peruskäsitteitä

Specifying user requirements for corporate intranet with user centered design methods. Espoo Tekijä: Henri Ström Valvoja: TkT Kalevi Kilkki

Työkalut ohjelmistokehityksen tukena

Ylläpitodokumentti. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Kontrollipolkujen määrä

Testaus käsite. Sekalaista testausasiaa. Testauksen käsitteestä. Kattavuusmitat. Jos ajatellaan, että testaus = V&V, voidaan erottaa:

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Integrointi. Ohjelmistotekniikka kevät 2003

PROJEKTINHALLINTA. Käyttäjälähtöinen suunnittelu

ITK130 Ohjelmistoprosessi

Projektityö

Onnistunut ohjelmistoprojekti

Käyttöohje. Versiohistoria: versio Mari Kommenttien perusteella korjattu versio

HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu

TIE Ohjelmistojen testaus 2015 Harjoitustyö Vaihe 3. Antti Jääskeläinen Matti Vuori

WCLIQUE. Ohjelmistoprojekti. Testaussuunnitelma

Johdatus sovellussuunnitteluun. Johdatus sovellussuunnitteluun

Testaussuunnitelma. Koskelo. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Laaja-alainen, opiskelijalähtöinen ja projektiperusteinen opetussuunnitelma, case Monitori

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Ylläpitodokumentti Mooan

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

OHJ-3010 Ohjelmistotuotannon perusteet, kesä 2012

Ketterä vaatimustenhallinta

SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant Versio: V0.3

Ohjelmistoarkkitehtuurit, syksy

Projektin suunnittelu

KOODAAKO PROJEKTIPÄÄLLIKKÖ?

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu

Määrittelyvaihe. Projektinhallinta

Testauksen hallintaa teekkareille (ja muille kiinnostuneille) Arto Stenberg

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

Tutkittua tietoa. Tutkittua tietoa 1

Agenda. Läpäisyvaatimukset Henkilökunta Luennot ja aikataulu Kurssimateriaali Harjoitustyöt Demoharjoitus Tentti ja arvostelu Muuta?

S11-09 Control System for an. Autonomous Household Robot Platform

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

Transkriptio:

582104 Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon 1

Lyhyt johdatus ohjelmistotuotantoon Ohjelmistotuotanto, ohjelmistoprojektit Miten ohjelmistojen tuottaminen eroaa teollisesta tuotannosta Ohjelmistojen elinkaari, elinkaarimallit 2

Ohjelmistotuotannon ongelma Ohjelmistotuotanto on se tietojenkäsittelytieteen osa-alue, joka käsittelee laajuudeltaan ja monimutkaisuudeltaan sellaisten ohjelmistojen tuottamista, jossa kehitystyöhön tarvitaan ryhmä [Ghezzi et al.] Vuonna 1994, vain 16% ohjelmistoprojekteista valmistui ajallaan ja budjetissa [The Standish Group s Chaos Report, 1994] Vuonna 2003 vastaavasti jo 34% [The Standish Group, 2003] 3

Ohjelmistotuotannon alan käsitteitä Ohjelmistoprojekti Ohjelmistotuotteen tai -palvelun tuottamishanke Ohjelmiston elinkaari Vaiheet alkuvaiheen ideoinnista ( syntymästä ) aina lopulliseen töpselin nykäisemiseen seinästä Ohjelmistojen kehitystyölle ominaista iterointi: elinkaaren vaiheita toistetaan vaatimusten ja ympäristön muuttuessa inkrementaalisuus: tuotetta rakennetaan pienissä osasissa 4

Erilaisia ohjelmistojen sovelluskohteita Ohjelmistot ohjaavat mitä moninaisimpien asioiden toimintaa Erilaisia ohjelmistoja, esimerkiksi Liiketoimintajärjestelmät (enterprise applications) Sulautetut järjestelmät (embedded software) Tosiaikajärjestelmät (real-time software) Varusohjelmistot (systems software) Ohjelmistotuotantoa katsotaan monesti (ehkäpä liiaksikin!) liiketoimintajärjestelmien kehittämisen näkökulmasta Esimerkiksi avoimen lähdekoodin järjestelmät - mitä kategoriaa? 5

Tietojärjestelmä, ohjelmisto, ohjelma Tietojärjestelmä on hallinnollinen kokonaisuus Laitteet, palvelut, tietosisällöt, ohjelmistot Ohjelmisto taas koostuu yhdestä tai useammasta ohjelmasta, jotka toimivat jollakin laitteisto- ja ohjelmistoalustalla Ohjelmistot ja tietojärjestelmät ovat monimutkaisia kokonaisuuksia.. jotka kutoutuvat toimintaympäristönsä yhteyteen 6

Tietojärjestelmä tarjoaa palveluita koko toimintaympäristöönsä 7

Liiketoimintasovelluksille ominaisia piirteitä Ohjelmisto on osa tietojärjestelmää Ohjelmistoprosessi on osa liiketoimintaprosessia Ohjelmistojen tuottaminen on muutakin kuin ohjelmointia Menestyksekäs liiketoimintasovellusten tuottaminen on monesti ensisijaisesti liiketoiminnan prosessien automatisoimista Joten.. ohjelmistotuotanto on oikeastaan liiketoiminnan mallintamista 8

Ohjelmistotuotanto eroaa teollisesta tuotannosta Ohjelmat eivät ole konkreettisia muokkaaminen onnistuu loputtomiin Ohjelmat ovat keskenään hyvin erilaisia sovellusalueet, toimintaympäristöt, laite- ja ohjelmistoympäristöt 9

Ohjelmistotuotanto eroaa teollisesta tuotannosta Ohjelmistoja ei juurikaan suunnitella sarjatyönä Standardointityö monilla sovellusalueilla vasta lapsenkengissään Ohjelmistojen toiminta sovitetaan kuhunkin ympäristöön sopivaksi Ohjelmistot vaativat ylläpitoa Toisaalta, tiettyä ohjelmistoa voidaan monistaa nollakustannuksin Ohjelmistotuoteliiketoiminta perustuu tähän Entäpä massaräätälöitävät ohjelmistot? 10

Ohjelmistotuotanto on muutakin kuin ohjelmointia Ohjelmistotuotannossa ratkotaan ihmisten ja organisaatioiden monimutkaisia ongelmia Tyypilliset ohjelmointikielen (esim. Javan) käsitteet ovat monesti aivan liian matalalla abstraktion tasolla Monimutkaiset järjestelmät on suunniteltava ennen toteutusta (ohjelmointia) Ennen suunnittelua on ymmärrettävä ongelman asettamat vaatimukset Vaatimukset taas on suhteutettava ympäristöönsä ja käytettävissä oleviin toteutusvoimiin. 11

Ohjelmistotuotanto on erityisesti mallintamista Malli abstrahoi, jäsentää ja kuvaa todellisuutta Mikä on todellisuus? Liiketoimintaympäristö? Tietokoneen käskykanta? Java-kielen myöhäisen sidonnan säännöstö? Projektin budjetti ja henkilöstö? 12

Mallinnusvälineitä [Eriksson & Penker 1998] 13

Ohjelmakoodin sovittaminen malliin Ohjelmistoa mallinnettaessa teemme sillan ohjelmakoodin ja ulkoisen ympäristön välille Lähestymistapoja mallintamiseen Proseduraalinen mallintaminen: järjestelmä jaetaan moduuleihin toiminnallisella osituksella Oliomallintaminen: ositus perustuu luokkien muodostamiin komponentteihin ja niiden suhteisiin Ohjelmointikielten luokittelussa käytetään samankaltaisia termejä - olioparadigma, proseduraalinen ohjelmointi, funktionaalinen ohjelmointi... 14

Ohjelmiston elinkaari Määrittely - millainen ohjelmisto? Suunnittelu - miten ohjelmisto toteutetaan? Toteutus - ohjelmointi, testaus Käyttöönotto Ylläpito Mikä vaiheista vie eniten aikaa? 15

Suhteellisia työmääriä, ohjelmistoprojektit vuosina 1976-1981 Määrittely 8 % 24 % Suunnittelu 7 % 20 % Ohjelmointi 6 % 18 % Moduulitestaus 7% 20 % Integrointi 6 % 18 % Ylläpito 67 % Määrittely Suunnittelu Ohjelmointi Moduulitestaus Integrointi Ylläpito [Schach 1993] 16

Suhteellisia työmääriä, ohjelmistoprojektit 1992-1998 Kehitys 25% Ylläpito 75% [Schach 2005] 17

Vaatimusmäärittely Vaatimukset kuvaavat luonnollisella kielellä ja kaavioilla järjestelmältä edellytettäviä palveluja ja sen toiminnalle asetettuja rajoitteita. [Sommerville] Ulkoinen näkökulma järjestelmään, ei vielä mietitä miten vaaditut ominaisuudet toteutetaan Osa-alueina Vaatimusten kerääminen käyttäjiltä ja muilta sidosryhmiltä Vaatimusmäärittely käyttötapauksina ja tekstinä Menetelmät ja työkalut Haastattelut, vanhat järjestelmät, läpikäynnit CASE-välineet 18

Esimerkki: Yliopiston kurssinhallinta Toiminnallisia vaatimuksia esim.: Opetushallinto voi syöttää kurssin tiedot järjestelmään Opiskelija voi ilmoittautua valitsemalleen kurssille Opettaja voi syöttää opiskelijan suoritustiedot Opettaja voi tulostaa kurssin tulokset Toimintaympäristön rajoitteita esim.: Kurssien tiedot talletetaan jo olemassa olevaan tietokantaan Järjestelmää käytetään www-selaimella Toteutus Javalla Kyettävä käsittelemään maksimissaan 100 ilmoittautumista minuutissa 19

Suunnittelu Ohjelmistosuunnitelmassa kuvataan tulevan ohjelmiston rakenne, rakenneosien väliset rajapinnat ja tietosisältö sekä jossain tapauksissa algoritmit. [Sommerville] Suunnitteluvaiheessa näkökulma on ohjelmiston sisäinen Arkkitehtuurisuunnittelu - kokonaisrakenne Oliosuunnittelu - osien tarkempi suunnittelu Ero vaatimusmäärittelyvaiheeseen nähden Heijastaako ohjelmistosuunnitelma vaatimuksia, vai tehtiinkö mitä osattiin? 20

Esimerkki mallinnuksesta arkkitehtuurisuunnitelmassa Mallissa esitetään järjestelmän jako alikomponentteihin Komponenttien väliset rajapinnat 21

Toteutus Ohjelmointi Testaus Virheenjäljitys Koodikatselmukset Edellisten vaiheiden ollessa kunnossa, tämä vaihe on suoraviivaista 22

Integrointi ja käyttöönotto Integrointi Ohjelmiston koostaminen erikseen toteutetuista ja testatuista komponenteista Nuoren järjestelmän kohdalla vaikea erottaa toteutuksesta ja testauksesta Iäkkäämmässä järjestelmässä erilliset testi- ja tuotantoympäristöt Käyttöönotto Järjestelmän toimittaminen asiakkaille tuotantokäyttöön Järjestelmä- ja hyväksymistestaukset Käyttökoulutus, käyttöohjeet, dokumentaatio 23

Käyttö ja ylläpito Ohjelmistotuote asennettu ja otettu osaksi käyttäjän normaalia toimintaa Aiempi järjestelmä poistettu käytöstä Ylläpitotoimenpiteiden luokittelu Korjaavat ylläpitotoimet (virheiden poistaminen) Sopeuttavat ylläpitotoimet (ympäristön muutoksiin vastaaminen) Lisäävät / parantavat ylläpitotoimet (lisäominaisuudet) Uudelleenjärjestelytoimet (sisäiset muutokset, ei vaikutusta ulkoiseen käyttäytymiseen) 24

Elinkaari vaihtelee projekteittain Kullakin sovelluksella on yksilöllinen elinkaarensa Ohjelmistot myös heijastavat käyttävän organisaation elinkaarta 25

Vaiheiden suhde toisiinsa Näinkö? 26

Vesiputousmallin ongelmia Järjestelmää testataan vasta kokonaisuutena Suunnitteluvaiheen virheet saattavat paljastua vasta testauksessa, ongelmat selviävät myöhään Perustuu oletukselle, että käyttäjä pystyy määrittelemään ohjelmalta halutun toiminnallisuuden heti projektin alussa Näin ei useinkaan ole Vasta nähdessään lopputuloksen käyttäjä tajuaa mitä oikeastaan halusikaan => Seurauksena raskas ylläpitovaihe 27

Vesiputousmallin lisäongelmia Jos projekti on pitkäkestoinen, voi olla että käyttäjän tarve muuttuu projektin kuluessa (esim. yritysfuusion seurauksena) Eli se ohjelma mitä haluttiin tilausvaiheessa ei olekaan enää tarpeellinen ohjelman valmistuessa Perustavanlaatuinen ongelma asiakkaan ja toteuttajan välinen kommunikointi kärjistyy vesiputousmallissa koska palautetta hankala saada kesken projektin 28

Iteratiivinen ja ketterä ohjelmistokehitys Lähdetään olettamuksesta, että asiakkaan vaatimukset muuttuvat projektin kuluessa Ei siis yritetäkään kirjoittaa alussa tyhjentävää määrittelydokumenttia Tuotetaan järjestelmä iteratiivisesti, eli pienissä paloissa Ensimmäisen iteraation aikana tuotetaan pieni osa järjestelmän toiminnallisuutta määritellään vähän, suunnitellaan vähän ja toteutetaan ne Lopputuloksena ohjelmisto, jossa mukana osa toiminnallisuutta Iteraatio kestää tyypillisesti muutaman viikon Asiakas antaa palautteen iteraation päätteeksi Jos huomataan, että järjestelmä ei ole sellainen kuin haluttiin, voidaan tehdä heti korjausliike Seuraavassa iteraatiossa toteutetaan taas hiukan uutta toiminnallisuutta asiakkaan toiveiden mukaan 29

Iteratiivinen ja ketterä ohjelmistokehitys Jokainen iteraatio tuottaa (jotenkin) toimivan järjestelmän Asiakkaan palaute välitön Vaatimuksia voidaan tarkentaa ja muuttaa Asiakas valitsee jokaisen iteraation aikana toteutettavat lisäominaisuudet 30

Ketterä ohjelmistokehitys Iteraation sisällä määrittely, suunnittelu, toteutus ja testaus eivät välttämättä etene peräkkäin Määritellään, suunnitellaan, toteutetaan ja testataan jatkuvasti Ketterissä menetelmissä dokumentoinnin rooli kevyempi kun vesiputousmallissa Virheellinen johtopäätös on ajatella, että kaikki eiperinteinen tapa tuottaa ohjelmistoja on ketterien menetelmien mukainen Monissa ketterissä menetelmissä (kuten XP eli extreme Programming) on päinvastoin erittäin tarkasti määritelty miten ohjelmien laatua hallitaan 31