OHJ-3010 Ohjelmistotuotannon perusteet, kesä 2012

Samankaltaiset tiedostot
Ohjelmistojen kehittämisessä tarvitaan kaaviotekniikoita

Tietokantojen suunnittelu, relaatiokantojen perusteita

Muutamia peruskäsitteitä

Joku hauska otu-aiheinen kuva (no ei oo pakko olla hauska) OHJ-3010 Ohjelmistotuotannon perusteet, kesä 2012

Sisällys. Luokkakaaviot 2

Kaaviotekniikoista (erityisesti UML)

Johdanto. Olio (Object) Luokka (Class) Olion kuvaaminen

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Jouni Huotari & Ari Hovi. Käsitemallinnuksesta relaatiokantaan KÄSITEMALLI. LOOGINEN MALLI: tietomalli valittu. FYYSINEN MALLI: DBMS valittu

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

OHJ-3010 Ohjelmistotuotannon perusteet, kesä 2012

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

UML Luokkakaavio 14:41

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

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

1. Olio-ohjelmointi 1.1

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

Ohjelmistojen mallintaminen, mallintaminen ja UML

UML ja luokkien väliset suhteet

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Ohjelmistojen mallintaminen Olioiden yhteistyö Harri Laine 1

TIE Ohjelmistojen suunnittelu

Ohjelmoinnin perusteet Y Python

3. Käsiteanalyysi ja käsitekaavio

Kaaviotekniikoista (erityisesti UML)

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Luento 3 Tietokannan tietosisällön suunnittelu

Luokka- ja oliokaaviot

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

Ohjelmistojen mallintaminen, kesä 2009

Olioiden yhteistyön mallintaminen

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

GroupDesk Toiminnallinen määrittely

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

Olio-ohjelmointi Javalla

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Javan perusteita. Janne Käki

2. Olio-ohjelmoinnin perusteita 2.1

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

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

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

Ohjelmistojen mallintaminen, kesä 2010

Ohjelmistojen mallintaminen. Luento 3, 9.11.

Ohjelmistotekniikan menetelmät, kesä 2008

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

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

Sisällys. 19. Unified Modeling Language (UML) Johdanto. Johdanto. Johdanto. Luokkakaavio:

UML - unified modeling language

HELIA 1 (20) Outi Virkki Tiedonhallinta

Rajapinta (interface)

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

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

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1

Olioperustaisuus (object oriented)

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Johdatus sovellussuunnitteluun, s99, osa2 Helsingin yliopisto;/tktl Harri Laine 1. Olioperustaisuus (object oriented)

Nimi: Henkilötunnus: {id} {+id}

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

Ohjelmoinnin perusteet Y Python

Kaaviotekniikoista (erityisesti UML) (ajan riittäessä pikkasen projekteista)

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

Ohjelmistotekniikan menetelmät, kevät 2008

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Vastuuopettaja. Kurssiesite Olio-ohjelmoinnin perusteet Kevät Olio-ohjelmoinnin perusteet (5 op) Tavoitteena

MagicDraw-pikaohje (VH5)

Mitä on periytyminen?

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

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

TyontekijaOhjelma. +main() (käyttää) + = public - = private

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

UML:n yleiskatsaus. UML:n osat:

HELIA 1 (12) Outi Virkki Tiedonhallinta

9. Periytyminen Javassa 9.1

Ohjelmistotekniikan menetelmät

UML- mallinnus: Tilakaavio

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Ohjelmistotekniikan menetelmät

Antti-Jussi Lakanen Ohjelmointi 1, C# / kevät 2011

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

2. Olio-ohjelmoinista lyhyesti 2.1

Olio-ohjelmointi Johdanto olio-ohjelmointiin

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Ohjelmoinnin peruskurssi Y1

Kertaus: yleistys-erikoistus ja perintä

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

KOHDELUOKAN MÄÄRITTELY

Mikä yhteyssuhde on?

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

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

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

TIE Ohjelmistojen suunnittelu

Paikkatiedon mallinnus Dokumentoinnin ymmärtäminen. Lassi Lehto

Ohjelmistojen mallintaminen

18. Abstraktit tietotyypit 18.1

Transkriptio:

OHJ-300 Ohjelmistotuotannon perust eet, kesäkurssi 202 OHJ-300 Ohjelmistotuotannon perusteet, kesä 202 5.06.2

