ITK130 Ohjelmistojen luonne Luennon sisältö Ohjelmistotekniikka ja vaatimukset Ohjelmistotuote Ei-toiminnallisten vaatimusten luokittelu Sisäiset ja ulkoiset vaatimukset Oikeellisuus Luotettavuus Kestävyys Suorituskyky Käytettävyys Testattavuus Ylläpidettävyys Uudelleenkäytettävyys Siirrettävyys Ymmärrettävyys Yhteentoimivuus Tyypillisiä prosessien luonteenpiirteitä Oikea-aikaisuus Sovellusriippuvaiset laatuvaatimukset Esimerkkejä laatuvaatimuksista McCall laatumalli ISO 9126 Bachin laatukriteerijako Ei-toiminnallisten ominaisuuksien mittaaminen
Projektin hallinta Ohjelmointi Tuotteen hallinta Työkalut Menetelmät Toteutus Suunnittelu Testaus Laatu Ylläpito Vaatimukset Ohjelmistotekniikka Prosessi (process) Ihmiset (people) Projekti (project) Tuote (product) Ohjelmistotekniikka ja vaatimukset Ohjelmistotekniikka on tiedollista ja ihmiskeskeistä toimintaa Ohjelmistot rakennetaan täyttämään tietyt toiminnalliset vaatimukset ja ei-toiminnalliset, laadulliset, vaatimukset Ohjelmistoprosessinkin tulee täyttää tietyt eitoiminnalliset vaatimukset
Ohjelmistotuote Eroaa perinteisistä tuotteista Abstrakti Mukautuvainen Ihmiskeskeinen Ohjelmistotuotteen ominaisuuksia voivat olla esimerkiksi Käyttäjän kannalta Luotettavuus Tehokkuus Helppokäyttöisyys Kehittäjän kannalta Testattavuus Ylläpidettävyys Laajennettavuus Projektipäällikön kannalta Tuottavuus Ennustettavuus Kontrolloitavuus Ei-toiminnallisten vaatimusten luokittelu Sisäinen - Ulkoinen Ulkoinen -> näkyy käyttäjälle Sisäinen -> koskettaa kehittäjiä Tuote - Prosessi Päämäärä on kehittää tuotteita Prosessin avulle tehdään tuote Sisäiset vaatimukset vaikuttavat ulkoisiin vaatimuksiin Prosessin vaatimukset vaikuttavat tuotteen vaatimuksiin
Sisäiset ja ulkoiset vaatimukset Ylläpidettävyys Luotettavuus Siirrettävyys Käytettävyys Toimintoparametrien määrä Syklomaattinen kompleksisuus Ohjelman koko koodiriveinä Virheilmoitusten määrä Käyttäjän oppaan pituus Oikeellisuus Ohjelmisto toimii oikein jos se täyttää toiminnalliset vaatimukset Olettaen, että vaatimukset ovat olemassa Jos määrittelyt ovat formaaleja, oikeellisuus voidaan määritellä järjestelmällisesti Voidaan todistaa teoreeman avulla tai hyljätä vastaesimerkeillä (testaus)
Oikeellisuuden rajoitukset Se on absoluuttinen (kyllä/ei) piirre Ei ole olemassa oikeellisuuden määrä käsitettä Ei ole olemassa poikkeuksen vakavuus käsitettä Mitä jos määrittelyt ovatkin väärässä Väärät vaatimukset Virheet sovellusaluetietämyksessä Luotettavuus Luotettavuus Epävirallisesti: käyttäjä voi luottaa ohjelmiston toimivuuteen Matemaattisesti: todennäköisyys sille, että ohjelmistossa ei tapahdu vikoja tietyn ajan kuluessa Jos määrittelyt ovat oikeita, oikeelliset ohjelmat ovat luotettavia, mutta ei toisin päin Käytännössä kuitenkin määrittelyt voivat olla vääriä Reliability Correctness ideaalitilanne
Kestävyys Kestävyys Ohjelmisto toimii järkevästi ennakoimattomissakin tilanteissa (esim. väärä syöte, laitteiston kaatuminen) Suorituskyky Resurssien tehokas käyttö Muisti, prosessointiaika, kommunikointi Voidaan todistaa Kompleksisuus analyysi Suorituskykyarviointi (mittaus, malli tai simulointi) Suorituskyky vai vaikuttaa skaalautuvuuteen Sovellus, joka toimii hyvin pienessä paikallisessa verkossa, ei ehkä toimi isossa intranetissä.
Käytettävyys Tiedetyt käyttäjäryhmät pitävät järjestelmää helppokäyttöisenä Toisin sanoen: käyttäjäystävällisyys Subjektiivista, vaikea arvioida Käyttöliittymässä eniten huomioitava Visuaalinen vs. tekstuaalinen Testattavuus Miten helppo on testata ominaisuuksia Enimmäkseen sisäinen piirre Voi olla ulkoinenkin, esim. turvallisuuskriittisissä sovelluksissa
Ylläpidettävyys Ylläpidon helppous Ylläpito: julkaisun jälkeiset muutokset Ylläpitokustannukset ylittävät 60% ohjelmistotuotannon kokonaiskustannuksista Ylläpidon luokittelu korjaava: poistetaan jäljelle jääneitä vikoja (20%) mukautuva: ympäristön muutoksiin mukautuminen (20%) parantava:laadulliset parannukset (>50%) Voidaan jakaa Korjattavuuteen Ylläpidettävyys Mahdollisuus korjata vikoja järkevässä ajassa Kehittämiseen Mahdollisuus mukautua ohjelmistoympäristön muutoksiin ja parantaa ohjelmistoa järkevässä ajassa
Uudelleenkäytettävyys Olemassa olevaa tuotetta (tai komponentteja) käytetään pienin muutoksin rakentamaan uutta tuotetta Pätee myös prosessiin Standardiosien uudelleenkäyttö on alan kypsyysmittari Siirrettävyys Ohjelmisto toimii erilaisilla laitteistoalustoilla tai ohjelmistoympäristöissä Merkityksellinen kun uusia alustoja ja ympäristöjä otetaan käyttöön Merkityksellinen kun ohjelmisto otetaan käyttöön heterogeenisessä tietoverkkoympäristössä
Ymmärrettävyys Ohjelmiston ymmärtämisen helppous Ohjelmaan tehtävät muutokset edellyttävät ohjelman ymmärtämistä Yhteentoimivuus Järjestelmän kyky toimia rinnakkain ja yhdessä toisten järjestelmien kanssa Tyypillisiä prosessien luonteenpiirteitä Tuottavuus Tehokkuus ja suorituskyky Oikea-aikaisuus Kyvykkyys toimittaa tuote ajoissa Näkyvyys Kaikki vaiheet ja nykyinen tila on dokumentoitu selkeästi Kestävyys, oikeellisuus ja luotettavuus Uudelleenkäytettävyys
Prosessin oikea-aikaisuus Usein kehitysprosessi ei seuraa käyttäjän vaatimusten kehitystä Yhteensopimattomuus tapahtuu käyttäjän vaatimusten ja tuotteen statuksen välillä Function User needs Actual system capabilities t 0 t 1 t 2 t t 3 4 Time Sovellusriippuvaiset laatuvaatimukset Tietojärjestelmä Tiedon eheys Turvallisuus Tiedon saatavuus Tapahtuman suorituskyky Käytettävyys Reaaliaikajärjestelmä Oikeellisuus Luotettavuus Turvallisuus Käytettävyys
Esimerkkejä laatumalleista McCall laatumalli Tuotteen muuntautumiskyky Ylläpidettävyys Joustavuus Testattavuus Tuotteen sopeutuminen uusiin ympäristöihin Siirrettävyys Uudelleenkäytettävyys Yhteensopivuus Tuotteen toiminnalliset ominaisuudet Oikeellisuus Käytettävyys Luotettavuus Tehokkuus Tietoturvallisuus
ISO 9126 Toiminnallisuus (Functionality) Suitability Accuracy Interoperatibility Security Luotettavuus (Reliability) Maturity Fault tolerance Recoverability Käytettävyys (Usability) Understandibility Learnability Operatibility Attractiveness
ISO 9126 Tehokkuus (Efficiency) Time behaviour Resource utilization Ylläpidettävyys (Maintainability) Analyzable Changeability Stability Testability Siirrettävyys (Portability) Adaptability Installability Coexistence Replaceability Bachin laatukriteerijako Kyvykkyys Luotettavuus Käytettävyys Suorituskyky Asennettavuus Yhteensopivuus Tuettavuus Testattavuus Ylläpidettävyys Siirrettävyys Lokalisoitavuus Bach J. 1999 Heuristic Risk-based Testing, Software Testing & Quality Engineerinng, no 11
Ei-toiminnallisten ominaisuuksien mittaaminen Jotta pystytään mittaamaan, on ominaisuudet pystyttävä määrittelemään tarkasti Monet ominaisuuksista ovat subjektiivisia Useimmille ominaisuuksille ei standardimittareita määritelty Luentotehtävä 2 Kirjaa millaisia laadullisia vaatimuksia voisit asettaa toimiville, kaupallisille www-sivuille. Selitä myös lyhyesti mitä vaatimuksilla tarkoitetaan tässä yhteydessä. Käytättävyyden lisäksi pitäisi löytyä ainakin 5 vaatimusta.