Abstraktiotason nostoa, mallipohjainen ohjelmistokehitys. Samuel Lahtinen Ohjelmistoarkkitehtuurit

Samankaltaiset tiedostot
Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

Ohjelmistoarkkitehtuurit. Kevät 2014

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

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

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

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

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Ohjelmistotekniikan menetelmät, UML

Turvakriittisen projektin menetelmät ja työkalut

13/20: Kierrätys kannattaa koodaamisessakin

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

Ohjelmistojen suunnittelu

2 Ohjelmistoarkkitehtuurien kuvaus

PLA Mobiiliohjelmointi. Mika Saari

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

UML:n yleiskatsaus. UML:n osat:

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

käyttötapaukset mod. testaus

Ohjelmistoarkkitehtuurit Refaktorointia, ohjelmien ylläpitoa ja evoluutiota. Kevät 2016

Ohjelmistotekniikan menetelmät, kesä 2008

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

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

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services

2 Ohjelmistoarkkitehtuurien kuvaus

Ohjelmistojen mallintaminen, kesä 2010

Ohjelmistojen mallintaminen Unified Modeling Language (UML)

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat

Harjoitustehtävät ja ratkaisut viikolle 48

Unified Modeling Language

3. Komponentit ja rajapinnat

Joustava tapa integroida järjestelmiä node-red:llä visuaalisesti - Internet of Things & Industrial Internet

Ohjelmistojen mallintaminen Ohjelmiston suunnittelu Model driven development Harri Laine 1

Mobiilimaailma murroksessa 2011 Tommi Teräsvirta, Tieturi

UML -mallinnus TILAKAAVIO

Ohjelmistojen mallintaminen olioiden elinkaaret - tilakaavio Harri Laine 1

Automaattinen regressiotestaus ilman testitapauksia. Pekka Aho, VTT Matias Suarez, F-Secure

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

TIE Ohjelmistojen suunnittelu

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

Ohjelmistotekniikan menetelmät, kevät 2008

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2007

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

JS-kehitys - yleiskuvaus. TIEA255 - Juho Vepsäläinen

Ohjelmistojen mallintaminen, kesä 2009

Suorituskyky ja ohjelmistokehitys Suorituskykymallit

1.3 Katsaus ohjelmistotuotannon kehittymiseen

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Testaaminen ohjelmiston kehitysprosessin aikana

PLA Mobiiliohjelmointi. Mika Saari

JWT 2016 luento 11. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

Qt kaikkialla?

Ohjelmistoarkkitehtuurit Kevät 2016 Johdantoa

Kiertokysely. Sulautetut järjestelmät Luku 2 Sivu 1 (??)

Ylläpito. Ylläpidon lajeja

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Luokka- ja oliokaaviot

Solidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi

Kurssin aihepiiri: ohjelmistotuotannon alkeita

17/20: Keittokirja IV

UML- mallinnus: Tilakaavio

Visual Case 2. Miika Kasnio (C9767)

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen

Uudelleenkäytön jako kahteen

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Tech Conference Visual Studio 2015, C#6,.NET4.6. Heikki Raatikainen. #TechConfFI

7. Tuoterunkoarkkitehtuurit

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Valppaan asennus- ja käyttöohje


KADA (Drupal 7) migraatio uuteen (versioon) webiin

TIE Ohjelmistojen suunnittelu

Projektityö: Mobiiliajopäiväkirja. Mikko Suomalainen

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Avointen ohjelmistojen käyttö ohjelmistokehityksessä

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Ohjelmistoarkkitehtuurit kevät

Tilakaaviot, sekvenssikaaviot (Haikala, Märijärvi ss , )

Onnistunut ohjelmistoprojekti

7. Product-line architectures

Ohjelmistojen mallintaminen, kertausta

Domain spesifinen mallinnus ja generointi käytännössä. Petri Savolainen

UML-kielen formalisointi Object-Z:lla

1. Olio-ohjelmointi 1.1

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

Yhteydelle voi antaa nimen kumpaankin suuntaan Sille ei tarvise antaa lainkaan nimeä Yhteysnimen asemasta tai lisäksi voidaan käyttää roolinimiä

opiskelun suunnittelujärjestelmä, kurki ja ilmo käyttävät kaikki samaa tietokantaa, ja uusi järjestelmä tulee osaksi tätä.