Ajankoht aist a kurssilla - Asiakasvaatimusten dedis meni... - Torstaina 4.6.202 ei harjoituksia: valmistautumista asiakastapaamisiin - Kaikilla ryhmillä varattuna aika asiakastapaamisia varten ensi viikon tiistailta 9.6.202 - Seminaariaiheet listalla, varauksia voi taas tehdä - Kysyttävää? OHJ-300 Ohjelmistotuotannon perusteet, kesä 202 5.06.2

Päivän ohjelma - Mythical Man Month: jos joku olisi tällä kertaa lukenut artikkelin ;) - Case VR - Luokkakaaviot - Asiakastapaamiset: ohjeistusta OHJ-300 Ohjelmistotuotannon perusteet, kesä 202 5.06.2

Mythical Man Month OHJ-300 Ohjelmistotuotannon perusteet, kesä 202 5.06.2

Mythical Man Month 975 - Projektin aika-arvio ylittyy usein. - Arviointitekniikat ovat epätarkkoja ja huonoja. - Henkilötyökuukausi ei ole hyvä mitta projektin koolle. - Ohjelmoijien optimismi. - Testaukseen ei varata riittävästi aikaa. - Henkilöstön lisääminen myöhässä olevaan projektiin myöhästyttää sitä lisää. - Tutkimustuloksia ja tilastoja tulisi julkaista (Nykyään alan tutkimus on melko vilkasta...) - Jos aikataulua joudutaan muuttamaan, muutetaan sitä kerralla riittävästi. OHJ-300 Ohjelmistotuotannon perusteet, kesä 202 5.06.2

Mythical Man Month 975 - Projektiin kuluva aika ei mene suhteessa sen kokoon. - Vain 50% työajasta käytetään oikeasti projektia eteenpäin vieviin asioihin. - Ohjelmoijen tuottavuus vaihtelee suuresti ohjelman monimutkaisuuden mukaan. - Korkeamman tason ohjelmointikielillä voidaan saavuttaa merkittävästi parempi tuottavuus. - Myöhästyminen johtuu pikkutekijöiden summasta. - Aikataulun pitäminen tarkasti määritettyjen välietappien kanssa on tärkeää. - Kannattaa laatia kriitisen polun kaavio. - Projektin johtajan rooli ja suhtautuminen alempiin johtajiin on tärkeää. - Kannattaa työskennellä koko ajan hieman etuajassa, kompensoiden väistämättömiä pieniä myöhästymisiä OHJ-300 Ohjelmistotuotannon perusteet, kesä 202 5.06.2

Case: VR Kotitehtävän läpikäynti ja keskustelua Käytettävyysarvio: http://www.userpoint.fi/reports/vr_verkkokauppa_kaytettavyysarvio.php OHJ-300 Ohjelmistotuotannon perusteet, kesä 202 5.06.2

Luokkakaaviot (Ilkka Haikalan kalvosettiä hyödyntäen) OHJ-300 Ohjelmistotuotannon perusteet, kesä 202 5.06.2

Luokka (käsite, kohde) ja yhteys cd Asiakas luokka merkkiarvo attribuutit nimi osoite uusi Asiakas tekee yhteys 0..* Tilaus {versio=.0} tilaatuote() lukumääräsuhde operaatiot Olio? OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 5.06.2

Oliot, lukumääräsuht eet ahto simakuutio : asiakas tilaus : tilaus tilaus 2 : tilaus teemu teekkari : asiakas tilaus 3 : tilaus outi opiskelija : asiakas Tavallisimmat lukumääräsuhteet: yksi (..) 0.. valinnainen..* vähintään * monta OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 5.06.2

Navigointisuunta, lukusuunta, assosiaat ioluokka navigointisuunta lukusuunta Opiskelija nimi op.nro osoite osallistuu..* 0..* kurssi kurssitunnus periodit lukukausi <kuvaa 0..* opintojakso kuvaus ilmoittaudu() 0..* suoritus kuuluu 0..* tentti 0..* luennoi 0.. opettaja nimi osoite henkilönro 0..* suoritus arvosana ov-määrä pvm assosiatioluokka UML 2.x navigointi Undefined Navigable direction Non-navigable direction OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 5.06.2

