Arkkitehdin arkipäivää Sandvikilla Janne Viitala Sandvik

Koko: px
Aloita esitys sivulta:

Download "Arkkitehdin arkipäivää Sandvikilla Janne Viitala Sandvik"

Transkriptio

1 Arkkitehdin arkipäivää Sandvikilla Janne Viitala Sandvik

2 Motivaatio Arkkitehtuureilla on väliä Aamulehti, pääkirjoitus (2013): Avoin väylämalli myös Suomeen Viron potilastietojärjestelmä pohjautuu Enterprise Service Bus arkkitehtuurimalliin. Viro: 10M Suomi: 1800M Service Bus

3 Agenda Arkkitehdin arkipäivä Mikä ihmeen Sandvik? Käytönnön kokemuksia ja havaintoja arkkitehdin työstä teollisuudessa Suunnittelu Dokumentointi Kommunikointi Muutama nyrkkisääntö

4 Disclaimer T.s. Vastuu on kuulijalla Esitetyt mielipiteet ja näkemykset ovat esittäjän omia eivätkä vastaa Sandvikin, TTY:n, tai minkään muunkaan instanssin virallisia tai epävirallisia mielipiteitä. Tai jos vastaavat niin kyse on puhtaasta sattumasta. Tuskin tulee tentiin.

5 Kuka? DI TTY 1995, koneelta D-työnä mobilerobotin ohjausjärjestelmän koodaus ja mallipohjainen teleoperointi Microteam Oy ~10v Sandvik ~10v INT count: SEQ count := 0 CHAN OF INT chn: PAR WHILE TRUE SEQ count := count + 1 chn! count WHILE TRUE INT v: SEQ chn? v dostuff (v)

6 Mikä Sandvik? Lyhyt intro

7 Heritage Founded 1862 in Sandviken, Sweden Göran Fredrik Göransson redesigned the Bessemer furnace to mass-produce steel A breakthrough and an innovation started the company 150 years ago

8 Sandvik/Tamrock Historia Tampella 1856 Tamperelaista konepajaperinnettä Paineilmaporakoneita 50-luvulta Tampellan Porakoneyksikkö ==> Tamrock (1969) Myllypuroon -70 luvun alussa Hydrauliset poralaitteet -70 luvulla Tamrock ==> Sandvik (1997) Sandvik Mining, Sandvik Construction

9 Tuotteita Sandvik Mining ja Sandvik Construction

10 Ohjelmistot Sandvikilla Esimerkkejä Koneen ohjausjärjestelmät Porauksen ohjaus (painemittauksia ja -ohjauksia, pumppujen ohjausta, jne) Puomin ohjaus (asemamittaus, paikoitus erilaisissa koordinaatistossa, taipuma yms. kompensoinnint) GPS-pohjainen porakruunun paikannus ja paikoitus Graafiset käyttöliitymät operaattorille ja huollolle (mittarit/indikaattorit, porakaaviot, diagnostiikka, ) SICA-platform koneenpäällisille ohjausjärjestelmille Desktop: Porakaavioiden luonti, poraus datan analysointi ja visualisointi, kaivoksen 3d-mallinnus, r&d työkalut Palvelinsovellukset: Tiedonkeruu ja raportointi Tabletti ja älypuhelinsovellukset Etäoperointi.

11 SW-arkkitehdin työstä Case Sandvik

12 Arkkitehti? Tässä esityksessä käytetty määritelmä Suunnittelee suurehkon ohjelmiston rakenteen komponenttitasolla Dokumentoi suunnitelman riittävällä tarkkuudella Toivottavasti osallistuu hommaan tämän jälkeenkin jollakin tavalla (koodaus, katselmoinnit, testaussuunnittelu, ) Eli mitä tässä esityksessä ei tarkoiteta arkkitehdistä puhuttaessa: Arkkitehtuurin dokumentoijaa Koodaria joka vastaa osaltaan toteuttamansa komponentin arkkitehtuurista Raja on veteen piirretty viiva

13 Arkkitehdin työ Yleiskatsaus 1)Suunnittelee ohjelmiston rakenteen tietyllä tasolla 2)Dokumentoi suunnitelman riittävällä tarkkuudella Abstraktio järjestelmästä 1) 3) 3)Kommunikoi arkkitehtuurin sidosryhmille (kehittäjät, testaus, projektin vetäjät, johto,...) 2) Ja toivottavasti osallistuu hommaan tämän jälkeenkin jollakin tavalla (koodaus, katselmoinnit, testaussuunnittelu, ) Voi olla myös iteratiivinen prosessi. Voi olla myös jaettu vastuu, esim. teamin kesken.

14 Järjestelmän suunnittelu Mitä se edellyttää? Yleinen sw-osaaminen Kyky hahmottaa ja hallita monimutkaisia kokonaisuuksia Järjestelmän arkkitehtuurin yhtenäisyys, unifying vision Sovellusalue-osaaminen!

15 SW osaaminen Mitä se on Vahva koodaustaito & -kokemus käytetyillä kielillä Arkkitehdin tulee osata koodata! Tärkeää koska: devil is in the details Käytettyjen kirjastojen, alustojen, työkalujen yms. tuntemus Oliomenetelmät, UML, yleiset patternit (GoF), Kyky dokumentoida ja kommunikoida Arkkitehdin tulisi nähdä ja pystyä esittämään miten periaatteessa mikä tahansa toiminto järjestelmässä toteutetaan - show me the code

16 SW osaaminen UML, oliomenetelmät, jne Kahvinkeitin UML on de-facto mallinnus-/kuvausmenetelmä UML käytännön tasolla ( 20% UML:stä riittää 80% tarpeisiin - Ivar Jacobson) Kannattaa huomioida että käytännössä UML-osaamisen taso vaihtelee! Management, wanhat parrat,... Sovellusspesialistit ja järjestelmäsuunnittelijat SysML vielä tuntematon Perus-design patternit (GoF) Vesi KahvinPorot Hyvä työkalupakki suunnitteluun. Myös tehokkaita kommunikaatiovälineenä! ( käyttöliittymätoiminnot toteutetaan Command-patternia käyttäen ).

17 Sovellusalue (=Domain) osaaminen Mitä se on? Käytännön kokemusta kyseiseltä sovellusalueelta Tyypillisiä vaatimuksia etenkin ei-toiminnallisia Tyypillisiä ongelmia Tyypillisiä toimivia ratkaisuita ja myös tyypillisiä ei-toimivia (=sudenkuoppia) Tärkeää koska Vaatimukset eivät koskaan kerro kaikkea! Etenkään ei-toiminnalliset (jotka ovat arkkitehtuurin kannalta aivan keskeisiä!). Siksi ne tarvii haistaa. Muutoksiin varautuminen Vaikka vaatimukset kertoisivatkin kaiken, tulee tietää mikä toimii ja mikä ei (ja miksi).

18 Sovellusalue osaaminen Miten kartuttaa? Tekemällä oppii! Alakohtaisia pattern-kataloogeja, esim. TTY:n koneenohjauspatternikirja Designing Distributed Control Systems - a Pattern Language Approach