12. Kehysarkkitehtuurit

Transkriptio:

Abstraktiotason nostoa, mallipohjainen ohjelmistokehitys Samuel Lahtinen Ohjelmistoarkkitehtuurit 20.4.2016

Viimeinen oikea luento

Erilaisia mallipohjaisuuteen viittaavia juttuja Low code platforms, vähäisen koodin alustat Visuaalinen ohjelmointi Mashup-ohjelmointi, sovellusten koostaminen Erilaiset mallipohjaiset tekniikat Domain specific models Model-based engineering, Model-driven engineering, mallipohjaisuus ja sen eri asteet Mallien osittainen käyttö Kokonaan malleihin perustuva ohjelmistokehitys Ajoaikainen mallien tulkinta vs. koodin tuottaminen mallien pohjalta

Lisää kysymyksiä Mihin käyttötarkoitukseen esimerkiksi mallipohjaiset tekniikat mielestäsi sopivat? Mitkä olisivat niistä saavutetut suurimmat hyödyt? Low-code platforms, mitä hyviä puolia niissä voi olla, entä huonoja? Mikseivät erilaiset mashup-alustat saavuttaneet juurikaan suosiota vaan katosivat?

Mallipohjainen ohjelmistokehitys Hypetetty ja hehkutettu reilu 10 vuotta sitten, hopealuoti joka tuo ohjelmistokehityksen loppukäyttäjällekin Mallinnustyökalut ja myös UML olivat vielä hyvin epäkypsiä Hautautui pikkuhiljaa, mutta alkanut ilmestyä pintaan uudestaan Esim. laitteistopuolella paljon intoa Matlab, Simulink mallien hyödyntäminen osana toteutusta Yleisesti käytetty huonompi vaihtoehto, joku systeemi-insinööri tai matemaatikko mallintaa prosesseja jne. ja sitten koodari koittaa tulkita malleja ja koodailla ne esimerkiksi c:llä saadaan moninkertaistettua virheiden mahdollisuudet (kaikista huonoin vaihtoehto, mitään ohjelmistoista ymmärtämättömät kaverit koodaavat itse toteutuksen )

Mallipohjainen ohjelmistokehitys Mallipohjainen (model-based), kaikkea mallien avulla tehtävää koodin tuottamista tai mallien ajoaikaista käyttöä Mallien hyödyntämisen iloja: Korkeamman abstraktiotason käyttö Saman toteutuksen/mallin hyödyntäminen usealle eri alustalle ja jopa ohjelmointikielelle Mallit ovat muutakin kuin dokumentaatiota, mallit osana toteutusta mallit ja toteutus vastaavat toisiaan, ei tarvetta päivitellä ees taas Jäljitettävyysvaatimukset, vaatimusten jäljittäminen helpompi kytkeä toteutukseen mallien kautta Mallien simulointi ja testaaminen koodi on kunnossa ja tekee mitä pitää Visuaalisuus voi auttaa

OMG ja MDA OMG:n oma näkemys mallikeskeisestä suunnittelusta, MDA Modeldriven architecture Sovellus tehdään mallintamalla ja mallitransformaatioita määrittelemällä Korkeimmalla tasolla toimialuekohtaiset mallit (domain spesific models ), joilla mallinnetaan toiminnallisuutta jne. korkealla tasolla, jopa loppukäyttäjän toimesta

Esimerkkejä Mallipohjaisuutta http://se.mathworks.com/products/simulink/ http://www.ni.com/labview/ OMG:n visio http://www.omg.org/mda/ Luennoilta tuttua lapsille suunnattua https://scratch.mit.edu/ Visuaalista ohjelmointia Raspberrylle (toisaalta Low code platform-alustaajatelmaa): https://projects.wyliodrin.com/wiki/languages/visual Blockly, johon edellämainittukin perustuu (koodin tuottamista JavaScript, Python, and Dart) https://developers.google.com/blockly/about/examples Lego Mindstorms: http://www.lego.com/en-us/mindstorms/learn-to-program

Simulink ja Matlab http://ctms.engin.umich.edu/ctms/index.php?example=suspension&section=simulinkcontrol

Visuaaliset kielet ja konfigurointiympäristöt Kielen määrittely, mikä on sallittua ja mikä ei on usein fiksua tehdä malleja hyödyntämällä Säännöstökokoelma, instanssi määrittää mitä halutaan tehdä Konfiguraatioiden hallinta, toiminnallisuuden yhdistäminen jne.

