Ohjelmistotuotanto - Spesifikaatiot ja dokumentointi

Slides:



Advertisements
Samankaltaiset esitykset
Tuloksellinen Java-ohjelmointi Luku 3 Luokkien käyttäminen
Advertisements

Ohjelmistokehitys Viikko 2 Mika Salo Pekka Valtonen Asmo Voutilainen
Koostumussuhde Jukka Juslin © Jukka Juslin.
Ohjelmiston tekninen suunnittelu
Tietojärjestelmät 2.
Tutustutaan harjoitustyön aiheeseen
Näkökulmia määrittelyyn (materiaali pääosin luvusta 4)
Suunnitelma ohjelmiston testaukseen
Ohjelmistotuotanto - Mallinnus
UML-notaatio staattinen ja dynaaminen mallintaminen
Luokkakaaviot Luokkakaaviot Tekninen suunnittelu.
Tietojärjestelmät ja Systeemisuunnittelu
UML RASE
Tietokannan suunnittelu
EXtensible Markup Language
Tekninen suunnit-telu
Dokumentointi RASE
Ohjelmistotekniikka: Ohjelmiston mallintaminen, osa I
BPMN ja hiukan prosessien määrittelystä
II Kehittämismenetelmistä
Päivi Ovaska Tutkijaopettaja LTY/Tite
Tietojärjestelmän suunnittelu
Projektikatselmus Publicum Teknillinen korkeakoulu Publicum-ryhmä.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Ohjelmistotekniikka Specifikaatiot: Määrittely, suunnittelu, työkalut ja standardit . Kevät 2002 Päivi Ovaska LTKK/Tite.
2/2001 Tietojärjestelmät ja Systeemisuunnittelu Luennoitsija: Tapio Lammi
Tietojärjestelmät ja Systeemisuunnittelu
Oliomallittaminen ja UML
SE-02 Olioperustainen ohjelmistokehitys Tampereen yliopisto, syksy 2000 Roope Raisamo perustuu Kai Koskimiehen Oliokirjaan ja kurssin aiempiin materiaaleihin.
Olioperustainen ohjelmistoprosessi
3. Spesifikaatioiden laatiminen
Ohjelmistotekniikka - Tenttiin valmistautumisesta Kevät 2003 Hanna-Kaisa Lammi LTY/Tite.
Oliosuunnittelu.
13. Hyvä ohjelmointitapa (osa 1)
© Jukka Harju, Jukka Juslin
Johdatus ohjelmointiin Ohjelmistosuunnittelu Jaana Holvikivi.
XML -kielen perusteet SIMO Seminaari Antti Mäkinen.
Selainkäyttöliittymän tuotantoprosessi Klikkaamalla pääotsikoista tietosi karttuu. Sininen mökki toimii paluupainikkeena. Selainkäyttöliittymän tuotantoprosessi.
Tutkimussuunnitelman ja opinnäytetyön rakenne
JHS:N SUOSITUKSET VAATIMUSMÄÄRITTELYLLE SEPPO RÄSÄNEN SAVONIA-AMMATTIKORKEAKOULU TERVEYSALA, KUOPIO Ohjelmistotekniikka ja projektinhallinta,
Käyttötapauskaavio ja käyttötapaukset
Esitutkimus (tarvekartoitus)
Systeemityö 2 Käyttötapauskaavio Teppo Räisänen, Principal Lecturer
Ohjelmistotuotanto.
Johdanto Teppo Räisänen, Principal Lecturer Oulu University of Applied Sciences, School of Business and Information Management
Koostekaavio – Composite Structure Diagram Kinnula – Kellolampi - Lehtosaari.
– Ohjelmistojen mallintaminen, mallintaminen ja UML.
Mallinnustavat.
Jouni Juntunen Oulun seudun ammattikorkeakoulu Liiketalouden yksikkö
Vaatimustenhallinta.
Analyysi. Yleistä analyysistä Mitä ohjelmiston on tehtävä? Analyysin ja suunnittelun raja on usein hämärä Ei-tekninen näkökulma asiakkaalle näkyvien pääkomponenttien.
Pakkanen * * * Komponenttipohjaisen sovellustuotannon menetelmäpilotti PlugIT-seminaari Annamari Riekkinen ja Kirsi Karvinen FixIT-DoIT / HIS-tutkimusyksikkö.
Ohjelmistotekniikka kevät 2003 CASE-välineet. Ohjelmistotekniikka kevät 2003 Mitä ovat CASE-välineet? Computer Aided Software Engineering Tietokoneavusteinen.
1 © Jukka Juslin Luokat, attribuutit ja metodit Yleistietoa: seuraavalla koulutusviikolla tarkempi käsittely.
– Ohjelmistojen mallintaminen Unified Modeling Language (UML)
Koostekaavio– composite structure diagram Mikko Näpänkangas.
PHP ja MySQL PHP: Hypertext Preprosessor. PHP, johdanto Komentosarjakieli, joka on suunniteltu dynaamisen sisällön tuottamiseen verkossa PHP on sekä kieli,
Ohjelmistotekniikka - Määrittely (Analysis) Kevät 2003 Hanna-Kaisa Lammi LTY/Tite.
Päivi Ovaska Tutkijaopettaja LTY/Tite
2/2001 Tietojärjestelmät ja Systeemisuunnittelu Luennoitsija: Tapio Lammi
Tietojärjestelmät ja Systeemisuunnittelu
Tietojärjestelmät ja Systeemisuunnittelu
Ohjelmistotuotanto - Spesifikaatiot ja dokumentointi Kevät 2005 Jani Vaara LTY/Tite.
Ohjelmistotekniikka Specifikaatiot ja dokumentointi Kevät 2002 Päivi Ovaska LTKK/Tite.
1 UML - yleiskatsaus UML - yleiskatsaus (ei kirjassa koottuna) Miksi mallinnus Mikä UML on? UML:n peruselementit Kaaviotyypit Esimerkkiprosessi.
UML-luokkakaavio ● Luokkakaavio (class diagram) kuvaa järjestelmän luokkarakennetta ● Mitä luokkia on olemassa ● Minkälaisia luokat ovat ● Luokkien suhteet.
– Ohjelmistojen mallintaminen, mallintaminen ja UML
14. Hyvä ohjelmointitapa.
– Ohjelmistojen mallintaminen Unified Modeling Language (UML)
CLT132 Tehtävät (viikko 2).
Esityksen transkriptio:

