Tarjolla tänään: Sanastoa Koneenohjausjärjestelmien suunnittelumallit. Pattern Architecture Style. GoF. Design pattern

Samankaltaiset tiedostot
Koneenohjausjärjestelmien arkkitehtuurit. Sulautettu ohjelmointi Veli-Pekka Eloranta

7. Koneenohjausjärjestelmien suunnittelumallit. OhAr Veli-Pekka Eloranta

Ohjelmistoarkkitehtuurit Kevät 2014

Ohjelmistoarkkitehtuurit Koneenohjausmaailmaa. Kevät 2016

Ohjelmistoarkkitehtuurit

7 Sulautettujen järjestelmien suunnittelumallit. OhAr Marko Leppänen

TIE Ohjelmistojen suunnittelu


Ohjelmistoarkkitehtuurit kevät

Käyttöliittymät II. Käyttöliittymät I Kertaus peruskurssilta. Keskeisin kälikurssilla opittu asia?

TIE Ohjelmistojen suunnittelu

7.4 Variability management

Ohjelmistoarkkitehtuurit Kevät 2016 Johdantoa

Suunnittelumallit (design patterns)

Salasanan vaihto uuteen / How to change password

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

Suunnitteluratkaisut ja niiden arviointi sulautetuissa järjestelmissä

Capacity Utilization

7. Product-line architectures

5. Suunnittelumallit. TTY Ohjelmistotekniikka

Efficiency change over time

LANSEERAUS LÄHESTYY AIKATAULU OMINAISUUDET. Sähköinen jäsenkortti. Yksinkertainen tapa lähettää viestejä jäsenille

Ohjelmistoarkkitehtuurit. Syksy 2010

5. Suunnittelumallit. TTY Ohjelmistotekniikka

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

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

Hankkeen toiminnot työsuunnitelman laatiminen

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

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

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

Automaatiojärjestelmän hankinnassa huomioitavat tietoturva-asiat

LYTH-CONS CONSISTENCY TRANSMITTER

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

Ohjelmistoarkkitehtuurit. Syksy 2008

Co-Design Yhteissuunnittelu

KONEISTUSKOKOONPANON TEKEMINEN NX10-YMPÄRISTÖSSÄ

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

Tietorakenteet ja algoritmit

National Building Code of Finland, Part D1, Building Water Supply and Sewerage Systems, Regulations and guidelines 2007

Returns to Scale II. S ysteemianalyysin. Laboratorio. Esitelmä 8 Timo Salminen. Teknillinen korkeakoulu

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Alternative DEA Models

MUSEOT KULTTUURIPALVELUINA

Telecommunication Software

SOA SIG SOA Tuotetoimittajan näkökulma

Millainen on onnistunut ICT-projekti?

Information on preparing Presentation

Ohjelmistoarkkitehtuurit Kevät 2016 Suunnittelumallit

Immigration Studying. Studying - University. Stating that you want to enroll. Stating that you want to apply for a course.

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

16. Allocation Models

Teknologia-arkkitehtuurit. Valinta ja mallinnus

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

Biojätteen keruu QuattroSelect - monilokerojärjestelmällä Tiila Korhonen SUEZ

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

Toimilohkojen turvallisuus tulevaisuudessa

C++11 seminaari, kevät Johannes Koskinen

Paikkatietorajapinnat IT arkkitehtuurin näkökulmasta

5. Design patterns. TTY Ohjelmistotekniikka

1. Liikkuvat määreet

WAMS 2010,Ylivieska Monitoring service of energy efficiency in housing Jan Nyman,

The CCR Model and Production Correspondence

Choose Finland-Helsinki Valitse Finland-Helsinki

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

The Viking Battle - Part Version: Finnish

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

Lab SBS3.FARM_Hyper-V - Navigating a SharePoint site

BLOCKCHAINS AND ODR: SMART CONTRACTS AS AN ALTERNATIVE TO ENFORCEMENT

Green Growth Sessio - Millaisilla kansainvälistymismalleilla kasvumarkkinoille?

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

Sisällysluettelo Table of contents

