Ohjelmistotekniikka. Ohjelmistotekniikka 1

Samankaltaiset tiedostot
Johdanto. Mitä on ohjelmistotuotanto? Tämän kurssin näkökulma. Sami Kollanus TJTA330 Ohjelmistotuotanto

Mitä on ohjelmistotuotanto?

OHJ-3010 Ohjelmistotuotannon perusteet

Software engineering

$$$ Raha ratkaisee. $$$ Raha ratkaisee. Ohjelmistotuote. Ohjelmistotekniikan määritelmä

Mitä on ohjelmistotuotanto? Johdanto. Tämän kurssin näkökulma. Kurssin suhde muuhun opetukseen

Johdatusta ohjelmistotekniikkaan

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

MEETING PEOPLE COMMUNICATIVE QUESTIONS

7.4 Variability management

1. Johdanto. Ohjelmistotuotannon ongelmia

Laatu tietojärjestelmähankkeissa. Tietohallinnon kokemuksia Juha-Pekka Leskinen Atk-päällikkö Eduskunnan kanslia

Johdantoluento. Ohjelmien ylläpito

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

Millainen on onnistunut ICT-projekti?

Results on the new polydrug use questions in the Finnish TDI data

Sisältö: 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 2

Capacity Utilization

Agenda. Johdanto Ominaispiirteitä Kokonaisjärjestelmän määrittely Eri alojen edustajien roolit Sulautetut järjestelmät ja sulautettu ohjelmointi

Johdatus ohjelmistotuotantoon

Salasanan vaihto uuteen / How to change password

RAIN RAKENTAMISEN INTEGRAATIOKYVYKKYYS

Jussi Klemola 3D- KEITTIÖSUUNNITTELUOHJELMAN KÄYTTÖÖNOTTO

Laaja-alainen, opiskelijalähtöinen ja projektiperusteinen opetussuunnitelma, case Monitori

ITK130 Johdatus ohjelmistotekniikkaan

API:Hack Tournee 2014

Computing Curricula raportin vertailu kolmeen suomalaiseen koulutusohjelmaan

Efficiency change over time

Tietojärjestelmän osat

SMART BUSINESS ARCHITECTURE

Arkkitehtuuritietoisku. eli mitä aina olet halunnut tietää arkkitehtuureista, muttet ole uskaltanut kysyä

Prosessiajattelu. Organisaation prosessikuvaus - CMMI. Prosessikuvaukset ja elinkaarimallit. Organisaation prosessien määritys CMMI käytänteet

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

Kertausluento JOTU-2014 / K.Systä

BDD (behavior-driven development) suunnittelumenetelmän käyttö open source projektissa, case: SpecFlow/.NET.

Heini Salo. Tuotannonohjauksen kehittäminen digitaalipainossa. EVTEK-ammattikorkeakoulu Mediatekniikan koulutusohjelma. Insinöörityö 15.5.

1. SIT. The handler and dog stop with the dog sitting at heel. When the dog is sitting, the handler cues the dog to heel forward.

Use of spatial data in the new production environment and in a data warehouse

7. Product-line architectures

Miten luodaan tehokas ja sertifioitu laatujärjestelmä?

Miten voin selvittää säästömahdollisuuteni ja pääsen hyötymään niistä?

Tutkittua tietoa. Tutkittua tietoa 1

Kertausluento JOTU-2013 / K.Systä

Johdatus ohjelmistotuotantoon

1. Liikkuvat määreet

Megaprojekti pysyi aikataulussa. Totta vai tarua?

Hankkeen toiminnot työsuunnitelman laatiminen

Ohjelmistojen mallinnus (OMa) - Johdatus ohjelmistotuotantoon Harri Laine 1

Työmäärän arviointi. Vaihtoehtoja. Sami Kollanus TJTA330 Ohjelmistotuotanto

Työmäärän arviointi. Vaihtoehtoja. Arviointiprosessi. Sami Kollanus TJTA330 Ohjelmistotuotanto

TAMPEREEN TEKNILLINEN YLIOPISTO Teollisuustalous

The CCR Model and Production Correspondence

Toimilohkojen turvallisuus tulevaisuudessa