Muodost uminen ja koost uminen muodoste (composition) kooste (aggregation) yritys osasto 0..*..*..* henkilö assosiaation erikoistapauksia OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 5.06.2

Periyttäm inen, yleistäm inen, erikoistam inen tilinro saldo tili otto() pano() saldokysely() tili tilinro saldo otto() pano() saldokysely() {xor} 0.. luotollinen tili luottoraja 0.. käyttötili luotollinen tili luottoraja käyttötili otto() otto() rajoite TAI: tili tilinro saldo otto() pano() saldokysely() luotollinen tili luottoraja käyttötili otto() OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 5.06.2

Periytt äminen erikoistaminen Korttikasa sijaintipöydällä lisääpäälle() otaalta() otapäältä() 0.. 0..* Kortti arvo maa kuvapuolinäkyvissä käännä() yleistäminen Pöytäpakka käännäpäältä() otaalta() Käsipakka sekoita() Käsi korttejaaluksi lajittele() OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 5.06.2

Yhteenveto yhteyksistä Heikko riippuvuus (esim. kutsu) Parser Scanner Yhteys, assosiaatio Person owns Car Muodoste (composition) Tail Cat Kooste (aggregation) Workstation..* Network olioiden välillä Yleistys, Periytyminen (generalization) Totetutus (realization) Sisäinen luokka (nested class) Car Car nestedclass Vehicle <<interface>> Vehicle MyClass luokkien välillä OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 5.06.2

Kaavioiden käyttötavoista - Kaavioita voidaan käyttää (mm.) esitutkimuksessa, määrittelyssä ja suunnittelussa. Esitutkimus ja määrittely: sovellusalueen käsitteet (domain object model), järjestelmän rajaus, analysis object model, järjestelmän tietosisällön määrittely (käsitekaavio, conceptual model), usein myös tietokannan rakenne. Suunnittelu: ohjelman rakenne (design object model), tietokannan rakenne (esimerkiksi relaatiokannan graafinen esitys). Kaavio dokumentoi "sanaston", jolla asioista voi keskustella. - Kaavio kertoo, millaiset tilanteet ovat mahdollisia. - Kaavio ohjaa kysymään oikeita kysymyksiä. - Voidaan käyttää (rajoitetusti) koodin generointiin (luokkamäärittelyt, tietokannan luonti). - Voidaan käyttää takaisinmallinnukseen (reverse engineering). OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 5.06.2

Kaavioiden ilmaisuvoimast a - Kaikkien sallittujen tilanteiden on oltava kaaviossa mukana. - Kaikkia rajoituksia ei aina pysty ilmaisemaan => Lisätään rajoitteita ja kommentteja. - Kaavioita voi testata hakemalla siitä vastauksia kysymyksiin ja piirtelemällä kuvia esimerkkitilanteista. - Mahtavatkohan asiakkaat ymmärtää kaavioita? OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 5.06.2

Esimerkki ilmaisuvoimasta henkilö nimi osoite puh 0..* vakanssi 0..* yritys 0.. pomo esimies * alainen Rooli Kysymys : missä firmoissa A.S. on töissä? Kysymys 2: kuka on T.T:n esimies, kun hän on Aikonilla hommissa? Kysymys 3: mikä on T T:n esimiehen titteli kohdan 2 kysymyksessä. OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 5.06.2

Sivuhyppäys: ohjelmistojen oliokeskeisyys (OO, Object Orientat ion) - Oliomenetelmät ovat 980-luvun loppupuolelta lähtien vallanneet alaa ja ovat nyt valtavirta -- toisaalta ohjelmistot kehitetään käytännössä useimmiten ilman sen juhlallisempia menetelmiä. - Perusajatuksena on sovellusalueen mallintaminen ohjelmassa luomalla ohjelmaan todellisuutta vastaavat oliot (tilaus, kuormaauto, anturi, jne.) luokittelu (abstraktiot) olioiden väliset yhteydet olioiden koostuminen toisista olioista - OOA: Object Oriented Analysis, oliomäärittely. - OOD: Object Oriented Design, oliosuunnittelu - OOP: Object Oriented Programming, olio-ohjelmointi. - Oleellisinta oliokeskeisyydessä on ajattelutapa, ei toteutustekniikka (C, C++ -luokka, J2EE,.NET, COM-komponentti, Java-papu jne ). OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 5.06.2

