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

Samankaltaiset tiedostot
Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistojen mallintaminen, kurssikoe esimerkkivastauksia

Luokkakohtaiset eli stattiset metodit ja attribuutit

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Olioiden yhteistyön mallintaminen

Ohjelmistotekniikan menetelmät, koe

1. Olio-ohjelmointi 1.1

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

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Sisällys. Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö. 8.2

Kurssin aihepiiri: ohjelmistotuotannon alkeita

Mitä on periytyminen?

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Ohjelmistojen mallintaminen Olioiden yhteistyö Harri Laine 1

13/20: Kierrätys kannattaa koodaamisessakin

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Ohjelmistojen suunnittelu

1. Tarkastellaan seuraavaa kaaviota

käyttötapaukset mod. testaus

Ohjelmistojen mallintaminen. Luento 3, 9.11.

Ohjelmistojen mallintaminen. Luento 6,

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

UML- mallinnus: Tilakaavio

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

P e d a c o d e ohjelmointikoulutus verkossa

Ohjelmistojen mallintaminen. Matti Luukkainen

Ohjelmistojen mallintaminen. Luento 2, pe 5.11.

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Good Minton Sulkapalloliiton Kilpailujärjestelmä SEPA: Heuristinen arviointi

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

SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

Toteutusdokumentti. Olutkortisto

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

UML Luokkakaavio 14:41

Kotopro käyttäjän ohje

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

Testaussuunnitelma Labra

<e.g. must, essential, conditional>

Olio-ohjelmointi Javalla

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

SUOMI LIIKKUU KOULULIIKUNTATAPAHTUMIEN ILMOITTAUTUMISJÄRJESTELMÄ

Luokkakaavion laatiminen

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

UML ja luokkien väliset suhteet

Ohjelmistojen mallintaminen, syksy 2011, laskuharjoitus 2

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

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

Analyysi on tulkkaamista

Miten hyväksyn SoleOPSissa opiskelijat omalle opintojakson toteutukselle?

Aalto Yliopisto T Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Ohjelmoinnin perusteet Y Python


Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

19/20: Ikkuna olio-ohjelmoinnin maailmaan

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

Lyhyt oppimäärä sihteerin toimista Korppi-järjestelmässä

OpeOodi Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

Ohjelmisto on selainpohjaisen käyttöliittymän tarjoava tietokantajärjestelmä merikotkien seurantaan WWF:n Merikotka-työryhmän tarpeisiin.

Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

58160 Ohjelmoinnin harjoitustyö

Toteutusvaihe T3 Digi-tv: Edistymisraportti

Hakemistojen sisällöt säilötään linkitetyille listalle.

Uudelleenkäytön jako kahteen

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmistotekniikan menetelmät, kevät 2008

Projektisuunnitelma. (välipalautukseen muokattu versio) Vesiprosessin sekvenssiohjelmointi ja simulointiavusteinen testaus

Ohjelmistojen mallintaminen, kertausta

Luokat ja oliot. Ville Sundberg

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

Valon määrä ratkaisee Aukko

Ohjelmistojen mallintaminen. Luento 4,

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Ohjelmistojen mallintaminen, kesä 2010

2. Olio-ohjelmoinista lyhyesti 2.1

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

Projektisuunnitelma Vesiprosessin sekvenssiohjelmointi ja simulointiavusteinen testaus

Kertaus: yleistys-erikoistus ja perintä

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Ohjelmistojen mallintaminen, kesä 2009

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1

Johdatus sovellussuunnitteluun, s2000, osa5 Helsingin yliopisto;/tktl. Harri Laine 1. Luokkakaavion tarkoitus. Luokkakaavion tarkoitus

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

Avoinamk.fi -portaalin sähköinen asiointi AMK-pääkäyttäjän ohje Sisällysluettelo

A11-02 Infrapunasuodinautomatiikka kameralle

Sähköinen ilmoittautuminen Salibandyliiton tapahtumaan

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

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

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

