Ohjelmistojen suunnittelu

Samankaltaiset tiedostot
Ohjelmistotuotanto, suunnittelu Syksy Suunnittelu. Suunnittelun tulos. Suunnitteluprosessin työvaiheet. Suunnitteluprosessi.

6. Suunnittelu. Suunnittelun tulos

Suunnittelun tulos. 6. Suunnittelu. Suunnitteluprosessin työvaiheet. Suunnitteluprosessi. 6.1 Arkkitehtuurisuunnittelu.

2. Ohjelmistotuotantoprosessi

Suunnitteluvaihe prosessissa

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

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

Ohjelmistojen mallintaminen, mallintaminen ja UML

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Tietojärjestelmän osat

Kurssin aihepiiri: ohjelmistotuotannon alkeita

1. Johdanto. Ohjelmistotuotannon piirteitä

1. Johdanto. Ohjelmistotuotannon piirteitä

1. Johdanto. Ohjelmistotuotannon piirteitä. Ohjelmisto ja järjestelmä. Osajärjestelmät ja käyttäjät. Järjestelmän ja ohjelmiston laadinta

1. Johdanto. Ohjelmistotuotannon piirteitä

1. Johdanto. Ohjelmistotuotannon piirteitä. Ohjelmisto ja järjestelmä. Osajärjestelmät ja käyttäjät. Järjestelmän ja ohjelmiston laadinta

UML- mallinnus: Tilakaavio

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Ohjelmistojen mallintaminen. Matti Luukkainen

Ohjelmointitekniikka lyhyesti Survival Kit 1 Evtek KA ELINKAARIMALLEISTA

Ohjelmistotekniikka - Luento 2

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

UML:n yleiskatsaus. UML:n osat:

Ohjelmiston toteutussuunnitelma

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

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

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

Ohjelmistoarkkitehtuurit. Kevät

Hajaantuminen. Juha Taina, Marko Salmenkivi ja Kjell Lemstöm, Ohjelmistotuotanto 30

Juha Taina, Marko Salmenkivi ja Kjell Lemström,

1. Johdanto. Ohjelmistotuotannon piirteitä

Analyysi on tulkkaamista

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

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ohjelmistojen mallintaminen, kesä 2009

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

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

TIE Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

Ohjelmistotekniikan menetelmät, kesä 2008

Ohjelmistoarkkitehtuurit Kevät käytäntöjä

1. Johdanto. Ohjelmistotuotannon piirteitä. Ohjelmisto ja järjestelmä. Osajärjestelmät ja käyttäjät. Järjestelmän ja ohjelmiston laadinta

5. Järjestelmämallit. Mallinnus

Mallinnus. 5. Järjestelmämallit. Abstraktiot. Mallinnuksen etuja. Arkkitehtuurimalli. Yhteysmallit. Ohjelmistotuotanto, järjestelmämallit Kevät 2005

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Yhteenveto. Menettelytavat

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

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Ohjelmistojen mallintaminen, kurssikoe esimerkkivastauksia

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

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

Ohjelmistoarkkitehtuurit. Syksy 2010

Ohjelmistojen mallintaminen, kesä 2010

Ohjelmistoarkkitehtuurit Kevät käytäntöjä

Ohjelemistotuotanto, syksy 1998 /Prosessi Prosessimallit

4. Vaatimusanalyysi. Vaatimusanalyysin tavoitteet

4. Vaatimusmäärittely

6. Suunnittelu. Suunnitteluprosessi

Implisiittiset vaatimukset. 4. Vaatimusmäärittely. Eksplisiittiset vaatimukset. Vaatimusmäärittelyn tavoitteet. Vaatimusten luonne II

Uudelleenkäytön jako kahteen

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

käyttötapaukset mod. testaus

Ohjelmistotekniikan menetelmät, kevät 2008

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Dokumentointi ketterissä menetelmissä

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

2 Ohjelmistoarkkitehtuurien kuvaus

Projektisuunnitelma. Oppimistavoitteiden hallintajärjestelmä harri

Johdantoluento. Ohjelmien ylläpito

Projektityö

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services

1. Johdanto. Ohjelmistotuotannon ongelmia

TOIMINNALLINEN MÄÄRITTELY MS

Bosch-malli. Kolme vaihetta. Termistöä. Ohjelm!toarkkitehtuu"n

Verifioinnin ja validoinnin ero. 7. Verifiointi ja validointi. Verifiointi- ja validointitekniikat. Verifiointi- ja validointitekniikat II

ITK130 Ohjelmistoprosessi

Ohjelmistojen mallintaminen. Luento 2, pe 5.11.

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

Ohjelmistoarkkitehtuurit. Syksy 2008

ohjelman arkkitehtuurista.

Oleelliset vaikeudet OT:ssa 1/2

