1 Harjoitustehtävät: Ohjelmistotekniikka syksy 2018 (harjoitustyöraportin deadline 31.10.2018) Harjoitus 1: 1. Lue paperit McConnell S., and Tripp L., Professional Software Engineering: Fact or Fiction, IEEE Software, Nov/Dec, 1999, pp. 13-18 Davis M., Will Software Engineering Ever Be Engineering?, Communications of the ACM, vol 54, no 11, 2011, pp. 32-34 ja kirjoita noin 700 sanan paperi aiheesta; Voiko ohjelmistotekniikka koskaan tulla insinööritaidoksi (engineering)? Voit tarkastella myös kysymyksiä: Mitä elementtejä kypsään ammattikuvaan tarvitaan? Mitä puutteita ohjelmistotekniikassa kypsän ammattikuvan kannalta tunnetaan? 2. Lean Software Development (virtaviivainen ohjelmistokehitys) menetelmässä on seitsemän periaatetta. Valitse niistä yksi (ei kuitenkaan eliminate waste ) ja kuvaa, miten se sovitetaan ohjelmistokehitykseen ketterässä ohjelmistoprojektissa. Hyvä esitys Lean menetelmästä löytyy esim. Poppendieck M., Cusumano M., Lean Software Development: A Tutorial, IEEE Software, no 5, vol 29, 2012, pp. 26-32
2 Harjoitus 2: 1. Valitse pankkiyhteysohjelma, jonka tunnet ja arvioi sen laatua käyttämällä luennoilla esiteltyjä laatuominaisuuksien luokitteluja (McCallin laatukolmio, Boehmin malli ja sen hyöty käytössä -haara (Boehm et al. 1978) ja ISO/IEC 9126-1). Koska laatuominaisuudet ovat eri malleilla päällekkäisiä, valitse eri malleista vain sellaiset ominaisuudet joita et ole käsitellyt jo toisen mallin yhteydessä. 2. Olet kehittämässä Web-pohjaista apteekkiohjelmistoa NurkkaApteekki.com, joka on tarkoitettu ikäihmisten käyttöön. Käyttäjän täytyy tunnistautua verkkopankin tunnuksilla. Sen jälkeen käyttäjä näkee, millaisia reseptejä, milloin ja kenen toimesta hänelle on määrätty. Ohjelmistolla on yhteys tietokantaan ja uusien lääkemääräyksien ja vanhojen määräyksien yhteisvaikutus arvioidaan. Jos huomataan vaarallinen yhteisvaikutus, tästä ilmoitetaan käyttäjälle. Millaisia testejä tällaiselle ohjelmistolle tulisi suunnitella. Riittää että kerrot sanallisesti testeistä, ei tarvitse suunnitella testiaineistoa.
3 Harjoitus 3 1. Tarkastele funktiota laske_joulukuun_palkka Työntekijöiden kuukausipalkat vaihtelevat välillä 1500 3500 euroa. Oletetaan myös, että työntekijä on voinut olla yrityksen palveluksessa 0 50 vuotta. Joulukuun palkkaan lisätään joulubonus, joka määritellään seuraavasti: Työntekijä saa 50% bonuksen (50% kuukausipalkasta), jos on ollut yrityksessä kolme vuotta tai enemmän. Jos on ollut yrityksessä yli viisi vuotta, bonus on 75% ja yli kahdeksan vuotta yritystä palvelleille bonus on 100%. Funktio määritellään kahden parametrin avulla seuraavasti: double laske_ joulukuun _palkka ( double kk_palkka, // henkilön kuukausipalkka int palvelusaika, // henkilön palvelusaika yrityksessä ) a. Tee funktion parametreille testiaineisto käyttäen luennoilla esiteltyä ekvivalenssiositusta, jossa määritellään ekvivalenssiluokat sekä käyville että ei-käyville syöttöarvoille. Tee myös taulukkoesitys, josta näkee parametrien arvot ja lopputuloksen eri testiarvoilla. b. Toteuta laske_ joulukuun _palkka funktio Java (tai C) ohjelmana. Piirrä myös lohkokaavio ja määrittele syklomaattinen kompleksisuus ja tarvittavien testitapausten lkm. Määrittele polut, joiden avulla saadaan polkukattavuus 100%:ksi ja laadi näille testitapaukset.
4 Harjoitus 4: 1. Olet projektipäällikkö ohjelmistoprojektissa ja sinun tulisi arvioida projektin tilanne ansaitun arvon menetelmällä. Projektisuunnitelmassa projekti on jaettu 56 tehtävään, joiden tekemiseen on arvioitu tarvittavan 582 työpäivää (BAC). Laskentahetkellä 12 tehtävää on suoritettu loppuun. Projektisuunnitelman mukaan 15 tehtävää olisi pitänyt olla jo suoritettuna Seuraava aikatauluun liittyvä tieto (henkilötyöpäivinä) on saatavilla Tehtävä Suunniteltu työpanos Todellinen työpanos 1 12.0 12.5 2 15.0 11.0 3 13.0 17.0 4 8.0 9.5 5 9.0 9.0 6 18.0 19.0 7 10.0 10.0 8 4.0 4.5 9 12.0 10.5 10 6.0 6.5 11 5.0 4.0 12 12.0 14.5 13 16.0-14 6.0-15 8.0 Laske seuraavat arvot - aikataulupohjainen suoritusky (schedule performance index, SPI) - aikataulupoikkeama (schedule variance, SV) - arvioitu valmiusaste (percent scheduled for completion, PV/BAC) - todellinen valmiusaste (percent complete, EV/BAC) - todellinen työkustannus (actual costs of work performed, AC) - kustannuspohjainen suorituskyky (cost performance index, CPI, EV/AC) - kustannuspoikkeama (cost variance, CV, EV-AC) 2. Olet projektipäällikkönä projektissa jonka tarkoitus on tuottaa uusi oppimisalusta korkeakouluympäristöön. Laadi projektille riskianalyysi ja riskienhallintasuunnitelma jossa on vähintään 5 riskiä. Määrittele jokaiselle riskille vähintään seuraavat tiedot: Nimi Kuvaus prioriteetti estimoitu vaikutus (pieni kohtalainen suuri) projektin etenemiselle todennäköisyys riskin laukeamiselle hälytysraja vastuuhenkilö (roolin tarkkuudella tässä vaiheessa, tyyliin projektipäällikkö tai Ohjelmistoarkkitehti tms.) Ennakointitoimenpiteet (miten vähennetään riskin laukeamisen todennäköisyyttä) Toipumistoimenpiteet (miten päästään takaisin normaalitilanteeseen kun riski on lauennut) Pyri miettimään myös riskejä jotka ovat spesifisiä juuri kyseiselle projektille (vaikka sitä ei olekaan kovin tarkasti tässä määritelty) eikä pelkästään yleisiä riskejä joita voi tulla vastaan missä tahansa projektissa. 3. Projektin tavoitteena on kehittää ohjelmisto varastettujen pyörien etsimiselle? Sovelluksen tavoitteista tiedetään seuraavaa: Matti, Kari, Seppo ja Jussi ovat polkupyöräpoolon harrastajia. Heiltä kaikilta on viimeisen kuukauden aikana varastettu polkupyörä, Varastetut pyörät päätyvät tavallisesti myyntiin internetin myyntipalstoille. Tilanteesta johtuen Matti päätti tehdä asialle jotain. Hän otti yhteyttä polkupyöräpooloyhteisön jäseniin ja sai kannatusta ajatukselle, että kehitetään ohjelmisto, joka toimii varastettujen kameratarvikkeiden etsimiskäytännön tapaan. Matin tuttavilla, Toivolla ja Eevalla, on pieni ohjelmistoyritys ja Matti sai heidät innostumaan projektista. Rahoitus projektille hankitaan
5 joukkorahoituksella (crowdfunding) ja mainostus kohdistetaan ensiksi polkupyöräpooloyhteisön jäseniin ja myöhemmin laajennetaan muihin polkupyörän käyttäjiin. Tutustu laajempaan projektin tilanteen kuvaukseen (SEMAT esimerkki), joka löytyy kurssisivulta (Noppa) kohdasta Yhteinen lisämateriaali. Tehtävänäsi on suorittaa projektin tilanteen arviointi SEMAT analyysin mukaisesti. Tässä riittää arvioida SEMAT alphat Asiakas (Customer) ja Ratkaisu (Solution) aihealueilla (areas of concern). Tämä tarkoittaa alphoja Mahdollisuus (Opportunity), Sidosryhmät (Stakeholders), Vaatimukset (Requirements) ja Ohjelmisto (Software system). Käytä arvioinnissa arviointipohjaa, joka löytyy tehtäväkuvauksesta (SEMAT esimerkki) kurssisivulta (Noppa) kohdasta Yhteinen lisämateriaali. Hyvä esitys SEMAT ytimestä: Jacobson I., Ng P-W, McMahon P., Spence I., Lidman S., The Essence of Software Engineering: the Semat Kernel https://dl.acm.org/citation.cfm?id=2389616
6 Harjoitus 5: 1. Toimit projektipäällikkönä ohjelmistoyrityksessä. Tehtävänäsi on hallita laajassa käytössä olevan tekstinkäsittelysovelluksen seuraavan sukupolven version kehittämistä. Työlle on suunniteltu ja hyväksytty tiukka aikataulu. Millaisen prosessimallin valitset ja miksi? 2. Tehtävänä on suunnitella keskusteluohjelmisto pienen ohjelmistotalon käyttöön. Järjestelmän tulee tukea organisaation sisäistä kommunikaatiota. Järjestelmä koostuu palvelimesta ja asiakasohjelmistosta. Palvelinta ja asiakasohjelmistoa käytetään graafisen tai konsolipohjaisen käyttöliittymän kautta. Käyttäjä kirjautuu sisään ja käyttäjä tunnistetaan nimen perusteella. Käyttäjänimeä ei voi vaihtaa kesken keskustelun. Käyttäjä voi lopettaa keskustelun milloin tahansa. Käyttäjät voivat keskustella julkisesti tai salaisesti kahden kesken. Käyttäjä voi olla mukana vain kahdella kanavalla kerrallaan. Palvelin tukee useita yhtäaikaisia keskusteluja. Henkilöstöpäälliköllä on samat oikeudet kuin käyttäjillä, mutta sen lisäksi hänellä on oikeus poistaa käyttäjä keskustelusta. Henkilöstöpäällikkö voi jakaa väliaikaisesti oikeuksia myös muille. Ylläpitäjät voivat lähettää tiedotteita keskustelijoille. Palvelin ilmoittaa käyttäjien sisään- ja uloskirjaukset. Keskustelu tapahtuu salattuna verkon yli. Tarkenna kuvausta kehittämällä vähintään 3 skenaariota, joissa eri henkilöt käyttävät keskusteluohjelmistoa. Kehitä käyttötapauskaaviot keskusteluohjelmistolle käyttäen hyväksi annettua kuvausta ja laadittuja skenaarioita. Kirjoita käyttötapauskuvaukset käyttämällä joko perinteistä käyttötapauspohjaa (löytyy kurssisivulta (Noppa) kohdasta Yhteinen lisämateriaali) tai flow-of events esitystapaa (lisätietoja löytyy paperista Williams L., Use Case-based Requirements (s. 5-14) http://agile.csc.ncsu.edu/sematerials/usecaserequirements.pdf). 3. Kirjoita käyttäjävaatimukset (min. 15 kpl) (jokaisesta vaatimuksesta yksilöllinen tunniste ja kuvaus). Voit käyttää vaatimusmäärittelypohjaa, joka löytyy kurssisivulta (Noppa) kohdasta Yhteinen lisämateriaali.
7 Harjoitus 6: Jatka edellisen harjoituksen vaatimusmäärittelyä: 1. Kirjoita toiminnalliset (järjestelmä)vaatimukset, joissa tarkennetaan käyttäjävaatimuksia ja otetaan huomioon toteutusympäristön aiheuttamat rajoitukset (jokaisesta vaatimuksesta yksilöllinen tunniste, kuvaus, rajoitukset ja liitäntä käyttäjävaatimuksiin). Voit käyttää samaa dokumenttipohjaa, kuin käyttäjävaatimuksissa. 2. Kirjoita ei-toiminnalliset (laatu)vaatimukset, joissa kiinnitetään tuotteen käytettävyyteen, tehokkuus, tilan tarpeeseen, luotettavuuteen, siirrettävyyteen ja turvallisuuteen liittyvät tavoitteet (jokaisesta vaatimuksesta yksilöllinen tunniste, liitäntä laatutekijään ja kuvaus). Voit käyttää samaa dokumenttipohjaa, kuin käyttäjävaatimuksissa. 3. Tee käyttäjävaatimusten ja toiminnallisten vaatimusten jäljitettävyysmatriisi.
8 Harjoitus 7: 1. Suorita tarkastus toisen ryhmän tekemälle vaatimusmäärittelydokumentille. Tarkastukseen kuuluu yksin tehty tarkastus (valmistautuminen) ja kirjauspalaveri, jossa kerätään yhteen yksin tehdyn tarkastuksen tulokset. Voit käyttää hyväksi luennoilla esiteltyjä lomakkeita Tarkastuksen löydökset ja Tarkastuksen yhteenveto, jotka löytyy kurssisivulta (Noppa) kohdasta Yhteinen lisämateriaali. Voit käyttää apuna myös tarkistuslistoja, jotka löytyvät samalta sivulta. Ryhmä voi pitää itse kirjauspalaverin ja raportoida harjoitusten vetäjille käytetystä ajasta ja löydetyistä epäilyistä Tarkastuksen löydökset ja Tarkastuksen yhteenveto lomakkeiden avulla viikon 7 harjoituksissa. Jos ette saa tarkastettavaa materiaalia toiselta ryhmältä, kysykää sopivaa materiaalia harjoitusten vetäjiltä harjoituksissa. 2. Tee jokin seuraavista tehtävistä (a d): Sinun pitäisi rakentaa jokin seuraavista järjestelmistä a. Verkkopohjainen kurssille ilmoittautumisjärjestelmä yliopiston tarpeisiin. b. Web-perustainen tilausten käsittelyjärjestelmä tietokonekaupalle. c. Yksinkertainen laskutusjärjestelmä pienelle yritykselle. d. Internet-pohjainen keittokirja, joka on rakennettu osaksi sähköhellaa. Valitse näistä yksi ja kuvaa se luokkakaaviolla. Kaavoissa tulisi näkyä tieto-oliot, yhteydet ja tärkeimmät attribuutit. 3. Tutustu käsitteisiin refaktorointi (refactoring) ja koodin paha haju (code smell) ja kerro lyhyesti, mitä ne tarkoittavat. Valitse Fowlerin listasta (http://refactoring.com/catalog/index.html) viisi refaktorointitekniikkaa ja selitä niiden tarkoitus.