TIE Ohjelmistojen suunnittelu

Samankaltaiset tiedostot
TIE Ohjelmistojen suunnittelu

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

TIE Ohjelmistojen suunnittelu

Uudelleenkäytön jako kahteen

Yhteydelle voi antaa nimen kumpaankin suuntaan Sille ei tarvise antaa lainkaan nimeä Yhteysnimen asemasta tai lisäksi voidaan käyttää roolinimiä

TIE Ohjelmistojen suunnittelu

Ohjelmistojen mallintaminen. Luento 11, 7.12.

TIE Ohjelmistojen suunnittelu

Johdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet

Johdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet

3. Käsiteanalyysi ja käsitekaavio

Ohjelmistojen mallintaminen, mallintaminen ja UML

13/20: Kierrätys kannattaa koodaamisessakin

SUBSTANTIIVIT 1/6. juttu. joukkue. vaali. kaupunki. syy. alku. kokous. asukas. tapaus. kysymys. lapsi. kauppa. pankki. miljoona. keskiviikko.

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

TIE Ohjelmistojen suunnittelu. Luento 8..9: moniperintä

TIE Ohjelmistojen suunnittelu. Luento 2: protot sun muut

Muutamia peruskäsitteitä

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Ohjelmistojen mallintaminen, kertausta

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

19/20: Ikkuna olio-ohjelmoinnin maailmaan

Suunnitteluvaihe prosessissa

Ohjelmistotekniikan menetelmät, kesä 2008

Pelivaihtoehtoja. Enemmän vaihtelua peliin saa käyttämällä erikoislaattoja. Jännittävimmillään Alfapet on, kun miinusruudut ovat mukana pelissä!

Kertaus: yleistys-erikoistus ja perintä

TIE Ohjelmistojen suunnittelu. Luento 2: protot sun muut

Opiskelija osaa määritellä ohjelmiston tiedot ja toiminnot, suunnitella ohjelmiston rakenteen ja laatia ohjelmiston teknisen spesifikaation.

Kahoot - kyselytyökalu

Antitammirobotti. Antti Meriläinen Martin Pärtel 29. toukokuuta 2009

Rajapinnat ja olioiden välittäminen

TIE Ohjelmistojen testaus 2015 Harjoitustyö Vaiheet 1 ja 2. Antti Jääskeläinen Matti Vuori

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

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö

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

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

TIE Ohjelmistojen suunnittelu

TIE Ohjelmistojen suunnittelu

Visual Case 2. Miika Kasnio (C9767)

TIE Ohjelmistojen suunnittelu

OHJ-2710 Peliohjelmointi. Syksy 2012 Timo Kellomäki

Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia.

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

Suvi Remes Miika Alonen Petri Mustajoki Totti Tuhkanen

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

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin

Opetuksen suunnittelu

Ohjelmistojen mallintaminen. Luento 4,

Tarjolla tänää: Ohjelmiston toteutuksesta. Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit. Testilähtöinen kehittäminen JOT2007. Uudelleenrakentaminen

ProPilkki 2. yhteistyössä tapahtumassa Virtuaalinen pilkkiviikko järjestäjänä Suomen Vapaa-ajankalastajien Keskusjärjestö ry

Ylläpito. Ylläpidon lajeja

Kurssin aihepiiri: ohjelmistotuotannon alkeita

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ohjelmistojen mallintaminen, kesä 2010

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

UML:n yleiskatsaus. UML:n osat:

Ohjelmistotekniikan menetelmät, kevät 2008

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Skenaario 1: Paavo kokouksessa

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Luokkamalli LUOKKAKAAVIO. Tämän osan sisältö. Luokkamalli. Luokka ja olio. Luokkakaavio (class diagram)

10 teesiä verkko-opetuksen suunnittelusta. Leena Hiltunen Tutkijatohtori Tietotekniikan Aineenopettajankoulutus