Simulink-mallit ja niiden hyödyntäminen Usein tarvetta tehdä sovittimia, joilla mallit/niistä tuotettu koodi saadaan liitettyä mukaan muuhun järjestelmään Arkkitehtuurisuunnittelua ja ohjelman rakenteen suunnittelua Ongelmana miten välittää tietoa mallille ja mallista siististi ja oikeaan aikaan

Yksinkertainen esimerkki, karsittu sijoittelukaavio D E A B C

Kielen määrittely noudattaa (ilmentymä) Säännöt MOF yksinkertaistettu MOF in MOF Class 1 M in M * AssocEnd noudattaa (ilmentymä) L in M noudattaa (ilmentymä) Association 1 2 multiplicity kind P in L noudattaa (ilmentymä) P:n ilmentymä visualisointi A MySystem B 13

UML:n mallit, staattiset Luokkakaaviot: ohjelman luokkarakenne, funktiot jne, osien välisiä suhteita Olio-kaavio, ajoaikaisia suhteita Olio-, komponentti-, jne. Kaavioiden instanssiesitykset, voidaan ketoa esimerkiksi mitkä asiat kytketään toisiinsa ja miten (porttien käyttö jne) voidaan luoda automaattisesti päivityssuhde muuttujien välille Esimerkki: Rational Rhapsody luo Mediator-patternin mukaelmalla suhteet ja rajapinnat, joiden avulla päivitys tapahtuu ilman suoran riippuvuuden syntyä

UML:n mallit, dynaamiset Tilakaavioiden käyttö toiminnallisuutta kuvaamaan Luokan toiminnallisuuden kuvaaminen tilakaaviolla, reaktiiviset järjestelmät Tilakaaviot toimivat hyvin esimerkiksi sulautettujen järjestelmien (osa)toiminnallisuuden kuvaamiseen Aktiviteettikaaviot, kuten tilakaaviotkin Sekvenssikaavioiden käyttö harvinaisempaa

Mallipohjaisuus yksinkertaisimmillaan Otetaan koodin tuottamista tukeva mallinnustyökalu (esim. PTC, Rational Rhapsody, ) Piirretään staattinen rakenne luokkakaavioiden avulla Toiminnallisuuden määritteleminen käyttämällä tilakaavioita

Pikainen esittely tilakaavioiden maailmasta stm statechartsample Initial [heatingbuttonpressed] Heating entry / heateron exit / heateroff [temperarature > 350] [temperature < 300] Ov erheating entry / warninglighton exit / warninglightoff entry / coolingfanon exit / coolingfanoff [3min timeout] /heatingfinished [cancelbyuser] [cancelbyuser] Final

Demoesimerkki

Takaisinmallinnuksen käyttö Yksinkertainen perusmalli, luokkakaavioiden ja rakenteen mallintaminen mallinnustyökalulla Koodin tuottaminen ja takaisinmallinnuksen käyttö koodin muutokset näkyvät mallissa, mallin muutokset koodissa Molemmat pysyvät ajan tasalla

Mallipohjainen ohjelmistoprosessi Käyttötapauksien määrittely Sekvenssikaavioiden käyttö käyttötapausten tarkentamiseen Ohjelmisto- ja laitteistokomponenttien koostaminen käyttäen esimerkiksi sijoittelukaavioita Kohti toteutusta luokkakaavioita käyttäen Toteutus joko koodaillen tai käyttäen malleja toteutuksen määrittelyssä

Graafisuus, mallipohjaisuus Vaatimusten tarkastelu graafisena vs. loputtomina listoina, helpompi nähdä mitkä vaatimukset riippuvat toisistaan Vaatimusten jäljittäminen, vaatimusten kytkeminen malleihin (malli tyydyttää vaatimuksen) Jos mallista tuotetaan koodia, vaatimusten näkyminen suoraan kooditasolla

Jotain MDE-juttuja http://ftp.icm.edu.pl/packages/ace/ace/pdf/gei.pdf http://www.idt.mdh.se/kurser/isd_cdt417/files/articles/bystudents/ Hutchinson_et_al-MDE%20practices%20in%20industry.pdf http://www.infoq.com/articles/8-reasons-why-mde-fails

