Ohjelmistotekniikka Tässä luvussa tarkastellaan ohjelmistotekniikkaan liittyviä keskeisiä käsiteitä sekä ohjelmistotuotannon kohdealueita. Alussa pohditaan ohjelmistojen tyypillisiä piirteitä sekä tietotekniikan roolia yrityksessä. Tämän jälkeen keskitytään ohjelmistotyölle luonteenomaisten ongelmien käsittelyyn. Pohjana käsittelylle ovat Fred Brooksin runsaasti keskustelua herättäneet artikkelit ohjelmistotyön perimmäisestä luonteesta sekä ohjelmistotyön tuottavuudesta. Luvussa pohditaan myös ohjelmistotuotannon luonnetta tutkimuksen ja tieteen alana. Ohjelmistotekniikka 1
Sisällys Software Engineering Ohjelmistotuotanto Osa-aluet Ohjelmistotyyppejä Ohjelmiston luonne Ohjelmiston ominaisuuksia Esimerkkijärjestelmiä Sulautetut järjestelmät Matkapuhelinverkko Business-Information- Technology Yrityksen tietotekniikka (I) Liiketoiminnan näkökulma Tekninen toteutus (T) Ohjelmat eivät ole virheettömät Ohjelmistotuotannon ongelmia... Ohjelmistotuotannon tutkimus Brooks: There is no Silver Bullett Ongelmien pysyvyys... Projektikokemuksen hallinta ja hyväksikäyttö Ongelmien korjattavuus Tuottavuus (Brooks, The Mythical Man-month) Virhekustannukset Kannattaako edes yrittää? Laadun parantaminen Virhekustannusten väheneminen Toiminnan kehittäminen Kertauskysymykset Ohjelmistotekniikka 2
Software Engineering The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software Establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines Ohjelmistotekniikka 3
Ohjelmistotuotanto Ohjelmistotyö, jonka tuloksena syntyvät järjestelmät täyttävät käyttäjiensä kohtuulliset toiveet ja odotukset, ja valmistuvat laadittujen kustannusarvioiden ja aikataulujen mukaisesti käsittää kaikki ohjelmiston tuotantoprosessiin liittyvät osa-alueet Ohjelmistotekniikka 4
Osa-aluet Software: ohjelmistotyön tuloksen syntynyt materiaali» Dokumentaatio» tietokannat»ohjelmat, Engineering:» määrittely» suunnittelu» laatujärjestelmä laadunvarmistus» projektin- ja tuottenhallinta, dokumentointi»testaus» käyttöönotto» ylläpito 11/04/2002 Ohjelmistotekniikka 5 Exit
Ohjelmistotyyppejä(1) Varus- ja työkaluohjelmistot teknis-tieteelliseen laskentaan tarkoitetut ohjelmistot tietämyspohjaiset järjestelmät kaupallishallinnolliset ohjelmistot prosessinohjaus- ja prosessiautomaatiojärjestelmät Ohjelmistotekniikka 6
Ohjelmistotyyppejä(2) Sulautetut järjestelmät Koneen tai laiteen sisällä» hissin ohjausjärjestelmä Reaaliaikajärjestelmät Ohjelman on reagoitava heti» polttoaineen ja jarrujen säätely Reaktiiviset järjestelmät toimivat jatkuvasti» puhelinkeskus Pohdittavaa: Minkälainen on tyypillinen nykyaikainen ohjelmisto? Ohjelmistotekniikka 7
Ohjelmiston luonne ohjelmiston koko ja käsiteltävän tiedon määrä käsittelypainotteinen vs. tietopainotteinen vasteaika- ja reaaliaikaisuusvaatimukset kovat reaaliaikavaatiukset reaktioaika Ohjelmistotekniikka 8
Ohjelmiston ominaisuuksia luotettavuus puolustava ohjelmointi elektroniikka- ja mekaniikkatason varmistukset hajautus paikallinen / laaja sulautetut järjestelmät - laiteväylä tuotteistusaste räätälöity vs. täysin tuotteistettu massatuote asiakasvarioituvat massatuotteet Ohjelmistotekniikka 9
Esimerkkijärjestelmiä Ominaisuus sovellus koko Tietokannan koko Vasteaika, reaaliaikaisuus hajautus luotettavuus Tuotteistusaste Kovia reaaliaikavaatmuksia GSMpuhelin ROM-muistin koko 1MB - 2 väylällä yhdistettyä prosessoria - massatuote 5M koodiriviä Matkapuhelinkeskus Useita tietokantoja, kymmeniä Megatavuja Paikoitellen kovia reaaliaikavaatimuksia Hajautettu moniprosessorijärjestelmä Kahdennettuja komponentteja Tuotteistettu, asiakaskohtaisia piirteitä Kovia reaaliaikavaatimuksia Televisiovastaanotin ROM-muistin koko 1 MB - 2 prosessoria, useita signaaliprosessoreita - massatuote Kotitalouden sähkömittari ROM 64 KB - Kovia reaaliaikavaatimuksia (virtakatkos) Sähköverkon kauta komentoja valvomosta Laskutustiedoissa ei saa olla virheitä massatuote Suurehko hissijärjestelmä 50 000 koodiriviä - Kovia reaaliaikavaatimuksia Hajautettu, CAN-väylä Virhetoiminnot estetty erillisellä elektroniikalla Tuotteistettu, konfiguroitava ko. rakennukseen Vakuutusten hoitojärjestelmä 300 000 koodiriviä, 100 näyttöä 100 relaatiotietokannan taulua Vasteaika alle sekunnin Keskitetty järjestelmä, satojen pääteiten verkko Käyttökatkokset Haittavat asiakaspalvelua räätälöity Ohjelmistotekniikka 10
Sulautetut järjestelmät NMT-puhelin 20 kloc GSM-puhelin 500 kloc kommunikaattori 1,5 MLOC 3G matkapuhelin koodimäärä kolminkertaistuu 2G-puhelimeen verrattuna televisio 200 kloc hissi 50 kloc moderni auto 50 kloc avaruussukkula 21 MLOC (sukkulassa 0,5) LOC Line of Code, koodiriviä Ohjelmistotekniikka 11
Matkapuhelinverkko Switch / base station controller Base station Network management 1 / operator 1 / 100 base stations thousands 1 / operator 6 MLOC 6 1 1 1,5... MLOC MLOC... MLOC MLOC... 1,5 MLOC......... Telephones: GSM: 500 kloc (NMT: 20 kloc) DX 200: 3 MLOC Landline network: A network consists: keskus X switches + control 1 switch 6 MLOC 10 BSC à 6 MLOC = 60 MLOC 1000 BS à 1 MLOC = 1 GLOC Network management 1,5 MLOC + telephones + landline network Ohjelmistotekniikka 12
Matkapuhelinverkon ohjelmisto Vaatimukset toteuttajalle: suuri, tuotteistettu, vikasietoinen, hajautettu, nopeaa vasteaikaa vaativa, kova reaaliaikajärjestelmä Mikä aiheuttaa vaativuuden? Tuotannon näkökulma: Erot kaventumassa? Ohjelmistotekniikka 13
Business-Information-Technology Business Map Technology Map Information Systems Management Information Systems Map Ohjelmistotekniikka 14
Yrityksen tietotekniikka (I) Infrastuktuuri: tietoliikenne, toimistoautomaatio, ryhmätyö, asianhallinta, palvelimet... Yrityksen tietovarastot Johdon tietojärjestelmät, päätöksenteon tuki Markkinointi Taloushallinto Tuotteiden suunnittelu, operatiiviset järjestelmät, tuotannonohjaus, materiaalhallinto, logistiikka Prosessi- ja tuotantoautomaatio Tietotekniikka tuotteissa Tietotekniikka yrityksessä Ohjelmistotekniikka 15
Liiketoiminnan näkökulma Oma liiketoiminta Liiketoimintaympäristö Oma tietojärjestelmätoiminta Liikeidea Asiakkaat Kilpailijat Kehittämishankkeet Tietotekniikan kehitys Strategia, kilpailutekijät Projektit Tietohallinto Tietohallintostrategia Ohjelmistotekniikka 16
Per sonal Com puter IBM Personal Comput er Color Display Per sonal Comput er Per IBM sonal Comput er Col or Display Per sonal Com put er IBM Per sonal Comput er Col or Display Per sonal Computer IBM Per sonal Computer Col or Display Per sonal Com put er IBM Per sonal Computer Col or Display Personal Computer Color Display Personal Computer Color Display Personal Computer Color Display Personal Computer Color Display Personal Computer Color Display Tekninen toteutus (T) WAN Gateway Server LAN IBM Personal Computer IBM Personal Computer IBM Personal Computer IBM Personal Computer IBM Personal Computer Client workstation Ohjelmistotekniikka 17
... SW (Software) UI (User Interface) TC (Telecommunication) Application DBMS (Data Base Management System) OS (Operating System) HW (Hardware) Ohjelmistotekniikka 18
Ohjelmat eivät ole virheettömät Ohjelmistotekniikka julkisuudessa Ohjelmistotekniikka 19
Epäonnistumiset case study Miten : aikataulu petti kustannukset ylittyivät asiakas tyytymätön tuotteeseen (ei vastaa tavoitteita, liiketaloudelliset menetykset) jälkihoidon suuri työmäärä Johtopäätös: Johtopäätös: syyt syyt ongelmiin ongelmiin eivät eivät juuri juuri koskaan koskaan ole ole teknisiä, teknisiä, vaan vaan liittyvät liittyvät ihmisiin, ihmisiin, organisaatioon organisaatioon ja ja projektin projektin johtamiseen johtamiseen Miksi : työmääräarvio virheellinen määrittely puutteellinen muutosvastarinta liian suuri projekti asiakkaan / toimittajan asiantuntemattomuus suunnittelematon käyttöönotto henkilöstövaihtuvuus huono projektipäällikkö ongelmat työvälineissä / laitteissa The Risks Digest Ohjelmistotekniikka 20
Epäonnistumiset a case study Mars Climate Orbiter: due to a conversion error in which commands to the spacecraft were sent in English units rather than metric units, the spacecraft entered the atmosphere at too low altitude which led to the destruction of the spacecraft; the combined cost of losses was 327.6 million dollars some communications channels among project engineering groups were too informal ( e. g. not documented! ) the small mission navigation team was oversubscribed and its work did not receive peer review by independent experts no review ( e. g. verification), insufficient training informal processes in place, formal processes ignored Mission and Operations - 42.8 million unofficially, the problem had been detected but due to politics a fix was never deployed Some disasters caused by numerical errors Ohjelmistotekniikka 21
Epäonnistumiset a case study Explosion of the Ariane 5: On June 4, 1996 an unmanned Ariane 5 rocket launched by the European Space Agency exploded just forty seconds after lift-off. The rocket was on its first voyage, after a decade of development costing $7 billion. The destroyed rocket and its cargo were valued at $500 million. The cause of the failure was a software error: a 64 bit floating point number was converted to a 16 bit signed integer, but the number was larger than the largest integer storeable in a 16 bit signed integer, and thus the conversion failed. The error occurred in a software system that was not needed during launch! it was an inappropriate reuse of a 10- year old software component exception handlers had been placed around 4 of 7 variables; unfortunately, the data conversion error occurred in one of the 3 variables, which were left unprotected, since exception handling code makes the system slower A Bug and a Crash Ohjelmistotekniikka 22
Ohjelmistotuotannon ongelmia... Ohjelmistojen kasvava koko: minkäkokoinen on suuri ohjelmisto? koon mittarit? koko kaksinkertaistu muutamien vuosien välein Virheettömyys (laatu) miten voidaan taata / saavuttaa 1-5 virhettä /1000 LOC Työn arvioinnin vaikeus projektien ainutkertaisuus ja monimutkaisuus ohjelmistotyön näkymättömyys ohjelmistojen muunnettavuus skaalautumattomuus epäjatkuvuus Microsoft Visual Studio 6.0 > 1000 ihmistä, 17 kuukautta Ihmisten lisääminen myöhässä olevaan ohjelmistoprojektiin useimmiten myöhästyttää sitä vielä entisestään (Brooks'in laki) Ohjelmistotekniikka 23
... Ohjelmistotuotannon ongelmia Ylläpidon suuri painoarvo noin 2/3 alalla tehtävästä työstä on vanhojen ohjelmien ylläpitotyötä mitä merkitsee kehitystyölle? Korkeat kustannukset mikä maksaa? aikataulujen ja arvioiden pitävyys vs. kustannukset arvioinnin vaikeus - miksi? Alhainen tuottavuus Best Best practice practice -tasoinen -tasoinenteknologian teknologiansiirto Työkalu- Työkalu-jaja menetelmäkehitys menetelmäkehitys Ohjelmistotekniikka 24
Ohjelmistotuotannon tutkimus ad hoc -menetelmät uudet ongelmat koulutus ja tutkimus soveltaminen käytäntöön kansanperinne kiteytyminen mallit, teoriat Ohjelmistotekniikka 25
Brooks: There is no Silver Bullett Ongelmien lähteet Essence ohjelmiston olemukseen liittyvät ei voida poistaa; pysyviä ongelmia Accident itse aiheutetut korjattavissa olevat Fashioning complex conceptual constructs is the essence; accidental tasks arise in representing the constructs in language... Frederick Frederick Phillips Phillips Brooks, Brooks, Jr. Jr. Born Born 19 19 April April 1931; 1931; 1961-1965 1961-1965 managed managed the the development development of of the the IBM IBM System/360 System/360 operating operating system; system; the the concept concept proved proved so so revolutionary revolutionary that that IBM IBM dominated dominated the the computer computer market market for for over over 20 20 years; years; in in 1975 1975 summed summed up up his his experience experience in in now now classic classic book: book: The The Mythical Mythical Man-Month: Man-Month: Essays Essays in in Software Software Engineering; Engineering; currently currently with with his his home home University University of of North North Carolina Carolina developing developing computer computer graphics graphics and and natural natural language language processing: processing: Virtual Virtual reality... reality... could could be be used used to to amplify amplify intelligence intelligence and and solve solve problems problems Ohjelmistotekniikka 26
Ongelmien pysyvyys... ohjelmistot ovat luonteeltaan monimutkaisia monimutkaisuuden hallinta:» pidetään komponentit ja niiden väliset rajapinnat mahdollisimman vähäisinä, selkeinä ja yksinkertaisina näkymättömyys» ohjelmistotyön keskeneräisistä tuotoksista on hyvin hankala sanoa, mikä on projektin valmiusaste muunnettavuus korjaava / mukauttava ylläpidon helppous vs. tuotantokustannukset? Ohjelmistotekniikka 27
... Ongelmien pysyvyys Ainutkertaisuus projektit ja ohjelmistot ovat ainutkertaisia uudelleenkäyttö» vain noin kolmannes työstä on uusien ohjelmistojen kehittämistä skaalautumattomuus työ ja kokemukset eivät skaalaudu hallitusti projektin koon ja luonteen muuttuessa epäjatkuvuus toiminnan keskeytyminen virhetilanteissa vaikea monitoroida virheen syytä Ohjelmistotekniikka 28
Projektikokemuksen hallinta ja hyväksikäyttö projektin jälkilaskenta projektitietämys projektitiedot projektin toteutus suunnitelma projektin suunnittelu Ohjelmistotekniikka 29
Ongelmien korjattavuus Accidental problems: korjattavissa välineisiin ja menettelytapoihin panostamalla Brad Cox: There is a silver bullett oliotekniikat uudelleenkäyttö (komponentit; mallit) Roger King: My Cat is Object Oriented Lots of Silver Bullets Ohjelmistotekniikka 30
The bearing of a child takes nine months, no matter how many women are assigned Tuottavuus (Brooks, The Mythical Man-month) aika osittumaton projekti Osittuva projekti henkilöitä Osittumisen vaikutus kalenteriaikaan Tyypillisesti huonon osittuvuuden takia ohjelmiston tekemiselle on olemassa minimaika Ohjelmistotekniikka 31
tuottavuus tuottavuus (rivejä/päivä) ohjelmiston koko Ohjelmiston koon vaikutus kehityskustannuksiin koon kasvaessa tuottavuus laskee nopeasti Ohjelmistotekniikka 32
tuottavuus kustannukset kalenteriaika Kalenteriajan vaikutus kehityskustannuksiin aikataulun kiristäminnen saattaa merkittävästi lisätä projektin kustannuksia Ohjelmistotekniikka 33
tuottavuus yleiset säännöt toteutuvat parhaimmillaan silloin kun tehdään uutta tuntematonta työtä suurissa järjestelmissä saattaa esiintyä myös skaalaetuja: ison järjestelmän osat ovat monistettavissa, tuttua järjestelmää saattaa olla nopeampi tehdä (vaikka se on iso) kuin pientä ja outoa,... Ohjelmistotekniikka 34
tuottavuus Aika (v) (pieni) Panostus projektiin (htv) (suuri) Ohjelmiston koko (LOC) On olemassa maksimi- ja minimikäyrät, joita ei voi alittaa / ylittää Ohjelmistotekniikka 35
Virhekustannukset Virheiden korjauskustannusten kerroin 35 30 25 20 15 10 5 0 määrittelyvirheet suunnitteluvirheet määrittely suunnittelu moduulisuunnittelu testaus hyväksymistestaus Virheen korjaaminen on kalliimpi myöhemmin kuin sen syntykohdassa Ohjelmistotekniikka 36
Kannattaako edes yrittää? Weinberg: mikään ei ei korvaa ratkaistavan ongelman perusteellista ymmärtämistä --joskus voi käydä tosin hyvä onni parhaiten onnistuvat ne, jotka eivät luotaa liikaa viimeisiin poppakonsteihin, mutta ovat silti valmiita kokeilemaan uusia ideoita, vaikka ne ne esitettäisiin karnevaalihumussa mainosmiesten pöytäpuheiden seassa Ohjelmistotekniikka 37
... mikään ratkaisu ei sovellu kaikkiin tehtäviin ja johonkin tilanteeseen parhaiten soveltuva lähestymistapa voi olla toisissa kaikista huonoin on olemassa monia hyödyllisiä lähestymistapoja, jotka toimivat useammassa kuin yhdessä tilanteessa, joten kannattaa tutustua sellaiseen joka on toiminut aikaisemmin Ohjelmistotekniikka 38
... ongelman ratkaisun niksi ei ole pelkästään miten menetelmiä sovelletaan (know-how) vaan mieluummin milloin niitä sovelletaan (knowwhen); tämä antaa mahdollisuuden soveltaa ratkaisua ongelmaan eikä päinvastoin riippumatta sitä kuinka hyvin taidat miten - milloin, on olemassa ongelmia, jotka nykytietämyksellä ovat mahdottomia ratkaista tai joiden perimmäisiä ominaisuuksia ei ymmärrä riittävän hyvin: nöyryys on siis aina paikallaan Ohjelmistotekniikka 39
Laadun parantaminen virheiden syntymistä estävät ratkaisut virheiden löytymistä tukevat ratkaisut virheiden korjaamiseen (jälkikäteen) liittyvät kustannukset ja ratkaisut Program Program results results should should always always be be reproducible. reproducible. They They should should all all fail fail in in the the same same way. way. Murphy Murphy Ohjelmistotekniikka 40
Virhekustannusten väheneminen 50 % Hankkeen käynnistys 40 % 30 % 20 % $ 15.8M säästö virhekustannukset etsimiskustannukset 10 % estämiskustannukset 1987 1988 1989 1990 1991 1992 Virhekustannusten väheneminen eräässä ohjelmistoyrityksessä toimitapojen kehittämisellä Ohjelmistotekniikka 41
Toiminnan kehittäminen Yksittäiset kehittämistoimenpiteet tavoitetila toimintatavalle: laatujärjestelmä (ISO 9001) jatkuvan parantamisen periaate kypsyysmalli(t): SEI-CMM prosessikohtainen kehittäminen: SPICE Ohjelmistotekniikka 42
Kertauskysymykset Mitä eri ohjelmistotyyppejä on ja mitä eroja näiden luonteenomaiset piirteet tuovat näiden ohjelmistojen tuotantoprosessiin. Mitä keinoja on toteuttaa ohjelmistossa Mitä ohjelmistoteknisiä osia sisältää moderni matkapuhelin. Mitä erityisvaatimuksia liittyy auton tietotekniikkaan (esimerkiksi lukkiutumaton jarrujärjestelmä, tietokoneen ohjaama jousitus, polttoaineen syöttö, vakionopeuden säätö, ). Kuvaa tekstimuodossa tietotekniikan eri osa-alueita kuvaavan kurssimateriaaliin sisältyvänb-i-t-tarkastelun keskeinen sisältö (kaikki kolme näkökulmaa). Luettele ohjelmistotyöhön liittyviä ongelmia ja pohdi miten niiden vaikutusta voidaan vähentää tai ne voidaan mahdollisesti kokonaan välttää. Artikkelin There is no silver bullett keskeinen sanoma. Mitä keinoja on olemassa em. artikkelissa esitettyjen ohjelmistotyön olemukseen liittyvien ongelmien ratkaisemiseen. Selvitä Brooksin esittämän ohjelmistotyön tuottavuutta koskevan pohdinnan ( The Mythical Man Month ) keskeinen sanoma. Miksi virhekustannusten osuus ohjelmistotyön elinkaaren loppupäässä kasvaa. Miten tilanteseen voidaan hakea korjausta. Mitä tarkoitetaan rationaalisella tuotantoprosessilla ja mikä on sen merkitys ohjelmistotyölle. Ohjelmistotekniikka 43