T Ohjelmistojen määrittely- ja suunnittelumenetelmät Harjoitustyöraportti TNT - Tarkistetaan Ne Tentit Analyysimalli

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

Älysopimusten kehittäminen. Sopimus suuntautunut ohjelmointi

Harjoitussuunnitelma viikko 17 Kärkipotku I

Määrittelyvaihe. Projektinhallinta

Kurssin sisältö. Kurssilla vähemmän. Johdatus ohjelmistotekniikkaan. Mitä on ohjelmistotekniikka? Miten ohjelmistoja suunnitellaan ja toteutetaan?

Board Game Lab. 7 Pelimekaniikat ja -systeemit. Materiaalit CC-BY 4.0 Mikko Lampi

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

Harjoitussuunnitelma viikko 18 Kärkipotku II

Liigan taulut ja attribuutit

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

TIEDONHALLINTA - SYKSY Luento 7. Pasi Ranne /10/17 Helsinki Metropolia University of Applied Sciences

17/20: Keittokirja IV

Ohjelmistojen suunnittelu

PLA Mobiiliohjelmointi. Mika Saari

Ohjelmiston testaus ja laatu. Testaustasot

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

C++-harjoitustyön raportti: Musta maija

PLA Mobiiliohjelmointi. Mika Saari

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

UML-kielen formalisointi Object-Z:lla

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

UML Luokkakaavio 14:41

PELIAIKASEURANTAOHJELMAN KÄYTTÖOHJE

UML ja luokkien väliset suhteet

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

T Ohjelmistojen määrittely- ja suunnittelumenetelmät

Larry Gregorwich Ristikatu 2-4 A Nokia

Kuvio 1 Tasapaino (Equilibrium) on suljettujen ja avointen tietorakenteiden dynaaminen suhde

812341A Olio-ohjelmointi, I Johdanto

Harjoitussuunnitelma viikko 15 Sisäsyrjäpotku I

Valmistelut: Aseta kartiot numerojärjestykseen pienimmästä suurimpaan (alkeisopiskelu) tai sekalaiseen järjestykseen (pidemmälle edenneet oppilaat).

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

Transkriptio:

TIE-20200 Ohjelmistojen suunnittelu Luento 5: suunnittelua Samuel Lahtinen TIE-20200 Samuel Lahtinen 1

Ajankohtaista Harjoitustyö Protosessioita tämän viikon lopulla, ensi viikolla & sitä seuraavalla Jotain koodia saatavilla, lisää tulossa tänään Samuel poissa ensi viikolla, Matti Rintala lomittaa luennot Viikkoharkoissa tällä viikolla Qt Quick/QML jatkot, QML:n ja C++:n yhteensovittamista Ensi viikon viikkoharkoissa Qt ja Widget-juttuja, voi kurkata esimerkkinä, jos toteuttamassa harjoitustyötä widgetpuolen jutuilla

Ohjelmassa tänään Ohjelmistojen suunnittelujuttuja MVVM ja QML-c++-komboa Hitunen UML-asioita

Ohjelmistojen suunnittelusta Mitkä asiat vaikuttavat ohjelmistojen suunnitteluun? Tekijät, osaaminen Toteutusympäristö Valittu ekosysteemi Avoimen lähdekoodin käyttö/avoimen lähdekoodin tuottaminen Työkalut, Kieli/paradigma Aikataulut, kulttuuri, taustat, koulutus, henkilökohtaiset mieltymykset jne.

Korkean tason suunnittelu Mikälainen korkeamman tason rakenne ohjelmalle tulee? Tehdäänkö jonkun olemassa olevan ympäristön päälle, käyttöjärjestelmät jne. Laitteistoläheisyys yms. minkälaisia abstraktioita käytetään? Tulevatko valmiina vai pitääkö toteuttaa MVC/jne., kerroksittainen rakenne, viestien lähettelyä jne. valinta ohjaa varsinaista ohjelman jatkosuunnittelua Usein suunnittelu tehdään useassa vaiheessa, korkean tason rakenne ja siihen liittyvät päätökset ja varsinainen toteutusläheisempi suunnittelu, rajapintojen suunnittelu, lopulta toteuttaminen Eri vaiheet tuottavat eri tason kuvauksia järjestelmästä ja eri tason dokumentaatiota