010758002 Ohjelmistotuotanto - Spesifikaatiot ja dokumentointi Kevät 2004 Hanna-Kaisa Lammi LTY/Tite

Sisältö Speksaamisesta yleisesti Kuvaustekniikat ja menetelmät Dokumentointi Mallintamisesta ja kuvaustekniikoista

Motto "Ohjelmistospesifikaation lukeminen on kuin pyhän kirjan lukemista - jos lukee itsekseen voi ymmärtää miten haluaa, jos pyytää jonkun selittämään, ymmärtää miten toinen haluaa, parasta olisi saada jumala (asiakas) paikan päälle selittämään mitä hän tarkoittaa." tekn.yo Jan Laakso projektityökurssilla

Spesifikaatio Määrittely: Mitä tehdään? Suunnittelu: Miten tehdään? Määrittelyn ja suunnittelun sisältö vaihtelee tilanteesta riippuen, esim. työasemasovelluksen määrittely näyttöjä ja toimintoja sulautettujen järjestelmien ohjelmistot rajapintoja antureihin ja toimilaitteisiin Määrittely ja suunnittelu (toteutus myös) spesifikaatioiden laatimista Spesifikaatio määrittelee, miten vaiheen syötteet eli vaatimukset muutetaan seuraavan vaiheen vaatimuksiksi

Ohjelmistojen tuottaminen = speksien tuottamista? miten mitä asiakas- vaatimukset määrittely esitutkimus arkkitehtuuri- suunnittelu moduuli- ohjelmointi toiminnallinen tekninen suunnitelmat ohjelma- koodi Menetelmät, kuvaustekniikat verifiointi hyväksymis- testaus järjestelmä- integrointi- käyttäjien tarpeet, ideat, rajoitukset reunaehdot