Suunnittelutehtävä Internet of things henkistä suunnittelua: laitteiden netti on uusimpia hype-sanoja ja haluatte ratsastaa aallonharjalla. Kun tähän yhdistää jo 90-luvulta tutun älykotiajatuksen, päästään sovellukseen, jolla tehdään isot rahat. Tehtävänänne on suunnitella uuden ajan älykodin konfigurointiin ja hallintaan soveltuva ohjelmisto, jossa loppukäyttäjä voi yhdistellä erilaisia kodin älykkäitä laitteita ja luoda niille uusia sääntöjä. Lisäksi järjestelmä osaa hakea esimerkiksi sääennustuksia ja sähkön hinnan. Esimerkkiskenaarioita: ulkovalaistus syttymään, kun valittujen kännyköiden kanssa tullaan pihalle tai poistutaan sisältä (auringon laskun ja auringon nousun välisenä aikana). Lämmitys pois päältä huoneistossa arkisin työajan aikana, jos ulkolämpötila yli tietyn rajan (eikä huonelämpö laske alle viidentoista). Mitkä asiat olisivat käyttäjän määriteltävissä, missä muodossa käyttäjä määrittelisi asioita? Minkälainen rakenne ohjelmallenne tulisi? (miten käyttäjän tekemät määritykset otettaisiin käyttöön?) Ajoaikaisesti käytettäviä malleja/määrityksiä, käännetäänkö johonkin muotoon vai mitä tehdään?

Ekosysteemijuttuja

Mikä ekosysteemi? Ohjelmistoalusta ja yhteisö, joka tuottaa sovelluksia alustalle Laajentavat alustaa, tekevät alustalla toimivia sovelluksia, voivat olla avoimia/suljettuja Alunperin käyttöjärjestelmä ja sen palvelut Siihen päälle ajureita, apupalveluita Sovelluksia, niitä hyödyntäviä muita sovelluksia jne. Ei tehdä enää pelkästään oman firman sisällä, laajentuminen organisaation ulkopuolelle mukana sosiaalinen ekosysteemipuoli (community) 27.4.2016 Ohjelmistoarkkitehtuurit 2016 25

Määritelmää David G. Messerschmitt and Clemens Szyperski (Software ecosystems kirja): A set of businesses functioning as a unit and interacting with a shared market for software and services, together with relationships among them. These relationships are frequently underpinned by a common technological platform and operate through the exchange of information, resources, and artifacts. Lungu : A collection of systems, which are developed and co-evolve in the same environment (company/social/technical) Jan Bosch: Software ecosystems take various forms but typically consist of a company providing a software platform and a community of external developers providing functionality that extends the basic platform. 27.4.2016 Ohjelmistoarkkitehtuurit 2016 26

Ekosysteemiajatelma, muutakin kuin käyttöjärjestelmätaso Ekosysteemiajattelua Tarjotaan kehitystyökalut (+rajataan asioita) Tarjotaan valmiita ratkaisumalleja, näin ohjelma jaetaan esim. MVC:n, MVVM:n mukaisesti/active record, näin käsittelet asian x Sovelluskauppa/sovellusten keskitetty haku & hallinta Vaatimukset, mitä sovellus saa/ei saa tehdä Käyttöliittymävaatimuksia ja toiminnallisia vaatimuksia (mitä tapahtuu mistäkin napista, mitä tapahtuu, kun ohjelmasta poistutaan jne.) Mahdollinen ohjelmistojen verifiointi 27.4.2016 Ohjelmistoarkkitehtuurit 2016 27

Käyttöjärjestelmä ja sen vaatimuksia 27.4.2016 Ohjelmistoarkkitehtuurit 2016 28

Esimerkkejä ekosysteemeistä Facebook, Google, Windows 8, Android, Linux eri versioineen, i-tuotteet, konsolit Raspberryt, Arduinot (alusta ja fyysisiä & ohjelmistokomponentteja, yhteisöä) Pilvimaailman tuotteet 27.4.2016 Ohjelmistoarkkitehtuurit 2016 29

Pilvinen ekosysteemi esimerkki http://www.cloudel.com/dell-launches-new-version-of-openstack-powered-cloudsolution/ 27.4.2016 Ohjelmistoarkkitehtuurit 2016 30

