Ohjelmistojen mallintaminen, kesä 2012, laskuharjoitus 5
Kaikissa tehtävissä ei ole yhtä oikeaa vastausta -- tärkeää on
pohdinta ja yrittäminen. Jos et ole käyttänyt Javaa, voit ohjelmoida
tehtäviin vastauksia myös muilla kielillä. Jos ohjelmointitaitosi ovat
ruosteessa, harjoittelu on tie onneen. Jos et saa ohjelmiasi toimimaan,
voit myös kuvailla sanallisesti niiden toiminnan.
Tarkoitus on, että teet tehtävät etukäteen ennen
laskuharjoitustilaisuutta.
- Mistä vaiheista ohjelmistotuotantoprosessi koostuu? Mitä kunkin
vaiheen aikana tapahtuu?
- Mitä tarkoitetaan vesiputousmallilla? Entä iteratiivisella ja
ketterällä ohjelmistotuotantomenetelmillä? Mikä johti ketterien ja
iteratiivisten menetelmien kehittämiseen?
- Miten UML liittyy kahdessa edellisessä tehtävässä käsiteltyihin
aihealueisiin?
- Mallinna seuraavassa kuvattu tilanne luokkakaaviona. Tässä
tehtävässä luokille ei tarvitse määritellä metodeja eikä attribuutteja.
Yhteyksien kytkentärajoitteet ja tyypit sekä tarvittaessa myös nimet ja
roolinimet on merkittävä tarkasti.
Unix-tyyppisissä järjestelmissä "tiedostoja" ovat sekä normaalit
tiedostot, hakemistot että ns. laitetiedostot. Laitetiedostoon liittyy
jokin I/O-laite, esim. hiiri, näppäimistö tai näyttö. I/Olaitetta kohti
on tasan yksi laitetiedosto. Normaali tiedosto on jono tavuja. Tietty
tavu kuuluu vain yhteen tiedostoon. Hakemisto koostuu joukosta muita
tiedostoja (jotka voivat siis olla normaaleja tiedostoja, hakemistoja
tai laitetiedostoja). Tiedosto on kerrallaan vain yhdessä hakemistossa,
mutta ei välttämättä koko aikaa samassa hakemistossa (oikeastihan
Unixissa tiedosto voi olla yhtäaikaa useassa hakemistossa, me emme nyt
kuitenkaan siitä välitä.).
Unixissa on käyttäjiä ja käyttäjäryhmiä. Käyttäjä voi kuulua useampaan
ryhmään ja ryhmässä voi olla useita käyttäjiä. Käyttäjät käyttävät
I/O-laitteita. Jokaisella tiedostolla on omistajana tasan yksi
käyttäjä. Käyttäjä voi omistaa useita tiedostoja. Tiedostoihin voi olla
käyttöoikeuksia sekä käyttäjillä että ryhmillä. Sekä käyttäjällä että
ryhmällä voi olla käyttöoikeuksia useisiin tiedostoihin. Oikeasti
Unixeissa käyttöoikeudet jakautuvat luku-, kirjoitus- ja
suoritusoikeuksiin, mutta tässä tehtävässä emme siitä välitä, vaan
mallinnamme ainoastaan yhden tyyppisen käyttöoikeuden. Eli esim.
käyttäjällä joko on tai ei ole käyttöoikeutta tiettyyn tiedostoon.
Yhdellä tiedostolla voi olla useita käyttöoikeuden omaavia käyttäjiä ja
ryhmiä
- Alla on katkelma Java-koodia. Piirrä sekvenssikaaviona tilanne,
jossa kutsutaan (jostain koodin ulkopuolella olevasta metodista) ensin
Machine-luokan konstruktoria ja sen jälkeen luodun Machine-olion
drive()-metodia.
public class Machine {
private FuelTank tank;
private Engine engine;
public Machine() {
tank = new FuelTank();
tank.fill(40);
engine = new Engine(tank);
}
void drive() {
engine.start();
boolean running = engine.isRunning();
if { running } engine.useEnergy();
}
}
class FuelTank {
private int fuelContents;
FuelTank() {
fuelContents = 0;
}
void fill(int amount) {
fuelContents = amount;
}
int contentsLeft() {
return fuelContents;
}
void consume(int amount) {
fuelContents = fuelContents - amount;
}
}
class Engine {
private FuelTank fuelTank;
Engine(FuelTank tank) {
fuelTank = tank;
}
void start() {
fuelTank.consume(5);
}
boolean isRunning() {
return fuelTank.contentsLeft() > 0;
}
void useEnergy() {
fuelTank.consume(10);
}
}
- Laadi alla kuvatusta tietojärjestelmästä karkean tason
käyttötapausmalli, eli etsi käyttäjät ja käyttötapaukset nimen tasolla.
Määrittele kunkin käyttötapauksen tarkoitus lyhyesti (eli maksimissaan
rivi per käyttötapaus) tekstinä. Piirrä myös käyttötapauskaavio.
Aloittaessaan harjoitustyön opiskelija saa ohjaajan ja aiheen.
Opiskelija tapaa ohjaajana toimivan opettajan kerran viikossa sovittuna
aikana. Opiskelija voi valita ajan opettajan tarjolle laittamien
aikojen joukosta. Sovittu aika voi vaihdella viikottain. Kussakin
tapaamisessa kirjataan työhön siihen mennessä käytetty aika sekä työn
etenemisen aste. Opettaja voi lisäksi kirjata kommentteja tapaamiseen
liittyen. Kommentit ja kirjatut tiedot ovat vain opettajan luettavissa.
Sekä opettaja että opiskelija näkevät järjestelmästä
tapaamisaikavarauksensa.
Opiskelija jättää harjoitustyöstä tarkastukseen yhden väliraportin ja
loppuraportin, palautus tapahtuu järjestelmän välityksellä. Näistä
kummastakin hän saa kirjallisen palautteen ja loppuraportista lisäksi
arvosanan. Opiskelija saa palautteen järjestelmän kautta.
- Kuvaa yksi edellisen tehtävän käyttötapauksista tarkemmalla
tasolla, ns. Cockburnin käyttötapauspohjan tai luentomonisteen
tekstuaalisten käyttötapauskuvausten tyyliin.
- Laadi tehtävässä 6 annetun järjestelmän kuvauksen perusteella
määrittelytason (eli kohdealueen) luokkakaavio. Metodeja luokille ei
tässä vaiheessa laiteta. Yhteyksien tarkempi laatukaan (normaali,
kompositio vai kooste ja navigointisuunnat) ei ole tässä tärkeää.
Merkkaa kuitenkin kaikkiin yhteyksiin kytkentärajoitteet ja nimeä
yhteydet ja yhteysroolit tarvittaessa. Ilmeisimmät attribuutit luokille
kannattaa merkitä.
- Kaverillesi jäi termi kerrosarkkitehtuuri mieleen kurssin materiaalista,
mutta hän ei oikein ymmärtänyt mihin se liittyy tai mitä hyötyä siitä on. Vastaa kaverisi
kysymykseen"Mikä ihmeen kerrosarkkitehtuuri?" ja kerro
kerrosarkkitehtuurin hyvistä ja huonoista puolista kun kaverisi jatkaa kysymyksellä
"Miksi tämmöisiä tarvitsee miettiä, toi mun sovellus toimii ihan hyvin
ilman mitään arkkitehtuuria!". Selvennä hänelle myös miten rajapinnat liittyvät
kerrosarkkitehtuuriin.
- Kaverisi ei täysin ymmärtänyt luennolla esitettyä
tarkkailijaperiaate-esimerkkiä (Observer). Kerro kaverillesi mistä
siinä on kyse, ja missä tapauksissa sitä käytetään. Anna konkreettinen
esimerkki.