Toteutussuunnitelma. Luennon tavoitteista. Motivointia. Pressman, Software Engineering

Samankaltaiset tiedostot
Ohjelmiston toteutussuunnitelma

Ohjelmistojen suunnittelu

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

13/20: Kierrätys kannattaa koodaamisessakin

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Ohjelmistotekniikka - Luento 2

Tietorakenteet ja algoritmit - syksy

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Suunnitteluvaihe prosessissa

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Ohjelmistotuotteen hallinnasta

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

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

Oleelliset vaikeudet OT:ssa 1/2

Uudelleenkäytön jako kahteen

ohjelman arkkitehtuurista.

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Imperatiivisten ohjelmien organisointiparadigmojen. historia

Imperatiivisten ohjelmien organisointiparadigmojen historia

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit

Algoritmit 1. Luento 1 Ti Timo Männikkö

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Ohjelmiston vaatimusmäärittely

Ylläpito. Ylläpito. Ylläpidon lajeja Ohjelmistotuotanto, syksy 1998 Ylläpito

811312A Tietorakenteet ja algoritmit I Johdanto

7/20: Paketti kasassa ensimmäistä kertaa

opiskelun suunnittelujärjestelmä, kurki ja ilmo käyttävät kaikki samaa tietokantaa, ja uusi järjestelmä tulee osaksi tätä.

HELIA 1 (20) Outi Virkki Tiedonhallinta

Luokka- ja oliokaaviot

HELIA 1 (11) Outi Virkki Tiedonhallinta

Luku 8 Rakennusvaihe. Detailed Design. Programming. Moduulisuunnittelu. Ohjelmointi

UML- mallinnus: Tilakaavio

Tietokannan suunnittelu

Tietorakenteet ja algoritmit

Tietojärjestelmän osat

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Ohjelmiston vaatimusmäärittely. tietoteknisen järjestelmän osat

TOIMINNALLINEN MÄÄRITTELY MS

Heuristisen arvioinnin muistilista - lyhyt versio

Tilastolliset ohjelmistot A. Pinja Pikkuhookana

Ryhmäläisten nimet:

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia.

Projektisuunnitelma. Projektin tavoitteet

Toiminnot eli käyttäytyminen. Tieto eli rakenteelliset ominaisuudet

Algoritmit 1. Luento 3 Ti Timo Männikkö

Nspire CAS - koulutus Ohjelmiston käytön alkeet Pekka Vienonen

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

17/20: Keittokirja IV

FiSMA 1.1 Toiminnallisen laajuuden mittausmenetelmä Ohje monikerrosarkkitehtuurin mittaamiseen

Kojemeteorologia. Sami Haapanala syksy Fysiikan laitos, Ilmakehätieteiden osasto

Miten 333 organisaatiota voi kehittää yhtä yhteistä digitaalista palvelua ja vielä kuunnella kaikkien asiakkaita?

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Ohjelmistojen mallintaminen

Ohjelmistotuotanto, s

14/20: Keittokirja I

käyttötapaukset mod. testaus

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Good Minton Sulkapalloliiton Kilpailujärjestelmä SEPA: Heuristinen arviointi

Määrittelydokumentti

Ylläpito. Ylläpidon lajeja

Ohjelmoinnin perusteet Y Python

Joskus yleistäminen voi tapahtua monen ominaisuuden pohjalta. Myös tällöin voi tulla moniperintätilanteita.

Ohjelmien analysointi. ER-kaaviot

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

Sisällys. Ratkaisumallien historia. Ratkaisumalli. Ratkaisumalli [2] Esimerkki: Composite [2] Esimerkki: Composite. Jaakko Vuolasto 25.1.

Projektisuunnitelma. Radio-ohjattavan pienoismallin mekatroniikan ja ohjelmiston kehitys

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

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Tietokoneverkot. T Tietokoneverkot (4 op) viimeistä kertaa CSE-C2400 Tietokoneverkot (5 op) ensimmäistä kertaa

Lomakkeiden suunnittelu. Aiheina

811120P Diskreetit rakenteet

Ohjelmistojen mallintaminen kertausta Harri Laine 1

CQRS, -ES, PACS, DICOM, WTF?

Lomakkeiden suunnittelu. Aiheina

Tieto- ja tallennusrakenteet

2 Konekieli, aliohjelmat, keskeytykset

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

HELIA 1 (19) Outi Virkki Käyttöliittymät ja ohjelman suunnittelu

Ohjelmistotuotanto, s

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