Speksattavat asiat (pelkistetty kuva) Spesifikaatio N spesifiointi toiminnalliset vaatimukset ei-toiminnalliset reunaehdot ja rajoitteet Spesifikaatio N+1 Verifiointi esimerkiksi tarkastamalla testaussuunnitelmat edellisen version spesifikaatiot

Hyvä speksin ominaisuudet Sujuva ja selkeä kirjallinen esitys ”Jos kuukauden toteutunut myynti alittaa tavoitteet, tulostetaan raportti, ellei toteutuneen myynnin ja tavoitteen ero ole vähemmän kuin puolet edellisen kuukauden tavoitteen ja toteutuneen myynnin erosta, tai toteutunut myynti alittaa tavoitteen alle 5%.” Selkeää?!

Hyvän speksin ominaisuudet täydellisyys tarkkuus virheettömyys ymmärrettävyys testattavuus jäljitettävyys jokseenkin samat kuin yksittäisen vaatimuksen ominaisuudet!

Kuvaustekniikat ja menetelmät Kuvaustekniikat ovat ”kieliä” erilaisten asioiden ilmaisemiseksi esim. UML-kuvauskieli, käyttötapauskaaviot, luokkakaaviot, tilakaaviot suunnittelutyön apuvälineitä työn tulosten dokumentointivälineitä Menetelmät ovat tapoja soveltaa kuvaustekniikoita, esim. SA, OMT Kuvaustekniikat täydentävät luonnollisella kielellä tehtyjä spesifikaatioita.

Menetelmät Kuvaustekniikat sisältävät esim. käyttötapauskaaviot, luokkakaaviot, tilakaaviot, tapahtumasekvenssikaaviot Menetelmä = kuvaustekniikat + ohjeistus esim. SA/RT, OMT, Octopus, Fusion… Laatujärjestelmät eivät yleensä ota kantaa, millä menetelmällä dokumentit tuotetaan

Menetelmistä Informaalit (vapaamuotoiset) menetelmät Puoliformaalit menetelmät Formaalit (muodolliset) menetelmät

Informaalit menetelmät Seinätaulumenetelmät, jossa määriteltävät asiat kuvataan muodostamalla ratkaistavasta ongelmasta suuria selkeitä kaavioita seinälle Hyviä menetelmiä asiakasvaatimusten keräysvaiheessa Menetelmät eivät yleensä vaadi erityiskoulutusta, vaan ovat kaikkien ymmärrettävissä

Puoliformaalit menetelmät Käytettyjen merkintätapojen semantiikka (eli tarkoitus) ei ole kovin tarkasti määritelty vaan sitä voi tarpeen mukaan soveltaa joko enemmän tai vähemmän formaalisti esim. OMT- ja SA-menetelmät

Formaalit menetelmät Matemaattisia, usein formaaliin logiikkaan perustuvia täsmällisiä spesifiointimenetelmiä Kieli, jolla on tarkasti määritelty sanasto, syntaksi ja semantiikka esimerkkeinä Z, VDM, DisCO Auttavat spesifioimaan hyvin ja täydellisesti, voidaan todistaa ja todeta oikein toimiviksi Merkitys käytännön ohjelmistotyössä lähes olematon johtuen vaikeudesta ja epähavainnollisuudesta

Menetelmistä Yleisesti kaikkiin tilanteisiin soveltuvaa menetelmää ei ole olemassakaan Käytännön ohjelmistotyössä menetelmillä ei ole niin suurta merkitystä kuin saattaisi kuvitella Aloittelevalle ohjelmistosuunnittelijalle menetelmät, ”keittokirjaohjeet” ovat tärkeitä, kokenut ohjelmistosuunnittelija pystyy sovittamaan ne kulloiseenkin tilanteeseen

Dokumentointi Laadukkaiden dokumenttien tuottaminen on käytännön ohjelmistotyön heikoimpia lenkkejä Dokumentointimallit ja tarkastusmenettelyt dokumentoinnin helpottamiseksi ja varmistamiseksi Yhdysvaltain puolustushallinnon projekteissa dokumentoinnin määrä on todettu projektin yleiseksi riskitekijäksi: dokumentointia yhtä ADA-kielen käskyä kohti n. 400 englannin kielen sanaa Ei dokumentointia dokumentoinnin vuoksi, vaan tilanteen mukaan, sisältö ratkaisee