19 Sovellusalueosaaminen Esimerkki Suunnittele yleiskäyttöinen työkoneen hälytysjärjestelmä Mistä asioista tehdään hälytyksiä? Millon? Miten ne esitetään käyttäjälle? API sovellusohjelmoijille? Vasteaikavaatimuksia? Pysyvä talletus? Siirto koneen ulkopuolelle? Miten konfiguroidaan eri kone-, väylä- ja ohjaintyypeille? Tulevaisuuden näkymiä? Mihin varautua? Yleisesti käytetyt/tunnetut ratkaisut? Miten petrata? ==>ja sitten suunnittelu

20 Sovellusalueosaaminen Esimerkki Työkoneiden elinkaarihalinta Sarjatuonannon vaatimukset? Huolto? Varaosat? Elektroniikan elinkaari < koneen elinkaari Elektroniikka tyypillisesti paranee ja halpenee koko ajan Vanhentuva elektroniikka puolestaan kallistuu Kuitenkin tarve kustannustehokkuuteen Tällaiset vaatimukset toisinaan nousevat esiin vasta kun laite on saatu valmiiksi

21 Järjestelmän suunnittelu Tyypillisiä ongelmia Pieleen mennyt arkkitehtuuri keskeisimpiä syitä projektin epäonnistumiseen. Tyypillisiä ongelmia: Norsunluutorni-arkkitehtuuri Ylisuunnittelu Väärät abstraktiot [N]IH ==> Antipatternit

22 Antipatternit Lyhyt intro viisas oppii toisten virheistä omiensa sijaan Huonoja toteutus- tai toimintamalleja Voivat liittyä sw-rakenteeseen, mutta usein myös organisaatioon, projektinhallintaan yms. toimintatapoihin Vrt. Design patternit jotka liittyvät sw-rakenteeseen Vrt. Prosessi joka liittyy toimintatapoihin Antiprosessi? Idea: sovellusaluekohtaisia antipatterneja? Vrt. Sovellusaluekohtaiset design patternit

23 Norsunluutorni-arkkitehtuuri Antipattern Arkkitehtuurisuunnittelu tehdään huomioimatta detaljeita joita käytännön työssä kuitenkin kohdataan. laatikkokuva == järjestelmä virhe Tyypillisiä syitä: Liikaa työtä arkkitehdille devil is in the details Domain-osaamisen puutteet Kompetenssin puute

24 Overengineering Antipattern Tarpeettoman monimutkainen rakenne, "excessive future-proofing" Spagettikoodin vastakohta (liikaa rakennetta vs. toiminnallisuus) Esimerkki; speksi sanooo 'tee C++ ohjelma joka tulostaa terve maailma '. Triviaali toteutus: #include <iostream> void main () { std::cout << terve maailma << std::endl; } Tai sitten...

25 Behold, the Celestial Object Greeter Framework ( ) Yleiskäyttöinen sovelluskehys taivaankappaleiden tervehtimiseen Laajennettavissa ja kustomoitavissa sovelluskohtaisilla taivaankappaleilla ja tervehdyksillä. Oliopohjainen ja kaikin puolin hieno

26 COGFrameWork +setcelestialobjectfactory (ICOFactory) +setgreetingfactory (ICOFactory) +greetcelestialobject () Common Framework CelestialObject +name (): string -printname (); Greeter +greet (): string -printgreeting (); IGreeterFactory +createcelestialobject (): CelestialObject ICelectialObjectFactory +createcelestialobject (): CelestialObject World HelloSayer HelloSayerFactory WorldFactory Greeter and object specific extensions <<create>> <<create>> Application Application

27 #include <iostream> class ICelectialObjectFactory; class IGreeterFactory; class CelestialObject { friend class COGFrameWork; public: virtual const char *name () = 0; private: void printname () { std::cout << name (); } }; class Greeter { friend class COGFrameWork; public: virtual const char *greet () = 0; private: void printgreeting () { std::cout << greet (); } }; class ICelectialObjectFactory { public: virtual CelestialObject *createcelestialobject () = 0; }; class IGreeterFactory { public: virtual Greeter *creategreeter () = 0; }; class COGFrameWork { public: void setcelestialobjectfactory (ICelectialObjectFactory* f) { m_celestielobjectfactory = f; } void setgreeterfactory (IGreeterFactory* f) { m_greeterfactory = f; } void greetcelestialobject () { CelestialObject *o = m_celestielobjectfactory-> createcelestialobject (); Greeter *g = m_greeterfactory->creategreeter (); g->printgreeting (); std::cout << " "; o->printname (); std::cout << std::endl; } private : ICelectialObjectFactory *m_celestielobjectfactory; IGreeterFactory *m_greeterfactory; }; class World : public CelestialObject { public: const char *name () { return "maailma"; } }; class HelloSayer : public Greeter { public: const char *greet () { return "terve"; } }; class MyCelectialObjectFactory : public ICelectialObjectFactory { public: CelestialObject *createcelestialobject () { return new World; } }; class MyGreeterFactory : public IGreeterFactory { public: Greeter *creategreeter () { return new HelloSayer; } }; Lähdekoodi ~150LoC int main () { COGFrameWork *fw = new COGFrameWork; MyCelectialObjectFactory *cof = new MyCelectialObjectFactory; MyGreeterFactory *gf = new MyGreeterFactory; fw->setcelestialobjectfactory (cof); fw->setgreeterfactory (gf); fw->greetcelestialobject (); }

28 Overengineering Seurauksia Monimutkaisuus kasvattaa monimutkaisuutta, esim COGFW : Puuttuu virhetarkistuksia ja pitää suunnitella miten virhetilanteet hallitaan Muistinhallinnassa bugeja Yksikkötestit? Koodimäärä == Konfigurointimäärä > kovakoodauksen määrä jonka se korvaa (esim. 'muuta ohjelma tulostamaan terve Mars ')

29 Over- vs underengineering Missä menee kultainen keskitie? Overengineering = Tarpeettoman monimutkainen rakenne, "excessive future-proofing" Underengineering = spagettikoodi nopea kirjoittaa tiettyyn koko-/monimutkaisuustasoon asti, ylläpito usein työlästä Mikä on oikea suunnittelun taso? Ei ole mitään kultaista keskitietä eikä Yhtä Oikeaa Tapaa Oikea taso riippuu ei-toiminnallisista vaatimuksista, ne taas heijastavat business-vaatimuksista. GUI prototyyppi? Kertakäyttöprojekti? Platform 20v elinkaarella? Aikataulu? Budjetti? Käytössä olevat resurssit (suunnittelu, kehitys, testaus)? jne

30 Virheelliset abstraktiot Suunnitteluongelmana Muutospyyntö: 'muuta COGFW pohjainen ohjelma tulostamaan terve Belgia ' ==> taivaankappale nimeltä Belgia! T.s. Valittu väärä abstraktio, mikä haittaa ymmärrettävyyttä, uudelleenkäyttöä ja ylläpitoa. Tyyppillinen seuraus puutteellisesta domain-osaamisesta. Myös liian korkea abstraktiotaso hämärtää koodin tarkoitusta esim. COGFW yleistäminen edelleen; framework joka tekee juttuja asioille