Miksi pitää kertoa miksi jotain on valittu?

Kerro miksi, ei pelkästään mitä Dokumentoi myös miksi tekniikka, lähestymistapa jne. on valittu! Miksi käytetään vaikkapa tiettyä versiota, tiettyä tietokantaa, jossain on tietynlainen tarkkailijaratkaisu jne.

Oliosuunnittelu Oliosuunnittelu, olio-pohjainen lähestymistapa Olio-ohjelmointi ja olio-jotain sanoina poissa muodista, eivät tihku tällä hetkellä erotiikkaa sun muuta Ei kuitenkaan kuollut ja kuopattu, vaan osa hyvää ohjelmistojen toteutuksen perustaa Hyvä väline abstraktioiden etsimiseen Vaarana perinnästä innostuminen Luokkatasoa ja siihen liittyviä suhteita laajempien asioiden hahmottelu ja suunnittelu haastavaa

Oliosuunnittelu Tavoitteena löytää oliot ja niiden vastuualueet, mitä joku olio tekee, tarjoaa muille olioille, mitä yhteyksiä sillä on muualle? Suunnitteluvaiheessa tarkat tietotyypit jne. eivät ole olennaisia

Mallintaminen olioilla TIE-20200 Samuel Lahtinen

Oliosuunnittelun vaiheita 1. Tunnistetaan/löydetään järjestelmän komponentit Substantiivien etsiminen (tarjoaa lähtökohdan) Määrittelystä Järjestelmän aihepiiristä 2. Määrittellään komponenttien vastuut (~verbit abstraktissa spesifikaatiossa) 3. Määritellään komponenttien väliset riippuvuudet, vastuiden kautta (mitä tarvitaan, että voidaan tarjota vastuiden mukainen toiminta) 4. Määritellään komponenttien todelliset rajapinnat toteutus, testaus