ohjelmist ojen oliokeskeisyys - Oliokeskeisessä ajattelussa lähes mitä hyvänsä voi ajatella oliona: bitti, merkki, merkkijono, kokonaisluku, tiedosto, palvelin, kuorma-auto, pankkiyhteys, varasto, pankkitili - Oliolla on tila olion muisti tila voi koostua toisista olioista, esimerkiksi pvm voi koostua päivästä, kuukaudesta ja vuodesta olion tila on kapseloitu olion sisälle: sitä voi kysellä oliolta ja sitä voi muuttaa kutsumalla olion metodeita - Oliolla on rajapinta joukko toimintoja, joilla oliota hallitaan, operaatiot, julkiset jäsenfunktiot, palvelut, metodit... - Oliokeskeinen ohjelma koostuu joukosta keskenään kommunikoivia oliota. Oliot kommunikoivat lähettämällä toisilleen sanomia, ts. kutsumalla toistensa rajapintojen määrittelemiä. - Luokka: oliot, joilla on sama käyttäytyminen (metodit) ja samat attribuutit, ovat instansseja eli ilmentymiä samasta olioluokasta. OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 5.06.2

Kaavioiden laat iminen: Luokat - Luokan jäsenillä on samat attribuutit ja sama käyttäytyminen (metodit). Tyypillisiä luokkia Konseptuaaliset luokat: sovellusalueen käsitteet (toinen tapa sanoa lähes sama: käsitteet, jotka ovat mukana jokaisessa ajateltavissa olevassa ratkaisussa) itse keksityt metaforat yms, pure fabrication : luokat, jotka keksitään tyhjästä helpottamaan keskustelua sovelluksesta (määrittely- tai suunnittelutasolla) - Luokkajako perustuu pysyviin ominaisuuksiin, ei esimerkiksi olion väliaikaiseen tilaan. - Toiminnallisuuden jakaminen: ei mahtiluokkia (God class), jotka "osaavat" ja "tietävät" kaiken (muut luokat toimivat vain tiedon säilytyspaikkoina). OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 5.06.2

Kaavioiden laat iminen: Luokat Metodit saantimetodit (accessors) palauttavat tietoa olion tilasta muuttajametodit (mutators) muuttavat olion tilaa perussääntö: laita metodit sinne, missä tietokin on Attribuutit primitiivityypit esitetään attribuutteina abstraktit tietotyypit ja joskus muutkin oliot voivat esiintyä myös attribuutteina (vrt. muodoste ) assosiaatiot toteuttavia attribuutteja ei yleensä esitetä attribuutteina kaavioissa Ei toistuvia kenttiä Ei tarpeetonta redundanssia Ei puuttuvia kenttiä Ei turhia luokkia OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 5.06.2

Kaavioiden laat iminen: Yht eydet Olion A ja B voi yhdistää esimerkiksi seuraavanlainen suhde A on osa tai kuuluu B:n A sisältää tai omistaa B:n A kuvaa B:n A kommunikoi B:n kanssa A on tapahtuma, joka liittyy B:n A on fyysisesti B:n vieressä A käyttää B:tä A hallinnoi B:tä... Minimoi yhteydet luokkien välillä, ei redundantteja yhteyksiä (ks. opiskelijarekisteri). need-to-know -periaate: jos olio A tarvitsee toiminnassan oliota B, siihen on päästävä jotenkin käsiksi, eli A:lla on oltava näkyvyys (visibility) olioon B Assosiaatiot kuvaavat yleensä tilannetta, jossa näkyvyys on pysyväisluontoista, siis koko ajan olemassa Muissa tapauksissa käytetään riippuvuusnuolia, esim. olio B välitetään parametrina olion A operaatiolle olio B on väliaikainen, A:n metodi luo olion, käyttää sitä ja tuhoaa sen lopuksi Täysin staattisessa tilanteessa, esimerkiksi globaali objekti, jota kaikki käyttävät, yhteys jätetään usein kokonaan pois OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 5.06.2

Personoit u opiskelijaportaali POP OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 5.06.2

Sovellusmoot t ori OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 5.06.2