Taksonomiaa Entä nykyaikaistettuna? Software Ecosystem Taxonomy (Bosch, 2009) 27.4.2016 Ohjelmistoarkkitehtuurit 2016 31

Alusta ja ekosysteemi ohjaavat arkkitehtuuria Sovellusten kehittämisessä ajateltu käytettävän tiettyjä ratkaisutapoja ohjaa toteutettavan ohjelman arkkitehtuurin tähän suuntaan. Helpottaa suunnittelua, mutta jos yritetään tehdä jotain ajatellun muotin ulkopuolelle ulottuvaa, asiat monimutkaisempia Ekosysteemin valintaa, tuki, stabiilius, jatkokehitys, soveltuvuus Useat ekosysteemit ja niiden yhteensovittaminen 27.4.2016 Ohjelmistoarkkitehtuurit 2016 32

Sopimuksia, vaatimuksia Vaatimuksia: valmiina annettu arkkitehtuuri, työkalujen mahdollisuudet, aihealuerajoitteet, UI, toiminnallisuus, sisältö, teknologia/laitteiston käyttö ( mitä sovellus voi tehdä) http://msdn.microsoft.com/en-us/library/windows/apps/hh694083.aspx https://developer.apple.com/app-store/review/ https://developer.apple.com/design/tips/ 27.4.2016 Ohjelmistoarkkitehtuurit 2016 33

Oma ekosysteemi? Esimerkki: Tehdään universaali kalenterisovellus, jossa voi ripustella muistilappuja jne. Kalenterioikeuksien jako, Facebook-yhteydet jne. Tietojen säilöntä palvelinpäässä (pilvessä tms.) Alustat: puhelimet (i-sellaiset, Win, Android), tabletit, läppärit/pöytäkoneet Samoja toimintoja, ilmettä, mutta noudatettava kohdealustan sääntöjä Mitä huomiota, mistä osasta tulisi järjestelmän ekosysteemiosio? 27.4.2016 Ohjelmistoarkkitehtuurit 2016 34

Oman ekosysteemin osia Varsinaiset sovellukset, front-end, käyttöliittymäpuoli Yhteinen osa, tiedon käsittely, tallennus, haku jne. Tämä osa voidaan toteuttaa & suunnitella omien halujen mukaan Käytetyt tekniikat, kielet, toimintatavat, arkkitehtuuriratkaisut 27.4.2016 Ohjelmistoarkkitehtuurit 2016 35

Sovelluskohtaiset osat, vaatimuksia? Mitä erilaisia vaatimuksia/mahdollisuuksia erikoistettujen osien toteuttamisessa tulee vastaan? Käyttöliittymä ja sujuvuus myyntivaltteina, erikoistetut versiot joka alustalle Tekniikka- ja kieli (millä kielellä käyttäjän osa toteutetaan osaaminen (HTML5, JavaScript, Obj-C, Java, C#, C++ ) Käyttöliittymäpuoli: yhtenäisyys vs. eri alustojen omat vaatimukset Ulkopuoliset kehittäjät/community: rajapintojen dokumentointi, esimerkit, tietoturvallisuus, varmennetaanko ulkopuolinen ohjelmisto jne. Voidaanko tehdä jotain geneeristä yhteistä osaa, jota kaikissa järjestelmissä voitaisiin hyödyntää? esim. Tiedonsiirto, käsittely, paketointi 27.4.2016 Ohjelmistoarkkitehtuurit 2016 36

Ekosysteemiajattelua, Atom.io Avoimen lähdekoodin koodieditori Painottuu voimakkaasti plugineihin, Node.js GitHub-integraatio, pakettien hallinta mukana, tuo mukanaan tavan julkaista ja kehittää lisäosia Pakettien hallinta hieman jalostettu npm (Node Package Manager), hieman enemmän parametreja, asennushakemisto atomin alla & hakee paketteja suoraan Githubista Electron framework pohjalla(http://electron.atom.io/) (myös Visual Studio Codessa) https://atom.io/docs

Yhteenvetoa Ekosysteemi ajatusmalli (muutakin kuin kasa tarjottua koodia) yhteisö Ekosysteemit ja sovelluskehitys, vaatimukset & hyödyt, ekosysteemi ja oletusarkkitehtuuri Ekosysteemiajattelu omissa projekteissa? 27.4.2016 Ohjelmistoarkkitehtuurit 2016 38