31 Muita yleisiä antipatterneita Organisaatioon/toimintaan liittyviä: Analysis Paralyzis (ei domain osaamista) Design by Committee ( unifying vision...) GodClass Koodin rakenteeseen liittyviä: God class Fat interface Kirjallisuutta on, kannattaa tutustua.

32 [Not] Invented Here Suunnitteluongelmana IH: Käytetään ratkaisua johon on tykästytty tyyppillisesti itse kehitettyä. Käyttö riippumatta siitä soveltuuko se tehtävään ensinkään NIH: Ei käytetä toimivaa valmista ratkaisua vaikka se teknis-taloudellisesti olisi perusteltua, koska muitten tekemä koodi ei kerta kaikkiaan voi toimia. Korjataan toimiva valmis ratkaisu rikkinäiseksi samasta syystä

33 Arkkitehtuurin dokumennista

34 Arkkitehtuurin dokumentointi Tarpeita ja haasteita Tarvittava taso riippuu täysin sidosryhmistä! Esim: Pieni kokenut teami samassa projektihuoneessa ==> kevyt tai olematon Offshoring ==> raskas ja yksityiskohtainen dokumentaatio, tarkka seuranta aina ei mikään riitä! Pitkä elinkaari edellyttää parempaa dokumentaatiota koska joku muu tulee kuitenkin ylläpitämään softaa.

35 Arkkitehtuurin dokumentointi Mitä dokumentoidaan? Koodi dokumentoi arkkitehtuuria Doxygen sun muut hyviä työkaluja. Pelkät UML-kaaviot kertovat miten, tarviiko dokumentoida myös miksi? Jos tätä ei dokumentoida, kasvaa riski siihen että jatkossa tehdään tavoitteiden kanssa ristiriitaisia ratkaisuita. ==> unifying vision menetätään, bugeja, työläs ylläpito Yksi lähestymistapa on dokumentoida nimenomaan arkkitehtuuripäätökset ja niiden perustelut.

36 Arkkitehtuurin dokumentointi Mallipohjaisuus vai ei? Mallipohjainen: Luodaan UML-malli järjestelmästä vaatii CASE työkalun Myös suunnittelutyökalu, ei pelkkä dokumentaatio Tyypillisesti koodin generointi, round-trip engineering Nojaa vahvasti työkaluihin hyvässä ja pahassa (millaista koodia työkalu generoi, toimiiko round-trip, jne) Havainnollistaminen: Pelkkä kuva mikä tahansa piirto-ohjema UML-symboleilla tai vaikka ilmankin - toimii Joustava Ongelma: kuvan ja todellisuuden vastaavuus; ristiriitaisuudet dokumentaatiossa

37 Arkkitehtuurin dokumentointi Design Patternit Tehokkaita kommunikaatiovälineitä, kannattaa hyödyntää. Välittävät rakenteen lisäksi tietoa myös arkkitehtuurin tavoitteista, koska patternit (toivottavasti) valitaan niiden perusteella: käyttöliittymätoiminnot toteutetaan Command-patternia käyttäen ==> undo/redo, hajautus kenties mielessä Ajoalustan GUI-toiminnot piilotetaan Bridge:n taakse ==> portattavuus vissiin tärkeää Mona Lisa

38 Arkkitehtuurin dokumentointi Sandvik malli Ei mallinnusta, ei API dokumentaatiota arkkitehtuuridokumentaatiossa Kuvataan konsepteja - t.s. järjestelmän osatoimintoja. Rakenne komponenttien tasolla (komponentit, riippuvuudet, interaktiot) Selitetään miten ja miksi järjestelmä toimii tältä osin Toiminta käyttäjän näkökulmasta (sis. Kuvaruutumalleja, toimintakuvauksia) Komponettien tehtävät ja vastuut (vrt. API) Myös hylättyjä ratkaisuita ja perusteluita Tavoite luoda komponentin tekijälle ymmärrys siitä mitä pitää tehdä, sekä komponentin käyttäjille ymmärrys miten, miksi ja milloin sitä käytetään. Kuvaus läpi järjestelmän (koneenohjaimet, väylät, service-taso, GUI, liitynnät ulkomaailmaan), vrt. viipaleet (aspects). Esim. hälytykset, parametrit, varaosien asennus, lukitukset,...

39 Arkkitehtuurin kommunikointi

40 Arkkitehtuurin kommunikointi Mitä ja miten? Kuten dokumentaatiossa, taso riippuu täysin ihmisistä ja organisaatiosta Kokenut teami projektihuoneessa, tai yhden hengen projekti kaikki muutenkin tietää mitä ollaan tekemässä vs Iso offshore alihankkija projekti mahdoton tehtävä? Keinoja: Dokumenttien läpikäynti, koulutus, osallistuminen tekemiseen, katselmoinnit (tällöin tosin on jo vähän myöhäistä), Jälleen: Design Patternit

41 Kommunikaatio-ongelmat Sidosryhmille ei välity käsitystä siitä mitä ollaan tekemässä. Tyypillisiä syitä: Kehno dokumentaatio/koulutus/esitystapa Ei seurantaa (esim. katselmointeja tai arkkitehdin osallistumista toteutukseen) Sidosryhmien fyysinen välimatka (off-site, off-shore) Sidosryhmien henkinen välimatka Kompetenssi (esim. maallikot) Aiempi kokemus (=oletukset) Asenne, kulttuurierot Usein vaikea arvioida miten onnistuttu kommunikoimaan.

42 Nyrkkisääntöjä

43 Nyrkkisääntöjä Käytännön tilanteisiin Uudelleenkäytettävän koodin tekeminen on 3 kertaa kalliimpaa kuin kertakäyttöisen Jos koodista tarvii uudelleenkäytössä muuttaa >20%, niin on halvempi kirjoittaa se tyhjästä uudelleen SW-teamien tuottavuudessa voi olla 26x eroja Tuntihinnassa voi olla 3x eroja Homma on 80% valmis 80% ajasta HUOM: nyrkkisääntö on vain nyrkkisääntö

44

Arkkitehdin arkipäivää Sandvikilla Janne Viitala Sandvik

Arkkitehdin arkipäivää Sandvikilla Janne Viitala Sandvik Arkkitehdin arkipäivää Sandvikilla Janne Viitala Sandvik Motivaatio Arkkitehtuureilla on väliä Aamulehti, pääkirjoitus: Avoin väylämalli myös Suomeen Viron potilastietojärjestelmä pohjautuu Enterprise

Lisätiedot

Arkkitehdin arkipäivää Sandvikilla Janne Viitala Sandvik

Arkkitehdin arkipäivää Sandvikilla Janne Viitala Sandvik Arkkitehdin arkipäivää Sandvikilla Janne Viitala Sandvik Motivaatio Arkkitehtuureilla on väliä Aamulehti, pääkirjoitus: Avoin väylämalli myös Suomeen Viron potilastietojärjestelmä pohjautuu Enterprise

Lisätiedot

TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely Lyhyt UML-opas UML -pikaesittely UML, Unified Modeling Language Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee (Object Management Group) OMG Historiaa: 90-luvulla oli paljon kilpailevia

Lisätiedot

Ohjelmistoarkkitehtuurit. Syksy 2010

