ohjelmistotekniikka johdanto

22
1 Ohjelmistotekniikka Ohjelmistotekniikka johdanto johdanto Kevät 2003 Hanna-Kaisa Lammi LTKK/Tite .

Upload: amato

Post on 15-Jan-2016

44 views

Category:

Documents


0 download

DESCRIPTION

Ohjelmistotekniikka johdanto. Kevät 2003 Hanna-Kaisa Lammi LTKK/Tite. Miksei vain koodata?. Kerrostaloa ei voi rakentaa samoilla tiedoilla kuin koirankoppia. Vastaavasti kaupallisia ohjelmistoja ei voi tehdä pelkällä ohjelmointitaidolla. Ohjelmoijan ja ohjelmistotuottajan suhdetta voikin - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Ohjelmistotekniikka johdanto

1

OhjelmistotekniikkaOhjelmistotekniikkajohdantojohdanto

Kevät 2003Hanna-Kaisa LammiLTKK/Tite

.

Page 2: Ohjelmistotekniikka johdanto

2

Miksei vain koodata?Miksei vain koodata?

Kerrostaloa ei voi rakentaa samoilla tiedoilla kuinkoirankoppia.

Vastaavasti kaupallisia ohjelmistoja ei voi tehdä pelkällä ohjelmointitaidolla.

Ohjelmoijan ja ohjelmistotuottajan suhdetta voikin tietyssä mielessä verrata kirvesmiehen ja insinöörin suhteeseen

Page 3: Ohjelmistotekniikka johdanto

3

Mitä on ohjelmistotuotanto?Mitä on ohjelmistotuotanto?

Ohjelmistotuotanto käsittää ohjelmistojen tuotantoprosessit, niiden hallitsemisen ja niissä käytettävät menetelmät, eli– tavat, kuinka ohjelmistoja tuotetaan– kuinka tuotantoprosessia hallitaan niin, että

lopputuotos on sellainen kuin haluttiin– millä menetelmillä lopputulos saavutetaan

Page 4: Ohjelmistotekniikka johdanto

4

Tyypillisiä kysymyksiäTyypillisiä kysymyksiä

Miten saan aikaiseksi asiakkaan tarpeet täyttävän ohjelmiston?

Kuinka teen luotettavasti toimivan järjestelmän?

Kuinka suunnittelen ohjelmiston niin, että eri osat toimivat saumattomasti yhteen?

Kuinka saan tehtyä ohjelmiston sovitun aikataulun puitteissa

jne…

Page 5: Ohjelmistotekniikka johdanto

5

Ohjelmistotuotannon Ohjelmistotuotannon sovellusalueitasovellusalueita

Lähde: Haikala, Märijärvi: Ohjelmistotuotanto, 2000.

Page 6: Ohjelmistotekniikka johdanto

6

OhjelmistotyyppejäOhjelmistotyyppejä

Varus- ja työkaluohjelmistot Teknis-tieteelliset laskentaohjelmistot Tietämyspohjaiset järjestelmät Kaupallis-hallinnolliset järjestelmät Prosessinohjaus- ja prosessiautomaatiojärjestelmät Sulautetetut järjestelmät WWW-pohjaiset ohjelmistot Reaaliaikajärjestelmät, reaktiiviset järjestelmät

Page 7: Ohjelmistotekniikka johdanto

7

Ohjelmistotuotannon Ohjelmistotuotannon kasvunäkymätkasvunäkymät

TEKES / Suomen ohjelmistoteollisuuden kasvun strategia ja haasteet (1999):

Ohjelmistoala kasvaa kaikkialla maailmassa paljon nopeammin kuin talous keskimäärin

Ohjelmistoteollisuus kasvaa lähivuosina todennäköisesti yhdeksi Suomen teollisuusklustereista

Ohjelmistoteollisuuden liikevaihto vuonna 1998 oli Suomessa noin 10 miljardia markkaa ja alalla työskenteli noin 20'000 henkilöä; ohjelmistoalalla toimivia yrityksiä on Suomessa tuhansia

Henkilöstöpula on maailmanlaajuinen ilmiö ohjelmistoalalla Ohjelmistoyritykset toivovat saavansa puolet työvoimastaan

yliopistotasolta

Page 8: Ohjelmistotekniikka johdanto