Koodaamme uutta todellisuutta FM Maarit Savolainen

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Yhteensopiva ja stabiili. Käsitteellistää suunnittelun. Parempi kuin koskaan aiemmin. Yksityiskohtien tarkka kuvaus. Saumaton kommunikaatio

Hieman lisää malleista ja niiden hyödyntämisestä

A215 Tietorakenteet. Tietojenkäsittelytieteiden laitos Tampereen yliopisto. Periodit I-II, syksy 2007

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

Tiedonlouhinta rakenteisista dokumenteista (seminaarityö)

Tähtitieteen käytännön menetelmiä Kevät 2009

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

Ohjelmien automaattisen verifioinnin reunamailla

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Lomakkeiden suunnittelu. Aiheina

Ohjelmistotuotanto, s

4. Lausekielinen ohjelmointi 4.1

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Algoritmit 1. Luento 10 Ke Timo Männikkö

Transkriptio:

Toteutussuunnitelma Luennon tavoitteista Luennon sisällöstä Motivointia Lähteinä: Pressman, Software Engineering 1

Tavoitteista Luentojen jälkeen opiskelijan tulisi osata: 2

Sisällöstä Tavoitekalvon asioita. 3

Motivointia 4

Toteutussuunnitelma ja projektin vaiheet Määrittelyiden ja vaatimusten keruun jälkeen osa (tärkeimmät) vaatimuksiin liittyvistä toiminnoista toteutetaan (tällä kurssilla, riippuu vaatimusten laajuudesta). 5

Käsitteistä Laaditaan suunnitelmia (rakenteita): Datasuunnitelmat (-rakenne), tietorakenteet, tietokanta Arkkitehtuurirakenne, ohjelman rakenteen pääelementit Liittymärakenne, modulien väliset, ulkoiset, hci Toiminnallinen rakenne, käytetään prosessi- ja kontrollimäärittelyitä, tilarakenteita 6

Suunnitteluprosessista Laatu: Suunnitelmien tulee toteuttaa kaikki erikseen mainitut vaatimukset ja myös ns. hiljaiset vaatimukset. Koodin kirjoittajien tulee pystyä lukemaan ja ymmärtämään suunnitelmat. Ja myös testaajien ja tulevien ylläpitäjien. Suunnitelmien tulisi antaa ohjelmistosta kokonaiskuva: datasta, toiminnallisuudesta ja käyttäytymisestä. 7

Teknisiä kriteerejä laadulle: Suunnitelmien pitäisi antaa ohjelmistolle hierarkkinen rakenne, joka näppärästi kontrolloi ohjelmiston elementtejä. Suunnitelmien tulisi olla modulaarisia: toimintojen loogista jaottelua. Suunnitelmien tulisi abstrahoida data- ja toiminnallisuusrakenteita. Suunnitelmien tulisi johtaa aliohjelmiin ja funktioihin, joilla on riippumattomia piirteitä. Suunnitelmien tulisi johtaa liittymiin, jotka vähentävät modulien välisten ja myös ulkoisen ympäristön yhteyksien kompleksisuutta Suunnitelmat tulisi johtaa toistettavalla prosessilla, joka perustuu vaatimusten tarkkaan analysointiin. 8

Eri suunnittelumenetelmien yhteisiä piirteitä: mekanismi, joka siirtää analyysimallin toteutussuunnitelmaksi notaatio, jolla kuvataan toiminnalliset osaset ja niiden väliset yhteydet heuristiikat asioiden tarkentamiseen ja osittamiseen ohjeet laadun varmistamiseen 9

Suunnitteluperiaatteet Ensin kuva kokonaisuudesta, jota tarkennetaan. Pitäisi harkita vaihtoehtoja. Suunnitelmien tulee olla jäljitettävissä analysointimalliin (vaatimuksiin). Älä keksi pyörää uudelleen (muista suunnittelumallit). Ohjelmiston tulisi jäljitellä todellisuudessa esiintyvän ongelman rakennetta. Ohjelmiston tulisi olla yhdenmukaisia ja integroituja ( yksi kehittäjä, hyvät liittymät ) 10

Ohjelmisto tulisi suunnitella muutostarpeet huomioiden. Ohjelmiston tulisi käyttäytyä hyvin myös poikkeuksellisissa tilanteissa. Suunnittelu ei ole koodausta, koodaus ei ole suunnittelua. Suunnitelmien laatua tulisi arvioida niitä luodessa, ei jälkikäteen. Suunnitelmat tulee katselmoida (virheiden vähentämiseksi). 11

