ITK130 Johdatus ohjelmistotekniikkaan

Samankaltaiset tiedostot
Johdatusta ohjelmistotekniikkaan

Software engineering

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

Mitä on ohjelmistotuotanto?

Ohjelmistojen mallinnus (OMa) - Johdatus ohjelmistotuotantoon Harri Laine 1

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

Kurssin sisältö. Kurssilla vähemmän. Johdatus ohjelmistotekniikkaan. Mitä on ohjelmistotekniikka? Miten ohjelmistoja suunnitellaan ja toteutetaan?

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

Ohjelmistotekniikka - Luento 2

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

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

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

OHJ-3010 Ohjelmistotuotannon perusteet

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

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

1. Johdanto. Ohjelmistotuotannon ongelmia

Johdantoluento. Ohjelmien ylläpito

Ohjelmistoarkkitehtuurit. Syksy 2010

Oleelliset vaikeudet OT:ssa 1/2

ITK130 Ohjelmistojen luonne

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

Computing Curricula raportin vertailu kolmeen suomalaiseen koulutusohjelmaan

Menetelmäraportti - Konfiguraationhallinta

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

Ohjelmistoarkkitehtuurit. Kevät

Opettajatuutorointi-kurssin syksyn 2006 kyselyjen tulokset

Projektityö

Sisällys. Ratkaisumallien historia. Ratkaisumalli. Ratkaisumalli [2] Esimerkki: Composite [2] Esimerkki: Composite. Jaakko Vuolasto 25.1.

Tietojärjestelmän osat