8

Ohjelmistotuotannon osa-alueitaOhjelmistotuotannon osa-alueitaLiiketoiminta, johtaminen

Laatujärjestelmä

Hankkeiden hallinta (tuotteen tasolla)

Projektinhallinta

Projektinhallinta

Projektinhallinta

tuotteenhallinta

laadunvarmistus

dokumentointi

määrit- tely

käyt- töönotto, ylläpito

testausohjel- mointi

suun- nittelu

vaatimustenhallinta...

Haikala, Märijärvi: Ohjelmistotuotanto, 2000.

Page 9: Ohjelmistotekniikka johdanto

9

Ohjelmistotuotannon standardit Ohjelmistotuotannon standardit ja mallitja mallit

Ohjelmistoprosessin arviointi ja parantaminen - Software Process Assesment and Improvement

SPICE - Software Process Improvement and Capability dEtermination SW-CMM - Capability Mature Model for Software Trillium

Ohjelmiston elinkaariprosessit - Software life-cycle processes

ISO/IEC 12207 - Software life-cycle processes

Tuotelaatu - Software Product Quality ISO/IEC 9126 - Product quality

Page 10: Ohjelmistotekniikka johdanto

10

Ohjelmistotuotannon standardit Ohjelmistotuotannon standardit ja mallitja mallit

Laatujärjestelmä - Quality System ISO 9001 - Quality systems: Assurance of

design/development, production, installation and servicing capability

ISO 9000-3 - Guidelines for the application of ISO 9000 to the development, supply and maintenance of software

MSQH - Modelling a Software Quality Handbook

Tietoturvallisuus - Security Techniques SSE-CCM - Systems Security Engineering CMM

Page 11: Ohjelmistotekniikka johdanto

11

MääritelmiäMääritelmiäSoftware -- ohjelmistoComputer programs, procedures, rules, documentation, and data pertaining to the

operation of a computer system.

Software Engineering – Ohjelmistotuotanto, ohjelmistotekniikka“The art of producing high quality software - in schedule and - in budged.”

“The application of a systematic; disciplined, quantifiable approach to the development, operation, and maintenance of software [IEE 610.12]

Vapaa tulkinta:Ohjelmistotuotanto – ohjelmistotyö, jonka tuloksena syntyvät järjestelmät

täyttävät käyttäjiensä kohtuulliset toiveet ja odotukset ja tämän lisäksi valmistuvat laadittujen aikataulujen ja kustannusarvioiden puitteissa

Page 12: Ohjelmistotekniikka johdanto

12

Ohjelmistoa kuvaavat Ohjelmistoa kuvaavat ominaisuudetominaisuudet

Ohjelmiston koko ja käsiteltävän tiedon määrä

Vasteaika- ja reaaliaikaisuusvaatimuksetLuotettavuusHajautusTuotteistusaste

Page 13: Ohjelmistotekniikka johdanto

13

EsimerkkijärjestelmiäEsimerkkijärjestelmiäominaisuus

sovellus

koko tieto-kannan koko

vasteaika hajautus luotettavuus tuotteistus-

aste

matkapuhelin-keskus

ROM-muistin koko 1MB

- kovia reaaliaikaisuus-vaatimuksia

hajautettu moniprosessorijärjestelmä

kahdennettuja komponentteja

tuote, asiakaskoh-taisia piirteitä

televisio-vastaanotin

ROM-muistin koko 1 MB

- kovia reaaliaikaisuus-vaatimuksia

2 prosessoria, useita signaali-prosessoreita

massa-

tuote

suurehko hissi-järjestelmä

50 000 koodiriviä - kovia reaaliaikaisuus-vaatimuksia

hajautettu, CAN-väylä

virhetoiminnot estetty erillisellä elektroniikalla

tuotteistettu,

konfiguroita-va ko. rakennukseen

vakuutusten hoito-järjestelmä

300 000 koodiriviä, 100 näyttöä

100 relaatio-tietokan-nan taulua

vasteaika alle sekunnin

keskitetty järjestelmä, satojen päätteiden verkko

käyttökatkok-set haittaavat asiakas-palvelua

räätälöity

Page 14: Ohjelmistotekniikka johdanto

14

Prosessi- ja tuotantoautomaatio

Tuotteiden suunnittelu, operatiiviset järjestelmät,