Suunnitteluun liittyviä käsitteitä Millä kriteereillä ohjelmisto jaetaan yksittäisiin komponentteihin? Kuinka toiminnot ja tietorakenteet erotetaan ohjelmiston käsitteellisestä esityksestä? Löytyykö yhdenmukaisia laatukriteerejä suunnitelmille (ohjelmiston rakenteelle)? 12

Abstrahointi Tarkentaminen (abstraktioista yksityiskohtiin) Modularisuus Ohjelmistoarkkitehtuuri Kontrollihierarkia Rakenteellinen ositus Tietorakenteet Ohjelmiston toiminnot Informaation piilotus 13

Abstrahointi: Löytyy eri tasoja. Korkeammalla tasolla ei näytetä detaljeja. Toimintojen ja tietojen (datan) abstraktiot. Abstraktit tietotyypit. Kontrollien abstraktiot. 14

Modularisuus: Kirjastoja, moduleja järkevän kokoisissa palasissa. Joskus dialogit voivat olla omia ohjelmiaan... Ei kannata liioitella modulien määrässä... Modulaarinen ositettavuus Ositettavuus uudelleenkäyttäen Modulaarinen ymmärrettävyys (vähän viittauksia muihin) Modulaarinen jatkuvuus (muutokset usein paikallisia) Modulaarinen suojaus (virheet eivät vaikuta muihin) 15

Ohjelmistoarkkitehtuuri: Rakenteelliset ominaisuudet (mitä sisältää, liittymät muihin) Toiminnalliset ominaisuudet (tehot, kapat, luot. ym.) Vastaavien systeemien perheet Rakenteelliset mallit, sovelluskehykset, dynaamiset mallit, prosessimallit, toiminnalliset mallit. Arkkitehtuurin kuvauskielet (ADL). 16

Kontrollihierarkia: Kutsutaan myös ohjelman rakenteeksi. Mikä moduli kontrolloi mitäkin? Näkyvyys, liittyvyys (kytkeytyneisyys) Rakenteellinen ositus: Horisontaalinen, funktion pääositus (yks.kert: syöte, muunnos, tulos). Vertikaalinen ositus, jaetaan tehtäviä alimoduleihin (pääosituksen olisi syytä olla kunnossa muutokset voivat olla hankalia). 17

Tietorakenteet: Joukko tuttuja rakenteita suunnittelun apuna: vektorit, taulukot, listat, pinot, jonot, kasat, erilaiset puut, verkot, joukot, kuvaukset (avain-arvo-parit), jne. Yllä oleviin rakenteisiin pistetään dataa sisään ja löytyy tapoja käsitellä rakenteissa olevaa dataa näppärästi. Useassa kielessä löytyy jo peruskirjastoista melkoinen määrä erilaisia tietorakenteita. Ohjelmiston toiminnot: Kuvataan pseudokielellä tai jollain kaaviotekniikalla esim. Löytyy tasoja, liittävät tietorakenteet toiminnallisuuteen, tapahtumiin, toistoihin, jne, kuvataan, missä tehdään päätöksiä jne. Informaation piilotus: Tehdään mahdollisimman itsenäisiä moduleja (komponentteja), joilla on selvät liittymät modulien väliseen (ulkopuoliseen) kommunikointiin. 18

Modulaarisen rakenteen suunnittelusta Toiminnallinen riippumattomuus. Mitataan seuraavilla: Yhteenkuuluvuus (cohesion). Moduli hoitaa yksittäisen tehtävän ja tarvitsee vähän kommunikointia muiden modulien kanssa. Jos moduli hoitaa useita tehtäviä, jotka eivät (juurikaan) liity toisiinsa, on kyseessä satunnaisesti yhteenkuuluva moduli. On myös loogisesti yhteenkuuluvia ja ajallisesti yhteenkuuluvia moduleja. Kytkennät (coupling). Modulien välisiä. Riippuu modulin liittymän mutkikkuudesta. liittämän paikasta ja siitä, mitä dataa liittymä välittää. data kytkennät, leima??kytkennät (stamp-) (tietorak.), kontrollikytkennät (esim. kontrollilippu), yhteiskytkennät (esim. glob. tietorak), sisällyskytkennät (käyttää toisen modulin tietorak). 19