UML-kielen formalisointi Object-Z:lla

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

Ohjelmointi 1 C#, kevät 2013, 2. tentti

Suvi Junes/Pauliina Munter Tietohallinto/Opetusteknologiapalvelut 2014

Nimi: Opnro: Harjoitustyön suoritus: ( ) syksy 2006 ( ) syksy 2005 ( ) muu, mikä. 1. Selitä seuraavat termit muutamalla virkkeellä ja/tai kaaviolla:

OpeOodi Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

Transkriptio:

Dokumentaatio, osa 1 Tehtävämäärittely Kirjoitetaan lyhyt kuvaus toteutettavasta ohjelmasta. Kuvaus tarkentuu myöhemmin, aluksi dokumentoidaan vain ideat, joiden pohjalta työtä lähdetään tekemään. Kuvaus sisältää muutaman tekstikappaleen pituisen yleiskuvauksen, tyyliin: aihe: ilmoittautumisjärjestelmä Toteutetaan järjestelmä, jonka avulla ylläpidetään tietojenkäsittelylaitoksen kurssitietoja sekä tietoja kursseille ilmoittautuneista opiskelijoista... Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus: käyttäjät: opiskelija ja opetushallinto opiskelijan toiminnot: onnistuu jos salasana ja käyttäjätunnus oikein kaikkien kurssien listaus ilmoittautuminen onnistuu jos kurssi ei ole täynnä ja opiskelija ei ole jo kurssilla omien ilmoittautumisten listaus opetushallinnon toiminnot: onnistuu jos salasana ja käyttäjätunnus oikein uusien kurssien lisäys tietyn kurssin ilmoittautujien listaaminen... Koska molemmilla käyttäjillä on samoja toimintoja, ne kannattaa yhdistää: kaikkien käyttäjien toiminnot:... Kuvauksen ei tarvitse olla kovin pitkä eikä kattava. Kuva siitä, mitä ohjelmistolta halutaan, tulee tarkentumaan koko ajan toteutuksen edetessä. Tämä on osa ketterän kehityksen ideaa! Dokumentaatio, osa 2 Javadoc

Ohjelmakoodi kommentoidaan Javadoc:in avulla. Ks. esim. http://en.wikipedia.org/wiki/javadoc ja http://java.sun.com/j2se/javadoc/writingdoccomments/ Tarkemmat ohjeet JavaDocin käyttöön Ohjelman rakenteen kuvaaminen Ohjelman/suunnitelman rakenne tullaan kuvaamaan tarpeellisella tasolla. Kuvauksessa tulee olla luokkarakenne hahmotelma ydintoiminnallisuuksista käyttöliittymän näkymien välinen navigaatiorakenne Kaksi edellistä esitetään "tuopinalustaan piirrettynä miniuml:na", käyttäliittymän navigaatiorakenne vapaamuotoisena mutta selkeänä kuvan ja tekstin sekoituksena. Koska ohjelman rakenne kasvaa ja muuttuu ajan myötä, käy samoin ohjelman rakenteen kuvaukselle. Tämän takia rakenne hahmotellaan käsin lappusille. Ohjelman lopulliseen dokumentaatioon tehdään luokkarakenteen kuvaus jollakin piirto-ohjelmalla tai käsin. Seuraavassa käydään läpi muutama UML:n perusrakenne, jotka riittävät harjoitustyön dokumentoinnin tarpeisiin. miniuml: Luokkarakenteen kuvaaminen viikko 1: Luokka kuvataan laatikkona jossa on kolme osaa: luokan nimi attribuutit konstruktorit metodit Koska Javadoc kuvaa attribuutit ja metodien nimet, kannattaa useimmiten ne jättää merkitsemättä luokkarakenteen kuvauksessa ja kuvata luokat pelkkinä laatikkoina joissa on luokan nimi. Muutaman toiminnallisuuden kannalta oleellisen metodin voi toki luokkalaatikkoon merkitä. Ensimmäisellä viikolla meille riittää hyvin yksinkertainen luokkarakenteen kuvaus. Jokaisesta luokasta tulee oma laatikko, ja jos luokkien tai luokkien mukaisten olioiden välillä on yhteys, tulee laatikoiden välille viiva. Viivalle voi merkitä mitä yhteys tarkoittaa. Seuraavassa esimerkkinä Ilmo-järjestelmän hyvin yksinkertainen kuvaus. Oletetaan nyt, että opiskelijoita edustaa oma luokka Opiskelija.