tuotannonohjaus, materiaalihallinto,

logistiikka

Taloushallinto

Johdon tietojärjestelmät,

päätöksenteon tuki

Markkinointi

Tietotekniikka tuotteissa

Infrastuktuuri: tietoliikenne, toimistoautomaatio, ryhmätyö, asianhallinta, palvelimet...

Yrityksen tietovarastot

Yrityksen tietotekniikkaYrityksen tietotekniikka

Haikala, Märijärvi: Ohjelmistotuotanto, 2000.

Page 15: Ohjelmistotekniikka johdanto

15

Yrityksen kilpailutilanneYrityksen kilpailutilanne

Liiketoimintaympäristö

Liikeidea

Strategia, kilpailutekijät

Tietohallinto- strategia

AsiakkaatKilpailijat

Tietotekniikan kehitys

Oma liiketoiminta

Oma tietojärjestelmätoiminta

Tietohallinto

Kehittämis- hankkeet

Projektit

Haikala, Märijärvi: Ohjelmistotuotanto, 2000.

Page 16: Ohjelmistotekniikka johdanto

16

Ohjelmistotuotannon ongelmiaOhjelmistotuotannon ongelmia

Page 17: Ohjelmistotekniikka johdanto

17

Ohjelmistotuotannon ongelmiaOhjelmistotuotannon ongelmia

korkeat kustannuksettyömäärät ja aikataulut arvioitu väärin (yli

puolet ohjelmistoprojekteista myöhästyy)ohjelmistotuonnon ongelmat näyttävät

pääasiassa liittyvän itse tuotantoprosessiin eikä uusiin menetelmiin tai tekniikoihin

alan tutkimus tulisi kohdistaa tuotantoprosessiin

Page 18: Ohjelmistotekniikka johdanto

18

Ohjelmistotekniikka Ohjelmistotekniikka kansanperinteestä tieteeksikansanperinteestä tieteeksi

[Shaw 1990]

ad hoc-menetelmät

kansan-perinne

kiteyty-minen

mallit,teoriat

soveltaminenkäytäntöön

uudetongelmat

koulutus jatutkimus

Page 19: Ohjelmistotekniikka johdanto

19

Ohjelmistojen erityspiirteitäOhjelmistojen erityspiirteitä

monimutkaisuusnäkymättömyysmuunnettavuusainutkertaisuusmenetelmien skaalautumattomuusepäjatkuvuus

Page 20: Ohjelmistotekniikka johdanto

20

Kannattaako edes yrittää?Kannattaako edes yrittää?

”Parhaiten onnistuvat ne, jotka eivät luota liikaa viimeisimpiin poppakonsteihin, mutta ovat silti valmiita itse kokeilemaan uusia ideoita, vaikka ne esitettäisiinkin karnevaalihumussa mainosmiesten pötypuheiden seassa” [Weinberg 1982]

Mikään ei korvaa ratkaistavan ongelman perusteellista ymmärtämistä- joskus voi tosin käydä hyvä tuuri

Mikään ratkaisu ei sovellu kaikkiin tehtäviin ja johonkin tilanteeseen parhaiten soveltuva lähestymistapa voi olla toisessa tilanteessa kaikista huonoin

Page 21: Ohjelmistotekniikka johdanto

21

Onnistumisen teesejäOnnistumisen teesejä

On olemassa monia hyödyllisiä lähestymistapoja, jotka toimivat useammassa kuin yhdessä tilanteessa, joten kannattaa tutustua sellaiseen mikä on toiminut aikaisemmin

Ongelman ratkaisun niksi ei ole pelkästään miten menetelmiä sovelletaan (know-how) vaan mieluummin milloin niitä sovelletaan (know-when)- tämä antaa mahdollisuuden sovittaa ratkaisumenetelmä ongelmaan eikä päinvastoin

Page 22: Ohjelmistotekniikka johdanto

22

Onnistumisen teesejäOnnistumisen teesejä

Riippumatta siitä, kuinka hyvin taidat miten

ja milloin, on olemassa ongelmia, jotka ovat nykytietämyksellä mahdottomia ratkaista tai joiden perimmäisiä ominaisuuksia kukaan ei ymmärrä riittävän hyvin: nöyryys on siis aina paikallaan