TLO-32400 Ohjelmallinen sisällönhallinta (5 op)
Vastuuvapauslauseke (Disclaimer)
Ohjelmallinen sisällönhallinta järjestetään nyt neljättä kertaa. Kokonaisuus
elää edelleen voimakkaasti
- Luennoitsijalla ei ole tavoitteena koota tästä luentoprujusta valmista
pakettia vaan aihepiirin teemojen painotuksia ja oppimisen kannalta toimivaa
esitysjärjestystä on tarkoitus kypsytellä yhteistyössä kanssanne
- Tulemme siis ainakin maistamaan omaa koiranruokaamme (eating your own dog food)
Materiaalit ovat jaossa tässä Github-kokonaisuudessa. Lisäksi otamme käyttöön
Yammer-alustan harjoitustöistä raportoimiseen.
Ohjelmallinen sisällönhallinta, kevät 2018
Luennoitsija: Jukka Huhtamäki (@jnkka)
Tuntiassistentti: Samuli Määttä
Yhteystiedot: jukka.huhtamaki@tut.fi (040-5854771 - suosin sähköpostia)
Huone: FB321, Tuotantotalous ja tietojohtaminen
Luennot: tiistaisin kello 10-12 ja perjantaisin 9-10 SJ204.
Harjoitukset: ei harjoituksia
Kotisivu:
ohsiha.github.io/2018
Twitter:
#ohsiha
Suorittaminen: harjoitustyö ja luentopäiväkirja (tai tentti)
Muodolliset esitiedot
Opintojakson tarkoituksenmukainen suorittaminen edellyttää ymmärrystä sekä Web-hypermedian keskeisistä periaatteista että ohjelmoinnin perusteista:
- Web-hypermedian perusteet - moniko osaa HTML-merkkausta, CSS-tyylejä tai Javascript-ohjelmointia?
- Ohjelmointitaito välttämätön (~ Ohjelmointi II tai Laaja ohjelmointi)
- Suositeltavia esimerkiksi Web-ohjelmointi ja Johdatus tietokantoihin
Opintojakson sisältö ja vaatimustaso asettuu mukavasti opiskelijan omien taitojen mukaiseksi - suorittaminen toki edellyttää tietyn minimitason saavuttamista.
Opintojakson sisältö ja suorittaminen
Ohjelmallisen sisällönhallinnankeskiössä on sisällönhallinnan automatisointi sekä vuorovaikutteisten (Web-)
informaatiojärjestelmien (hypermediasovellusten) toiminnallisuus ja teknisesti laadukas toteuttaminen.
Opintojakson teemakokonaisuudet:
- Menetelmät: Ohjelmallinen sisällönhallinta.
Informaatiojärjestelmän ominaisuudet,
joiden toteuttaminen edellyttää ohjelmointia.
Verkkopalveluiden yleiset periaatteet ja toiminnallisuus.
Hajautetut informaatiojärjestelmät. Mahdollisuudet ja rajoitteet.
- Sovellukset:
Informaatiojärjestelmien ja hypermedian yleisten ideoiden toteuttaminen Web-teknologiaan perustuvissa sovelluksissa.
Verkkopalvelun toteuttaminen sivupohjakielen (template-kieli) ja relaatiotietokannan avulla.
- Tekniikka:
Vapaavalintaisella teknologialla (PHP, Python, JavaScript, Ruby) toteutettu Web-sovelluskehys.
Oletusvalinta Django (Python).
Perinteisesti LAMP: Python tai Hypertext Preprocessor (PHP) -kieli ja MySQL-tietokanta.
Haluatko datatieteilijäksi?
Web yleensä ja sosiaalinen media erityisesti tuottavat joka päivä valtavan määrän uutta dataa, jota analysoimalla on mahdollista tuottaa uutta tietoa ihmisistä - esimerkiksi heidän tarpeistaan arvonluonnin tueksi.
Ammattinimike data scientist on ilmestynyt laajempaan käyttöön viime aikoina. Haussa on yhdistelmä taitoja:
- (Web-)tietojenkäsittely (koostepalvelut, informaation visualisointi, korkea vuorovaikutus).
- Edistyneet algoritmit (tilastolliset menetelmät, matematiikka, signaalinkäsittely, koneoppiminen, verkostoanalyysi).
- Käytettävyys ja käyttökokemus (user experience, UX)!
Kasvuyrittäjyyspotentiaalia: Which department is educating
data scientists in Finland? Startups NEED these folks (hard-core CS pros with UX skills).
,
kysyi Petteri Koponen jo muutama vuotta sitten ja
asia on edelleen
ajankohtainen.
Esimerkiksi datajournalistit
soveltavat vastaavanlaista osaamista uudenlaisten journalististen ratkaisujen kehittämisessä.
Entä Web-ohjelmoijaksi?
- Rautaista Web-ohjelmointiosaamista tavoittelevia opiskelijoita kannustetaan suorittamaan
Ohjelmallisen sisällönhallinnan ohella myös opintojakso Web-ohjelmointi.
- Opintojaksot tarkastelevat osin samoja teemoja, mutta näkökulmat ja painotukset eroavat toisistaan:
- Ohjelmallinen sisällönhallinta lähestyy informaatiojärjestelmiä käyttöliittymän, tietosisällön käsittelyn automatisoinnin ja sovelluksen toiminnallisuuden näkökulmista.
- Erityisesti painotamme analytiikan kojelautojen ja muiden datatuotteiden toteuttamista.
- Web-ohjelmoinnissa pääpaino on verkkopalveluiden teknisesti laadukkaassa totetuksessa.
- Opintojaksojen suorittaminen rinnakkain on mahdollista ja myös hyödyllistä.
Huomioi kuitenkin esitiedot ja harjoitustöiden vaatima työmäärä.
Opiskelusta - mitä opintojaksolla oppii?
Näkökulma on erityisesti asioiden sovelluksista riippumattomien perusteiden opiskelu:
ohjelmistot ja teknologiat tulevat ja menevät, ideat pysyvät.
Opintojakson tavoitteena on vastata muun muassa seuraaviin kysymyksiin:
- Mitä tarkoittaa ohjelmallinen sisällönhallinta? Mitä keinoja on olemassa ohjelmallisen sisällönhallinnan toteuttamiseen?
- Mitä toimintoja ohjelmallinen sisällönhallinta edellyttää ja miten ominaisuudet toteutetaan?
- Mitkä ovat ohjelmoinnin tuomat lisäarvot hypermediasovelluksen toteuttamisessa?
- Mitä yleisiä ominaisuuksia verkkopalveluina toteutettavissa informaatiojärjestelmissä on? Miten ominaisuudet toteutetaan käytännössä?
- Mitä keinoja informaatiojärjestelmän käyttäjän toiminnan tukemiseen on olemassa? Mitä niiden toteutuksessa on otettava huomioon?
Esimerkiksi mukautuvien järjestelmien toteuttaminen edellyttää käytännössä aina ohjelmointia.
Myös tekniikkaa
Toimintojen ja prosessien ohella kevään aikana käydään läpi myös teknisempiä kysymyksiä:
- Minkälainen on tietokantapohjaisen verkkopalvelun arkkitehtuuri? Entä hajautetun verkkopalvelun?
- Mitä vaihtoehtoisia toteutusteknologioita on olemassa? Miten valitaan tarkoituksenmukainen teknologia?
- Miten toteutetaan rikkaan vuorovaikutuksen mahdollistavia sovelluksia saavutettavasti?
- Minkälaista on on käytettävien ja käyttökelpoisten verkkopalveluiden toteuttamisen mahdollistava teknologia?
Tiivistetään sisältöä
Keväällä 2018 opintojakson sisältöä tiivistetään vastaamaan 5 opintopisteen laajuutta:
Valtaosa luennoista pidetään 3. opetusjaksolla. Harjoitustyön toteutusta voi jatkaa 4. jaksolla.
Käsiteltävät asiat ja painotukset muuttuvat vuosittain. Huomattava osa opintojakson sisällöstä avautuu
harjoitusten, itseopiskelun ja harjoitustyön kautta.
Prujun lisäksi luennoilla käydään läpi paljon käytännön esimerkkejä ja muuta asiaan liittyvää.
Ajantaiset tiedot opintojakson sisällöstä löytyvät aina luentopäiväkirjasta.
Harjoitustyö
- Harjoitustyön tekeminen on olennainen osa kevään
työskentelyä. Harjoitustyön aihe on vapaavalintainen ja myös
toteutusteknologiassa on valinnaisuutta.
-
Keväällä 2018 edetään suoraviivaisesti korkean tason sovellus- ja järjestelmäkehitykseen
ja jätetään teknologiset yksityiskohdat käsiteltäväksi
esim. Web-ohjelmointi
-opintojaksolla. Toki yksityiskohtia oppii myös harjoitustyötä tehdessä.
-
Harjoitustyön lopputuloksena syntyy portfoliollinen toteutettuja ominaisuuksia ja
niiden tiiviit kuvaukset Yammer-ympäristöön julkaistuna.
-
Harjoitustyöhön toteutetuista ominaisuuksista jaetaan pisteitä.
Suorittaminen numeroina - yksityiskohdat vielä mietinnässä
- Kevään päätteeksi järjestetään kolme tehtävää sisältävä tentti, josta
voi kerätä (3 x 6 =) 18 pistettä.
- Harjoitustyöhön liittyvistä toiminnoista ja ominaisuuksista jaetaan
yhteensä 18 pistettä.
- Suorittaminen edellyttää vähintään 12 pisteen keräämistä tentistä
(tai luentopäiväkirjasta) ja yhteensä 15 pisteen keräämistä tentistä
ja harjoitustyöstä.
- Harjoitustyön kaksitoista ensimmäistä pistettä toimivat
"neljäntenä ja viidentenä tenttitehtävänä"; ne siis vaikuttavat
suoraan arvosanaan.
- Viimeiset kuusi pistettä toimivat perinteisinä porkkanapisteinä:
Pienimmät yksittäisestä tehttitehtävästä kerätyt pisteet korvataan
porkkanapisteillä jos korvaaminen nostaa arvosanaa.
Luentopäiväkirja - vaihtoehto tentille
- Tiivistelmä kustakin luentoviikosta: 150 sanaa
- Viisi oivallusta tai tärkeintä oppimaasi asiaa
- Yhdestä kolmeen kehitysehdotusta luentoviikon antiin
- Ilmoita Jukalle mikäli olet kiinnostunut luentopäiväkirjalla suorittamisesta
Pisterajat
Opintojakson arvosana muodostuu seuraavasti:
- 0 < 15 (ja >= 12 tentistä)
- 1 >= 15 ja < 18
- 2 >= 18 ja < 21
- 3 >= 21 ja < 24
- 4 >= 24 ja < 27
- 5 >= 27
Muistettavaa & vinkkejä opiskeluun
- Ohjelmallinen sisällönhallinta ja informaatiojärjestelmät != Web.
Toteutukset ovat mahdollisia eri tavoin ja eri menetelmin (älypuhelinten sovellukset,
Flash, MS Silverlight, Delphi, ..., Universal Windows Platform, Cocoa, Ubuntu, ...)
- Laadukkaan sovelluksen tekeminen edellyttää aina sen sovellusalueen sisällöllistä
osaamista, jonka parissa työskennellään. Laajoista osaamisvaatimuksista johtuen
informaatiojärjestelmien kehittäminen on käytännössä aina ryhmätyötä.
- Suhtaudu sovelluksiin, menetelmiin ja teoriaan kriittisesti. Kysy koko ajan: miksi näin?
mitä tämä tarkoittaa? miten tätä voisi käyttää? mikä tässä on olennaista?
- Muista että informaatiojärjestelmät & tietokoneet ovat ihmisen ihmiselle tekemiä asioita
& kapistuksia: suhtaudu niihin sen mukaisesti (hyvässä ja pahassa).
"Näin on aina tehty" on harvoin hyvä perustelu.
Vielä pari vinkkiä
Kannattaa muistaa, että opintojakso suoritetaan siksi, että asioita
opiskeltaisiin ja opittaisiin, eli:
- Paikkaa tiedon reiät: yhden käsiteltävän osa-alueen, esimerkiksi ohjelmoinnin,
hallitseminen on hyvä asia, mutta kannattaa yrittää laajentaa näkökulmaansa ja pohtia josko
informaatiojärjestelmien kehittäminen olisi muutakin kuin vain X:n tekemistä.
- Ole oma-aloitteinen: jos jokin asia on jo tuttua,
syvennä oma-aloitteisesti tietojasi siitä
etsimällä itse lisämateriaalia!
- Älä ylenkatso noviiseja: jokainen oppii asioita joskus ensimmäistä kertaa.
Vastaa mielestäsi turhan helppoihin kysymyksiinkin asiallisesti. Vältä jargonia (pätee myös luennoitsijaan!).
Rikkaus: informaatiojärjestelmien kehittäminen on tämän päivän käsityöläisyyttä:
tekemällä oppii eikä osaaminen ole ikinä valmis.
Opintojakson opetusmuoto ja materiaali
Oppimateriaalin rungon muodostaa luentopäiväkirja, joka jäsentää
otsikkotasolla kokonaisuuden hallittavaan muotoon ja toimia muistilappuna luentojen sisältöön.
HUOM! Luentorunko ei missään tapauksessa sisällä koko oppimateriaalia, vaan ainoastaan jäsentää sitä!
Luentopäiväkirjan lisäksi opintojakson sisältöön kuuluvat
- Github-kokonaisuuteen julkaistut koosteet eri aiheista
- luentojen yhteydessä vapaamuotoisesti (esim. taululla tai tietokone-esimerkkien avulla) käsitellyt asiat
- luentorungossa ja kotisivulla mainitut lähteet (soveltuvin osin, totta kai)
- harjoitustyö
Olisi hienoa jos keksimme järkevän tavan automatisoida toteutuskerran tiedotusta ohsihan hengessä.
Keskeinen kirjallisuus
O'Reilly Medialla riittää tarjontaa Web Development -teeman alla.
Muutamia esimerkkejä
TTY:n Kirjasto tarjoaa pääsyn kattavaan kokoelmaan sähköisiä kirjoja ja julkaisuja - jaetaan kirjavinkkejä kevään edetessä!
Jukan kirjakokoelmassa on joukko teemaan liittyviä opuksia.
Esimerkkejä verkkomateriaalista
W3C:n määrittelevät teknologiat ovat keskeisessä roolissa:
Django-sovellusten kehittäjille ja Python-ohjelmointiin suunnattua materiaalia tarjoavat esim.
Myös HTML5-kieleen ja muihin ajankohtaisiin Web-teknologioihin perehtymiseen löytyy tukimateriaalia pilvin pimein.
Teknologiat
Opintojaksolla käytettävä tekniikkapatteri (LAMP) on vapaasti jaossa:
Eri käyttöjärjestelmiin löytyy valmiiksi paketoituja kokonaisuuksia
(WampServer,
MAMP,
XAMPP), joiden tuella asentaminen on suoraviivaista.
Cloud9 IDE, Heroku ja muut verkossa (pilvipalveluina) tarjolla olevat kehitys- ja tuotantoympäristöt
tarjoavat kilpailukykyisen vaihtoehdon oman palvelimen ylläpitämiselle.
1. Ohjelmallinen sisällönhallinta
Ohjelmointi mahdollistaa sisällönhallinnan (kerääminen, jalostaminen)
automatisoinnin, toteutustyön automatisoinnin, monikanavajulkaisemisen
sekä vuorovaikutuksen ja hajautuksen toteuttamisen. Nyt
ohjelmallista sisällönhallintaa käsitellään lähinnä
Web-pohjaisten informaatiojärjestelmien näkökulmasta:
- Web on olennaisilta osiltaan tekstimuotoista hypermediaa
(HTML, SVG), joten näkymien ohjelmallinen tuottaminen on suoraviivaista
- Valtaosa informaatiojärjestelmistä on tällä hetkellä Webissä:
opintojakson opit voidaan siirtää suoraviivaisesti tuotantokäyttöön
- Web-soveltajien käytössä on rajaton joukko ilmaisuvoimaisia teknologioita
informaatiojärjestelmien toteuttamiseen
Ohjelmoinnilla on keskeinen rooli myös multimediaan tai
tiedon visualisointiin kallellaan
olevissa informaatiojärjestelmissä (Flash, Visual Basic, MS Silverlight,
Java, Delphi, ...). Näissä ohjelmointi keskittyy erityisesti
vuorovaikutuksen toteuttamiseen.
Javascriptin merkitys korostuu kaikessa ohjelmistokehityksessä.
Mekaanisen työn automatisointi
Esimerkkejä mekaanisen työn automatisoinnista:
- Monipuolisten navigoinnin apuvälineet on tarkoituksenmukaista
toteuttaa ohjelmallisesti:
- Rakenteelliset linkit (murupolku, lineaarinen navigaatio,
mukautuva valikko) voidaan kaikki tuottaa
yhden rakennekuvauksen perusteella ohjelmallisesti
- Myös assosiatiivisten linkkien muodostaminen voidaan automatisoida
(~suosittelijajärjestelmät)
- Tietosisällön uudelleenkäyttö onnistuu esimerkiksi tallentamalla
tiedot tietokantaan tai määrämuotoiseen tekstitiedostoon ja
toteuttamalla julkaisurutiinit haluttuihin muotoihin ohjelmallisesti.
- Informaatiojärjestelmän tietosisällön päivittämiseen voidaan
rakentaa lomakkeisiin perustuvat toiminnot
Monikanavajulkaiseminen
Nykyaikainen Web-arkkitehtuuri
erottaa toisistaan URI-tunnisteen
yksilöimän resurssin ja sen representaation.
Representaatio räätälöidään päätelaitteen, käyttäjän ja käyttötilanteen
(=käyttökontekstin) perusteella.
Edellisen toteutus monikanavajulkaisemisen keinoin:
- Räätälöity julkaiseminen
(vrt. Multiple
Authoring):
resurssista julkaistaan kiinteä joukko representaatiota, joista valitaan
palvelukontekstiin sopiva vaihtoehto.
- Joustava julkaiseminen
(vrt. Flexible
Authoring):
representaatio räätälöidään pyynnön mukana välitettävän palvelukontekstin
kuvauksen perusteella (vrt.
content
negotiation).
- Nykyaikainen tapa monikanavaisuuden toteuttamiseen:
responsiivinen
design
Sekä räätälöity että joustava julkaiseminen on syytä toteuttaa
ohjelmallisesti.
Vuorovaikutuksen toteuttaminen
Käyttäjän syötteeseen reagointi edellyttää (navigointia lukuun ottamatta)
aina ohjelmointia. Esimerkiksi lomakkeen käsittely tapahtuu aina
ohjelmallisesti. Esimerkkejä toiminnoista:
- Informaatiojärjestelmän keskeisiä ominaisuuksia ovat esimerkiksi
hakutoiminto
ja mahdollisuus sisällön kommentointiin (annotointi)
- Verkkopalvelun yleisiä toimintoja ovat esimerkiksi
rekisteröityminen, käyttäjän tunnistaminen sekä
istunnon luominen ja hallinta
- Mukautuvassa (adaptiivisessa) informaatiojärjestelmässä käyttäjästä
luodaan malli, jonka perusteella sovelluksen sisältö ja navigaatio
mukautetaan käyttäjälle sopivaksi
- Käyttäjän on syytä tukea opasteiden ja
virheilmoitusten avulla.
Hajautetut informaatiojärjestelmät
Web 2.0 -ilmiöön usein liitetyt Web-rajapinnat (Web API) antavat
kehittäjälle aidon mahdollisuuden hajautettujen informaatiojärjestelmien
toteuttamiseen.
Muistatko vielä Hälytykset
kartalla? Edelleen kuuma mashup-skene tuottaa uusia toinen toistaan
mehukkaampia esimerkkejä Webissä tarjolla olevan tiedon yhdistelemiseen
perustuviin palveluihin.
Roy Fieldingin (2000) väitöskirjasta
Architectural
Styles and the Design of Network-based Software Architectures
liikkeelle lähtenyt Webin ja HTTP-protokollan uusi arvostus
antaa lisää tukea työlle.
Perehdymme opintojakson lopulla
REST/RESTful-ajattelun
perusteisiin ja käytännön soveltamiseen.
Visuaalinen analytiikka
Informaation visualisointi on onnistunut Web-teknologioilla jo vuosia
(esimerkiksi Highcharts ja D3.js)
Visuaalinen analytiikka
(Heer ja Shneiderman,
2012) viittaa prosessiin, jossa dataa kerätään, jalostetaan,
visualisoidaan ja analysoidaan - yksin ja yhdessä
Kevään mittaan mietimme muun muassa
ryömijöitä,
raapijoita,
datan siivoamista
("tunkkaamista"?) (ehdotuksia paremmista käsitteistä otetaan vastaan!)
ja visualisointia
Ohjelmointi: asiakas vai palvelin?
Asiakas-palvelin –mallin mukaan toimivassa sovelluksessa ohjelmointiin
perustuvia ratkaisuja voidaan yleensä toteuttaa sekä selaimessa että palvelimella:
- Älykäs asiakas (Thick/Smart/Fat client):
suuri osa sovelluksen toiminnoista on toteutettu osana asiakassovelluksen toiminnallisuutta.
- Kevyt asiakas (Thin client): sovelluksen toiminnallisuus on toteutettu
osana palvelinsovellusta, asiakkaalle välitetään ainoastaan näkymiä sovelluksesta.
Web mahdollistaa sekä älykkään että yksinkertaisen asiakkaan toteuttamisen.
Viimeisten vuosien aikana kehitystyö on siirtynyt asiakaspainoitteiseksi.
"Palvelin on ystävä"?
Selaimeen tai muuhun asiakassovellukseen toteutettujen ratkaisuiden toimintavarmuus on Webissä
edelleen vaihteleva ja erilaiset toteutustekniikat (AJAX, JavaScript/ECMAScript,
Java-sovelmat, Flash, MS Silverlight, ...) ovat vahvasti sidoksissa käyttöympäristöön:
- Parhaassa mahdollisessa tapauksessa kaikilla on käytössään toimiva perustoteutus tietystä palvelusta ja
teknologian salliessa käytössä on rikas käyttöliittymä kaikilla herkuilla, ks.
Responsive Web Design
Progressive enhancement ja
Unobtrusive JavaScript.
- Ohjelmallisessa sisällönhallinnassa keskitytään palvelimella toimiviin ratkaisuihin, mutta myös
selainohjelmointia käydään läpi esimerkiksi visualisointien toteuttamisen yhteydessä.
- Harjoitustyössä voit vapaasti kokeilla myös selaimeen painottuvaa toteutusta. Esim.
React tai
muilla JS-kehyksillä on hyvä haaste varsinkin kokeneemmille
kehittäjille.
Lopuksi
Näe metsä puilta:
-
Web-soveltajien käytössä olevat ilmaisuvoimaiset ohjelmointikielet,
erilaiset koostepalveluiden eli "Web-survosten" (mashup) kehittämiseen
tarkoitetut kirjastot ja rajapinnat,
sovellusten toteuttamista merkittävästi suoraviivaistavat sovelluskehykset
ja W3-konsortion Semanttinen Web
työvälineineen antavat todellisen mahdollisuuden uusien mielikuvituksellisten (ja
vanhojen, jo unohdettujen) ideoiden toteuttamiseen.
- Sosiaalinen media, Web-palveluiden APIt ja esimerkiksi avoin data ruokkivat
kiihtyvään tahtiin kehittyvää Web-kehittäjien ekosysteemiä. Kehittäjien luovuus on se keskeisin rajoite.
- Opintojakson keskeisenä tavoitteena on tutustua joukkoon hypermedian ja informaatiojärjestelmien tutkimuksessa
kehitettyjä ja/tai nykyaikaisista käytännöistä kumpuavia ideoita ja oppia miten ideat voidaan
käytännössä toteuttaa käytössä olevien ilmaisuvoimaisten teknologioiden tuella.