4x4cup Rastikuvien tulkinta

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Ratkaisumallien historia

EUROOPAN PARLAMENTTI

TIETEEN PÄIVÄT OULUSSA

RAIN RAKENTAMISEN INTEGRAATIOKYVYKKYYS

KANTAVIEN TERÄSRAKENTEIDEN OLETETTUUN PALONKEHITYKSEEN PERUSTUVA MITOITUS

Security server v6 installation requirements

Helpottuuko sovellusten välinen integraatio XML:n avulla - kokemuksia ja ratkaisuja, teknologiajohtaja Sauli Tujunen, atbusiness Communications Oyj

anna minun kertoa let me tell you

HITSAUKSEN TUOTTAVUUSRATKAISUT

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

Olet vastuussa osaamisestasi

Exercise 1. (session: )

812336A C++ -kielen perusteet,

VUOSI 2015 / YEAR 2015

Tietojärjestelmäarkkitehtuurit

21~--~--~r--1~~--~--~~r--1~

Security server v6 installation requirements

Arkkitehtuuri- ja prosessimallit. Johannes Koskinen

TIETOJOHDETTU RAKENNUSPROJEKTI Niko Vironen Kehityspäällikkö Fira Group

Gap-filling methods for CH 4 data

Web Service torilla tavataan!

Digitaalinen haavoittuvuus MATINE Tampere

Business Opening. Arvoisa Herra Presidentti Very formal, recipient has a special title that must be used in place of their name

Voice Over LTE (VoLTE) By Miikka Poikselkä;Harri Holma;Jukka Hongisto

Travel Getting Around

Venttiilit ja Automaatio

Transkriptio:

Koneenjärjestelmien suunnittelumallit Ohjelmistoarkkitehtuurit 9.2. 2012 Veli-Pekka Eloranta Tarjolla tänään: Suunnittelumallit Sanastoa Taustaa Kuvaustavat Mallikielet Työkoneet sovellusalueena Miksi softaa? Sovellusalueen erityispiirteet Muutamia tyypillisiä vaatimuksia Koneenjärjestelmien suunnittelumallikieli Mallikielen esittely Keskeisimpien mallien läpikäynti ja esimerkkiarkkitehtuurin suunnittelu Sanastoa Pattern Architecture Style Design pattern GoF 1

There are no patterns in the GOF book! -Jim Coplien Sanastoa Pattern Architecture Style Design pattern GoF 2

Sanastoa - Pattern Each pattern is a three-part rule, which expresses a relation between a certain context, a problem, and a solution. Pattern is at the same time a thing, which happens in the world, and the rule which tells us how to create that thing, and when we must create it. It is both a process and a thing; both a description of a thing which is alive, and a description of the process which will generate that thing. - Christopher Alexander, Timeless Way of Building, page 247 Esimerkki sovellusalueita Arkkitehtuuri patternit Käyttöliittymäsuunnittelun patternit Organisaatio patternit Scrum patternit Global software development Patternin kirjoittamisen patternit Patternien historia Alexander: A pattern language (1977) Kent Beck ja Ward Cunningham 1987: Using pattern languages for Object-Oriented Program Design Patterns: Elements of Reusable Object-Oriented Software 1994 (a.k.a GoF book) Pattern Languages of Programs (PLoP conferences) Portland Pattern Repository 3

Kuvaustavat Canonical form GoF form Alexandrian form Compact form Canonical form Name Alias (optional) Context Problem Forces Solution Example (optional) Resulting Context Rationale (optional) Known Uses Related Patterns Canonical vs. GoF form Name Alias (optional) Context Problem Forces Solution Example (optional) Resulting Context Rationale (optional) Known Uses Related Patterns Name Also Known As Applicability Intent Motivation Participants, structure, collaborations, implementation Sample code Consequences Known Uses Related Patterns 4

