Skip to content

Sovelluskehityksen rappoi Suomessa

joulukuu 16, 2014

Tähän kirjoitukseen minua innoitti tietotekniikan historiaa käsittelevä yhden Smalltalkin kehittäjän Adelen Goldbergin haastetteluvideo:  https://www.youtube.com/watch?v=IGNiH85PLVg

Smalltalkiakin voi edelleen opetella ja käyttää (kts: http://www.cincomsmalltalk.com/main/products/visualworks/ ), mutta tähän tarkoitukseen on yhtä hyvä Python, kunhan sen rakentaa puhtaasti olioiden varaan.

Haastattelussa Adele Goldberg puhuu siitä, miten proseduraalisen ohjelmoinnin kannattajat pelkäsivät, että heiltä häviää työt ja tästä syystä raivokkaasti vastustivat oliometodia.

Olio-paradigma on Alan Kayn Dan Ingalls ja Adele Goldberg luomus kun he halusivat luoda ohjelmointikielen, jolla lapsikin voi ohjelmoida. Näin syntyi Smalltalk, ja tietokonehiiri. Nämä ihmiset olivat aidosti kiinnostuneita ohjelmoinnin opettamisesta lapsille ja tekivät merkittävän työn tällä saralla 1970 – 1990. Olio- ohjelmointi on tänäänkin ehdottomasti paras tapa opettaa sekä lapsia että ammattilaisia ohjelmoimaan ja tuottavin tapa suunnitella ja toteuttaa ohjelmointia. Olen hankkinut erään ensimmäistä Smalltalk- kehitysympäristöistä Suomeen Finnairille 1994. Tämä oli Parc Place:n Visual Works. Tämän avulla tehtiin Finnairille useita upeita sovelluksia pienellä tiimillä. Sen jälkeen siirryttiin Javaan, joka oli ihan uusi.

Hän korostaa olioteknogeologian joustavuutta ja uudelleenkäyttöä. Samalla hän kertoi siitä, miten paljon helpompaa on antaa oppilaille luokkarakenne ja antaa näiden muuttaa ja laajentaa sitä kuin aloittaa tyhjästä. Kun tarkastellaan tilannetta Suomessa, olioteknogeologia ei oikeastaan koskaan lyönyt itseään läpi. Kun toteutimme Smalltalkilta sovelluksia Finnairissa teknologia oli varsin raakile. Sovelluksista tuli tästä huolimatta todella hyviä. Pulman oli – ja on edelleen vanhanaikaiset tietokannat. Käytimme menestyksellisesti Gemstone Smalltalk- tietokantajärjestelmää. Silloin jo oli selvää, että tehokaan yhteiskäyttöiset sovellukset hyötyisivät eniten juuri oliotietokannoista. Vanhan proseduraalisen osaamisen ja SQL- kantojen paino toteutuskentässä oli niin suuri, että se jyräsi kunnollisen olioteknologian. Kun kaikki SQL- tietokantoja tekevät toimittajat yhdistivät voimansa ja OO:ta vastaan ja rakensivat SOA:n, joka oli pelkkä kulissa paluulle vanhaan proseduraalisuuteen. IT-alueella tapahtui myös muita muutoksia, jotka sotkivat kokonaisuutta. Kun osaaminen oli keskimäärin heikkoa ja varsinkin isot sovelluskehityshankkeet kariutuivat tai rampautuivat yksi toisensa jälkeen, siirtyi painopiste teettämisen sijasta sovelluskokonaisuuksien ostamiseen. Nämä eivät olleet – tai ole – sen parempia rakenteeltaan, mutta kun isot ohjelmistotalot halusivat parantaa tulostaan, niin panostettiin pakettimyyntiin joka toki toimittajan kannalta on paljon tuottoisampaa kuin räätälöityjen tekeminen. Asiakkaiden liiketoiminta toki kärsi tästä, mutta hankkeet eivät flopanneet eikä kenenkään pomojen päitä vaadittu vadille. Samanaikaisesti laiteteknologia muuttui koko ajan ja sopeutumista tarvittiin. Käyttöliittymät muuttuivat olioiden myötä graafisiksi ja näiden toteutusvälineet olivat hyvin alkeellisia HTML:stä alkaen, kun tehokas sovelluskehitys olisi tarvinnut kipeästi tehokkaita korkeantason kehitysympäristöjä. Tämä epämääräisyys jatkuu edelleen.

Yksi vakava hiipivä pulma oli Javasta alkuunsa saanut ohjelmistojen ilmainen jakaminen. Paradoksaalista tässä oli se, että ohjelmoijat ja heidän yrityksensä olivat hanakaimpia käyttämään ilmaisia ohjelmistoja ja jopa murtamaan lisenssisuojia. Tämä johti 15 vuodessa siihen, että sovelluskehitystyövälineiden peruspaketit piti jakaa ilmaiseksi. Näin ohjelmistoteollisuuden ansaintalogiikka katosi. Tämä jatkuu edelleen ja siitä on selkeänä esimerkkinä Google ja Facebook, joiden tulonmuodostus ei synny oman tuotannon myynnistä vaan siihen kytketystä mainonnasta.

Olen kirjoittanut IT-Dinosaurus blogia OO- teknologiasta vuodesta 2009 lähtien. Sivujani on käyty lukemassa mielestäni paljon, ottaen huomioon suppean lukijakunnan. Lukijakuntani on maailmanlaajuinen ja voimakasta kiinnostusta on ollut vielä aivan viime vuosiin saakka, vaikka metodikuvaukseni on ollut kutakuinkin valmis jo 2011 saakka. Yllättävää lukijakunnan jakautumisessa on ollut intialaisten ylivoimaisesti suurin osuus. Tämän jälkeen tulevat USA, Kanada ja Suomi. Tämä kertonee siitä, että teknologian osaava käyttö on siirtynyt Intiaan ja jatkaa vahvana USA:ssa tai siitä, että koko uustuotanto on siirtynyt pääasiassa näihin maihin.

Edelleenkin esimerkiksi Suomessa on käsittääkseni tarvetta tehokkaalle ketterälle sovelluskehitykselle ja toteutustiimit ovat aina innokkaita käyttämään mallilähtöistä kerrostettua teknologiaa, mutta järjestelmiä osatavat organisaatio eivät tätä ole moninaisista syistä johtuen hyväksyneet.

Nyt muutokset yritysten toimintatavoissa ja laitekentässä ovat taas hyvin voimakkaita ja tämä vaikeuttaa sovelluskehitystä.

Tällä hetkellä on myös kehittymässä erittäin merkittävä muutosvoima, joka tulee seuraavan 5 – 10 vuoden kuluessa täydellisesti muuttamaan sovelluskehityksen. Tämä voima on hermoverkkopohjainen piiriteknologia, joka rakentaa itseoppivia kokonaisuuksia. Näitä laitteita, ei voi perinteisessä mielessä ohjelmoida vaan ne pitää opettaa. Kun nämä laitteet tulevat laajamittaisesti tuotantoon, ihmisten tekemä periteisten tietokoneiden ohjelmointityö tai tarkemmin sovellusten toteutustyö tulee siirtymään pelkästään näille koneille. ( http://bit.ly/1yNaVMb )

Tässä linkki OO-blogillenihttp://jukkatamminen.wordpress.com/

Mainokset
8 kommenttia
  1. Hei, oletko lukenut Kingdom of Nouns – kirjoituksen? (http://steve-yegge.blogspot.fi/2006/03/execution-in-kingdom-of-nouns.html). Siinä on minusta ihan hauskaa analyysiä olioista.

  2. Hyvä blogi ja sisällys on ajankohtaista ja kiinnostavaa. Suhtaudun kuitenkin vähän sinua skeptisemmin noiden hermoverkkopiirien kaikkivoipaisuuteen. Ne ovat toki hyödyllisiä monessa, erityisesti signaalinkäsittelyn alan ongelmaan kuten puheentunnistukseen, kuvantunnistukseen ym. sensoridatan tulkitsemiseen, liittyvässä tehtävässä. En kuitenkaan näe varsinaisen sovelluslogiikan siirtyvän aivan lähitulevaisuudessa oppivien piirien tehtäväksi, vaan ns. bisneslogiikka kirjoitetaan edelleen käsin. Omaa koodiaan muokkaavat tietokoneet ovat kiehtova ajatus, mutta tämänhetkinen teknologia ei kuitenkaan vielä pysty kovin paljoon (ks. esim Genetic Programming). Koodaus on kuitenkin perimmiltään speksaamista, joskin hyvin spesifillä määrittelykielellä, enkä usko koneiden aivan heti pystyvän niin kokonaisvaltaiseen asioiden hallintaan, että ne pystyisivät tähän. On kuitenkin mielenkiitoista miettiä millaisia apuneuvoja neuropiirit ja Deep Learning tuovat tullessaan tähän (”racing with the machine”).

    • Jukka Tamminen permalink

      Ajatukseni siis kulkee niin, että TrueNorth piirit saavuttavat 10 ^^12 synapsin tason 2 – 3 vuodessa ’aivokoneiden’ kaupallinen tuotanto alkaa. Ensimmäisiä tehokkaita alueita, joihin näitä Deep Learning koneita tullaan käyttämään on mielestäni sovelluskoodaus. Olen pitkään tehnyt liiketoiminnan abstrakteja oliomalleja ja olen kirjoittanut blogin tehokkaasta sovellusohjelmistojen metodologiasta. (kts: https://jukkatamminen.wordpress.com/292-2/ ) Jo 15 vuotta sitten sovellusohjelmointia olisi voitu tehostaa huomattavasti abstraktin liiketoiminan oliomallinnuksen avulla. Jatkossa tuo oliomalli ja tarvittavat sovelluksen työnkulut lähtökohtana tällainen olio-ohjelmoiva ”Watson” on ylivoimainen sovelluskehitysmarkkinoilla, joilla tänään ylikansalliset jättiyritykset rahastavat surutta 10 – 30 vuotta vanhalla sovelluskoodilla. ( IT-Dinosaurus blogilla on ollut yli 41000 sivunäyttöä). Tämä on siis uskomukseni. Noin 20 vuotta sitten uskoin, että 10 vuodessa puhtaat oliototeutukset valtaavat maailman – eivät vallanneet.

      • Haluaisin ymmärtää tätä visiota lisää, mutta en aivan pysy kärryillä. Tarkentaisitko siis mitä olio-ohjelmoiva tekoaivo ottaisi siis syötteekseen ja mitä se tuottaisi ulos tässä IT-järjestelmänkehityscasessa?

  3. Jukka Tamminen permalink

    Valitan sekavaa esitystäni. Siis iso neurochip keinoälyn opetetaan tuottamaan kokonainen kolmikerrosinen esim. Java- tai Python-sovellus ( jossa siis sovelluskerros, domainkerros ja persistensiikerroksena oliokanta ). Syötteenä olisi liiketoiminnan abstrakti oliomalli ( luokkamalli + n collaboratiokaaviota, jotka kattavat sovelluksen liiketoimintalogiikan) sekä sovelluksen työnkulut ( esim. use case rakenteina ). Tämän selvemmin tuskin osaan ideaani kuvata. 😦 lähtökohta tarkemmin kuvattu IT-Dinosaurus blogin teksteissä) ( Mielestäni paras SyNAPSE- projektin tilannekuvaus: YouTube: IBM SyNAPSE Deep Dive 1 – 4. Näitä 4 videota on tähän mennessä katsottu ainoastaa n. 500 kertaa !! )

    • Kiitos selvennyksestä. Visioimasi UML/oliopohjainen speksaaminen vesiputousmalleineen on se hankala askel, sillä käytännössä luokkakaaviot, tapahtumasekvenssikaaviot, use caset, ER-kaaviot ym. jo määrittelevät toteutettavan järjestemän. Hankaluus on saada ne kerralla oikein ja tämän hetken konsensus lienee, että iteratiivinen tapa ketterine prosesseineen on parempi.

      Osittain vakioitujen ratkaisuiden tuottaminen tuolla kuvaamallasi tapaa saattaisi sen sijaan olla mahdollista. Tässä joustavaan IT-ratkaisuun/-kehykseen jätetään ns. variaatiopisteitä, joita kiinnittämällä saadaan asiakkaan tarpeet täyttävä järjestelmä aikaan. Oppivat järjestelmät voivat näytellä tässä osaa olemalla apuna räätälöinnissä ja dataintegraatiossa, jolloin osa variaatiopisteistä voidaan kiinnittä asiakascasendatan avulla automaattisesti. Olen sivunnut tätä tutkimustyössäni (automaattista data-integraatiota, ennaltamäärittelemätön tieto luetaan oppivan järjestelmän avulla oliomalliin) ja yritän ehtiä sisällyttää osion tästä myös väitöskirjaani.

      Kiitos myös SyNapse videolinkeistä. Laitan katsontalistalle.

  4. Jukka Tamminen permalink

    Hei! Et olisi voinut ymmärtää selitystäni enempää väärin!! 🙂 Siis tuo domain malli tuotetaan KORKEALLA abstraktiotasolla ja sen tehdään hyvin nopeasti( esim Aptoin osalta saa käyttää korkeintaan 15 työpäivää). Tällöin on selvää, että tarkkaan ottaen ei ole määritelty mitään ainoastaan muodostettu ratkaisun 3D rakenne – maailman malli. Mä olen vastustanut vesiputoustoteutuksia jo 20 v. Ajatus onkin se, että älykäs sovellustoteuttaja aloittaa keskeisimmistä toiminnosta ja sitten käyttäjäyhteisön ohjauksessa kierros kierrokselta lisää ominaisuuksia ja sammalla täydentää / korjaa mallit (niiltä osin kun asiat niissä ovat) ajantasaisiksi. ( Tässä vielä esimerkki kts: https://itkritiikki.wordpress.com/2011/10/12/suomelle-hyva-terveydenhuollon-tietojarjestelma-halvalla/ )

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s

%d bloggers like this: