Ohjelmistoarkkitehtuurit Kevät 2014 Samuel Lahtinen http://www.cs.tut.fi/~ohar/ 1
Infoa Vierailuluentojen korviketehtävä kotisivuilla Viikkoharkkojen bonustehtävä julkaistu Tarvittaessa voit myös tehdä lisäbonuksena viikkoharkkojen lisätehtävän korvaamaan lisää puuttuvia vierailuluentoja (tai päinvastoin) Seuraavilla viikoilla viikkoharkoissa neuvontapäivystyssettiä (TTY) 2
Tänään ohjelmassa Ohjelmistoekosysteemeistä Miten vaikuttavat arkkitehtuuriin? Mitä oman ekosysteemin suhteen kannattaa miettiä Viestipohjaisia yritysjärjestelmäpatterneita Esimerkki tavasta dokumentoida asioita Jotain normaalin ohjelmistoarkkitehtuurin ja yritysjärjestelmämallien jne. väliltä. 3
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) 5
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. 6
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 7
Käyttöjärjestelmä ja sen vaatimuksia 8
Esimerkkejä ekosysteemeistä Facebook, Google, Windows 8, Android, Linux eri versioineen, i- tuotteet, konsolit Raspberryt, Arduinot (alusta ja fyysisiä & ohjelmistokomponentteja, yhteisöä) Pilvimaailman tuotteet 9
Pilvinen ekosysteemi esimerkki http://www.cloudel.com/dell-launches-new-version-of-openstack-poweredcloud-solution/ 10
Taksonomiaa Entä nykyaikaistettuna? Software Ecosystem Taxonomy (Bosch, 2009) 11
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 12
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/ 13
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? 14
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 15
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 16
Yhteenvetoa Ekosysteemi ajatusmalli (muutakin kuin kasa tarjottua koodia) yhteisö Ekosysteemit ja sovelluskehitys, vaatimukset & hyödyt, ekosysteemi ja oletusarkkitehtuuri Ekosysteemiajattelu omissa projekteissa? 17
Viestipohjaisten yritysjärjestelmien suunnittelumallit
Yritystietojärjestelmiä Erilaisia tapoja yhdistellä bisnes, kehitystyö, lopputuote ja toisaalta kuvata järjestelmän osia, kommunikaatiota Yritystietojärjestelmät/muutokset niihin, joku tekee esim. business process management tyyppistä tutkailua Enterprise messaging systems, strukturoidut viestit, yhtenäiset protokollat, huomioalueita (turvallisuus, reititys, metadata, tilaajamalli, oikeudet (policy) viestisisältö ja otsikkotiedot eriytettyinä 19
Yritystietojärjestelmiä Taustamateriaalia, perusperiaatteet valideja, uusimmat alustat/tekniikat puuttuvat esimerkeistä: Enterprise Integration Patterns: http://www.eaipatterns.com/ Patterns of Enterprise Application Architecture by (Martin Fowler with Dave Rice, Matthew Foemmel, Edward Hieatt, Robert Mee, and Randy Stafford) http://architects.dzone.com/articles/enterprise-integration http://technet.microsoft.com/en-us/library/hh393531.aspx Mallintaminen jne. työkaluja ja mallinnustekniikoita tarjolla, esimerkki Enterprise systems architect: http://www-03.ibm.com/software/products/en/ratisystarch 20
Viestinvälitykseen perustuvat yritysjärjestelmät Peruselementit: Viesti Kanava Reititys Muunnos Sovellus Sovellus Sovitin Sovitin Hallinta ja monitorointi (Hohpe & Woolf: Enterprise Integration Patterns. Addison-Wesley 2004) 21
Esimerkki: Tilausten käsittely Asiakkaat Varasto Vaatimuksia: Jälleenmyyjä TKS Valmistajat Kuljetusliike - Asiakkaat voivat lähettää tilauksia webin kautta tai sähköpostiilla - Tilaus käsitellään monessa vaiheessa: varastotarkistus, toimitus, laskutus - Integrointi olemassaoleviin sovelluksiin: web-client, sähköpostiijärjestelmä, laskutus-, toimitus-, ja varastojärjestelmät Ohjelmistoarkkitehtuurit 2014 25.4.2014 22
Tilausten vastaanotto Viesti Kanava Reititys Muunnos Sovellus Sovellus Sovitin Sovitin Hallinta ja monitorointi Ohjelmistoarkkitehtuurit 2014 25.4.2014 23
Tilausten vastaanotto: useita lähteitä Web- GUI Viestiportti Kahdenvälinen kanava Viestimuuntaja Web -> Kanoninen sähköposti Kanavasovitin Julkaisija-tilaaja kanava Viestimuuntaja sähköposti-> Kanoninen Ohjelmistoarkkitehtuurit 2014 25.4.2014 24
Viestiportti (Messaging Gateway) Synkroninen, blokkaava: Sovellus Viestiportti Viestijärjestelmä - erottaa sovelluslogiikan viestinvälityksestä - tarjoaa sovellusaluekohtaisen API:n sovelluksen käyttöön - helposti vaihdettavissa - asynkroninen tapa: esim. sovellus jatkaa ja pollaa viestiportin tulosviestejä palvelupyyntö viestin lähetys tuloksen vastaanotto prosessointi Ohjelmistoarkkitehtuurit 2014 25.4.2014 25
Tilausten vastaanotto: useita lähteitä Web- GUI Viestiportti Kahdenvälinen kanava Viestimuuntaja Web -> Kanoninen sähköpostin vastaanottaja Kanavasovitin Julkaisija-tilaaja kanava Viestimuuntaja sähköposti-> Kanoninen Ohjelmistoarkkitehtuurit 2014 25.4.2014 26
Kanavasovitin (Channel Adapter) Löyhä sovitinliitos: Sovitin ei integroidu suoraan sovellukseen vaan välillisesti esim. - sovelluksen yleisen API:n kautta - tarkkailemalla sovelluksen aiheuttamia tapahtumia - tarkkailemalla sovelluksen tuottamia tiedostoja tai tietokantoja (esim. tietokantatriggeri) Ohjelmistoarkkitehtuurit 2014 25.4.2014 27
Tilausten vastaanotto: useita lähteitä Web- GUI Viestiportti Kahdenvälinen kanava Viestimuuntaja Web -> Kanoninen sähköpostin vastaanottaja Kanavasovitin Julkaisija-tilaaja kanava Viestimuuntaja sähköposti -> Kanoninen Ohjelmistoarkkitehtuurit 2014 25.4.2014 28
Kahdenvälinen kanava (Point-to-Point Channel) Voi olla useita potentiaalisia vastaanottajia, mutta kanava itse takaa, että vain yksi vastaanottaja saa kunkin viestin Mahdollisesta vastaanottajan valinnasta huolehtii kanava, vastaanottajien ei tarvitse koordinoida keskenään Ohjelmistoarkkitehtuurit 2014 25.4.2014 29
Tilausten vastaanotto: useita lähteitä Web- GUI Viestiportti Kahdenvälinen kanava Viestimuuntaja Web -> Kanoninen sähköpostin vastaanottaja Kanavasovitin Julkaisija-tilaaja kanava Viestimuuntaja sähköposti -> Kanoninen Ohjelmistoarkkitehtuurit 2014 25.4.2014 30
Kanoninen tietomalli (Canonical Data Model) tiedon esitys, joka on riippumaton sovelluksista sovellusriippuvat esitykset muunnetaan kanoniseen jos sovelluksen esitysmuoto muuttuu, riittää muuttaa muuntaja X kanoninen tai kanoninen X 31
Viestimuuntaja (Message Translator) Muuttaa formaatin tai rakenteen muuttamatta informaatiota Erillinen komponentti Viestimaailman Sovitin (Adapter): muuttaa viestiformaatin XML-pohjaisten viestien muuntaminen keskenään: XSLT XML <-> jokin muu formaatti: XML jäsentäjät ym. 32
Tilausten vastaanotto: useita lähteitä Web- GUI Viestiportti Kahdenvälinen kanava Viestimuuntaja Web -> Kanoninen sähköposti vastaanottaja Kanavasovitin Julkaisija-tilaaja kanava Viestimuuntaja sähköposti -> Kanoninen Ohjelmistoarkkitehtuurit 2014 25.4.2014 33
Julkaisija-tilaaja kanava (Publisher-Subscriber Channel) Viesti Tilaaja Julkaisija Julkaisijalta tuleva viesti kopioidaan kaikille tilaajille Kukin tilaaja saa jokaisen viestin kerran Tilaajat eivät tunne toisiaan eivätkä julkaisijaa Julkaisija ei tunne tilaajia Tarkkailija-suunnittelumallin idea viestimaailmassa (tapahtumaviestejä) Voi olla myös monta julkaisíjaa Tilaaja Tilaaja Ohjelmistoarkkitehtuurit 2014 25.4.2014 34
Kysyttävää?
Reititys Viesti Kanava Reititys Muunnos Sovellus Sovellus Sovitin Sovitin Hallinta ja monitorointi Ohjelmistoarkkitehtuurit 2014 25.4.2014 36
Tilausten käsittely tarkista varasto tarkista asiakas [OK] Poikkeusten käsittely toimita tavara lähetä lasku Ohjelmistoarkkitehtuurit 2014 25.4.2014 37
Tilausten käsittely Asiakashallinta Sisältöperustainen reititin kelvollinen tilaus Julkaisijatilaaja Julkaisijatilaaja Laskutus Toimitus Varastohallinta Yhdistäjä epäkelpo tilaus Ohjelmistoarkkitehtuurit 2014 25.4.2014 38
Yhdistäjä (Aggregator) Tilallinen komponentti Kerää koosteita sisääntulevista viesteistä Pitää yllä vaillinaisia koosteita Jos uusi viesti tekee jostakin vaillinaisesta koosteesta täydellisen, koosteviesti lähetetään eteenpäin Kooste ei ole välttämättä unioni (esim. valitaan paras tai ensimmäinen sopiva, muut unohdetaan) Ohjelmistoarkkitehtuurit 2014 25.4.2014 39
Tilausten käsittely Asiakashallinta Sisältöperustainen reititin kelvollinen tilaus Laskutus Varastohallinta Yhdistäjä Toimitus alihankkija/muu toimittaja epäkelpo tilaus Ohjelmistoarkkitehtuurit 2014 25.4.2014 40
Sisältöperustainen reititin (Content-based Router) Vastaanottaja/kanava määrätään viestin sisällön perusteella (esim. jonkin kentän arvo tai esiintyminen) Ongelma: reititin tuntee vastaanottajat ja riippuu niistä Mahdollinen ratkaisu: vastaanottajat informoivat (dynaamisesti) reititintä millaisia viestejä haluavat (Dynamic Router) 41
Hallinta ja monitorointi Viesti Kanava Reititys Muunnos Sovellus Sovellus Sovitin Sovitin Hallinta ja monitorointi Ohjelmistoarkkitehtuurit 2014 25.4.2014 42
Älykäs Edustaja (Smart Proxy) Sovellus1 Pyyntö Vastaus1 Älykäs Edustaja Pyyntö Palvelun tarjoaja Sovellus2 Vastaus2 Vastaus Sovellukset lähettävät palvelupyyntöjä Smart Proxy toimii palvelun pyytäjien ja tarjoajan välissä SP pitää kirjaa pyytäjistä ja ohjaa vastauksen oikealle sovellukselle (Correlation Identifier antaa tunnisteen pyynnölle) SP voi kerätä metatietoa viesteistä (esim. käsittelyaika) ja lähettää sen valvontayksikölle Kontrolli Metatieto Ohjelmistoarkkitehtuurit 2014 25.4.2014 43
Yhteenveto Erillisiä osajärjestelmiä, niiden integrointia Tiedon välitys, tiedon käsittely ja vaiheet olennaisia Missä muodossa tietoa käsitellään, tietomalli? 44
Kysyttävää?