Ohjelmistoarkkitehtuurit. Syksy 2010 Ohjelmistoarkkitehtuurit Syksy 2010 Kai Koskimies Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto, Vaasan yliopisto Kurssin tavoitteet Arkkitehtuurin roolin

Lisätiedot

Suunnitteluvaihe prosessissa

Suunnitteluvaihe prosessissa Suunnittelu Suunnitteluvaihe prosessissa Silta analyysin ja toteutuksen välillä (raja usein hämärä kumpaankin suuntaan) Asteittain tarkentuva Analyysi -Korkea abstraktiotaso -Sovellusläheiset käsitteet

Lisätiedot

Hieman lisää malleista ja niiden hyödyntämisestä

Hieman lisää malleista ja niiden hyödyntämisestä Hieman lisää malleista ja niiden hyödyntämisestä Ohjelmistojen mallintaminen Kesä 2012 (Avoin yliopisto) Toni Ruokolainen, 23.8.2012 Mallit Mallit ovat todellisuuden abstraktioita, jotka on muodostettu

Lisätiedot

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuurit. Kevät Ohjelmistoarkkitehtuurit Kevät 2012-2013 Johannes Koskinen http://www.cs.tut.fi/~ohar/ Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto 2 Kurssin tavoitteet

Lisätiedot

Ohjelmistojen suunnittelu

Ohjelmistojen suunnittelu Ohjelmistojen suunnittelu 581259 Ohjelmistotuotanto 154 Ohjelmistojen suunnittelu Software design is a creative activity in which you identify software components and their relationships, based on a customer

Lisätiedot

Helia Ohjelmointitaito 14.3.2005 Tuomas Kaipainen Mermit Business Applications Oy. 2005 Mermit Business Applications

Helia Ohjelmointitaito 14.3.2005 Tuomas Kaipainen Mermit Business Applications Oy. 2005 Mermit Business Applications Helia Ohjelmointitaito 14.3.2005 Tuomas Kaipainen Mermit Business Applications Oy Esityksen sisältö Mermit yrityksenä Perustiedot Toimintamalli Mermit työpaikkana ohjelmistoinsinöörille Esimerkkiprojekti

Lisätiedot

TUOTTAVUUTTA LOUHINTAAN PROSESSIN TUKIOMINAISUUKSILLA

TUOTTAVUUTTA LOUHINTAAN PROSESSIN TUKIOMINAISUUKSILLA TUOTTAVUUTTA LOUHINTAAN PROSESSIN TUKIOMINAISUUKSILLA Tuomo Pirinen Sandvik Mining and Rock Technology 1 Louhinta- ja kalliotekniikan päivät 13.10.2016 DRILLER S OFFICE PORAUKSEN SUUNNITTELUUN JA SEURANTAAN

Lisätiedot

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit Ohjelmiston testaus ja laatu Ohjelmistotekniikka elinkaarimallit Vesiputousmalli - 1 Esitutkimus Määrittely mikä on ongelma, onko valmista ratkaisua, kustannukset, reunaehdot millainen järjestelmä täyttää

Lisätiedot

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

Sisäänrakennettu tietosuoja ja ohjelmistokehitys Sisäänrakennettu tietosuoja ja ohjelmistokehitys Petri Strandén 8. kesäkuuta, 2018 Agenda Ohjelmistokehitys Ohjelmistokehitys vs. konsultointi Vaatimukset Tietosuoja Tietosuoja ohjelmistokehityksessä kiteytettynä

Lisätiedot

2 Ohjelmistoarkkitehtuurien kuvaus

2 Ohjelmistoarkkitehtuurien kuvaus 2 Ohjelmistoarkkitehtuurien kuvaus 2.1 Arkkitehtuurikuvauksen merkityksestä 2.2 Arkkitehtuurin kuvaukseen liittyvät käsitteet 2.3 Arkkitehtuurikuvaukset eri tasoilla 2.4 Arkkitehtuurinäkymät ja kuvaustyypit

Lisätiedot

1. Olio-ohjelmointi 1.1

1. Olio-ohjelmointi 1.1 1. Olio-ohjelmointi 1.1 Sisällys Olio-ohjelmointi on eräs ohjelmointiparadigma. Olio-ohjelmoinnin muotoja. Ohjelmiston analyysi ja suunnittelu. Olioparadigman etuja ja kritiikkiä. 1.2 Ohjelmointiparadigmoja

Lisätiedot

Uudelleenkäytön jako kahteen

Uudelleenkäytön jako kahteen Uudelleenkäyttö Yleistä On pyritty pääsemään vakiokomponenttien käyttöön Kuitenkin vakiokomponentit yleistyneet vain rajallisilla osa-alueilla (esim. windows-käyttöliittymä) On arvioitu, että 60-80% ohjelmistosta

Lisätiedot

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Ohjelmistojen mallintaminen. Luento 11, 7.12. Ohjelmistojen mallintaminen Luento 11, 7.12. Viime viikolla... Oliosuunnittelun yleiset periaatteet Single responsibility eli luokilla vain yksi vastuu Program to an interface, not to concrete implementation,

Lisätiedot

ADM Arkkitehtuuritason automaatio #tdarc

ADM Arkkitehtuuritason automaatio #tdarc ADM Arkkitehtuuritason automaatio #tdarc Kalle Launiala http://abstractiondev.wordpress.com kalle.launiala@citrus.fi Ohjelmistoteollisuus elää murrosta Ohjelmistoteollisuudesta halutaan perusteollisuutta

Lisätiedot

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

Sisäänrakennettu tietosuoja ja ohjelmistokehitys Sisäänrakennettu tietosuoja ja ohjelmistokehitys Petri Strandén 14. kesäkuuta, 2018 Petri Strandén Manager Cyber Security Services Application Technologies Petri.stranden@kpmg.fi Petri vastaa KPMG:n Technology

Lisätiedot

Takki. Lisää ot sik k o osoit t am alla. Nyt se sopii, tai sitten ei. Jussi Vänskä Espotel Oy. vierailuluentosarja OTM kurssi 2010. 3.

Takki. Lisää ot sik k o osoit t am alla. Nyt se sopii, tai sitten ei. Jussi Vänskä Espotel Oy. vierailuluentosarja OTM kurssi 2010. 3. Takki Nyt se sopii, tai sitten ei Jussi Vänskä Espotel Oy vierailuluentosarja OTM kurssi 2010 3. luento: tuote Lisää ot sik k o osoit t am alla Jussi Vänskä OTM kevät 2010 Tuote Mitä tuote voi olla? Tuote

Lisätiedot

7. Tuoterunkoarkkitehtuurit

7. Tuoterunkoarkkitehtuurit 7. Tuoterunkoarkkitehtuurit Johdanto Näkökulmat tuoterunkoihin perustuvaan ohjelmistokehitykseen Kerrostyyli tuoterunkoarkkitehtuureille Tuoterunkojen etuja ja ongelmia 1 Uudelleenkäytt yttö opportunistinen:

Lisätiedot

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

Arkkitehtuuritietoisku. eli mitä aina olet halunnut tietää arkkitehtuureista, muttet ole uskaltanut kysyä Arkkitehtuuritietoisku eli mitä aina olet halunnut tietää arkkitehtuureista, muttet ole uskaltanut kysyä Esikysymys Kuinka moni aikoo suunnitella projektityönsä arkkitehtuurin? Onko tämä arkkitehtuuria?