Dokumentointi Minimidokumentaatio: Dokumenttien sisältö: Määrittely- ja suunnitteludokumentaatio, testaussuunnitelma, testausraportti Dokumenttien sisältö: Dokumentaation ylläpidettävyyden kannalta kannattaa välttää tarpeetonta tietojen toistoa: tietty kuvaus vain yhdessä paikassa Erityisesti suunnitteludokumentaatiossa kannattaa tarkkuustaso valita niin, että ohjelmointivirheiden korjaamien ei välttämättä johda dokumentin päivittämiseen (esimerkiksi vain modulien rajapinnat, modulien sisäinen toiminta kommentteina koodissa)

Ohjelmistosuunnitelu, tuotteen versio k+1

Esimerkki: pieni ohjelmistoyritys Palaute Overflow Oy resurssit, ideat neuvottelut/ asetta- projekti tai käyttöön- käyttö valmistelu minen hanke otto tarpeet asiakas tehtävää tuotekansio koskevat asiakirjat

Ylläpitodokumentaatio Projektin päättyessä tuotedokumentaatio muutetaan ylläpitoa palvelevaan muotoon esim. käyttöohje, asennus- ja operointiohje, koulutusmateriaali ja tekninen dokumentaatio Dokumentaatio asiakkaan tarpeiden mukaan!

Esimerkki, pieni ohjelmistoyritys tarkastukset alustava projektisuun- nitelma tarkennettu loppuraportti kokouspöytäkirjat toiminallinen määrittely tekninen ohjelmakoodi Työn vaiheistus Katselmukset hyväksymis- katselmus suunnittelu- projek- tin käyn- nis- tämi- nen päät- määrittely- suunnittelu ohjelmointi integrointitestaus järjestelmätestaus testaus- raportti - Projektiohje - Määrittelyohje - Tarkastusohje - Ohjelmointiohje - Testausohje - Suunnitteluohje Projektisuunnittelu, seuranta ja ohjaus järjestelmä- suunnitelma Pöytäkirjat

Dokumentointimallit Kaikkien dokumenttien ulkoasun yhdenmukaisuus Osana laatujärjestelmän dokumentaatiota soveltamisohjeineen Tyyliopas lähdekoodin dokumentointia varten modulin ulkoasu, muuttujien nimet, sisennykset, kommentoinnit, suosituksia työkalujen käytöstä IEEEn standardisarja ESAn standardi PSS-05-04 Issue 2 Dokumenttimallien suomenkielisiä versioita esim. http://www.cs.tut.fi/cgi-bin/laatu/sivuhaku.pl?nk_no=&nk_id=0

Esimerkki dokumenttimallista Ohjetekstejä, poista ennen viimeistä versiota!

Ohjelmiston kehittämisessä tarvitaan malleja Mallit - mahdollistavat todellisuuden yksinkertaistamisen - sallivat eri abstraktiotasot, laajuudet ja näkökulmat - toimivat vaihetuotteina suunnittelumenetelmissä - auttavat ymmärtämään sovellusaluetta - helpottavat kommunikointia koskien järjestelmää ja sovellusaluetta

Mallien riippuvuus Analyysi Suunnittelu Toteutus Testaus Vaatimukset Vaihetuotemalleja

UML (Unified Modeling Language) Standardoi ohjelmistomallien esitystavan Pohjana OMT, Booch, OOSE Pitkän evoluution tulos, kehittyy edelleen Tarkoitettu erityisesti oliopohjaisille ohjelmistoille Ei liity suoranaisesti mihinkään suunnittelumenetelmään OMG:n siunaama (standardoitu 1997) Nykyinen versio 1.3 Erittäin laaja Tosiasiallinen standardi työkaluissa, kirjallisuudessa, teollisuudessa ks. www.omg.org

