ohjelmistoarkkitehtuurit, tty vierailuluento · » javaee, spring 3, ejb3, gwt, jsf2, primefaces,...

70
Ohjelmistoarkkitehtuurit, TTY Vierailuluento Mika Siikarla, 29.1.2014

Upload: vuongque

Post on 25-Apr-2018

223 views

Category:

Documents


4 download

TRANSCRIPT

Ohjelmistoarkkitehtuurit, TTY

Vierailuluento

Mika Siikarla, 29.1.2014

Teesi

ARKKITEHTUURI

Arkkitehtuuri on todella tärkeä osa ohjelmistoa.

Arkkitehtuurisuunnittelu pitää tehdä perustellusti ja huolellisesti.

Joskus ei ole riittävästi tietoa päätöksen tekemiseksi.

Silloin ehkä kannattaa ensin tehdä toiminnallisuus ja vasta sitten suunnitella se osa arkkitehtuuria.

Ei oikeuta ”unohtamaan” suunnitella arkkitehtuuria!

SUUNNITELLAAN PERUSTELLUSTI(vain?)

ASIAKKAAN TAVOITTEET

Ettei ensimmäinen pääsääntö unohtuisi...

TÄRKEINTÄ on auttaa asiakasta saavuttamaan tavoitteensa.

Ohjelmisto (ja sen arkkitehtuuri) on vain tapa, ei itsetarkoitus.

Arkkitehtuuripäätös, ominaisuus, tms., joka ei johdu tavoitteista on perusteeton.

OVAT ARKKITEHTUURIN TAVOITTEITA

Jotain IHAN muuta...

Tamperelainen ohjelmistotalo

Bitwise pähkinänkuoressa

• Sopivan kokoinen (51 henkeä)

• Kannattavan kasvava, AAA

• Koko tuplaantui laman aikana

• Vuonna 2013 palkattu 8 henkeä, (12 hlö 2012)

• 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

» .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

Mm. näillä teknologioilla

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 [email protected]

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 ainakin pelinappuloilta näyttäviä 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

ArchitectAlsoImplementshttp://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

PERUSTELEVAT ARKKITEHTUURIN

(Erityisesti ei-toiminnalliset) vaatimukset rajoittavat arkkitehtuuria.

Arkkitehtuuripäätösten perustelut vaatimuksista.

Vaatimukset

Arkkitehtuuri

toteuttaa

VAATIMUKSET

ELÄVÄT(elääkö arkkitehtuuri?)

Vaatimusten muutosten pitäisi näkyä arkkitehtuurin muutoksina.

Ehkä otettu huomioon?

Ehkä vanha kelpaa?

Ehkä kohta palataan takaisin?

Massa: uutta vai parempaa?

Vaatimukset

Arkkitehtuuri

toteuttaa

Vaatimukset

Arkkitehtuuri

toteuttaa

Vaatimukset

Arkkitehtuuri

toteuttaa

VAATIMUKSET

EIVÄT AINA TIEDOSSA

Jos Kun vaatimuksia ei tunneta kokonaisuudessaan, onko arkkitehtuurille kokonaisuudessaan perusteita?

Esim. suorituskyky, suoritustapa.

Lukitaanko vastaus?

?a??im?k?e?

Ar??it?h??uri

toteuttaa??

VAATIMUSTEN KERUU

VOI JATKUA KEHITYKSEN AJAN

Yksi tapa toimia:

Kiinitetään vain asiat, joille on perusteet.

Kerätään lisää/muuttuneita vaatimuksia käyttökokoemuksista.

Kiinnitetään lisää asioita.

Ohjelmisto on osin prototyyppi.

?a??im?k?e?

Ar??it?h??uri

toteuttaa??

Kurkistus oikeaan maailmaan

OHJELMISTO

TYHJIÖSSÄ

J

Asiakas

OHJELMISTO

YMPÄRISTÖSSÄÄN(muiden ohjelmistojen kanssa)

J +

Toimittaja Operaattori

OHJELMISTO

YMPÄRISTÖSSÄÄN(laitteiden ja muiden ohjelmistojen kanssa)

J +

Toimittaja Operaattori

OHJELMISTO

YMPÄRISTÖSSÄÄN(prosessien, laitteiden ja muiden ohjelmistojen kanssa)

J +

Toimittaja Operaattori

OHJELMISTO

YMPÄRISTÖSSÄÄN(integrointien, prosessien, laitteiden ja muiden ohjelmistojen kanssa)

J +

Toimittaja Operaattori

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

OperaattoriOperaattoriOperaattoriOperaattori

OHJELMISTO

MONESSA YMPÄRISTÖSSÄ

Toimittaja

OHJELMISTO

YHDESSÄ YMPÄRISTÖSSÄ(integrointien, prosessien, laitteiden ja muiden ohjelmistojen kanssa)

J +

Toimittaja Operaattori

OHJELMISTO

TOISESSA YMPÄRISTÖSSÄ(integrointien, prosessien, laitteiden ja muiden ohjelmistojen kanssa)

J +

Toimittaja Operaattori

? ? ? ?

? ? ? ? ?? ? ?

?

OHJELMISTO

TULEVASSA YMPÄRISTÖSSÄ(integrointien, prosessien, laitteiden ja muiden ohjelmistojen kanssa)

J +

Toimittaja Operaattori

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Ö

Ympäristö

J+K

J

J'

Bitwise

~200 kloc C#

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Ä

ASIAKKAAN TAVOITTEET

Uusi ominaisuus, optimointi, laite tai palvelu:

Nopea kehityssykli. Fail fast. Feasibility study. Demo. One-off.

Rajapintakehitys. Simulaattorikehitys. Smoke tests.

Toteutus tarvitaan oikeasti vasta myöhemmin (1v? 2v?)

Kokeillaan tuotteessa, sitten tuetaan tuoterungossa.

Järjestelmätason integraatio >> yksittäinen ohjelmisto

Arkkitehtuuri menisi ”hukkaan”, viivästäisi kokonaisuutta tai ei ole tarpeen pitkään aikaan

=> Tehdään jotain tärkeämpää ensin.

MÄÄRÄÄVÄT TÄRKEYSJÄRJESTYKSEN

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)

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

J ja M neuvottelevat suoraan resurssin R käytöstä

M L

Olipa kerran väylä

HÄK HÄK HÄK

MJ

L

BUS

M-kanava

”Joku muukin voisi käyttää väylää”

Erotetaan väylän ja M:n käsittely

MJ

Lkanava

protokolla

M-proxy

BUS

Uudelleenkäytettävä

J, M ja N neuvottelevat...

HÄK HÄK HÄK

MJ

Lkanava

protokolla

M-proxy

BUS N

Uudelleenkäytettävä

”Voisi varmaan olla muitakin kuin J, M, N...”

Välittäjä hoitaa skeduloinnin.(mikä tahansa määrä neuvottelijoita; mille tahansa resurssille)

MJ

Lkanava

protokolla

M-proxy

BUS

välittäjä

N

Uudelleenkäytettävä

Loppuisipa jo!

Kysymyksiä?