Projektisuunnitelma
v2.1
27.10.95
Ryhmän tehtävänjako on seuraava:
Projektipäällikkö Anu Vilvala
- Aikataulusta huolehtiminen
- Vastuu dokumentoinnista ja raporteista
- Mikrokontrollerin, johdotuksen ja radan koodaamista
Mikrokontrolleriekspertti Tiina Kumento
- Vastuu mikrokontrollerisimulaattorista
- Vastuu johdotuksesta ja radasta
Visualisti Joni Suominen
- Vastuu käyttöliittymästä
- Vastuu tulosten visualisoinnista
Mekaniikkaekspertti Ilari Lehti
- Vastuu fysiikkamallista
- Vastuu toimilaitteiden ja antureiden mallinnuksesta
Kaikkien yhteisvastuulla on testaus ja järjestelmän suunnittelu.
Projektin tavoitteena on UNIX-ympäristöön tehtävä mikrokontrolleriohjatun auton
simulaattori. Toteutus tapahtuu pääosin C++-kielellä. Ohjelma koostuu
seuraavista pääkokonaisuuksista:
- mikrokontrollerin simulaattori
Mikrokontrolleri lienee Motorola 68HC11. Simulointi voidaan suorittaa joko
askel kerrallaan tai jatkuvasti tulkaten.
- näyttö
Visuaalinen osuus käyttää X-ympäristön tarjoamia palveluja täysipainoisesti
hyväkseen. Kaikista ohjelman kokonaisuuksista saadaan yhtäaikaisesti tietoa
näytölle eri ikkunoihin.
- auton mallinnus
Auton fysiikka mallinnetaan riittävässä määrin.
- toimilaitteiden ja antureiden mallinnus
Toimilaitteet vaikuttavat auton kulkuun ja siten sen sijaintiin radalla. Nämä
antavat jälleen uutta informaatiota antureille. Antureiden ja mittalaitteiden
mallia ja sijaintia ei ole vielä lopullisesti lyöty lukkoon.
- johdotus
Johdotus eli piirikortin suunnittelu toteutetaan helposti muutettavaksi.
- rata
Ratakin on pystyttävä kohtuullisella vaivalla määrittelemään uudelleen.
Projektin vaiheistus
Projektin aikataulu voi muuttua, jos yhteistyökumppanimme Tampereella eivät
pysty määrittelemään tai valmistamaan autoon liittyviä mekaanisia
järjestelmiä riittävän nopeasti. Yritämme aluksi suunnitella ja rakentaa osat,
jotka ovat heistä riippumattomia sekä rakentaa helposti muutettaviksi osat,
jotka voivat muuttua meistä riippumattomista syistä.
Ohjelmatyöprojekti jakaantuu kuuteen vaiheeseen:
- MP Määrittely ja perehtyminen 18.9.95 - 2.10.95
- ET Esitutkimus 2.10.95 - 30.10.95
- JS Järjestelmäsuunnittelu 30.10.95 - 4.12.95
- PT Prototyyppijärjestelmän toteutus 4.12.95 - 4.3.96
- LT Lopullisen järjestelmän toteutus 4.3.96 - 22.4.96
- DE Projektin luovutus demonstraatioineen 22.4.96 - 8.5.96
Määrittely- ja perehtymisvaihe (MP)
Tehtävät:
- Projektiryhmän muodostaminen ja organisointi
- Tehtävänantoon ja kohdejärjestelmään
perehtyminen
- Projektin suunnittelu:
- tehtävä- ja vastuujako
- resurssitarvearviot projektin eri vaiheissa
- dokumentointijärjestelmän määrittely
Raportit:
- Ryhmän kokoonpano (ilmoittautumislomake H2)
- Projektisuunnitelma
Esitutkimusvaihe (ET)
Ongelmaan liittyvät toiminnot, tiedot ja niiden väliset
riippuvuudet selvitetään ja kuvataan. Pidetään tiiviisti yhteyttä
projektin ohjaajiin ja yhteistyökumppaneihin Tampereella.
Opetellaan käyttämään tarvittavia työkaluja.
Tehtävät:
- Tehtävän analysointi ja toimintojen rajaus ja toimenpiteiden selvitys:
- kartoitetaan, mitä ohjelmalta kokonaisuutena vaaditaan
- päätetään, mitä auton eri osia mallitetaan ja mitä jätetään mallittamatta
- päätetään mitä radan ja johdotuksen mallitukselta vaaditaan
- mikrokontrollerisimulaattorin syöttö- ja tulostietojen
sekä tapahtumien määritys
- käyttöliittymän informaatiosisällön määritys
- otetaan selvää mahdollisista valmiista osista ja hankitaan mahdollinen
valmis materiaali (esim. mikrokontrollerisimulaattori)
- hankitaan mahdollisimman paljon tietoa tarvittavista osajärjestelmistä
(esim. mikrokontrollerin manuaali)
- kaikkien eri osien eri vaatimusten priorisointi
- selvitetään kriittiset osatekijät projektin onnistumiselle
- ehdotus järjestelmäarkkitehtuurista ja osien välisistä rajapinnoista
- tehdään alustava luonnos käyttöohjeesta
- Järjestelmäsuunnittelun työsuunnitelman teko
Raportit:
- Esitutkimusraportti
- Järjestelmäsuunittelun työsuunnitelma
- Edistymisraportti
Järjestelmäsuunnittelu (JS)
Kuvataan järjestelmän ulkoinen toiminta ja sen tekniset ratkaisut
siten, että sen toteuttaminen on mahdollista. Se perustuu
esitutkimuksessa selvitettyhin järjestelmän toiminnallisiin
vaatimuksiin ja teknisiin menetelmiin.
Yhteiset tehtävät:
- tehdään OMT- ja ER-luokkamallit, tietovirtakaaviot ja moduulijakokaaviot
- suunnitellaan järjestelmän:
- perustoiminnot ja niiden väliset liitännät
(syötteet, tulosteet, prosessit)
- käyttöliittymä
- virhetilanteiden käsittely
- testaus
- järjestelmän validointi suhteessa esitutkimuksessa
asetettuihin tavoitteisiin
- käyttöohjeen kirjoittaminen
Erilliset tehtävät
- Anu ja Tiina
- Mikrokontrollerin manuaaliin tutustuminen
- Valmiin simulaattorin lähdekoodin tutkiminen
- Prosessorisimulaattorin jakaminen osajärjestelmiin (esim.
68HC11A1, kello, debuggauksen ohjaus, ...)
- Prosessorin sisäisten tietorakenteiden ja toteutuksen suunnittelu
- Työn jako koodausvaihetta varten
- Joni
- Tutustumismatka Tampereelle
- Käyttöiittymän jako eri osajärjestelmiin
- Käyttöliittymän ja sen visualisoinnin suunnittelu
- Päätös käytettävästä ohjelmointityökaluista (Python, C++)
- Ilari
- Tutustumismatka Tampereelle
- Toimilaiteosan jako eri funktionaalisiin yksiköihin
- Kunkin toimilaitteen esitystavan päättäminen ja toteutuksen
suunnittelu
- Fysiikkamallin toteutuksen suunnittelu
Raportit:
- Järjestelmäkäsikirjan luonnos
- Prototyypin toteutusvaiheen työsuunnitelma
- Edistymisraportti
Prototyypin toteutusvaihe (PT)
Tehtävät:
- Keskeisten osien ohjelmointi ja testaus, käyttöliittymön mahdollita grafiikkaa
ei vielä vaadita, autosta pitää olla yksinkertainen fysikaalinen malli
- Järjestelmäkäsikirjan tarkentaminen
- Käyttöohjeen tarkentaminen
- Prototyyppijärjestelmän demonstraatio
Tarkka työsuunnitelma työtuntiarvioineen on tehty Excel-taulukkoon.
Raportit:
- Tarkennettu järjestelmäkäsikirja
- Lopullisen toteutuksen työsuunnitelma
- Edistymisraportti
Lopullisen järjestelmän toteutus (LT)
Loppuvaiheessa suunniteltu järjestelmä rakennetaan kaikin
puolin täyteen laajuuteensa, sen toimivuus testataan,
ja sen dokumentointi hiotaan lopulliseen muotoonsa.
Tehtävät:
- Puuttuvien järjestelmäosien toteutus
- Järjestelmätestaus
- Järjestelmäkäsikirjan viimeistely
- Käyttöohjeen viimeistely
- Lopullisen järjestelmän demonstraatio ja luovutus
Raportit:
- Lopullinen järjestelmäkäsikirja
Järjestelmän luovutus (DE)
Lopetusvaihe koostuu ennen kaikkea järjestelmän demonstraatiosta,
jossa valmis ohjelmisto luovutetaan "tilaajalle" ja
osoitetaan sen toimivuus. Samalla luovutetaan myös projektin
loppuraportti.
Tehtävät:
- Demonstraation valmistelu, mm. testiaineiston tuottaminen.
- Loppuraportin laatiminen.
Raportit:
- Projektin loppuraportti
Resurssi- ja aikasuunnitelma
Alustava arvio projektin implementaation laajuudesta on asiantuntijalausunnon
(projektin ohjaaja H. Arppe) mukaan 20 000 riviä koodia. Resursseja on kullakin
jäsenellä tehtävään varattuna huomattava määrä.
Työnjako:
Vasemmassa taulukossa on työmääräarviot ja oikenpoleisessa työhön kulunut aika,
jonka jäsenet täyttävät työn edistyessä.
| Vaihe |
Anu |
Ilari |
Joni |
Tiina |
Yhteensä |
| Anu |
Ilari |
Joni |
Tiina |
Yhteensä |
Määrittely ja perehtyminen
- Suunnittelu
- Raportit |
10
7 3 |
10
4 6 |
8
2 6 |
10
4 6 |
38
17 21 |
|
19
12 7 |
10
3 7 |
10
3 7 |
14
7 7 |
53
25 28 |
Esitutkimus
- Tehtävän ana- lysointi
- Työkalujen opettelu
- Raportit
|
20 6
6
8 |
40 25
5
10 |
21 7
8
6 |
27 16
2
9 |
108 54
21
33 |
|
20 12
0
8 |
39 30
0
9 |
29 10
10
9 |
22 12
1
9 |
110 64
11
35 |
Järjestelmä- suunnittelu
- Luokkamallit
- Tietovirta- kaaviot
- Valmiiden kir- jastojen opettelu
- Raportit
|
40
10 14
6
10 |
45
10 15
10
10 |
39
11 14
4
10 |
41
14 10
2
15 |
161
45 53
22
45 |
|
??
? ?
?
? |
47
8 17
0
11 |
??
? ?
?
? |
??
? ?
?
? |
??
? ?
?
? |
Prototyyppin toteutus
- Käyttöliittymä
- Toteutus
- Testaus
- Demonstraatio
- Raportit
|
94
2 60 20 2 10 |
55
3 20 20 2 10 |
62
25 20 15 2 10 |
81
2 45 20 4 10 |
292
32 145 75 10 40 |
|
??
? ? ? ? ? |
??
? ? ? ? ? |
??
? ? ? ? ? |
??
? ? ? ? ? |
??
? ? ? ? ? |
Lopullinen versio
- Toteutus
- Testaus
- Raportit
|
40 15 15 10 |
40 15 15 10 |
45 25 10 10 |
35 15 10 10 |
160 70 50 40 |
|
?? ? ? ? |
?? ? ? ? |
?? ? ? ? |
?? ? ? ? |
?? ? ? ? |
Järjestelmän luovutus
- Demonstraatio
- Loppuraportti
| 12
2 10 |
12
2 10 |
10
2 8 |
12
2 10 |
46
8 38 |
|
??
? ? |
??
? ? |
??
? ? |
??
? ? |
??
? ? |
| Yhteensä |
216 |
202 |
185 |
199 |
802 |
|
??? |
??? |
??? |
??? |
??? |
Riskitekijät
Tampereelta voidaan saada speksit liian myöhään. Ratkaisuna ongelmaan määrätään
aikaraja, jonka jälkeen määritellään itse puuttuvat speksit ja toteutetaan
ohjelma sen mukaan.
Jos alussa hyväksytään liian laajat vaatimukset, saattaa olla, että työtä ei saada
ajoissa valmiiksi halutulla tavalla toimivaa järjestelmää.
Ratkaisuna on tiukka EI-linja.
Muut työt tai kurssit vaativat enemmän aikaa kuin alussa arvioitiin. Yritetään
suunnitella aikataulu tarpeeksi väljäksi.
Menetelmien määrittely ja työnjako
CASE-välineeksi harkitsimme loistavaa Software through Pictures -CASE-työkalua.
Versionhallintatyökaluna on RCS. Koodin sisäinen kommentointi
suoritetaan suomeksi. C++-kääntäjänä käytetään g++:aa. Varsinainen dokumentointi tapahtuu
WWW-ympäristöön. Aina uuden vaiheen häämöttäessä ryhmän jäsenen
tulee määritellä vaiheeseen liittyvien tehtävien työmääräarviot.
Jokainen ryhmäläinen pitää itse kirjaa tehtäväkohtaisesti projektiin käyttämästään ajasta.
Virheiden raportointi suoritetaan HTML-lomakkeella.
Sellaiset virheet, joita ei pysty heti korjaamaan tai jotka
kuuluvat jonkun muun työsarkaan, on raportoitava.
Virheistä on raportoitava seuraavat asiat:
- virheen numero
- kuka löysi virheen
- kenen vastuulla on virheen korjaus
- päivä milloin havaittu
- virheen korjauksen tila
- päivä milloin korjattu
- kauanko korjaamiseen meni aikaa
- virheen tyyppi
- virheen kuvaus
Ryhmän sisäinen tiedonkulku
hoidetaan sähköpostitse käyttäjätunnukselle mysse@snakemail.hut.fi.
Kirjallisuuslähteinä käytetään seuraavia teoksia:
- Mikrokontrollerin manuaali
- Naive Physics Simulator Reference Manual (Fraunberg, Lampio, Räty, Salonen,
Tuomas, Mäntylä)
- A framework for graphical animation of object-oriented models of embedded
real-time software (Salmela)
- A simulation-based approach to testing embedded software (Honka)
- Fundamentals of Software Engineering (Ghezzi, Jazayeri, Mandrioli)
Projektin ohjaussuunnitelma
Projektin ohjaajien kanssa on palaveri keskiviikkoisin klo. 13-14, ainakin
Heikki Arppe on tällöin paikalla. Ryhmä pitää myös sisäisiä
palavereja kerran viikossa. Viikon kuluessa ryhmän jäsenet työskentelevät
itsenäisesti. Erityisesti esitutkimus- ja järjestelmäsuunnitteluvaiheet
vaativat paljon yhteistyötä ryhmältä. Koodausvaiheessa tehdään työtä lähinnä
itsenäisesti. Valvontapisteet vastaavat vaihejaon päättymispäiviä.
Projektin sisäiset valvontapisteet:
Ryhmä kokoontuu ainakin kerran viikossa,
jolloin tarkistetaan edistyminen ja koordinoidaan toimintaa.
12.2. on oltava valmiina prototyypin eri osajärjestelmät, jonka jälkeen ne
kootaan yhteen ja testataan.
1.4. on oltava valmiina lopullisen järjestelmän eri osajärjestelmät, jonka jälkeen ne
kootaan yhteen ja testataan.
Ohjaajan kanssa käydään läpi suunnitelmat mahdollisimman varhaisessa vaiheessa,
jolloin projektin laatu saadaan pysymään hyvänä.
Eri vaiheiden edistymisraportit
Esitutkimuksen edistymisraportti