Projektisuunnitelma. Oppimistavoitteiden hallintajärjestelmä harri

Ohjelmistotekniikan menetelmät, UML

9. Muunneltavuuden hallinta

Ohjelmistotuotanto, vaatimusanalyysi Syksy Vaatimusanalyysi. Implisiittiset vaatimukset. Eksplisiittiset vaatimukset

Luento 12. Jouni Lappalainen, Ilkka Tervonen, additions & editions by Antti Juustila

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

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

1. Johdanto. Ohjelmistojen vaatimusmäärittely. Vaatimusmäärittelyn faktat ja vaihtoehdot. Vaatimusmäärittelyn luonne. Vaatimusmäärittely tänään

Ohjelmistojen mallinnus (OMa) - Johdatus ohjelmistotuotantoon Harri Laine 1

Arkkitehtuurikuvausten kohteet ja kuvaustavat

Tietokantojen suunnittelu, relaatiokantojen perusteita

OT-s200: Prosessimallit

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

HELIA 1 (8) Outi Virkki Tietokantasuunnittelu

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

Transkriptio:

Ohjelmistojen suunnittelu 581259 Ohjelmistotuotanto 154

Ohjelmistojen suunnittelu Software design is a creative activity in which you identify software components and their relationships, based on a customer s requirements. Sommerville 2010 Suunnittelussa päätetään ohjelmiston loogisesta rakenteesta Rakenne kuvataan eri abstraktiotasoilla. Mitä korkeampi abstraktiotaso, sitä selkeämmin näkyy järjestelmän yleiskuva ja sitä vähemmän näkyy yksityiskohtia Korkeimmalla abstraktiotasolla on arkkitehtuurisuunnitelma, matalimmalla on pseudokoodi. 581259 Ohjelmistotuotanto 155

Suunnittelun luonne Suuunnittelu on luovaa toimintaa, jota ei välttämättä kannata rajoittaa liikaa prosesseihin Toisaalta myös selkeästi strukturoituja suunnitteluprosesseja olemassa (mikä ei tietysti tarkoita luovuuden puuttumista) Ei ole helppoa suoraviivaista tapaa suunnitella ohjelmisto. Jokainen suunnittelu on ainutkertainen Suunnittelun lähtökohtana voi käyttää esimerkiksi seuraavan kalvon prosessia 581259 Ohjelmistotuotanto 156

Strukturoitu suunnittelu Perustuu standardoituihin notaatioihin Erilaisten graafisten mallien tuottaminen järjestelmästä Toteutus seuraa luontevasti vähitellen kohti yksityiskohtia jäsentyvästä suunnittelusta Useimmiten suunnittelu ja toteutus osittain rinnakkaisia 581259 Ohjelmistotuotanto 157

Oliopohjainen suunnitteluprosessi Ilmentymä yleisestä suunnitteluprosessista Strukturoitu oliopohjainen suunnitteluprosessi pitää sisällään erilaisten järjestelmää kuvaavien suunnittelumallien kehitystyön UML, esim. pakkaus-, aktiviteetti-, luokka-, olio-, sekvenssi-, kommunikaatio-, tilakaaviot Suunnittelumallien kehittäminen ja ylläpito vaativat paljon työtä. Pienten järjestelmien kohdalla ei välttämättä kustannustehokasta Suunnittelumallit tärkeä kommunikointitapa suurten järjestelmien kehitystyössä, erityisesti kun useita ryhmiä kehittämässä järjestelmää 581259 Ohjelmistotuotanto 158

Kevyt suunnittelu Ketterissä menetelmissä painotetaan suunnitteluprosessin keveyttä ja yksinkertaisuutta Suunnitellaan vain se mikä on aivan välttämätöntä, ei ennakoida liikoja Arkkitehtuurisuunnittelu (Arkkitehtuurisuunnittelun jälkeen) ei juuri erillisiä suunnitteludokumentteja Suunnittelu ja toteutus toisiinsa kietoutuneina, inkrementaalisesti lyhyissä sykleissä 581259 Ohjelmistotuotanto 159

XP ja suunnittelu Ohjelmakoodin pitäminen selkeänä ja yksinkertaisena Refaktorointi Järjestelmän suunnittelu joustavaksi, muutosten mahdollistaminen Painotetaan sitä, että suunnittelukaaviot ovat kommunikoinnin apuvälineitä jos kaaviot eivät palvele kommunikointia, niitä ei pidä käyttää (ja tietysti päinvastoin) Ohjelmakoodin ensisijaisuus myös suunnittelun liittyvän kommunikoinnin välineenä 581259 Ohjelmistotuotanto 160