Lisätiedot

Johdantoluento. Ohjelmien ylläpito

Johdantoluento. Ohjelmien ylläpito Johdantoluento Ylläpito-termin termin määrittely Ylläpito ohjelmistotuotannon vaiheena Evoluutio-termin määrittely Muita kurssin aiheeseen liittyviä termejä TTY Ohjelmistotekniikka 1 Ohjelmien ylläpito

Lisätiedot

Onnistunut ohjelmistoprojekti

Onnistunut ohjelmistoprojekti Onnistunut ohjelmistoprojekti 2.12.2008 Hermanni Hyytiälä Reaktor Innovations Oy Agenda Yritysesittely Keinoja onnistuneeseen ohjelmistoprojektiin Ihmiset Menetelmät Käytännöt ja työkalut Tulevaisuuden

Lisätiedot

S11-09 Control System for an. Autonomous Household Robot Platform

S11-09 Control System for an. Autonomous Household Robot Platform S11-09 Control System for an Autonomous Household Robot Platform Projektisuunnitelma AS-0.3200 Automaatio- ja systeemitekniikan projektityöt Quang Doan Lauri T. Mäkelä 1 Kuvaus Projektin tavoitteena on

Lisätiedot

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1 3. Komponentit ja rajapinnat 3.1 Komponenttien idea: ohjelmistotuotannon rationalisointi 3.2 Mikä on ohjelmistokomponentti? 3.3 Komponentit ohjelmistoyksikköinä 3.4 Rajapinnat 3.6 Komponenttien räätälöinti

Lisätiedot

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int

Lisätiedot

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

Ylläpito. Ylläpito. Ylläpidon lajeja Ohjelmistotuotanto, syksy 1998 Ylläpito Kaikki ohjelmistoon sen julkistamisen jälkeen kohdistuvat muutostoimenpiteet jopa 70-80% ohjelmiston elinkaarenaikaisista kehityskustannuksista Ylläpidon lajeja korjaava ylläpito (corrective) testausvaiheessa

Lisätiedot

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistojen mallintaminen, mallintaminen ja UML 582104 Ohjelmistojen mallintaminen, mallintaminen ja UML 1 Mallintaminen ja UML Ohjelmistojen mallintamisesta ja kuvaamisesta Oliomallinnus ja UML Käyttötapauskaaviot Luokkakaaviot Sekvenssikaaviot 2 Yleisesti

Lisätiedot

Testauksen hallinta Testaustyökalut Luento 7 Antti-Pekka Tuovinen

Testauksen hallinta Testaustyökalut Luento 7 Antti-Pekka Tuovinen Testauksen hallinta Testaustyökalut Luento 7 Antti-Pekka Tuovinen 23 April 2018 1 Tavoitteet Yleiskuva seuraavista aiheista Testauksen organisointi Testaussuunnittelma Testauksen kustannukset Testausstrategia

Lisätiedot

Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö

Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö Matopeli C#:lla Aram Abdulla Hassan Ammattiopisto Tavastia Opinnäytetyö Syksy 2014 1 Sisällysluettelo 1. Johdanto... 3 2. Projektin aihe: Matopeli C#:lla... 3 3. Projektissa käytetyt menetelmät ja työkalut

Lisätiedot

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

Tapahtuipa Testaajalle...

Tapahtuipa Testaajalle... Tapahtuipa Testaajalle... - eli testaus tosielämässä 09.10.2007 Juhani Snellman Qentinel Oy 2007 Agenda Minä ja mistä tulen Testauksen konteksti Tapauksia tosielämästä ja työkaluja 2 Minä Juhani Snellman

Lisätiedot

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } } Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin testattaviin toiminnallisuuksiin, kuten olion tarjoamiin metodeihin.

Lisätiedot

Ohjelmistoarkkitehtuurit 2016. Kevät 2016 -käytäntöjä

Ohjelmistoarkkitehtuurit 2016. Kevät 2016 -käytäntöjä Ohjelmistoarkkitehtuurit Kevät 2016 -käytäntöjä Samuel Lahtinen http://www.cs.tut.fi/~ohar/ 13.1.2016 1 Tervetuloa Tampereen teknillinen yliopisto, Oulun yliopisto, Turun yliopisto 13.1.2016 2 Tiedonvälitys

Lisätiedot

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite 2015 syksy 2. vsk VII Suunnittelumallit Adapter ja Composite Sisältö 1. Johdanto rakennemalleihin 2. Adapter (Sovitin) 3. Composite (Rekursiokooste) Suunnittelumallit Adapter ja Composite 2 VII.1 Johdanto

Lisätiedot

C++11 lambdat: [](){} Matti Rintala

C++11 lambdat: [](){} Matti Rintala C++11 lambdat: [](){} Matti Rintala bool(*)(int) Tarve Tarve välittää kirjastolle/funktiolle toiminnallisuutta Callback-funktiot Virhekäsittely Käyttöliittymät Geneeristen kirjastojen räätälöinti STL:n

Lisätiedot

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä

Lisätiedot

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä muuttujia ja vakioita. Esittely

Lisätiedot

12. Kehysarkkitehtuurit

12. Kehysarkkitehtuurit 12. Kehysarkkitehtuurit Johdanto Kehystyypit Kehysten osittaminen Kehykset ja suunnittelumallit Kehysten etuja ja ongelmia Yhteenvetoa Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1 Johdanto

Lisätiedot

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä 6.11.2002

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä 6.11.2002 JReleaser Yksikkötestaus ja JUnit Mikko Mäkelä 6.11.2002 Sisältö Johdanto yksikkötestaukseen JUnit yleisesti JUnit Framework API (TestCase, TestSuite) Testien suorittaminen eri työkaluilla Teknisiä käytäntöjä

Lisätiedot

Ohjelmistoarkkitehtuurit Kevät käytäntöjä

Ohjelmistoarkkitehtuurit Kevät käytäntöjä Ohjelmistoarkkitehtuurit Kevät 2014 -käytäntöjä Samuel Lahtinen http://www.cs.tut.fi/~ohar/ 8.1.2014 1 Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto

Lisätiedot

Ylläpito. Ylläpidon lajeja

Ylläpito. Ylläpidon lajeja Ylläpito Kaikki ohjelmistoon sen julkistamisen jälkeen kohdistuvat muutostoimenpiteet jopa 70-80% ohjelmiston elinkaarenaikaisista kehityskustannuksista Ylläpidon lajeja korjaava ylläpito (corrective)

Lisätiedot

DIGITALISAATIO LOUHINNAN DIGITALISAATIO KIVIAINESTUOTANNOSSA Digitaalisen tietotekniikan yleistyminen arkielämän toiminnoissa [Wikipedia]

DIGITALISAATIO LOUHINNAN DIGITALISAATIO KIVIAINESTUOTANNOSSA Digitaalisen tietotekniikan yleistyminen arkielämän toiminnoissa [Wikipedia] LOUHINNAN DIGITALISAATIO KIVIAINESTUOTANNOSSA Kiviaines- ja murskauspäivät 19.1.2018 Tuomo Pirinen Sandvik Mining and Rock Technology tuomo.pirinen@sandvik.com DIGITALISAATIO Digitaalisen tietotekniikan