Luokkakaavioista Dependency/riippuvuus: heikoin suhde (esim. A käyttää B:tä jossakin jäsenfunktiossaan) Kooste(aggregation): Esimerkiksi joukkue koostuu pelaajista (tietty minimi- ja maksimimäärä, pelaaja voi vaihtaa joukkueesta toiseen. Muodoste (composition): rakennus-kerros, jäsenoliot (esim. henkilö ja syntymäaika) Koosteet, muodosteet, assosiaatiot voivat olla yksisuuntaisia tai kaksisuuntaisia.

Assosiaatiot ja nuolet 13

Lukumääräsuhteet Assosiaatiolla, koosteilla, muodostumisilla lukumääräsuhteet Kiinteä lukumääräsuhde kertoo vakiona pysyvästä suhteesta (esim. shakkilaudan ruudut, pelaajien määrä shakissa) Vaihtelevat lukumääräsuhteet, vaihteluväli esim. joukkueella pitää olla 11-20 pelaajaa. Pelaaja voi olla joko ilman joukkuetta tai kuulua yhteen joukkueeseen. Assosiaatioilla voi olla nimi Assosiaation päähän voi liittyä roolinimi

Mitä vikaa esimerkkikuvassa? TIE-20200 Samuel Lahtinen http://www.jot.fm/issues/issue_2004_11/column5/

tapahtumasekvenssikaaviot TIE-20200 Samuel Lahtinen

Esimerkki: Tehtävänänne on suunnitella alla kuvattu seikkailupeli käyttäen oliosuunnittelun jaloja periaatteita. Alla firmanne pomon yksityiskohtainen kuvaus pelin rakenteesta: Peli ois niinku seikkailupeli, jossa näkyis yläviistosta ku dynaaminen duo Batman ja Robin menee Kotham-sitissä. Ne niinku menis siellä kaupungissa taloihin joissa olisi sitten erilaisia huoneita ja käytäviä. Pelissä vois valita ohjaako Robinia vai Pätmäniä. Niillä sankareilla vois olla kaikkee siistiä lepakkokamaa: ajoneuvoja kuten lepakkoauto ja varusteita kuten lepakkokalsarit ja lepakkobumerangi. Sitten ois tietysti pahiksia kuten Jokeri, Hjallis ja niitten kätyrit. Pahiksillakin vois olla aseita. Aseilla voi joko kumauttaa tai tai sit tehdä pitkän matkan hyökkäyksiä. Otuksilla ja sankareilla olis näkökenttä, jonka sisällä ne reagois asioihin/jonka sisällä olevat jutut näkyis ruudulla. Batman ja Robin, Dynaaminen duo Pahiksia

Varsinainen tehtävä Kepap-keisari Pelin tavoitteena on rakentaa menestyvä pikaruokaimperiumi, joka nousee kaupungin kauneimmaksi ja komeimmaksi pitsa-kebab-ravintolaksi. Peliä voi pelata joko yksinpelinä, tekoälypelaajaa vastaan kisaten tai toista ihmispelaajaa vastaan. Pelimaailmana toimii kaupunkisimulaatio. Virtuaalisen kaupungin erilaisia rakennuksia ja paikkoja kansoittavat autenttisesti käyttäytyvät virtuaali-ihmiset. Kebab-ravintolat kisaavat hinnan ja tunnettavuuden avulla asiakkaista. Tunnettavuusarvo koskee koko ravintolaketjua, eli saman pelaajan kaikkia ravintoloita. Tätä voi kasvattaa erilaisten markkinointitempausten avulla. Pelaaja voi ostaa uusia ravintoloita, hankkia raaka-aineita ravintolan tuottoksiin, palkata työntekijöitä, kiertää veroja, mainostaa eri tavoin yms. Erilaisia ruutuja: ravintolat, puistot, kaupat, asuinrakennukset jne. Niissä erilaista toiminnallisuutta sen mukaan onko asukas ruudussa, poistumassa siitä tai tulossa ruutuun. (Esimerkki: Asukkaat: erilaisia asukkaita, jotka tekevät pyrkivät tekemään eri asioita. (duunareita, bilettäjiä, verotarkastajia, terveystarkastajia, koodareita jne.) Esim. duunari, pyrkii tekemään käymään viikot töissä, lounaalla parhaassa työpaikan läheltä löytyvässä ruokapaikassa ja viikonloppuna anniskeluravintolassa ja sen jälkeen kebabilla. Suunnittele pelin korkean tason rakenne ja mieti, miten toteuttaisit erilaisten ruutujen, asukkaiden jne. toiminnan.

Ohjeistus Hae ensin järjestelmän oliot Mieti tämän jälkeen olioille vastuualueita Karsi pois olioista ne, joille ei tule varsinaista toiminnallisuutta, jätä ne abstraktioiksi (ovat myös hyödyllisiä) Tarviiko kyseinen oli jotain muita olioita toiminnoissan/vastuissaan? Jos tarvii, dokumentoi vaaditut yhteydet & miksi. Jos tarvittavaa palvelua ei ole, lisää sellainen tai luo tarvittaessa uusia olioita. Konkretisointi alustavaksi luokkakaavioksi Aikataulutusta 20min olioiden hakua, 10min kaaviota Loppuun läpikäyntiä

Yhteenveto Opittiin keinoja suunnittelun alkuvaiheeseen Opittiin keinoja siirtymiseen suunnittelusta kohti toteutusta (malli) Päätösten dokumentointi (miksi?) TIE-20200 Samuel Lahtinen 20