Suunnitteluheuristiikat tehokkaaseen modulaarisuuteen Arvioi ohjelmarakenteen ensimmäinen iteraatio kytkentöjen vähtämiseksi ja yhteenkuuluvuuden lisäämiseksi. (Moduleja voi jakaa suoraan useaksi, tai useasta voi yhdistää toimintoja johonkin uuteen moduliin.) Yritä välttää rakennetta, jossa yhdellä modulilla on monta kontrolloitavaa modulia. Syvyyden kasvaessa joillain modulilla saisi olla useita moduleja, jotka sitä kontrolloivat. Modulin vaikutusalueen tulisi olla modulin kontrollialueen sisällä. (Kontrolloi alimodulejansa, ja vaikutusten tulisi jäädä niihin.) 20

Arvioi modulin liittymiä mutkikkuuden ja päällekkäisyyksien vähentämiseksi ja johdonmukaisuuden lisäämiseksi. Määritä moduleja, joiden toiminnallisuus on selkeää ( ennustettavaa vs. sisäinen muisti), mutta vältä moduleja jotka ovat liian rajoittavia (voi tulla muutostarpeita). Lisää kontrolloituja liittymiä, vältä patologisia kytkentöjä ( jonnekin modulin keskelle ). Paketoi ohjelmisto suunnittelurajoitteiden ja siirrettävyysvaatimusten perusteella. 21

Suunnittelumenetelmiä Neljä perustoimintoa: datasuunnitelmat, arkkitehtuurisuunnitelmat, UI-suunnitelmat, toiminnallisuuden suunnittelu. datasuunnitelmat (-rakenne) arkkitehtuurisuunnitelmat ja -suunnitteluprosessi Muunnosten ja transaktioiden kuvaukset Jälkiprosessoinnin suunnittelu Arkkitehtuurin optimointi Liittymien suunnittelu, HCI-suunnittelu ja liittymien suunnitteluohjeita Toiminnallisuuden suunnittelu 22

Datasuunnitelmat Systemaattinen ote myös datan suhteen Kaikki tietorakenteet ja niillä suoritettavat operaatiot etsittävä. Tietohakemisto perustettava ja määriteltävä datalle ja ohjelman rakenteelle (suunnitelmille). Päätökset alhaisen tason data suunnitelmista pitäisi viivyttää suunnittelun loppuvaiheille. Tietorakenteiden tulisi näkyä suoraan vain niille moduleille, jotka sitä tarvitsevat. Kehitä kirjastoja (tietorakenteille ja niiden operaatioille). Ohjelmiston rakenteen ja ohjelmointikielen tulisi tukea määrittelyjä ja abstraktien tietotyyppien esittelyä varten. 23

Arkkitehtuurisuunnitelmat Talon ovet ja ikkunat? (vs. joku muu näkymä.) Arkkitehtuurin suunnitteluprosessi informaation virta ensin (tietovirtakaavio). virran reunamat. Tietovirtakaavio kuvataan ohjelmarakenteeksi. Kontrollihierarkia määritetään jakamalla tekijöihin. Saatua rakennetta hienonnetaan... (oma kurssi näistä, ks. Pressman.) 24

Muunnosten kuvaukset Katselmoi systeemimalli Katselmoi ja hienonna tietovirtakaavioita Tarkista, onko kaaviossa muunnos- vai transaktiopiirteitä (määritelmät, ks. Pressman). Eristä muunnoksen keskus määrittämällä tulevien ja lähtevien virtojen rajat. Tee ensimmäisen asteen tekijöihin jakoa. (ja sen jälkeen toisen... ) Hienonna 1. iter. ohj. rakennetta suunnitteluheuristiikkojen perusteella laadun parantamiseksi. 25

Transaktioiden kuvaukset Kolme ensimmäistä samanlaisia kuin ed. kalvossa. Etsitään transaktiokeskus ja virran piirteet (ks. Pressman) Kuvataan kaavio transaktio prosessointia varten. Jaetaan tekijöihinja kuvataan transaktioiden rakenne. Hienonnetaan 1. iter.... 26

Jälkiprosessoinnin suunnittelu Tarvitaan arkkitehtuurisuunnitelmien osana: prosessointikuvaus kullekin modulille liittymien kuvaukset myös paikalliset ja globaalit tietorakenteet määriteltävä kaikki suunnittelurajoitteet tulee huomioida suunnitelmien katselmointi harkitaan arkkitehtuurisuunnitelmien optimointia (jos tarvetta) 27