Lisätiedot

Ohjelmistoarkkitehtuuriin vaikuttavia tekijöitä. Kari Suihkonen

Ohjelmistoarkkitehtuuriin vaikuttavia tekijöitä. Kari Suihkonen Ohjelmistoarkkitehtuuriin vaikuttavia tekijöitä Kari Suihkonen Ohjelmistoarkkitehtuuriin vaikuttavia tekijöitä Tuote Ohjelmisto Ulkoiset tekijät Sisäiset tekijät 2 Hissin ohjausjärjestelmä ohjelmistotuotteena

Lisätiedot

Ohjelmistoarkkitehtuurit, syksy

Ohjelmistoarkkitehtuurit, syksy Ohjelmistoarkkitehtuurit Tuoteperheet Tuoterunkoarkkitehtuurit Perinteisessä ohjelmistotuotannossa on keskitytty uusien ohjelmistojen laadukkaaseen tuottamiseen Erikoistuneista ainutlaatuisista vaatimuksista

Lisätiedot

IIO30100 Tietokantojen suunnittelu (6 op)

IIO30100 Tietokantojen suunnittelu (6 op) IIO30100 Tietokantojen suunnittelu (6 op) Opintojakson esittely Jouni Huotari K2008 http://student.labra.jypoly.fi/~huojo/opetus/iio30100/ Tavoitteena on, että opiskelija: Ymmärtää käsitteellisen mallintamisen

Lisätiedot

TeliaSonera Identity and Access Management

TeliaSonera Identity and Access Management TeliaSonera Identity and Access Management 22.10.2009 EMC Forum Juha Arjoranta 1 TeliaSonera Identity and Access Management Alustus käyttövaltuushallintaan IAM kokonaisratkaisun elementit Nykytilaa ja

Lisätiedot

JulkICT Lab Stakeholder -työpaja Työpajan yhteenveto

JulkICT Lab Stakeholder -työpaja Työpajan yhteenveto JulkICT Lab Stakeholder -työpaja Työpajan yhteenveto Perjantai 23.5.2014 klo 9.00-12.00 CSC, Keilaniemi 14, Espoo 0 JulkICT Lab Sisällys 1 Alku 2 Prosessi 3 Roolit ja resurssit 4 Loppu 5 Sidosryhmät 6

Lisätiedot

Luku 8 Rakennusvaihe. Detailed Design. Programming. Moduulisuunnittelu. Ohjelmointi

Luku 8 Rakennusvaihe. Detailed Design. Programming. Moduulisuunnittelu. Ohjelmointi Luku 8 Rakennusvaihe Moduulisuunnittelu Detailed Design Programming Ohjelmointi Teknisen Complete suunnittelun Technical viimeistely Design Suunnittelukatselmuksen Design Perform suorittaminen Review Yhteisen

Lisätiedot

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1 Ohjelmistoarkkitehtuurit Syksy 2009 Kai Koskimies Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1 Tervetuloa Kuopion yliopisto, Oulun yliopisto (Kajaani), Tampereen yliopisto, Turun yliopisto,

Lisätiedot

13/20: Kierrätys kannattaa koodaamisessakin

13/20: Kierrätys kannattaa koodaamisessakin Ohjelmointi 1 / syksy 2007 13/20: Kierrätys kannattaa koodaamisessakin Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy

Lisätiedot

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus: Dokumentaatio, osa 1 Tehtävämäärittely Kirjoitetaan lyhyt kuvaus toteutettavasta ohjelmasta. Kuvaus tarkentuu myöhemmin, aluksi dokumentoidaan vain ideat, joiden pohjalta työtä lähdetään tekemään. Kuvaus

Lisätiedot

Ohjelmistotekniikka - Luento 2

Ohjelmistotekniikka - Luento 2 Ohjelmistotekniikka - Luento 2 Luku 2: Prosessimallit - miten spiraalimalliin päädyttiin - spiraalimallista (R)UP malliin - oman ammattitaidon kehittäminen; PSP ja TSP mallit 1 Luento 2: Prosessimallit

Lisätiedot

TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD)

TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) Ohjelmointikäytännöt 21/3/11 Mikko Vuorinen Metropolia Ammattikorkeakoulu 1 Sisältö 1) Mitä on hyvä koodi? 2) Ohjelmointikäytäntöjen merkitys? 3) Koodin asettelu

Lisätiedot

Järjestelmän alasajon suunnittelu. Kullström Satu

Järjestelmän alasajon suunnittelu. Kullström Satu Järjestelmän alasajon suunnittelu Kullström Satu 13.3.2016 Sisältö Yleistä alasajon suunnittelusta Case Fennia 2 Elinkaaren loppu Wikipediassa Ohjelma ei kuole koskaan. Ohjelma voi tulla tarpeettomaksi

Lisätiedot

Tehtävä 1. TL5302 Olio-ohjelmointi Koe Malliratkaisuja. Tässä sekä a)- että b)-kohdan toimiva ratkaisu:

Tehtävä 1. TL5302 Olio-ohjelmointi Koe Malliratkaisuja. Tässä sekä a)- että b)-kohdan toimiva ratkaisu: TL5302 Olio-ohjelmointi Koe 19.4.2005 Malliratkaisuja Tehtävä 1 Tässä sekä a)- että b)-kohdan toimiva ratkaisu: #include using namespace std; int main() int taul[5]=1,2,3,4,5; int *p,&r=taul[0];

Lisätiedot

Hajautettu Ohjelmistokehitys

Hajautettu Ohjelmistokehitys Hajautettu Ohjelmistokehitys Maria Paasivaara Hajautuksen muotoja Yrityksen sisäinen hajautus Maan sisällä Maiden välillä, esim. offshore Yritysten välinen hajautus Alihankinta Lisenssointi Partnershipit

Lisätiedot

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä

Lisätiedot

TIE Ohjelmistojen suunnittelu

TIE Ohjelmistojen suunnittelu TIE-20200 Ohjelmistojen suunnittelu Luento 8: Lokalisointia/kansainvälistystä TIE-20200 Samuel Lahtinen 1 Ajankohtaista Viimeiset viikkoharkat tarjolla, aiheena kansainvälistäminen/lokalisointi Viikkoharkkoja

Lisätiedot

Käytännön haasteita ja ratkaisuja integraation toteutuksessa. Jukka Jääheimo Teknologiajohtaja Solita Oy

Käytännön haasteita ja ratkaisuja integraation toteutuksessa. Jukka Jääheimo Teknologiajohtaja Solita Oy Käytännön haasteita ja ratkaisuja integraation toteutuksessa Jukka Jääheimo Teknologiajohtaja Solita Oy 13.03.2008 Sisältö 2 Alustus Integraation haasteet Integraatioarkkitehtuuri Hyvän integraatioarkkitehtuurin

Lisätiedot

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä 812347A Olio-ohjelmointi, 2015 syksy 2. vsk X Poikkeusten käsittelystä Sisältö 1. Yleistä poikkeusten käsittelystä 2. Poikkeuskäsittelyn perusteita C++:ssa 3. Standardissa määritellyt poikkeukset 4. Poikkeusvarmuus

