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