OMT 008 -kertaus Kertausbingon palkinnot Johdanto (luvut -4) Notaatiot (luvut 5-0) Laatujärjestelmä, ISO900 (luku ) Projektinhallinta (luku ) Suunnittelu Suunnittelu, osittaminen, arkkitehtuuri, periaatteet, uudelleenkäyttö (luku 6) Reaaliaikajärjestelmien suunnittelu (luku 7) Oliokeskeisyys, periytymisen käyttö, suunnittelumallit (luvut 8 ja 9) Testaus (luku 5) Laadunvarmistus (luku 4) Tuotteenhallinta (luku 3) Tentti Ohjelmistotuotannon kursseja Summa Summarum Luvut -4 Ohjelmisto, ohjelmistotekniikka, ohjelmistotuotanto monimutkaisuus, näkymättömyys, muunnettavuus, ainutkertaisuus, menetelmien skaalautumattomuus, epäjatkuvuus. elinkaari, elinkaarimalli, vaihejakomalli: vesiputousmalli spiraalimalli, prototyyppimalli, protoilu, evomalli, RUP, ketterät menetelmät, iteratiivisuus vaatimus, (toiminnallinen), suunnittelu (tekninen ), toteutus, testaus, ylläpito spesifiointi, vaihetuote, dokumentointi, menetelmä vaatimustenhallinta vaatimus, asiakasvaatimus, ohjelmistovaatimus, tekninen vaatimus jäljitettävyys 3 Vaiheistus, menetelmät, dokum. Menetelmät, kuvaustekniikat esitutkimus arkkitehtuurisuunnittelu moduulisuunnittelu ohjelmointi mitä miten mitä miten mitä miten mitä miten mitä miten asiakasvaatimukset toiminnallinen tekninen moduulisuunnitelmat ohjelmakoodi käyttäjien tarpeet, ideat, rajoitukset reunaehdot hyväksymistestaus järjestelmätestaus integrointitestaus moduulitestaus 4
Vaatimustenhallinta Notaatiot (luvut 5-0) 3 4 5 6 7 Muutokset Kelpuutetut 5 x Seuraava versio Ominaisuus 5 Ominaisuus 3 y 7 6 Ominaisuus 3 Hylätty x 4 Muutokset Notaatio vs. menetelmä luokkakaavio käyttötapauskaavio tapahtumasekvenssikaavio yhteistyökaavio, olioyhteistyökaavio tilakaavio, tilasiirtymämatriisi aktiviteettikaavio, vuokaavio, pseudokoodi päätöspuu, päätöstaulu Alustavat asiakasvaatimukset Analysoidut vaatimukset Ohjelmistovaatimukset: Järjestelmän toiminnallinen Järjestelmän tekninen Toteutettu järjestelmä tapahtumalista tietovirtakaavio liittymäkaavio 5 6 kaaviotyypit : resizearea(scale:int) d: DrawingArea * tilauksen vastaanotto asiakas maksusuoritus karhu tilaus toimitus lasku 3 laskutus * Laatujärjestelmä, laadunhallintajärjestelmä (luku ) laske [opiskelijat loppu] alustukset arvosanajakauma [opiskelijoita jäljellä] hae seuraavan opiskelijan tiedot [ei mukana tentissä] [mukana tentissä] päivitä määrää opiskelijan arvosana tiedot Salinvarausjärjetelmä Varausten poistaminen Vastuuhenkilö Luentosalin <<include>> varaaminen Perustietojen <<include>> ylläpito <<include>> Harjoitussalin <<include>> varaaminen Käyttäjän assistentti identifiointi resizeview(scale:int) 4: setwidth(neww:int) t: TitleBar korttikasa sijainti_pöydällä lisaa_paalle ota_alta ota_paalta pöytäpakka käsipakka käännä_päältä sekoita ota_alta ylläpitäjä.: dimension(newh:int, neww:int) v: View : setdimensions(newh:int, neww:int) 3: setheight(newh:int) kortti * arvo kuvapuoli_näkyvissä maa kaanna käsi kortteja_aluksi lajittele nimetön lataa tai talleta nimetty poistu [tyhjä tai talletettu] poistu [muutettu ja nimetön]/ varmista talletus ja kysy tiedostolle nimi b: Border s: ScrollBar tyhjä editoi muutettu talleta talleta lataa editoi talletettu poistu [muutettu ja nimetty]/ varmista talletus toimituksen koonti toimitettavat tilaukset laskutustiedot sovellus Tiedostojärjestelmä Ajuri Levyohjain lue tiedoston tavut 00...09 Laske ensimmäisen tavun numero ja päättele siitä levylohkon numero (esimerkiksi 53); lue lohko 53 Muunna 53 levypinnan, uran ja sektorin numeroiksi (,34,56); käynnistä seek uralle 34 Odota keskeytystä; Siirrä lukipää oikealle uralle; I/O-keskeytys käynnistä sektorin luku Odota keskeytystä; Odota oikeaa sektoria; Lue sektori; I/O-keskeytys Palauta lohko 53 Poimi halutut 0 tavua puskurista; palauta 0 tavua lataa Laatu, laatujärjestelmä prosessi(t) laatukäsikirja ISO 900, kypsyystaso(malli), spice, laatupalkinto ISO 900 sertifikaatti sertifiointi laatupolitiikka laatutiedosto, tallenne arviointi, auditointi johdon katselmus Mittaaminen, laatumittari 7 8
Prosessit Otos yhden laatumittauksen tuloksia sisään ohjaus Prosessi mittaus ulos 9 Luennot 3. Harjoitukset 3.7 Materiaali 3.4 Kurssin palautelomake on on avattu Mielenkiintoni opetettuun aiheeseen Anna palautetta! lisääntyi kurssin aikana: 3.5 Opettajat ovat ystävällisiä ja ymmärtäväisiä: 4. Opettajien antama henkilökohtainen ohjaus on riittävää tehtävien suorittamiseen: 3.8 Harjoitustyö oli relevantti opintojakson kokonaisuuden kannalta: 4. Uskon kurssista olevan hyötyä myöhemmissä opinnoissani: 3.9 Opetettava aine on ajankohtainen: 4. Opin opintojaksolla paljon: 3.8 0 Projektinhallinta (luku ) Linjaorganisaatio Projekti Projektiorganisaatio projekti organisaatio ohjausryhmä projektipäällikkö projektisuunnitelma osittaminen (WBS): aktiviteetit, tehtävät etappi seuranta riskienhallinta työmäärien arviointi COCOMO-malli toimintopisteanalyysi Lähtötiedot: tavoitteet, reunaehdot, rajoitteet... Suunnittelu Projektisuunnitelma ja muu projektiin liittyvä materiaali Seuranta ja ohjaus Päätösraportti Seurantaraportit Ohjaus Loppuraportti Käynnistäminen Projekti Päättäminen Tuote
WBS Organisaatio Projektinhallinta Projektisuunnitelman laadinta Johtoryhmän palaverit Raportointi Projektin Loppuraportin laadinta Esitysohjelmisto Järjestelmätehtävät Versionhallinta ja arkistointi Käyttöohjeen laadinta Hankinnat Koulutus Käyttöönottotuki Asennus Hyväksymiskoe Kartta Määrittelyn tarkennus Karttojen luonti Symbolien luonti Karttaosuuden suunnittelu ja pakkauskuvauksen laadinta Ohjelmointi Moduulitestaus Tietokanta Määrittelyn tarkennus Kohdetietokannan rakenteen suunnittelu Lisätietokannan rakenteen suunnittelu Kohdetietokantaolion suunnittelu ja pakkauskuvauksen laadinta Tietokannan suorituskykytestit Ohjelmointi Moduulitestaus Käyttäjät Asiakkaan projektipäällikkö Ohjausryhmä Asiakas Testaus Testisuunnitelman laadinta Testiympäristön kokoaminen Testitapausten laadinta Järjestelmätestaus Koekäyttötestaus Liityntä X-järjestelmään Protokollan tarkennus Liityntäosuuden suunnittelu ja pakkauskuvauksen laadinta Ohjelmointi Moduulitestaus Käyttöliittymä Määrittelyn tarkennus Käyttöliittymäproton luonti Käyttöliittymäproton arviointi Ikkunoiden viimeistely Tukiryhmä Projektiryhmä Projektipäällikkö Toimittaja Tekninen suunnittelu Arkkitehtuurikaavion laadinta Vaatimusten laadinta arkkitehtuuriosille Tekninen Projektisuunnitelman tarkennus Sovellus Määrittelyn tarkennus Sovellusosuuden suunnittelu Koodaus Moduulitestaus 3 4 Suunnittelu (luku 6) suunnittelu suunnittelu, tekninen, suunnitteluvaihe arkkitehtuurisuunnittelu, moduulisuunnittelu moduuli, modulaarisuus kotelointi, rajapinta abstrakti tietotyyppi, abstraktio kytkentä (moduulien välinen), sisäinen kiinteys arkkitehtuuri uudelleenkäyttö ja -käytettävyys 5 6
Kotelointi, rajapinta Arkkitehtuuri, ositus lue "ijh":n puhelinnumero... Rajapinnan Työjono-moduuli Tietorakenteiden tietokantajärjestelmä lue tiedoston x merkit i...k...... IJH 369......... Operaatiot: initialize(...) add(...) remove(...) tiedostojärjestelmä lue levyn lohko 4564... 3 4 5... 369... Operaatioiden toteutus laiteajuri lue levyn 3 levypinnan 3 uran 48 sektori 3 369 laite 7 8 Uudelleenkäyttö Reaaliaikajärjestelmät (luku7) reaaliaikajärjestelmä, reaktiivinen järjestelmä, sulautettu järjestelmä kova/pehmeä reaaliaikajärjestelmä reaaliaikakäyttöjärjestelmä rinnakkaisuus, prosessi, säie lukkiutuminen poissulkeminen synkronointi ajastus prosessirakenteen suunnittelu 9 0
Prosessirakenne Arkkitehtuuri Pääteprosessi Varastotietokanta (keskusmuistissa), indeksointi tuotenumerolla Pääte i: loop lue näppäin; suorita vastaava toiminto; end loop; Kirjoita loki: loop odota sanomaa; kirjoita loki; end loop; Varmista: loop odota 0 sekuntia; kirjoita varmistuskopio end loop;...tuote 007: 037 kpl, 7mk Prosessit Pääteprosessi Pääteprosessi Kommunikaatiopalvelut Kirjoitaloki Varmista Prosessit Pääteprosessi 3 Kirjoita loki Varmista Päätteen käsittely Varastonkäsittely Tietokantakäsittely Kommunikaatiopalvelut Kommunikointipalvelut Palvelumoduulit Reaaliaikakäyttöjärjestelmä, Real Time Executive, RTX Käyttöjärjestelmä Oliokeskeisyys oliokeskeisyys oliokeskeisyys, olioperustaisuus olio, oliosuunnittelu, olio-ohjelmointi luokkarakenne luokka, yhteys, olio, linkki metodi, jäsenfunktio attribuutti pysyvä olio koostaminen, koosteluokka periytyminen, yleistäminen, erikoistaminen isäluokka, yliluokka, aliluokka, lapsiluokka luokkahierarkia abstrakti luokka, konkreettinen luokka moniperiytyminen kuormittaminen aikainen sitominen, dynaaminen sitominen, polymorfismi puhdas virtuaalifunktio rajapinnan periminen oliosuunnittelu: luokkakaaviot, tapahtumasekvenssit, tilakaaviot destruktori, konstruktori suunnittelumalli sovelluskehys 3 4
Luokkarakenne Mallit, sovelluskehykset Point Shape {abstract} X Y visible getx gety move Circle radius Point leaf Shape {abstract} X Y visible getx gety move Circle radius * component leaf Composite add move composite composite 5 6 Testaus (luku 5) testaus testaus vika-virhe-häiriö v-malli järjestelmätestaus integrointitestaus yksikkötestaus, moduulitestaus hyväksymistestaus kenttätestaus, käytettävyystestaus testaustavat mustalaatikkotestaus, lasilaatikkotestaus Harmaalaatikkotestaus virheiden arvaus testiaineiston valinta: ekvivalenssiositus, raja-arvoanalyysi kattavuusmitta, testikattavuus lausekattavuus päätöskattavuus ehtokattavuus moniehtokattavuus polkukattavuus kompleksisuusmitta, mutkikkuusmitta virheiden kylväminen testipeti, tynkämoduuli, tynkäprosessi 7 8
Testaus V-malli ohjelma syöteavaruus X ohjelmakoodi tulosavaruus Y Määrittely Arkkitehtuurisuunnittelu Testauksen suunnittelu ja tulosten Integrointitestaus Järjestelmätestaus sisäinen tila Moduulisuunnittelu Moduulitestaus Ohjelmointi 9 30 Laadunvarmistus (luku 4) Tarkastukset Työvaihe laadunvarmistus, todentaminen validointi, kelpoistaminen (tekninen)katselmus arviointi, tarkastus, testaus, läpikäynti tarkastuslista Tarkastettava dokumentti Suunnittelu Valmistautuminen Tarkastustilaisuus K uusintatarkastus? E esittely tarpeen? E Tarkastuspöytäkirja Korjaus K Esittely Hyväksytty dokumentti Jälkiseuranta 3 3
Tarkastusten vaikutukset Tuotteenhallinta (luku 3) Ilman tarkastuksia Määrittely Suunnittelu Ohjelmointi, moduulitestaus Integrointi, testaus Tarkastusten kanssa Määrittely Suunnittelu Ohjelmointi, moduulitestaus Integrointi, testaus varsinainen työ virheiden aiheuttama lisätyö versionhallinta, konfiguraationhallinta, toimintatavat hallinta-alkio komponentti, konfiguraatio johdettu komponentti versio revisio variaatio versionhallinta versiopuu deltatiedosto muutosten hallinta vaihetaso 33 34 Tuotteenhallinta Tentin pvm: 0-05-008 klo 9- Komponentit - Versiointi: mitä versioita on olemassa, miten vanhoihin versioihin päästään käsiksi... - Identifiointi: mikä komponentti tämä on, m itä om inaisuuksia sillä on,... - Tuottaminen: millä työkalulla ja m iten komponentti tuotetaan (esimerkiksi kääntäjän versio ja käännöskomento). - M uutosten hallinta: m iten estetään samanaikainen muutosten teko komponenttiin, mitä muutoksia on tehty... Tuotteenhallinta Konfiguraatiot - Versiointi: m itä versioita on olem assa, miten vanhoihin versioihin päästään käsiksi (esimerkiksi tuottamalla ne uudelleen)... - Identifiointi: mikä konfiguraatio tämä on, m itä kom ponentteja ja kom ponenttien versioita on asiakkaan x järjestelmän tietyssä versiossa. - Tuottaminen: miten asiakkaan x konfiguraatio a.b.c saadaan rakennettua. - Komponenttien välisten riippuvuuksien hallinta (yhteensopivuus) - M uutosten hallinta: m ihin kom ponentteihin ja niiden versioihin ehdotettu muutos vaikuttaa, mihin konfiguraatioihin muutos vaikuttaa... Tentti kattaa koko kirjan (0. painos vuodelta 004 tai uudempi), pl. 9.4-9.6 Luku 9 Yleensä 9 kysymystä, a pistettä (ks. tenttiarkisto) Joskus esseekysymyksiä (kun vähän ilmoittautuneita) Max 30 pistettä: tentti 8 + harjoitustyö 6 + viikkoharjoitukset 6 Toimintatavat - Vastuut ja toimintavaltuudet. - Miten vaihetuotteet siirtyvät vaiheesta toiseen. - Miten uudet versiot hyväksytään ja julkistetaan. - Miten muutosesitykset ja virheraportit tehdään ja käsitellään. - Miten arkistointi ja varmistuskopiointi hoidetaan. -... 35 36
Ohjelmistotuotannon ammattiaineeseen sopivia muita kursseja Ohjelmistotuotannon keskeisiä kursseja Ohjelmistojen testaus Ohjelmistotekniikan projektityö Ohjelmistoarkkitehtuurit Ohjelmien ylläpito ja evoluutio Johdatus ohjelmistotuotannon tutkimukseen (+Ohjelmistoprojektin johtaminen, OHKO) Tietokantakurssit (3) Läheisesti liittyviä kursseja Olio-ohjelmointikurssit () Web-palveluiden toteutustekniikat Myös muiden laitosten kursseja Tiedonhallinnan laitos (Ohjelmistoliiketoiminta, tietoturvallisuuden johtaminen) Ihmiskeskeisen teknologian laitos (käytettävyyteen liittyvät kurssit, Käyttäjäkeskeinen tuotekehitys)... 37 Tite PK Testaus Ohj I & II Otupk Otm Projektityö Olio-ohj PK Arkkitehtuurit Tiraka Trak Johtika Rinnakkaisuus Olio-ohj JK Ylläpito&Evo Web-palv. muut tika... ja paljon valinnaisia: ohj, ihte, tlt, tijo, sig 38 Summa Summarum Ei ole yleisiä ratkaisuja: mikä toimii yhdessä paikassa, ei välttämättä toimi toisaalla. Toisaalta samat ongelmat näyttävät toistuvan, ja usein samat ratkaisutkin toimivat. Know-how vs. know-when. Terve nöyryys on paikallaan: henkselien paukuttelun sijaan on viisasta yrittää ymmärtää se, mitä tietää, ja aivan erityisesti yrittää tietää, mitä ei tiedä (ja miten sen tarpeen vaatiessa saa selville). Oikeassa oleminen on suhteellista: oikeassa oleminen ei hyödytä, jos riittävän moni muu luulee sinun olevan väärässä. Ammattitaito vs. prosessi: good professionals with a good process outperform good professionals with no process all the time. Mutta mikä on good process? Osaamisen hankkiminen ja ylläpitäminen? Lopuksi: ohjelmistojen tekeminen ei ole pelkästään tekninen prosessi, vaan myös (erityisesti?) sosiaalinen oppimis- ja kommunikointiprosessi. 39