Lisätiedot

TIE-20200 Ohjelmistojen suunnittelu

TIE-20200 Ohjelmistojen suunnittelu TIE-20200 Ohjelmistojen suunnittelu Luento 1: Virtuaalifunktiot, Template method 1 Yleistä asiaa Muistakaa harkkatyöilmoittautuminen 23 ryhmää (mm. lihansyöjäkirahvi), vajaita ryhmiäkin on 44 henkeä vielä

Lisätiedot

TIE Ohjelmistojen suunnittelu

TIE Ohjelmistojen suunnittelu TIE-20200 Ohjelmistojen suunnittelu Luento 12: Lokalisointia/kansainvälistystä TIE-20200 Samuel Lahtinen 1 Sisältöä Kansainvälistäminen/lokalisointi Mitä asioita voi liittyä kansainvälistämiseen/lokalisointiin?

Lisätiedot

Test-Driven Development

Test-Driven Development Test-Driven Development Syksy 2006 Jyväskylän yliopisto Test-Driven Development Testilähtöinen ohjelmistojen kehitystapa. Tehdään ensin testi, sitten vasta koodi. Tarkoituksena ei ole keksiä kaikkia mahdollisia

Lisätiedot

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista 582101 - Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista 1 Ohjelmistotuotannon työkaluuista Projektinhallintatyökalut (ei käsitellä tällä kurssilla) CASE- ja mallinnustyökalut (esim. Poseidon)

Lisätiedot

ENG-A1002 ARTS-ENG-Projekti. B-kori

ENG-A1002 ARTS-ENG-Projekti. B-kori ENG-A1002 ARTS-ENG-Projekti B-kori 11.4.2017 Innovatiivinen kuljetin B-korissa pyritään löytämään: uusi tai paranneltu tuotekonsepti kappaletavaroiden tai materiaalien käsittelyyn, siirtelyyn tai kuljetukseen.

Lisätiedot

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä www.niksula.cs.hut.fi/~jjkankaa// Demosovelluksen tekninen määrittely v. 0.6 Päivitetty 11.12.2000 klo 20:26 Mickey Shroff 2 (12) Dokumentin versiohistoria Versio Päivämäärä Tekijä / muutoksen tekijä Selite

Lisätiedot

UML:n yleiskatsaus. UML:n osat:

UML:n yleiskatsaus. UML:n osat: UML:n yleiskatsaus - voidaan hyödyntää hyvin laajasti. - sopii liiketoimintamallinnukseen, ohjelmistomallinnukseen sen jokaiseen vaiheeseen tai minkä tahansa pysyviä ja muuttuvia ominaisuuksia sisältävän

Lisätiedot

IIO30100 TIETOKANTOJEN SUUNNITTELU (6 OP)

IIO30100 TIETOKANTOJEN SUUNNITTELU (6 OP) IIO30100 TIETOKANTOJEN SUUNNITTELU (6 OP) OPINTOJAKSON ESITTELY JOUNI HUOTARI S2009 - K2010 http://homes.jamk.fi/~huojo/opetus/iio30100/ TAVOITTEENA ON, ETTÄ OPISKELIJA: Ymmärtää käsitteellisen mallintamisen

Lisätiedot

Koodimalli Code Model

Koodimalli Code Model Koodimalli Code Model Luento 6 10.10.2017 CSM14101 Ohjelmistoarkkitehtuurit 1 Oppimistavoitteet Koodimalli Arkkitehtuurisuunnittelun ja implementaation välinen kuilu ja sen hallitseminen Arkkitehtuuria

Lisätiedot

Oleelliset vaikeudet OT:ssa 1/2

Oleelliset vaikeudet OT:ssa 1/2 Oleelliset vaikeudet OT:ssa 1/2 Monimutkaisuus: Mahdoton ymmärtää kaikki ohjelman tilat Uusien toimintojen lisääminen voi olla vaikeaa Ohjelmista helposti vaikeakäyttöisiä Projektiryhmän sisäiset kommunikointivaikeudet

Lisätiedot

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki Tehtävä 1 Koherentti selitys Koherentti esimerkki ½p ½p Tehtävä 2 Täysiin pisteisiin edellytetään pelaajien tulostamista esimerkin järjestyksessä. Jos ohjelmasi tulostaa pelaajat jossain muussa järjestyksessä,

Lisätiedot

Case: Isoisänsilta. Ville Alajoki / Aki Kopra

Case: Isoisänsilta. Ville Alajoki / Aki Kopra Isoisänsilta Case: Isoisänsilta Ville Alajoki / Aki Kopra 15.2.2017 2 Sovellettuna hankintaan - tiedonvaihtoa Suunnittelu Havainnollisuus Tarkastaminen Malli + piirustuksia Urakkatarjous Malli Määrät laskettu

Lisätiedot

12 Mallit (Templates)

12 Mallit (Templates) 12 Mallit (Templates) Malli on määrittely, jota käyttämällä voidaan luoda samankaltaisten aliohjelmien ja luokkien perheitä. Malli on ohje kääntäjälle luoda geneerisestä tyyppiriippumattomasta ohjelmakoodista

Lisätiedot

Test-Driven Development

Test-Driven Development Test-Driven Development Ohjelmistotuotanto syksy 2006 Jyväskylän yliopisto Test-Driven Development Testilähtöinen ohjelmistojen kehitystapa. Tehdään ensin testi, sitten vasta koodi. Tarkoituksena ei ole

Lisätiedot

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki Malliperustainen ohjelmistokehitys - MDE 25.9.2007 Pasi Lehtimäki MDE Miksi MDE? Mitä on MDE? MDA, mallit, mallimuunnokset Ohjelmistoja Eclipse, MetaCase Mitä jatkossa? Akronyymiviidakko MDE, MDA, MDD,

Lisätiedot

Scrum is Not Enough. Scrum ei riitä. Ari Tanninen & Marko Taipale. Nääsvillen oliopäivä 2009 Tampereen teknillinen yliopisto 9.12.

Scrum is Not Enough. Scrum ei riitä. Ari Tanninen & Marko Taipale. Nääsvillen oliopäivä 2009 Tampereen teknillinen yliopisto 9.12. Scrum is Not Enough Scrum ei riitä Ari Tanninen & Marko Taipale Nääsvillen oliopäivä 2009 Tampereen teknillinen yliopisto 9.12.2009 Ari Tanninen Vanhempi ohjelmistoinsinööri Marko Taipale Teknologiajohtaja,

Lisätiedot

TOIMINNALLINEN MÄÄRITTELY MS

TOIMINNALLINEN MÄÄRITTELY MS TOIMINNALLINEN MÄÄRITTELY 11.11.2015 MS YLEISTÄ 1/2 jäsennelty etenee yleiskuvauksesta yksityiskohtiin kieliasultaan selkeä kuvaa myös tulevan järjestelmän ympäristöä tarpeellisella tarkkuudella kuvaa

Lisätiedot

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä 2016 IX Olioiden välisistä yhteyksistä Sisältö 1. Johdanto 2. Kytkentä 3. Koheesio 4. Näkyvyydestä 2 Johdanto n Ohjelmassa syntyy kytkentöjä olioiden välille Toivottuja ja epätoivottuja n Näkyvyys vaikuttaa