Alexandrian form Nimi Prologi lause per patterni ~= konteksti Ongelman kuvaus yksi tai kaksi lausetta Diskussio - selitetään patternin voimat (forces) Ratkaisu lauseen tai kahden kuvaus ratkaisusta Kuva Epilogi mitä patternin jälkeen on odotettavissa Tässä esimerkki Mallikielet Joukko saman sovellusalueen patterneja voidaan organisoida mallikieleksi suositellun käyttö järjestyksen mukaan Mallikieli rakentaa kokonaisuuden (vrt. GoF!) Pattern collection or Pattern set!= Pattern language Antaa sanaston sovellusalueen kehittäjille Ei ole hierarkinen rakenne! Esimerkki: Organisaatiopatternit 5

Mallikielet (jatkuu) Auttaa suunnittelijaa ratkaisemaan ongelmat loogisessa järjestyksessä. Tarjoaa monia polkuja Jokainen polku rakentaa erilaisen version kokonaisuudesta A B D C A B C D F A E F Vielä jäljellä: Suunnittelumallit Sanastoa Taustaa Kuvaustavat Mallikielet Työkoneet sovellusalueena Miksi softaa? Sovellusalueen erityispiirteet Muutamia tyypillisiä vaatimuksia Koneenjärjestelmien suunnittelumallikieli Mallikielen esittely Keskeisimpien mallien läpikäynti ja esimerkkiarkkitehtuurin suunnittelu Työkoneet sovellusalueena 6

Miksi softaa? Tuottavuus paranee Toimintojen automatisointi Ohjaajan opastaminen Tehokkuus Huoltotarvetta voidaan ennakoida Integrointi tuotannonjärjestelmiin ja laivueenhallintaan (fleet management) Kommunikointi muiden työkoneiden kanssa Erityispiirteet pitkä elinkaari vs Erityispiirteet - hajautus 7

Erityispiirteet turvallisuus (safety) Erityispiirteet - reaaliaikaisuus Erityispiirteet - skaalautuvuus 8

Tyypillisiä vaatimuksia Vasteajat koneenohjauksessa 5-100 ms Väyläteknologian vaihtaminen pitää olla mahdollista Uuden väyläteknologian lisääminen vanhan rinnalle Kolmannen osapuolen sovellusten ja diagnostiikkasovellusten pääsy järjestelmän tietoihin Toiminnallisuuden siirrettävyys raudalta toiselle Järjestelmän pääsolmun (PC) käyttöjärjestelmän vaihto toiseen Järjestelmän osan vikatilanne ei saa tehdä koko konetta käyttökelvottomaksi Sitten asiaan.. Suunnittelumallit Sanastoa Taustaa Kuvaustavat Mallikielet Työkoneet sovellusalueena Miksi softaa? Sovellusalueen erityispiirteet Muutamia tyypillisiä vaatimuksia Koneenjärjestelmien suunnittelumallikieli Mallikielen esittely Keskeisimpien mallien läpikäynti ja esimerkkiarkkitehtuurin suunnittelu Ongelma Miten suunnitellaan koneenjärjestelmän arkkitehtuuri? 9

Suunnittelumallikieli http://www.cs.tut.fi/~kk/patternlanguage.pdf Suunnittelun aloitus Valitaan kielen juuri -suunnittelumalli (Isolate functionalities) ja sovelletaan sitä Ratkaisee ongelman: What is a reasonable way to create an embedded control system for a large machine? Isolate Functionalities Puomin Moottorin Vaihteiston Väylä, esim. CAN Poran Runkon HMI 10

Havaitaan ongelma Entä jos väylä halutaan vaihtaa? Jokaisen solmun sovellus on riippuvainen valitusta väyläteknologiasta Syitä muutokseen Tuki loppuu pitkän elinkaaren aikana Valmistaja menee konkurssiin Suunnittelun aikana havaitaan, ettei valitun teknologian kapasiteetti riitä Ratkaisu: abstraction How to change the selected bus technology or protocol so that the application code does not need to be changed? Puomin Send( node3, data, repeat=no) Poran Callback( node1, data) abstraction Send in bus-specific way abstraction Receive in bus-specific way Väylä, esim. CAN Entä jos väylä katkeaa tai solmu hajoaa? Tilanne pitäisi havaita jotenkin, jotta asialle voidaan tehdä jotain Heartbeat patternin ongelman kuvaus vastaa meidän ongelmaamme: How to make sure that a node or a bus will not fail undetected? 11