Katselmoinnit. review) Katselmoinnit (review( Mitä ovat katselmoinnit? Katselmoinnin määritelmä (IEEE 1988)

Tietotekniikan koulutus ammattikorkeakouluissa 2012 Uudellamaalla

Käyttäjäkeskeisen suunnittelun periaatteet ja prosessit

Tietojenkäsittelytieteiden koulutusohjelma. Tietojenkäsittelytieteiden laitos Department of Information Processing Science

Ohjelmistojen mallintaminen, kesä 2009

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Agenda. Läpäisyvaatimukset Henkilökunta Luennot ja aikataulu Kurssimateriaali Harjoitustyöt Demoharjoitus Tentti ja arvostelu Muuta?

Ohjelmistotuotteen hallinnasta

Prosessikuvaukset ja elinkaarimallit

Projektin suunnittelu

ELEC-C5210 Satunnaisprosessit tietoliikenteessä

Määrittely- ja suunnittelumenetelmät

Ohjelmistotekniikan menetelmät, kevät 2008

2. Ohjelmistotuotantoprosessi

CMMI CMMI CMM -> CMMI. CMM Capability Maturity Model. Sami Kollanus TJTA330 Ohjelmistotuotanto

Ohjelmistotekniikan menetelmät, kesä 2008

Johdanto. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos.

T Johdatus käyttäjäkeskeiseen tuotekehitykseen 2 op. Marko Nieminen

Tutkittua tietoa. Tutkittua tietoa 1

ITK130 Ohjelmistoprosessi

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

Tehostettu kisällioppiminen tietojenkäsittelytieteen ja matematiikan opetuksessa yliopistossa Thomas Vikberg

CMM Capability Maturity Model. Software Engineering Institute (SEI) Perustettu vuonna 1984 Carnegie Mellon University

CMMI CMM -> CMMI. CMM Capability Maturity Model. Sami Kollanus TJTA330 Ohjelmistotuotanto Software Engineering Institute (SEI)


T Ohjelmistojen määrittely- ja suunnittelumenetelmät

CS35A0011 Johdatus tietojohtamiseen ja informaatioverkostoihin 6

Ohjelmointitekniikka lyhyesti Survival Kit 1 Evtek KA ELINKAARIMALLEISTA

Johdattelua, motivointia, eli missä ollaan ja kuinka siihen on tultu

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

Ohjelmistoarkkitehtuurit. Syksy 2008

Juha Taina, Marko Salmenkivi ja Kjell Lemström,

Standardi IEC Ohjelmisto

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

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

T Tietojenkäsittelyopin ohjelmatyö Tietokonegrafiikka-algoritmien visualisointi Vaatimustenhallinta

Ohjelmistoprosessit ja ohjelmistojen laatu Ohjelmistoprosessit ja ohjelmistojen laatu (4op)

MS-C2128 Ennustaminen ja Aikasarja-analyysi, 5 op Esittely

Käyttöjärjestelmien historia. Joni Herttuainen Henri Jantunen Markus Maijanen Timo Saksholm Johanna Tjäder Eetu Turunen

Ohjelmistojen mallintaminen, mallintaminen ja UML

Prosessimalli. 2. Ohjelmistotuotantoprosessi. Prosessimallin vaihejako. Prosessimallien perustehtävät. Ohjelmiston suunnittelu. Vaatimusmäärittely

Projektityö

T Tietojenkäsittelyopin ohjelmatyö Tietokonegrafiikka-algoritmien visualisointi Vaatimustenhallinta

Ohjelmistotuotanto, prosessit Syksy Ohjelmistotuotantoprosessi. Prosessimalli. Prosessimallien perustehtävät. Prosessimallin vaihejako

OHJELMISTOKEHITYS -suuntautumisvaihtoehto

Tietojärjestelmätieteen ohjelmat

Tietotekniikan Sovellusprojektit

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

Projektityö

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

Aineiston analyysin vaiheita ja tulkintaa käytännössä. LET.OULU.FI Niina Impiö Learning and Educational Technology Research Unit

1.3 Katsaus ohjelmistotuotannon kehittymiseen

7. Product-line architectures

805306A Johdatus monimuuttujamenetelmiin, 5 op

Testaaminen ohjelmiston kehitysprosessin aikana

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

MS-C2128 Ennustaminen ja Aikasarja-analyysi, 5 op Esittely

Harjoituskerta Yritysviestinnän perusteet A71A00100 Visa Penttilä

Ohjelmistojen mallintaminen, kesä 2010

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin

Ylläpito. Ylläpito. Ylläpidon lajeja Ohjelmistotuotanto, syksy 1998 Ylläpito

Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä

TkK-tutkielmat

KURSSIEN POISTOT JA MUUTOKSET LUKUVUODEKSI


RAIN RAKENTAMISEN INTEGRAATIOKYVYKKYYS

TARKASTUSMENETTELYT JA NIIDEN APUVÄLINETUKI

<e.g. must, essential, conditional>

TIE Johdatus ohjelmistotuotantoon

Transkriptio:

ITK130 Johdatus ohjelmistotekniikkaan Sami Kollanus Luennon sisältö Kurssin käytännön asiat Kurssin sisältö Ohjelmistotekniikka Missä ohjelmistotekniikkaa tarvitaan? Erilaisia ohjelmistotyyppejä Ohjelmistotekniikka nykyään Termejä Ohjelmistotekniikka mitä se on? Ohjelmistotekniikan historia Ohjelmistotekniikan kehitys Ohjelmistotekniikan osuus järjestelmän rakentamisessa Ohjelmistosuunnittelijan rooli Ohjelmiston elinkaarimalli Ohjelmistotuotanto vs. tietojenkäsittelyoppi Ohjelmistotuotanto vs. muut tieteen alat

ITK130 JOT Kurssi pyrkii muodostamaan opiskelijoille yleiskäsityksen ohjelmistotekniikasta vastaamalla seuraaviin kysymyksiin: mikä on ohjelmisto miksi ohjelmistoja tehdään miten ohjelmistoja tehdään miten ohjelmistojen tekoa hallitaan keinoja ohjelmistojen tekemisen hallinnan arviointiin Kurssin esitiedot ITK150 Oliokeskeinen tietojärjestelmien kehittäminen ITK110 Ohjelmointi 1 Opetusmuoto: Luennot ja luentoihin liittyvät tehtävät Suoritus Kurssiraportti: tehtävistä tehtyinä 10/13 29.10 mennessä ja lopputentti 29.10 tai 17.12 ITK130 JOT - kurssin opettajat Kurssivastaavat Yliassistentti - vastaa yleisistä järjestelyistä Assistentti Sami Kollanus Kurssiraporttien tarkistus Lisäksi luennoivat Suunnittelija Jonne Itkonen Assistentti Antti-Juhani Kaijanaho Yliassistentti Jussi Koskinen Professori Tommi Kärkkäinen Koulutuspäällikkö Timo Tuunanen (Yomi Solutions Oy)

ITK130 JOT kurssin aikataulu Pvm klo Ohjaaja Aihe Paikka 7.9 12-14 Heikkilä Kurssin esittely ja johdanto ohjelmistotekniikkaan 9.9 8-10 Heikkilä Ohjelmistotekniikan luonne 14.9 12-14 Kollanus Ohjelmistotekniikan periaatteet 16.9 8-10 Kollanus Suunnittelu 21.9 12-14 Itkonen Arkkitehtuuri 23.9 8-10 Kaijanaho Toteutus kielen valinta 28.9 12-14 Kollanus Testaus 30.9 8-10 Koskinen Ylläpito 5.10 12-14 Heikkilä Yleistä ohjelmistoprosesseista 7.10 8-10 Heikkilä Esimerkkejä ohjelmistoprosesseista UP 12.10 12-14 Tuunanen extreme programming 14.10 8-10 Heikkilä Ohjelmistotekniikan laatu ja laatujärjestelmät 19.10 12-14 Kollanus Tarkastuksen ohjelmistotuotannossa 21.10 8-10 Kärkkäinen Johdannosta eteenpäin tiistaisin 12-14, torstaisin 8-10 Kurssiraportti 1/3 Kurssiraportilla tällä kurssilla tarkoitetaan luentojen pohjalta tehtäviä kotitehtäviä. Luennoitsija antaa jokaisesta luennosta yhden tehtävän, johon vastataan kirjallisesti esseen muodossa. Kurssin kuluessa tehtäviä tulee yhteensä 13 kappaletta eli yksi jokaiselta luennolta viimeistä luentoa lukuun ottamatta. Kurssiraportti tehdään 1-3 hengen ryhmissä. Jokaisen ryhmän täytyy vastata vähintään kymmeneen kysymykseen.

Kurssiraportti 2/3 Kirjoitusohjeet Jokainen tehtävä kirjoitetaan omaan dokumenttiin Vastaukseen tulee olla noin yksi A4 sivu Vastauksen ensimmäiselle riville tulee laittaa vastauksen otsikko ja toiselle riville tekijöiden nimet Vastaus tulee tallentaa puhtaana tekstinä (.txt). Siis mitään muotoiluja on turha tehdä. Tiedosto tulee nimetä tyylillä luento+luennon mumero+.txt, siis esim. luento6.txt Tehtävien palautus Kurssiraportti 3/3 Vastausdokumentit tulee tallentaa samaan hakemistoon jonkin ryhmän jäsenen kotisivutilaan. Korpissa on jokaisen opiskelijan omissa kurssitiedoissa lomakekenttä, johon tulee syöttää URL hakemistoon, josta vastaukset löytyvät. Siis jokaisen ryhmän jäsenen täytyy erikseen tallentaa Korpissa tuo URL, vaikka vastaukset ovat samassa paikassa. Tehtävien täytyy olla saatavilla Korppiin tallennetussa URL:ssa ennen kurssin lopputenttiä eli viimeistään 29.10. Suositeltavaa on kuitenkin vastata tehtäviin heti luentojen jälkeen. Kurssista ei ole saatavilla sellaista itseopiskelumateriaalia, jonka avulla voisi nopeasti palauttaa asiat mieleen sen jälkeen, kun ne ovat päässeet unohtumaan.

Kurssiraportti - Varoitus Vastausten on viisainta olla itse kirjoitettuja. Vastaukset tullaan tarkastamaan koneellisesti ohjelmalla, joka tunnistaa automaattisesti liikaa toisiaan muistuttavat vastaukset. Vilpistä kiinni jääneet menettävät oikeutensa suorittaa kurssin tänä lukuvuonna. Kurssimateriaali Luentomateriaali tulee löytymään myös kurssin sivuilta http://www.cs.jyu.fi/~kolli/jot04/ Luentotehtäviin liittyvät artikkelit Lisämateriaalia Pressman R. S., Software Engineering, 5th edition, McGraw-Hill, 2000 Sommerville I., Software Engineering, 6th edition, Addison-Wesley Haikala I., Märijärvi J., Ohjelmistotuotanto, Suomen ATK kustannus, 2002 Ghezzi C.,Jazayeri M., Mahdrioli D., Fundamentals of Software Engineering, Prentice Hall, 2003

Ohjelmistotekniikka Missä ohjelmistotekniikkaa tarvitaan? Ohjelmistoja käytetään jo monessa paikassa toiminnallisuus tuotetaan ohjelmistojen avulla ennemmin kuin laitteistojen avulla matkapuhelimet, autotietokoneet, pelit, multimedia, televisio, puhelinverkot, internet tuotantojärjestelmät palveluteollisuus

Erilaisia ohjelmistotyyppejä Varus- ja työkaluohjelmistot Teknis-tieteelliseen laskentaan tarkoitetut ohjelmistot Tietämyspohjaiset järjestelmät Kaupallishallinnolliset ohjelmistot Prosessinohjaus- ja prosessiautomaatiojärjestelmät Sulautetut järjestelmät (koneen tai laitteen sisällä hissin ohjausjärjestelmä) Reaaliaikajärjestelmät (ohjelman on reagoitava heti polttoaineen ja jarrujen säätely) Reaktiiviset järjestelmät (toimivat jatkuvasti puhelinkeskus) Ohjelmistotekniikka nykyään Teollinen ohjelmointi ollut vain joitain vuosikymmeniä Tietoteollisuuden taloudellinen merkitys kasvaa jatkuvasti Ohjelmien koko kaksinkertaistuu muutamien vuosien välein Ohjelmistotyön tuottavuus kasvaa vuosittain vain noin 4%

Termejä Ohjelma program kirjoitetaan jollain ohjelmointikielellä Ohjelmisto software ohjelma, dokumentaatio, lähdekoodi Ohjelmistotuote software product ohjelmisto, laitteisto, koulutus, ylläpito, tuki Ohjelmistotekniikka - software engineering Pätevien insinööriperiaatteiden vakiinnuttamista ja käyttämistä siten, että voidaan taloudellisesti tuottaa ohjelmisto, joka on luotettavaa ja toimii tehokkaasti todellisissa koneissa (Bauer, F. L. Software Engineering. Information Processing 71., 1972) Ohjelmistotekniikka mitä se on? The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (IEEE Standard 610-1990) Software engineering is the technological and managerial discipline concerned with systematic production and maintenance of software products that are developed and modified on time and within cost estimates. (Fairley, R. Software Engineering Concepts. New York: McGraw-Hill, 1985) Software engineering is the computer science discipline concerned with developing large applications. Software engineering covers not only the technical aspects of building software systems, but also management issues, such as directing programming teams, scheduling, and budgeting. ( WebReference Webopaedia) SEI software engineering definition from 1990 SEI Report on Undergraduate Software Engineering Education (CMU/SEI-90-TR-003) Engineering is the systematic application of scientific knowledge in creating and building cost-effective solutions to practical problems in the service of mankind. Software engineering is that form of engineering that applies the principles of computer science and mathematics to achieving cost-effective solutions to software problems.

Ohjelmistotekniikan historia Ohjelmistotekniikka termiä käytettiin ensimmäisen kerran NATO konferenssissa Garmisch Partenkirchenissä Saksassa vuonna 1968 Ohjelmistoja oli aloitettu tuottamaan suuremmissa mittakaavoissa laajojen ohjelmistojen tuottaminen oli vaikeaa ohjelmistot olivat pullollaan virheitä toimitusajat venyivät valmistuskustannuksen venyivät vaikea ylläpitää vanhoja ohjelmistoja Ohjelmistojen kehitys kriisissä NATO konferenssi - http://homepages.cs.ncl.ac.uk/brian.randell/nato Ohjelmistotuotannon kehitys 1950-1974 1950-1964 Programming any which -way vähän tietokoneita eräajo-tyyppiset ohjelmat yksi toteuttaja pieniä ohjelmia ohjelmien rajoitettu jakelu ei kaupallista merkitystä 1963 1974 Programming in - the - small enemmän ja suurempia tietokoneita yksi toteuttaja monen käyttäjän (noin 100) ajantasaiset järjestelmät tietokannat kaupallinen hyödyntäminen ohjelmistokriisi henkilökohtainen tehokkuus Shaw M. IEEE Software, November 1990

Ohjelmistotuotannon kehitys 1973-2000 1973-1988 Programming in the - large henkilökohtaiset tietokoneet ja hajautetut järjestelmät monta toteuttajaa ohjelmistokustannukset suuremmat kuin laitteistokustannukset ohjelmistoilla paljon käyttäjiä (yli 100 000) massamarkkinat laatuvaatimukset tuotteen kompleksisuuden hallinta ja modularisointi 1985 2000 Programming in the - world tehokkaat pöytäkoneet oliotekniikat CASE välineet valtavat käyttäjämäärät tuotantoprosessin ja projektityöskentelyn kompleksisuuden hallinta perustana: Shaw M. IEEE Software, November 1990 Ohjelmistotuotannon kehityksen aikakaudet Aikakausi Vallitseva tietämys ja ajattelutapa Suunnittelun välituotteet Esimerkki menetelmät 1.Suoraviivainen Tietämys kehittymässä, yleispätevien ratkaisujen tasolla Formaalit määrittelyt, joita pidettiin täydellisinä ja selkeinä Vesiputous 2.Osallistuva Tietämys kohtalaista, jakautunut projektin sidosryhmien välille, käyttäjät hallitsevat suunnittelua. Paperiset käsitemallit, prototyypit PICTIVE 3.Asiantuntemus ja ammattitaito Vankka tietämys edellisten aikakausien varrelta, ongelmat ymmärretään, käyttäjien ja kehittäjien välinen pitkäaikainen yhteistyö ja ymmärrys Konkreettisia kehittyviä prototyyppejä yleisesti analysoitaviksi, workshopit Iteratiiviset, agile-menetelmät Ostwald Jonathan 1996: Knowledge Construction in software development, Ph.D. thesis, University of Colorado (N. Cross, Developments in Design Methodology, John Wiley & Sons, New York, 1984)

Ohjelmistotekniikan osuus järjestelmän rakentamisessa Ohjelmistotekniikka on osa isompia järjestelmiä Ohjelmistojen vaatimusten on oltava balanssissa muiden kanssa Esim. puhelinvaihteissa tietyt vaatimukset ovat toteutettavissa vain laitteiston muutoksilla, ohjelmistojen muutoksilla tai komponenteilla Ohjelmistosuunnittelijan rooli Ohjelmistosuunnittelijan tulee ymmärtää vaatimuksia kirjoittaa määrittelyjä (johtaa malleja ja perustella ne) osata toimia erilaisilla abstraktion tasoilla osata ohjelmoida tuntea eri tekniikat, metodit, työkalut, tuotantoprosessit tuntea sovellusalue toimia tiimin jäsenenä kommunikointitaidot johtamistaidot esittelytaidot neuvottelutaidot Pelkät ohjelmointitaidot eivät riitä

Ohjelmiston elinkaarimalli (periaate) Vaatimusmäärittely Suunnittelu vesiputousmalli Toteutus ja moduulitestaus Integrointi ja järjestelmätestaus Käyttöönotto ja ylläpito Ohjelmistotuotanto vs. Tietojenkäsittelyoppi Ohjelmointikielet Käyttöjärjestelmät Tietokannat Tekoäly Teoreettiset mallit

Ohjelmistotuotanto vs. Muut tieteen alat Johtamisopit Järjestelmäsuunnittelu Psykologia Kognitiotiede Kielitiede Taloustiede Ohjelmointi Tuotteen hallinta Työkalut Menetelmät Laatu Projektin hallinta Toteutus Suunnittelu Vaatimukset Testaus Ylläpito Ohjelmistotekniikka Prosessi(process) Ihmiset (people) Projekti (project) Tuote (product)

Luentotehtävä 1 Davis, A.M.; Fifteen principles of software engineering, IEEE Software 11(6) 94-96, 101, Nov 1994 Kerro omin sanoin Davisin viisitoista ohjelmistotekniikan periaatetta ja pohdi miten hyvin ne pätevät nyt 10 vuotta myöhemmin.