Automaatiojärjestelmän hankinnassa huomioitavat tietoturva-asiat

Liiketoimintajärjestelmien integrointi

anna minun kertoa let me tell you

UX NÄKÖKULMA - KONECRANES

Sovellusarkkitehtuurit

Helsinki Region Infoshare 2013

Siirtymä maisteriohjelmiin tekniikan korkeakoulujen välillä Transfer to MSc programmes between engineering schools

Group 2 - Dentego PTH Korvake. Peer Testing Report

Ohjelmistojen mallinnus, s2008 HY/TKTL, 28/10/2008. Harri Laine 1. Ohjelmisto

ATLAS-kartan esittely - Peli palveluiden yhteiskehittämisen menetelmistä Päivi Pöyry-Lassila, Aalto-yliopisto

Small Number Counts to 100. Story transcript: English and Blackfoot

Menetelmäraportti - Konfiguraationhallinta

Other approaches to restrict multipliers

Liiketoimintajärjestelmien integrointi

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

Tarua vai totta: sähkön vähittäismarkkina ei toimi? Satu Viljainen Professori, sähkömarkkinat

Roolipeliharjoitus. - Opiskelijoiden suunni=elemat neuvo=eluvideot ja niiden vertaisarvioinnit

Ohjelmistotekniikka kevät 2003 Laatujärjestelmät

TIEKE Verkottaja Service Tools for electronic data interchange utilizers. Heikki Laaksamo

Ohjelmistotekniikka - Luento 2

Making use of BIM in energy management

Gap-filling methods for CH 4 data

RINNAKKAINEN OHJELMOINTI A,

Työasemien hallinta Microsoft System Center Configuration Manager Jarno Mäki Head of Training Operations M.Eng, MCT, MCSE:Security, MCTS

Kuka vastaa tietojärjestelmähankkeen laadusta?

Suomen Potilasturvallisuusyhdistys SPTY ry

HITSAUKSEN TUOTTAVUUSRATKAISUT

Ohjelmistoarkkitehtuuriin vaikuttavia tekijöitä. Kari Suihkonen

Virtualisoinnilla käytettävyyttä ja joustavuutta liiketoimintakriittisille sovelluksille

Tietotekniikan koulutus ammattikorkeakouluissa 2012 Uudellamaalla

Information on Finnish Language Courses Spring Semester 2018 Päivi Paukku & Jenni Laine Centre for Language and Communication Studies

Uusi Ajatus Löytyy Luonnosta 4 (käsikirja) (Finnish Edition)

Visualisoinnin aamu 16.4 Tiedon visualisointi. Ari Suominen Tuote- ja ratkaisupäällikkö Microsoft

Prosessiajattelu. Prosessikuvaukset ja elinkaarimallit. Organisaation prosessikuvaus - CMMI. Sami Kollanus TJTA330 Ohjelmistotuotanto 3.4.

Information on Finnish Language Courses Spring Semester 2017 Jenni Laine

Prosessien kehittäminen. Prosessien parantaminen. Eri mallien vertailua. Useita eri malleja. Mitä kehitetään?

Windows Phone. Module Descriptions. Opiframe Oy puh Espoo

Opiskelijaosuuskunta oppimisympäristönä fysioterapian ammattikorkeakouluopinnoissa

Ohjelmointitekniikka lyhyesti Survival Kit 1 Evtek KA ELINKAARIMALLEISTA

SYSTEEMITYÖ. Tärkeitä sanoja

Hankintailmoitus: Pohjois-Savon sairaanhoitopiirin kuntayhtymä/kiinteistöyksikkö : Puijon sairaalan Pääaula-alueen uudistus, Sähköurakka

Tiekartta taitavaksi urheilijaksi

TIETEEN PÄIVÄT OULUSSA

NAO- ja ENO-osaamisohjelmien loppuunsaattaminen ajatuksia ja visioita

SQL SERVER 2012 PARALLEL DATA WAREHOUSE APPLIANCE

Keskeisiä näkökulmia RCE-verkoston rakentamisessa Central viewpoints to consider when constructing RCE

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Transkriptio:

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