Arkkitehtuurisuunnitelmien optimointi Kehitä ja hienonna ohjelman rakennetta miettimättä tehokkuusoptimointeja. Käytä työkaluja tehottomien kohtien löytämiseen. Myöhemmissä iteraatioissa, hitaaksi epäiltyjen modulien kohdalla kehitä algoritmeja toiminnan parantamiseksi. Koodaa työhön sopivalla ohjelmointikielellä. Jos tarvetta, uudelleensuunnittele ja koodaa konekielellä tehokkuuden parantamiseksi. 28

Liittymien suunnittelu ohjelmamodulien välisiä (modulien datatarpeet määräävät pitkälle) ohjelman ja laitteiden (tai muiden ei-ihmisten) välisiä tietokoneen ja ihmisen välisiä 29

HCI -suunnittelusta (myös tästä on omia kurssejansa laitoksella) Suunnittelumalli (tulee ohjelmistosuunnittelijalta). Käyttäjämalli (saattaa tulla myös ohjelmistosuunnittelijalta, mutta myös muualta). Käyttäjäkategorioita aloittelija tiedostava, satunnaiskäyttäjä tiedostava, säännöllinen käyttäjä 30

Tehtävien analysointia ja mallinnusta Määritä tehtävän tavoitteet ja tarkoitukset Kuvaa ne tiettyjen toimenpiteiden sarjaksi Kuinka tuo sarja suoritetaan käyttöliittymässä? Mikä on systeemin tila? (miltä UI näyttää sarjan jälkeen?) Määritä kontrollointimekanismit, laitteet ja toiminnot jotka voivat muuttaa systeemin tilaa. Esitä, kuinka kontrollimekanismit muuttavat systeemin tilaa. Osoita, kuinka käyttäjä tulkitsee systeemin tilan UI:sta saamastaan informaatiosta. 31

Lisää... Vasteajoista Helpeistä (avusteista) Virheilmoituksista Menuista Makroista... UI-suunnittelutyökaluista Suunnitelmien arvioimisesta ja tarkastamisesta (ks. Pressman) 32

Liittymien suunnitteluohjeita Yleisohjeita: Johdonmukaisuus Tarkoituksenmukaista palautetta Varmista kaikki ei-triviaalit tuhoamisoperaatiot Salli useimpien toimien helppo peruutus Vähennä inf. määrää, mitä tarv. muistaa eri toimintojen välillä Etsi tehokkuutta dialogeissa, liikkeissä ja ajatuksissa Virhesietoisuus Luokittele aktiviteetit ja suunnittele näyttö sen mukaan Avusteet ympäristötietoisia yks.kert. verbejä tai lyhyitä -fraaseja komentojen nimeämiseen. 33

Infonäytöt: Näytä vain oleellista tietoa Älä hautaa datalla, käytä havainnollisia datan esitysmuotoja Johdonmukaiset otsakkeet, standardilyhenteet ja tutut värit Visuaalisen ympäristön ylläpidon salliminen (ks. taas) Käyttökelpoiset virheilmoitukset Isot, pienet kirjat, sisennykset, tekstin ryhmittely (ymmärtämisen tueksi) Analogisia kuvia hyväksi, kun ne helpottavat ymmärrystä Käytä saatavilla olevaa näytön aluetta (tehokkaasti, erit. jos useita ikkunoita) 34

Syöttöikkunat: Minimoi käyttäjältä vaadittavat syöttötoimenpiteet Säilytä infonäyttöjen ja syöttöikkunoiden johdonmukaisuus Salli käyttäjän kustomoida syöttötapoja Vuorovaikutuksen tulisi olla joustavaa mutta myös viritetty käyttäjälle mieluisaan moodiin. Deaktivoi komennot, jotka sopimattomia nykyisessä ympäristössä Anna käyttäjän kontrolloida vuorovaikutusta Avusteet Mikki Hiiri -syötteet pois... 35

Toiminnallisuuden suunnittelu Rakenteellinen ohjelmointi. Erilaisia notaatioita, graafisia (vuokaaviot ja laatikkomallit) ja PDL eli pseudokoodi. 36

Olioperustaisista suunnittelumenetelmistä Olioajattelun tulisi näkyä myös muissa vaiheissa: OORA, oo req.a. OOD, oo design OODA, oo dom.a. Vaatii usein evolutionaarisen vaihejakomallin käyttöä. (Kaikkia tarvittavia luokkia harvoin löytää heti alussa.) (Ks. Pressman) 37

Asiakas-palvelin -ohjelmistojen suunnittelusta 38

Reaaliaikasysteemien suunnittelusta 39