UML: sisältö Johdanto: mallintaminen ohjelmistokehityksessä Pikakatsaus kaavioihin Laajennosmekanismit Piirrosvälineet, prosessi, käyttöönotto Vaatimusten mallintaminen: käyttötapauskaaviot Rakenteen mallintaminen: luokkakaaviot Vuorovaikutuksen mallintaminen: sekvenssikaaviot Käyttäytymisen mallintaminen: tila- ja aktiviteettikaaviot

UML:n perusosat Elementit Suhteet Riippuvuus Luokka * Assosiaatio Olio 0..1 Assosiaatio Olio rooli Tila Kooste Yleistys (Periytyminen) Pakkaus Toteutus Kommentti jne. jne.

Kaaviot Käyttötapaus Käsittele puu Kuljettaja Sahaa tukki

Miksi käyttötapauksia? Liittää asiakasvaatimukset järjestelmän toimintoihin Mahdollistaa vaatimusten täsmentämisen Mahdollistaa yhteisen käsityksen tehtävästä järjestelmästä Rajaa järjestelmän ympäristöstään Auttaa tunnistamaan kuka tai mikä käyttää järjestelmää Määrittää järjestelmän korkean tason toiminnallisuuden Auttaa jakamaan toiminnallisuuden osajärjestelmiin Määrittää järjestelmän perustermit Apuna olioiden tunnistamisessa Voidaan käyttää ohjelmistokehityksen organisointiin (iteraatioiden suunnittelu) Apuna testauksen suunnittelussa Auttaa käyttöohjeiden laatimisessa

Käyttötapauksen kuvaaminen UML ei standardoi esitystapaa. Käyttötapauksen sisältö voidaan kuvata esimerkiksi seuraavasti (ns. sanallinen käyttötapaus): Käyttötapauksen nimi: Kuvaava nimi Osallistujat: Mitkä aktorit osallistuvat Tuloehdot: Mitkä ehdot ovat voimassa, kun käyttötapaus aloitetaan (epäformaali) Kuvaus: Epäformaali, voidaan käyttää myös sekvenssikaavioita Poikkeukset: Poikkeustilanteet (mainitaan myös kuvauksessa) Jättöehdot: Mitkä ehdot ovat voimassa, kun käyttötapaus lopetetaan (epäformaali)

Käyttötapauskaavio: notaatio Järjestelmä Käyttötapaus sisältää laajennuskohtia, joihin toinen käyttötapaus voidaan sijoittaa Aktori: käyttötapaukseen osallistuva käyttäjä- tyyppi Käyttötapaus <<extend>> Käyttötapaus Käyttötapaus <<include>> Aktori Käyttötapaus on erikoistapaus toisesta Käyttötapaus Käyttötapaus sisältää toisen osanaan

Laajennusrelaatio Accounting System Pay invoice <<extend>> Seller Perform interaction Byer Pay overdraft fee

Esimerkki käyttötapauksesta Varausten poistaminen Salinvarausjärjestelmä Vastuu - henkilö assistentti ylläpitäjä Perustietojen ylläpito Luentosalin varaaminen Harjoitussalin Käyttäjän identifiointi <<include>> Salivuokran laskutus <<actor>> vuokra järjestelmä

Esimerkki sanallisesta käyttötapauksesta Nimi: Luentosalin varaaminen, versio 1.0 / ijh Suorittajat: Kurssin vastuuhenkilö Esiehdot: Vastuuhenkilö ja kurssi on syötetty järjestelmään (KT henkilötietojen ylläpito) Kuvaus: Vastuuhenkilö seuraa WWW-linkkiä, joka johtaa järjestelmän pääsivulle. Hän syöttää järjestelmään käyttäjätunnuksensa ja salasanansa (uses: KT käyttäjän identifiointi). Käyttäjä pyytää järjestelmää näyttämään salin varaustilanteen haluamaltaan aikaväliltä. Hän saa eteensä salin lukujärjestysnäytön (ks. liite). Käyttäjä näkee näytöstä vapaat ajat sekä myös, mille kursseille sali on milloinkin varattu ja kuinka monelle viikolle. Käyttäjä tekee varauksen joltain vapaaksi havaitsemaltaan ajankohdalta. [Poikkeus: varaus ei onnistu]. Poikkeukset: Varaus ei onnistu: Varaustilanne on voinut muuttua sillä aikaa kun varaaja tekee varausta. Järjestelmä ilmoittaa tilanteesta käyttäjälle ja käyttäjä yrittää uudelleen. Lopputulos: Varaukset kurssin luentoajoiksi on tehty. Muut vaatimukset: Päivittäin käsitellään kiireisimpänäkin aikana enintään n. 100 varausta. Vastausajan on oltava alle 1 sekuntia, lukujärjestysnäytön päivitys saa kestää 5 sekuntia.