5.06.2 OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 +ScanImages() +ReadImages() +SetImage() +CloseControl() -SaveFormTemplate() -RecognizeFormFields() -ShowNextInvoice() -ChangeCtrlSize() escancontrol +StartListening() +EndListening() -GetInstallPath() -CreateDirectories() -ImageScanned() -AccountsRecognized() -RectObjectsRecognized() -PDFCreated() -CleanFolders() -ScannedFilesWatcher -RecognizedFilesWatcher -PDFFilesWatcher DirectoryListener +FitImageToCtrl() +SetImageToCtrlWidth() +SetGrabMode() +SetDrawMode() +DeleteImage() +ZoomOut() +ZoomIn() +UpdateImage() +SwapDimensions() +ResetView() +NextPage() +PreviousPage() +SetSelectedPage() +GetSelectedPage() +OnMouseDown() +OnMouseMove() +OnMouseUp() +SetCursor() +RedrawAll() -FirstPage -LastPage -GrabMode -DrawMode -ModifyMode -MousePosStart -MousePosEnd -CurrentRectangle -Image CustomPictureBox +ReadFile() +ReadRectObjects() +ReadAccounts() +ReadBarcode() +WriteFile() +DeleteFile() +WriteLog() -LogFile FileOperations +DeletePage() +RotatePage() -TiffEncoderParams FrameConversionTool +CreateRectangle() +ModifyRectangle() +ConvertCoordinates() +DrawRectangle() RectangleDrawMath +SetInvoiceImagePath() +GetInvoiceImagePath() +SetInvoiceRectObjects() +GetInvoiceRectObjects() +SetInvoiceAccounts() +GetInvoiceAccounts() +SetInvoiceBarcode() +GetInvoiceBarcode() -GetReferenceNumberSequence() -Accounts -BarcodeData -ImageFile : string Invoice +SetStatusBarText() +StartProgressing() +RunOnce() +StopProcessing() StatusBarTool +FormatDate() +FormatAmountOfMoney() +FormatReferenceNumber() -RemoveChars() -ConvertCharToDigit() -OrderDate() -CorrectPunctuation() RecognitionHelper +CreateDocument() +AppendElement() +AppendValueNode() +ReadNodeValue() +IsSet() +ReadRectNode() +CreateRectNode() +CreateAttribute() +NewRectObjectFromXml() +ConvertRectObjectFromXml() +ConvertRectObjectToXml() XMLConverter -FieldCoordinates -FieldName -FieldType -FieldValue -FieldRectangle -FieldConfidence -Recognized -Page RectObject +StartThread() +SetTerminatingStatus() +EndAllProcesses() -WaitMutex() -ScanningThread() -RecognitionThread() -PDFCreationThread() -ShowProgressThread() -SetProcessSettings() -StartProcess() -ProcessDone() -m_threadtype -m_mutex ThreadManager +GetUpdateXMLFile() +ParseXMLFile() +CheckFileInfo() +UpdateProcessFiles() UpdateProcesses System.Windows.Forms.UserControl System.Windows.Forms.PictureBox +IsRectOutOfBounds() +GetRectangleTouchingCursor() +GetRectangleModificationPoint () +GetCurrentRectangle() +SetCurrentRectangle() +ShowRectangleInfo() +RemoveRectangle() +ClearRectangleSelection() +OnRectangleChanged() -CurrentRectangle RectangleMath +AddInvoice() +UpdateInvoice() +RemoveInvoice() InvoiceList * +SetResources() +ReadXmlResources() +UseDefaultResources() +GetScanningProcessResources() +GetRecognitionProcessResources() +GetPDFProcessResources() +SetButtonTooltips() +GetFormFieldType() +GetStatusBarMessage() +GetErrorMessage() LocalizationManager +InitializeRectObjects () +UpdateRectObjects() +MarkRectObjectsUnrecognized() +MarkRectObjectRemoved() RectList..* 0.. ScanCont rol-komponent t i (Siitarinen 2006)

Harjoitellaanpa! OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 5.06.2

