Ohjelmistoarkkitehtuurit, TTY Vierailuluento Mika Siikarla, 31.1.2012
Tamperelainen ohjelmistotalo Jotain IHAN muuta...
Bitwise pähkinänkuoressa
Sopivan kokoinen (43 henkeä) Kannattavan kasvava, AAA Koko tuplaantui laman aikana Vuonna 2012 palkattu 12 henkeä Hyvässä paikassa (Viinikan ympyrässä)
Bitwise valittiin Suomen parhaaksi työpaikaksi 2012
Bitwiserit hoitavat projektit, joihin kukaan muu pysty haasteita mielenkiintoisia pulmia vaihtelevia tehtäviä jatkuvaa uuden oppimista yhdessä tekemistä onnistumisia sankaritarinoita tyytyväiset asiakkaat
Kaikki on helppoa (=lean) Ketterät menetelmät Markkinoiden parhaat välineet ja työkalut Jokaisella mahdollisuus vaikuttaa Kaikki mukana asiakasrajapinnassa Projektikierto Mukana koko elinkaaressa Tiimi istuu samassa huoneessa Mentori valmentaa Illaksi kotiin
Mm. näillä teknologioilla».net, C#, C++» JavaEE, Spring 3, EJB3, GWT, JSF2, PrimeFaces, JPA2, JTA, JCA, JMS, OSGi, Play 2.0...» sulautetut järjestelmät, C» Python, Django» JavaScript, node.js, CoffeeScript» HTML5, CSS3, LESS, Jquery» PHP, Perl, TCL» Web Services, REST, SOAP, CORBA, Remoting, RMI» SOA, ESB» PostgreSQL, Oracle, SQLServer, MySQL, MongoDB, CouchDB, light-tietokannat, ORM-kehykset» WPF, Qt, Java FX2, Swing, AWT, Windows Forms...» Linux, Windows, Unix, Solaris, reaaliaikaytimet» Scrum, Kanban, CI, TDD, BDD» Git, SVN, Jenkins, Bamboo, JIRA, Trac
Bitwise etsii ihmisiä, joilla on
Halu oppia Kyky oppia Rohkeutta hypätä uuteen Maalaisjärkeä Ammattiylpeyttä Input ja output Tiimipelitaitoja Pohojalaanen tekemisen meininki Rohkeutta olla oma itsensä
Bitwise houkuttelee opiskelijaa
Kukaan ei ole guru syntyessään meillä voit kasvaa sellaiseksi
Tarjolla Osa-aikaisia töitä Kesätöitä Lopputyöaiheita Bonuksena palkallinen päivä viikossa kirjoittamiseen
Hyvät kaverit vakinaistetaan, poikkeuksetta
Ryhdy bitwiseriksi! Lue lisää www.bitwise.fi Lähetä hakemus rekry@bitwise.fi
Vastuuvapauslauseke
MIELIPIDE Omia henkilökohtaisia mielipiteitäni. Tietysti ovat ainoita oikeita! Ehkä joku muukin on joskus ollut samaa mieltä joistakin kohdista. These are my principles. If you don t like them I have others. - Groucho Marx (ilmeisesti ei) Aivot päälle. RIIPPUU VASTAAJASTA JA KYSYJÄSTÄ (ja ehkä aiheestakin)
Arkkitehtuuri
ARKKITEHTUURI Suunnittelijan näkökulmasta joukko suunnittelua rajoittavia sääntöjä. Se mitä suunnittelija mielestään saa tehdä. Se mitä arkkitehdin mielestä suunnittelija saa tehdä. Subjektiivisia! Ei ole olemassa todellista arkkitehtuuria. Ei RTFC, ei takaisinmallinnettavissa. ON (ja vaatii) KOMMUNIKOINTIA (dokumentointi, keskustelu,?)
ARKKITEHTUURI Teknisessä mielessä koodista voidaan löytää komponentteja ja niiden välisiä suhteita, mutta mitkä ovat säännöt? Vrt. pelinappulat ja lauta ilman pelin sääntöjä. Tai pelinappulalta vaikuttavia osia... ON (ja vaatii) KOMMUNIKOINTIA
Arkkitehti
ARKKITEHTI En ole ammatiltani arkkitehti. Minun ammattini on ohjelmistosuunnittelija. Bitwisellä ei ole töissä ketään, jonka ammatti on arkkitehti. EI ASU TÄÄLLÄ
ARKKITEHTI Hän, joka tekee arkkitehtuurin (osan)... sillä hetkellä, kun hän tekee {}... siltä osin kuin hänen tekemisensä liittyy {}. Rooli, tietyssä suhteessa ja tietyssä kontekstissa. Kuten kuuntelija, puhuja, veli, opettaja, oppilas, ajaja,... ON ARKKITEHTI TOIMIESSAAN ARKKITEHTINA (da Vinci)
ARKKITEHTI ArchitectAlsoImplements http://orgpatterns.wikispaces.com/architectalsoimplements The Architect [...] should himself or herself write code. [...] it is crucial that the architect have a strong feel for the application needs. It is by understanding recurring application needs that the architect can build long-term robust frameworks. If architects work only on infrastructure [ ] there will be a disconnect between the infrastructure (framework, middleware) and the application. OSS: Eat your own dog food. TOIMII MYÖS TOTEUTTAJANA
Vaatimukset Arkkitehtuuri
VAATIMUKSET Vaatimukset (Erityisesti ei-toiminnalliset) vaatimukset rajoittavat arkkitehtuuria. ta ut te to a Arkkitehtuuri Arkkitehtuuripäätösten perustelut vaatimuksista. PERUSTELEVAT ARKKITEHTUURIN
VAATIMUKSET Vaatimusten muutosten pitäisi näkyä arkkitehtuurin muutoksina. Vaatimukset Vaatimukset ta ut te to Ehkä otettu huomioon? a Arkkitehtuuri Arkkitehtuuri Ehkä vanha kelpaa? Ehkä kohta palataan takaisin? Massa: uutta vai parempaa? ELÄVÄT (elääkö arkkitehtuuri?)
VAATIMUKSET Jos Kun vaatimuksia ei tunneta kokonaisuudessaan, onko arkkitehtuurille kokonaisuudessaan perusteita??a??im?k?e? ta ut te to? a? Ar??it?h??uri Esim. suorituskyky, suoritustapa. Lukitaanko vastaus? EIVÄT AINA TIEDOSSA
Kurkistus oikeaan maailmaan
OHJELMISTO Asiakas J TYHJIÖSSÄ
OHJELMISTO Toimittaja J + YMPÄRISTÖSSÄÄN (muiden ohjelmistojen kanssa) Operaattori
OHJELMISTO Toimittaja J + YMPÄRISTÖSSÄÄN (laitteiden ja muiden ohjelmistojen kanssa) Operaattori
OHJELMISTO Toimittaja J + YMPÄRISTÖSSÄÄN (prosessien, laitteiden ja muiden ohjelmistojen kanssa) Operaattori
OHJELMISTO Toimittaja J Operaattori + YMPÄRISTÖSSÄÄN (integrointien, prosessien, laitteiden ja muiden ohjelmistojen kanssa)
Ekskursio ympäristöön
TOIMINTAYMPÄRISTÖ Ohjelmistoja: ohjaus, turvallisuus, tarkkailu Koneita: autom., ajettuja, etäohjattuja, autom.+etä Tilaa: 3D, jaettua, neuvoteltua Esineitä: siirrettäviä Esteitä: pysyviä, tilapäisiä Rajoitteita: kulku, käyttö; loogisia, osittaisia Infraa: antureita, kytkimiä, verkkoja Ihmisiä Suurin osa operaattorin hallinnassa, pieni osa ei... ON MONIMUOTOINEN
MITÄ EI VAADITA Ei (suoranaista) (yksin)vastuuta ihmisten hengestä tai terveydestä. Ei kovia reaaliaikavaatimuksia. Suurin osa toiminnallisuudesta ei vaadi resursseihin nähden intensiivistä laskentaa, muistia tai tallennusta. ON OSA VAATIMUKSIA (ja siksi vaikuttaa arkkitehtuurin prioriteetteihin)
Backtrack palluroihin
OHJELMISTO Toimittaja Operaattori Operaattori Operaattori Operaattori MONESSA YMPÄRISTÖSSÄ
OHJELMISTO Toimittaja J Operaattori + YHDESSÄ YMPÄRISTÖSSÄ (integrointien, prosessien, laitteiden ja muiden ohjelmistojen kanssa)
OHJELMISTO Toimittaja J Operaattori + TOISESSA YMPÄRISTÖSSÄ (integrointien, prosessien, laitteiden ja muiden ohjelmistojen kanssa)
OHJELMISTO Toimittaja J + Operaattori????????????? TULEVASSA YMPÄRISTÖSSÄ (integrointien, prosessien, laitteiden ja muiden ohjelmistojen kanssa)
TOIMINTAYMPÄRISTÖ Toimitukset eri laajuisia: toimittajan ja operaattorin järjestelmien osuus vaihtelee Toimitukset eri vaiheissa: määrittely, osatoimitus, lopputoimitus, ylläpito. Tuotteet eri vaiheissa. Opitaan ympäristöstä lisää; vaatimukset muuttuvat. Simulaatio kokeilu aito ympäristö VAIHTELEE
MONTA TUOTETTA Prototyyppi Kypsä tuote ==> arkkitehtuuri?? Tuoterunko Suuri kannuste yhtenäistää. MONTAKO ARKKITEHTUURIA?
Tekninen ympäristö
KOMPONENTTIEN UUDELLEENKÄYTTÖ Bitwise Ympäristö J+K J ~200 kloc C# J'
VAATIMUSTEN KYPSYYS Prototyyppi: vaatimukset ovat arvauksia, arkkitehtuuri on arvaus Kypsä tuote: vaatimukset (melko hyvin) tiedossa, arkkitehtuuri (melko) vakaa Tuoterunko: vaatimukset olemassaolevista ja ennakoiduista tuotteista RAJOITTAA ARKKITEHTUURIN KYPSYYTTÄ
VAATIMUSTEN KYPSYYS Prototyyppi: arvaus (kehitys kokeilu oppiminen)+ OK Syklin nopeus tärkein ei-toiminnallinen vaatimus! Ymmärrettävyys ja muunneltavuus erittäin tärkeitä. Muilta osin arkkitehtuuriin panostaminen menee hukkaan. Kypsä tuote: Uudelleenkäytön mahdollistamiseksi olisi kiva olla lähellä muiden tuotteiden arkkitehtuuria. MÄÄRÄÄ ARKKITEHTUURIN KYPSYYTTÄ
HYVIN TEHTY ARKKITEHTUURI Ensin ominaisuuden kehityssykli. Kun OK ja ETV tiedossa, tehdään arkkitehtuuri kunnolla, kun päätökset perusteltavissa. Ei hätäillä arkkitehtuurin kanssa. Arkkitehtuuri laahaa perässä, ei täysin yhtenäinen. Ryhdin parantaminen perustellusti: roi, hidastavuus, yhtenäistys (J, J*, J+K,...)... Kevyet analyysit: takaraivossa todo-list, wtf/min, pelkokerroin, jne. ON TEHTY HYVIEN TIETOJEN PERUSTEELLA (garbage in, garbage out)
HYVIN TEHTY ARKKITEHTUURI Poikkeuksia: muutokset ytimeen, liikaa hidasteita Viivästetään? Häkätään silti? Ei lupa luopua arkkitehtuurisuunnittelusta. Ei vähennetä arkkitehtuurin tärkeyttä kasvatetaan sitä! ON TEHTY HYVIEN TIETOJEN PERUSTEELLA (garbage in, garbage out)
ARKKITEHTUURI Ei lupa luopua arkkitehtuurisuunnittelusta. Ei vähennetä arkkitehtuurin tärkeyttä kasvatetaan sitä! Poikkeuksia: muutokset ytimeen, liikaa hidasteita Viivästetään? Häkätään silti? Poikkeuksia: keskeiset, esim. käynnistys, failover, toipuminen, tiedon pysyvyys,... HALLITUSSA KAAOKSESSA (how and why to fake it)
PELASTA YDIN Tuoterunko ja yhtenäistys vs. (?) muokattavuus. Suojele ydintä! Keskeinen sovellusalalogiikka. Suojele pikkuytimiä! Kypsyyskerrokset : muutoksille alttiit ulompana. Aika kypsyttää. Abstrahointi, ryhmittely, sovittimet, sillat, samaistus, rajapinnat, PELASTAT ARKKITEHTUURIN
Oikeahko esimerkki
J ja M neuvottelevat suoraan resurssin R käytöstä M L J
Olipa kerran väylä J M M-kanava BUS HÄK HÄK HÄK L
Joku muukin voisi käyttää väylää M-proxy protokolla kanava M J BUS Erotetaan väylän ja M:n käsittely L Uudelleen käytettävä
Uudelleen käytettävä J, M ja N neuvottelevat... M-proxy protokolla kanava M BUS HÄK HÄK HÄK J L N
Uudelleen käytettävä Voisi varmaan olla muitakin kuin J, M, N... välittäjä M-proxy protokolla kanava M J BUS Välittäjä hoitaa skeduloinnin. (mikä tahansa määrä neuvottelijoita; mille tahansa resurssille) L N
Loppuisipa jo!
Kysymyksiä?