Lisätiedot

Tutkittua tietoa. Tutkittua tietoa 1

Tutkittua tietoa. Tutkittua tietoa 1 Tutkittua tietoa T. Dybå, T. Dingsøyr: Empirical Studies of Agile Software Development : A Systematic Review. Information and Software Technology 50, 2008, 833-859. J.E. Hannay, T. Dybå, E. Arisholm, D.I.K.

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 20. huhtikuuta 2018 Vastaa kaikkiin tehtäviin. Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä.

Lisätiedot

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen Ohjelmistotekniikka - Luento 2 Jouni Lappalainen Luku 2: Prosessimallit - miten spiraalimalliin päädyttiin - spiraalimallista (R)UP malliin - oman ammattitaidon kehittäminen; PSP ja TSP mallit 1 Luento

Lisätiedot

IIO30100 Tietokantojen suunnittelu (6 op)

IIO30100 Tietokantojen suunnittelu (6 op) IIO30100 Tietokantojen suunnittelu (6 op) Opintojakson esittely Jouni Huotari K2008 http://student.labranet.jamk.fi/~huojo/opetus/iio30100/ Tavoitteena on, että opiskelija: Ymmärtää käsitteellisen mallintamisen

Lisätiedot

T Henkilökohtainen harjoitus: FASTAXON

T Henkilökohtainen harjoitus: FASTAXON T-76.115 Henkilökohtainen harjoitus: FASTAXON Suunnittelumallit Group: Muuntaja Pentti Vänskä 52572W 2 1. Toteutus Tämä henkilökohtainen harjoitustyö käsitteli suunnittelumallien (Design Patterns) käyttöä

Lisätiedot

Tietojärjestelmän osat

Tietojärjestelmän osat Analyysi Yleistä analyysistä Mitä ohjelmiston on tehtävä? Analyysin ja suunnittelun raja on usein hämärä Ei-tekninen näkökulma asiakkaalle näkyvien pääkomponenttien tasolla Tietojärjestelmän osat Laitteisto

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.

Lisätiedot

Työkalut innovoinnin tehostamiseen valmiina käyttöösi. Microsoft SharePoint ja Project Server valmiina vastaamaan organisaatioiden haasteisiin

Työkalut innovoinnin tehostamiseen valmiina käyttöösi. Microsoft SharePoint ja Project Server valmiina vastaamaan organisaatioiden haasteisiin Työkalut innovoinnin tehostamiseen valmiina käyttöösi Microsoft SharePoint ja Project Server valmiina vastaamaan organisaatioiden haasteisiin Terve! Pieni, nopea kysely kiitos! Lyhyt katsaus osallistujiin

Lisätiedot

Eclipse ja JUnit-ohjelmoijatestit

Eclipse ja JUnit-ohjelmoijatestit Eclipse ja JUnit-ohjelmoijatestit Tarkoitus on tutustua Eclipsen käyttöön vähän lähemmin ja varsinkin JUnit-ohjelmoijatesteihin (ohjelmoijatesti on vanhalta nimeltä yksikkötesti). Ohjelmoijatestit ovat

Lisätiedot

Projektin suunnittelu

Projektin suunnittelu Projektin suunnittelu Sami Kollanus TJTA330 Ohjelmistotuotanto 15.3. Projektin suunnittelu - CMMIkäytänteet Projektin estimaatit: Määritellään projektin laajuus (scope) Määritellään tehtävien ja tuotosten

Lisätiedot

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

Lisätiedot

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Graafisen käyttöliittymän ohjelmointi Syksy 2013 TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Syksy 2013 Luento 8 Suunnittelumallit käyttöliittymäohjelmoinnissa Juha-Matti Vanhatupa Yleistä Suunnittelumalli on

Lisätiedot

Liikkuvien työkoneiden etäseuranta

Liikkuvien työkoneiden etäseuranta Liikkuvien työkoneiden etäseuranta TAMK IoT Seminaari 14.4.2016 2 1) IoT liiketoiminnan tukena 2) Iot ja liikkuvat työkoneet 3) Case esimerkit 4) Yhteenveto, johtopäätökset, tulevaisuuden näkymät Cinia

Lisätiedot

Avoimen ohjelmistotuotteen hallinta julkisella sektorilla. Jukka Kääriäinen VTT Oy , Oskari-verkostopäivä

Avoimen ohjelmistotuotteen hallinta julkisella sektorilla. Jukka Kääriäinen VTT Oy , Oskari-verkostopäivä Avoimen ohjelmistotuotteen hallinta julkisella sektorilla Jukka Kääriäinen (jukka.kaariainen@vtt.fi) VTT Oy 19.5.2015, Oskari-verkostopäivä Esityksen sisältö Mitä on tuotteenhallinta? Mikä on avoimen tuotteenhallintamalli?

Lisätiedot

Projektisuunnitelma. Radio-ohjattavan pienoismallin mekatroniikan ja ohjelmiston kehitys

Projektisuunnitelma. Radio-ohjattavan pienoismallin mekatroniikan ja ohjelmiston kehitys 1 Radio-ohjattavan pienoismallin mekatroniikan ja ohjelmiston kehitys Muutoshistoria Versionumero Pvm Selitys Tekijä(t) 0.1 18.9.2012 Otso Saarentaus 2 Sisällysluettelo 1 PROJEKTIN SISÄLTÖ... 3 1.1 TAUSTA......3

Lisätiedot

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Graafisen käyttöliittymän ohjelmointi Syksy 2013 TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Syksy 2013 Luento 10 Rinnakkaisuus käyttöliittymäohjelmoinnissa Juha-Matti Vanhatupa Rinnakkaisuus ja käyttöliittymäohjelmointi

Lisätiedot

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty

Lisätiedot

ELM GROUP 04. Teemu Laakso Henrik Talarmo

ELM GROUP 04. Teemu Laakso Henrik Talarmo ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................

Lisätiedot

10. Tuoterunkoarkkitehtuurit

10. Tuoterunkoarkkitehtuurit 10. Tuoterunkoarkkitehtuurit Johdanto Näkökulmat tuoterunkoihin perustuvaan ohjelmistokehitykseen: liiketoiminta, organisaatio, prosessi, tekninen Tuoterunkojen etuja ja ongelmia 1 Uudelleenkäytt yttö

Lisätiedot

Projektin tavoitteet

Projektin tavoitteet VBE II, vaihe 1: 2005-2006 Data yrityksistä ja rakennushankkeista TUT Tekniset ratkaisut RAK (VRLab)+ARK iroom validointi Työpajat Seminaarit Esitelmät Osallistuvat yritykset VTT Käyttöönotto- ja hyötymallit,

Lisätiedot

Onnistunut ohjelmistoprojekti

Onnistunut ohjelmistoprojekti Onnistunut ohjelmistoprojekti ICT-ajankohtaisseminaari 15.4.2009 Hermanni Hyytiälä Reaktor Innovations Oy Agenda Yritysesittely Keinoja onnistuneeseen ohjelmistoprojektiin Ihmiset Menetelmät Käytännöt

Lisätiedot