Matkatoimisto - Matkanjärjestäjät järjestävät lomamatkoja. - Matka koostuu matkalipuista ja oleskelusta tietyssä hotellissa jossain lomakohteessa. - Valittu hotelli vaikuttaa matkan hintaan. - Piirrä luokkakaavio matkoja käsittelevän tietojärjestelmän tietosisällöstä. - Kaavion perusteella pitää pystyä vastaamaan ainakin seuraaviin kysymyksiin.. Mitkä matkanjärjestäjät järjestävät matkoja tiettyyn maahan? 2. Minkä nimisiä hotelleja on tietyssä kohteessa? 3. Mitä kohteita on tietyssä maassa? 4. Mitä attribuutteja on matkalipulla, entäpä matkalla? 5. Mitä lippuja liittyy tietyn matkailijan matkaan? 6. Kenellä matkustajalla on tietyn numeroinen lippu? 7. Mikä on keskilämpötilaltaan lämpimin kohde tietyssä maassa? 8. Luettele tällä hetkellä Malesiaan lipun hankkineet matkustajat. - Merkitse kaavioon tärkeimmät attribuutit, operaatioita ei tarvitse pohdiskella. OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 5.06.2

Luokkakaavio Matkanjärjestäjä nimi osoite... Matka alkupvm loppupvm hinta * järjestää * sisältää * Hotelli nimi huoneiden lkm luokitus... *..* suuntautuu..* on oikeuttaa Kohde paikka keskilämpötila... Matkustaja nimi osoite.....* omistaa * Lippuvihko numero sijaitsee * * nimi... Kooste Maa Lippu numero tyyppi OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 5.06.2

Luokkakaavio: Mat kat oimist o M atk anjärjes täjä nimi os oite... järjes tää Matka alk upvm loppupvm hinta * oik euttaa * Matkustaja nim i os oite.....* om istaa * Lippu num ero * * sisältää Hotelli *..* s uunt autuu on Kohde paikka keskiläm pötila... sijaitsee * nim i... M aa nim i huoneiden lk m luok itus.....* OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 5.06.2

OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 3 5.06.2

Matkatoimisto vm. 2009 OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 5.06.2

Asiakast apaamiset * Tapaamisessa asiakasryhmä ja toimittajaryhmä keskustelevat toimitettavasta tuotteesta. Toimittajaryhmä saa kysellä asiakkaalta tarkentavia kysymyksiä ja ehdottaa, millainen järjestelmän tulisi olla. * Tapaamisen pituus on noin 45 minuuttia * Paikalla oleva assistentti on lähinnä tarkkailija, mutta häneltä voi myös kysyä neuvoa * Tapaamisessa aika saattaa loppua kesken ja vaatimuksia on tarpeen päivittää tilaisuuden jälkeen sovitun perusteella. Asiakkaan vastuulla on päivittää asiakasvaatimukset ja pitää huolta, että toimittajaryhmällä on aina uusimmat vaatimukset. * Molempien ryhmien kannattaa tehdä tapaamisessa muistiinpanoja, yksi jäsen on syytä määrätä sihteeriksi. OHJ-300 Ohjelmistotuotannon perusteet, kesä 202 5.06.2

Asiakast apaamisen vaat imukset * Kaikki ryhmän jäsenet ajoissa paikalla. Poissaoloista tulee ilmoittaa etukäteen assistentille. * Molemmat ryhmät ovat perillä asiakasvaatimuksista ja molemmilla ryhmillä on printattuna asiakasvaatimukset mukanaan. * Toimittajaryhmä on piirtänyt käsin 4-6 kpl käyttöliittymäkuvia asiakasvaatimusten perusteelle heidän mielestään oleellisimmista näkymistä. Yksi kuva per A4, esimerkki seuraavalla kalvolla. Nämä tulee pitää tallessa ja liittää lopullisen määrittelydokumentin liitteisiin. * Asiakastapaamisen jälkeenkin yhteydenpitoa yhteistyöryhmän kanssa tulee jatkaa (tarpeen mukaan). Toimittajaryhmän tulee pitää kirjaa yhteydenpidoista ja liittää tämä määrittelydokumentin liitteeksi. Yhteydenpidoista tulee kirjata ylös mm. minkä takia yhteydessä ollaan oltu, mikä oli yhteydenpitoväline, kauanko aikaa käytettiin, yms. OHJ-300 Ohjelmistotuotannon perusteet, kesä 202 5.06.2

Esimerkki: paperiprototyyppi / käyttöliittymäkuva OHJ-300 Ohjelmistotuotannon perusteet, kesäkurssi 202 35 5.06.2

Ensi viikolla - Asiakastapaamiset - Tapahtumasekvenssikaaviot OHJ-300 Ohjelmistotuotannon perusteet, kesä 202 5.06.2