Arkkitehtuurisuunnittelu Suuret järjestelmät ositetaan aina keskenään yhteistyötä tekeviksi osajärjestelmiksi Arkkitehtuurisuunnittelu: 1. Osajärjestelmien määrittäminen 2. Osajärjestelmien välisen kommunikaation suunnittelu arkkitehtuurityylit Arkkitehtuurisuunnittelun lopputuloksena saadaan järjestelmän arkkitehtuurikuvaus Arkkitehtuurisuunnittelu on linkki määrittely- ja suunnitteluvaiheen välillä Usen toteutaan osin rinnakkain määrittelyvaiheen kanssa 581259 Ohjelmistotuotanto 161

Osajärjestelmät ja ei-toiminnalliset vaatimukset Osajärjestelmiin jako riippuu eitoiminnallisista vaatimuksista: Jos suorituskyky on tärkeää, kannattaa käyttää mahdollisimman pientä lukumäärää laajoja osajärjestelmiä Jos turvallisuus on tärkeää, kannattaa käyttää sisäkkäisiä arkkitehtuureja, joista kaikkein sisimmällä tasolla ovat turvallisuuskriittisimmät toiminnot Jos saatavuus on tärkeää, samat palvelut kannattaa toistaa monessa osajärjestelmässä Jos ylläpidettävyys on tärkeää, kannattaa käyttää suurta määrää pieniä osajärjestelmiä 581259 Ohjelmistotuotanto 162

Arkkitehtuurisuunnitelma Arkkitehtuurisuunnittelun lopputuloksena saadaan järjestelmän arkkitehtuurisuunnitelma koko järjestelmän kuvaus järjestelmästä tehdyt kaaviokuvat selityksineen järjestelmän jako osajärjestelmiin ja osajärjestelmittäin komponentteihin osajärjestelmien välinen yhteydenpito 581259 Ohjelmistotuotanto 163

Osajärjestelmien ositus Arkkitehtuurisuunnittelun jälkeen kukin osajärjestelmä ositetaan moduuleiksi (module). Moduuli on järjestelmän komponentti, joka käyttää muiden moduuleiden palveluja ja tarjoaa muille moduuleille palveluja Moduuli ei ole itsenäinen, kuten osajärjestelmä, vaan tiiviissä yhteistyössä muiden moduulien kanssa toteuttaa osajärjestelmän toiminnot 581259 Ohjelmistotuotanto 164

Rajapintasuunnittelu Rajapintasuunnittelu on ehkä suunnittelun tärkein työvaihe Jokaisen osajärjestelmän tai moduulin rajapinta muihin osajärjestelmiin tai moduuleihin suunnitellaan ja dokumentoidaan yksityiskohtaisesti. Rajapintojen pitää olla sellaiset, että tarjottuja palveluja voidaan käyttää tietämättä niiden toteutuksesta mitään 581259 Ohjelmistotuotanto 165

Rajapintojen määrittely Rajapintojen määrittelyt tulee tehdä yksiselitteisiksi ja ristiriidattomiksi Rajapintakuvauksesta tulee näkyä: Rajapinnan palvelut Kunkin palvelun syötteiden ja tulosteiden tyypit ja arvoalueet Kunkin palvelun kohdalta ehdot, joiden on oltava voimassa ennen palvelun kutsua ja ehdot, jotka palvelu takaa kutsun jälkeen. Rajapinnoissa oikea abstraktiotaso on tärkeä 581259 Ohjelmistotuotanto 166

Oliopohjaisen suunnittelun perustehtävät 1. Järjestelmän ympäristön ja erilaisten käyttötapojen ymmärtäminen Vaatimusten ymmärtäminen 2. Järjestelmäarkkitehtuurin suunnittelu 3. Tärkeimpien olioiden tunnistus Oliot voivat olla eritasoisia osajärjestelmästä palvelun tai toiminnon yksityiskohtaan. 4. Suunnittelumallien kehitys Silta vaatimusmäärittelyn ja toteutuksen välillä, eri abstraktiotason mallit 5. Olioiden rajapintojen määrittely Rajapintasuunnittelua 581259 Ohjelmistotuotanto 167

Vaiheet eivät ole käytännössä suoraviivaisesti peräkkäisiä, vaan vaikuttavat toisiinsa Käytännössä ongelmia tulee esiin eri vaiheissa, jolloin on syytä palata päivittämään edellisiä vaiheita Luova prosessi: hahmotellaan ratkaisuja ja tarkennetaan niitä kun lisää informaatiota on käytettävissä 581259 Ohjelmistotuotanto 168

Olioluokkien määrittäminen Usein vaikea osa oliopohjaista suunnitteluprosessia, johon ei ole olemassa suoraviivaisia toimintaohjeita Iteratiivinen prosessi Sovellusalueen käsitteistö luokkarakenteen mallina Skenaariot: kunkin skenaarion analysoiminen ja siihen liittyvien toimintojen tarkentaminen olioiksi, attribuuteiksi ja metodeiksi 581259 Ohjelmistotuotanto 169