viikko 2: Tarkennamme edellisellä viikolla aloitettua ilmo-järjestelmän luokkakaaviota. Huomaamme, että edellisen viikon kuvaan piirretyt yhteydet eivät vastaa täysin koodissa olevia yhteyksiä. Koodissa nimittäin Ilmo-luokan olio ei tunne Käyttäjatietokanta-oliota, siispä niiden välille ei tule yhteyttä. Alla on tarkennettu kuva. Yhteyksiin on nyt lisätty suuntia ja osallistumisrajoitteita.

miniuml: Toiminnallisuuden kuvaaminen Ei riitä, että kuvaamme luokkarakenteen. Luokkarakenteesta ei nimittäin käy millään lailla ilmi miten ohjelman toiminnallisuus on toteutettu. Toiminnallisuudella tarkoitetaan suurinpiirten samaa kuin yllä tehtävämäärittelyssä listattuja ohjelman tarjoamia toimintoja, esimerkiksi ilmottautumisjärjestelmässä kurssille ilmoittautuminen ohjelman alustustoimet Ohjelma toteuttaa toiminnallisuutensa olioidensa välisen yhteistyön avulla. Eri oliot kutsuvat toistensa metodeja siten, että haluttu toiminto saadaan aikaan. Toiminnallisuutta voidaan kuvata UML:n sekvenssikaavion avulla, ks. ohjelmistojen mallintamisen materiaali. Sekvenssikaavioilla kannatta kuvata vain ohjelman tärkeimmät toiminnalisuudet.

Toiminnallisuuden nopea luonnostelu sekvenssikaavioina ennen ohjelmointia on erittäin hyödyllistä, näin voin nopeasti kartoittaa mitä osia toiminnallisuudesta kannattaa laittaa minkäkin olion vastuulle. Miten ja milloin rakennetta ja toiminnallisuutta tulee kuvata? Luokkarakenteen ja toiminnallisuuden kuvaamisen ja ohjelmoinnin tulee edetä käsi kädessä. Ensin suunnitellaan hieman ohjelman rakennetta ja toiminnallisuutta piirtelemällä luonnoksia tuopinalustoille. Sen jälkeen ohjelmoidaan suunnilleen suunnitelman mukaan. Yleensä kuitenkin käy niin, että ohjelmoidessa huomataan, että tuopinalustaan piirretyt suunnitelmat eivät ole kaikin osin järkeviä ja ohjelmoitu toteutus onkin hiukan erilainen. Se ei haittaa. Kun taas suunnitellaan ohjelmaa hiukan pidemmälle, otetaan uusi tuopinalusta ja lähtökohdaksi otetaan toteutuksen nykytilanteen mukainen ohjelman rakenne. Tuopinalustoille ja suttupapereille suunnittelu ja ohjelmointi siis etenevät iteratiivisessa ohjelmiston toteuttamistavassa käsi kädessä. Kun ohjelma on valmis, voi ohjelman rakennetta ja toiminnallisuutta kuvata tarvittaessa tarkemmin, piirto-ohjelmalla tai UML-editorilla piirrettävin kuvin. Liian tarkka kuvaaminen esimerkiksi luokkien suhteen ei ole tarpeen jos ohjelmasta tehty Javadoc ajaa saman asian. Käyttöohje Lopussa kirjoitetaan ohjelmalle lyhyt käyttöohje. Mieti käyttäjää, joka ei tiedä mitään ohjelmastasi!