Käyttötapausten laatimisesta Käyttötapauskaavio tukee käyttötapojen suhteiden kuvaamista, ei niiden sisällön kuvaamista. UML ei määrittele sisällön esitystapaa. Käyttötapausten tulee olla ymmärrettävissä sekä asiakkaan että suunnittelijan kannalta. Kaikkia käyttötilanteita ei voi eikä kannata antaa käyttötapauksina. Käyttötapauksella tulee olla selkeä aloitustilanne ja lopetustilanne. Käyttötapauksen "suuruudesta" päättäminen voi olla vaikeaa: Käyttötapauksen tulisi olla suhteellisen lyhyt (yhden sivun kuvaus). Käyttötapaus tuottaa käyttäjälle lisäarvoa (ei yleensä yksittäinen ohjelmiston toiminto, vaan kokonainen tuloksen tuottava ketju toimintoja). Käyttötapaus ei siis yleensä ole yksittäinen ohjelmalla suoritettava toiminto (ei siis esimerkiksi: tekstin kopiointi leikkuupöydälle).

Luokkakaaviot (class diagrams) Oliokaavio, ER-kaavio, Entity Relationship diagram, ERD, tietoyhteyskaavio, käsitekaavio, kohdekaavio Kuvaa järjestelmän käsitteitä (olioita) ja niiden keskinäisiä suhteita Perinteisesti tietokantasuunnittelun väline Oliokeskeisissä menetelmissä keskeisin mallinnusväline

Luokkakaavio KohdeHallinto Kohde Varasto HenkilöAuto ParkkiAlue * 1 palauta varaa otaKäyttöön hallinnoi palauta(Kohde, Varasto) varaa(Kohde) otaKäyttöön(Kohde) * 1 HenkilöAuto ParkkiAlue rekisterinumero Talleta huolto- informaatio (palauta kutsuu) huolla(int km) palauta

Esimerkki Martinin luokkakaaviosta kuuluu osallistuu opiskelija kurssi opettaja opinto- jakso suoritus tentti kuvaa luennoi

Luokkakaavio Chenin notaatiolla osallis- 0:N 0:N 1:1 opinto- opiskelija kurssi <-kuvaa tuu jakso 0:N 1:1 0:N 0:N 0:N suorittaa tentti kuuluu luennoi 0:1 suoritus opettaja

Millä piirrät? Jos et osaa paperilla ja kynällä ei välineestä ole apua. CASE (Computer Aided/Assisted Software/System Engineering)-välineet , esim. Rational Rose, Prosa, Rhapsody…) Hinta verraten korkea (2-10 keur). Perustuvat tietokantaan, johon talletetaan kaikki malliin liittyvät tiedot, kaaviot ovat vain “näkymiä” tietokantaan. “Ymmärtävät” kaavioiden semantiikkaa ainakin jossain määrin. Reverse Engineering+Forward Engineering = Round Trip Engineering. Tukevat dokumentointia (esim. Soda+Rose). Demot ja pienet ohjelmaesimerkit antavat usein liian ruusuisen kuvan. Raskaan sarjan käyttökokemuksia ei ole julkaistu (?). Oppimiskynnys korkeahko. Piirto-ohjelmat (Visio, ABCFlowcharter) Hinta muutamasta sadasta keur:sta ylöspäin. Ainakin Visiossa melko hyvä UML-tuki, lähestyy CASE-välineen ominaisuuksia. Hyvä valinta, jos ei tarvitse CASE-välineen tietokannan tuomia lisäetuja. Julkisohjelmiakin löytyy verkosta.