1 Harjoitustehtävät: Ohjelmistotekniikka syksy 2015 (harjoitustyöraportin deadline 23.12.2015) 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 3. 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? Harjoitus 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. 1. 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. 2. 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
2 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. Harjoitus 3: 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. 4. 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. Harjoitus 4: 1. 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. 2. Valitse pankkiyhteysohjelma, jonka tunnet ja arvioi sen laatua käyttämällä luennoilla esiteltyä tarkistuslistaa (Olsina et al. 1999) 3. 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.
3 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. Harjoitus 5: 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ä eikä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. 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. Harjoitus 6: 1. Ohjelmistolla on 12 ulkoista syötettä, 24 ulkoista tulostetta, se käsittelee 30 ulkoista kyselyä, käyttää 4 sisäistä tiedostoa ja on yhteydessä 10 erilliseen ulkoiseen järjestelmään. Ohjelmiston ominaisuuksista tiedetään, että hajautetun käsittelyn toteuttaminen hyvin on tärkeää, suorituskykyyn ja koodin uudelleenkäyttöön tulee kiinnittää erityistä huomiota, ja sovellus tulisi suunnitella helposti ylläpidettäväksi. Muuten ohjelmisto nähdään kompleksisuudeltaan keskinkertaiseksi. Laske
4 toimintopistearvo ko. ohjelmistolle. Sivulta http://www.softwaremetrics.com/fpafund.htm löytyy materiaalia toimintopistearvon laskemisesta ja mm. 14 tekijää, joiden avulla voi arvioida ohjelmiston ominaispiirteitä. Näiden tekijöiden summaa käytetään sitten laskentakaavassa ja säädetään toimintopistearvoa tarkemmaksi. 2. Tarkastele käyttötapauksia ja skenaarioita, jotka olet tehnyt aikaisemmissa harjoituksissa keskusteluohjelmiston suunnittelun yhteydessä. Käytä hyväksi webistä löytyvää Roy Clemin ohjeistoa Project Estimation with Use Case Points http://www.codeproject.com/kb/architecture/usecasep.aspx ja laske arvio keskusteluohjelmiston vaatimasta työmäärästä. 3. 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)
5 Harjoitus 7 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 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 http://www.csi-india.org/c/document_library/get_file?uuid=8e251272-4c46-49b5- a692-01564bae237f&