Heartbeat Supervisor Node I am alive Tietty ennaltasovittu aikaväli I am alive Toinen ratkaisu: Watchdog Node A Watchdog Node B Tai Watchdog perinteisemmin Node Reset watchdog Tietyin aikavälein Watchdog If( watchdog not reseted){ Reset node } 12

Arkkitehtuuri tähän mennessä Watchdog Puomin abstraction Moottorin abstraction Vaihteiston abstraction Väylä, esim. CAN abstraction Poran abstraction Runkon abstraction HMI Entäpä jos viestejä tulee väylältä enemmän kuin ehditään käsitellä? Kaikki viestit tulisi käsitellä, yhtäkään viestiä ei saisi jättää huomiotta. Lähetettävien (tai vastaanotettavien) viestien määrää ei voida ennakoida kehitysaikana Viestit tulisi käsitellä siinä järjestyksessä kuin ne vastaanotetaan. Kaikki viestit tulisi käsitellä mahdollisimman nopeasti. Ratkaisu: Message Queue Node 1 Node 2 Send queue Receive queue Send queue Receive queue 13

Watchdog Puomin Moottorin Vaihteiston Väylä, esim. CAN Poran Runkon HMI Halutaan tarjota korkean tason palveluja Korkeantasonpalvelut eivät ole reaaliaikaisia. Korkeantason palvelut eivät saa häiritä reaaliaikatoimintoja, koska se voisi johtaa järjestelmän virheelliseen toimintaan. Testattavuus: Reaaliaikatoimintojen testaaminen erillään korkeantasonpalveluista pitäisi olla mahdollista. Korkeantason ohjelmistojen kehittäminen on helpompaa kun ei tarvitse välittää reaaliaikavaatimuksista. Reaaliaikatoimintojen tulee toimia tietyissä rajoissa, esim. Jarrujen ja muiden ten vasteaika tulee olla riittävä. Ratkaisu: Separate Real-time Communicates only over bus 14

Watchdog Puomin Moottorin Vaihteiston Väylä, esim. CAN abstraction abstraction abstraction Poran Runkon HMI PC Ongelma: Kuka päättää? Kuinka voidaan varmistua, että yksittäisen toimilaitteen itsenäinen toiminta ei ole ristiriidassa koko järjestelmän tavoitteiden kanssa ja siten aiheuta vaaratilannetta? Järjestelmä on hajautettu, kuka päättää mitä muut tekee? Päätöksen tekemiseen saatetaan tarvita tietoa useammalta solmulta Koneenohjauksella tulisi olla lyhyt vasteaika, turvallisen toiminnan takaamiseksi. Permission request 15

Watchdog Puomin Moottorin Vaihteiston Authority node SQ RQ Väylä, esim. CAN abstraction abstraction abstraction abstraction Poran Runkon HMI PC Ongelma: Tiedon välittäminen Kuinka voidaan tehokkaasti jakaa järjestelmän tila hajautetussa järjestelmässä? Järjestelmän tilatiedot ovat alati muuttuvia. Viestiliikenne tulisi minimoida. Järjestelmän tulisi olla mahdollista lisätä uusia solmuja muokkaamatta olemassa olevia sovelluksia Uuden toimilaitteen pitäisi päästä helposti käsiksi tilatietoon Authority node tarvitsee koko järjestelmän tilatiedon Haluttu tilatieto pitäisi olla helposti löydettävissä sovelluskehittäjän näkökulmasta Ratkaisu: Variable Manager High-level node Sovellus 1 Sovellus 2 Variable Manager Väylä, esim. CAN Variable Manager MC sovellus MC node Variable Manager MC sovellus MC node 16

Variable Manager Sovellus 1 Sovellus 2 High-level node (PC) Variable manager Joystick X-position Node-id: 123, index: 9876 Väylä MC node Watchdog Puomin Moottorin Moottorin Authority Vaihteiston VM VM VM node VM Väylä, esim. CAN abstraction abstraction abstraction abstraction Poran VM Runkon VM HMI VM VM PC 17