Tavoitteenamme on kehittää Hypermedian ohjelmointia alati eteenpäin. Tästä syystä on tärkeää, että annat palautetta opintojaksosta (tarvitsen TTY:n tunnuksen Kaiku-järjestelmään).
Archive for the 'Luentopäiväkirja' Category
Viimeisellä luennolla luodaan katsaus opintojakson sisältöön ja käydään läpi esimerkkitentti.
Tehtävä: Suunnittele hyvä tenttikysymys ja julkaise se vastaamalla tähän viestiin. Parhaiden ehdotusten esittäjille (1-3 kappaletta) myönnetään yksi (1) suoraan tenttitulokseen lisättävä piste. Tee ehdotus viimeistään huomenna torstaina 8. toukokuuta kello 14.
Hypermedian osaajan osaamisprofiilista voisi löytyä esimerkiksi seuraavia osa-alueita:
Tekniset perusteet
- ohjelmointitaito
- olio-ohjelmointi
- tietovarastot
- tiedonsiirtoprotokollat
Edistynyt tekninen toteutus
- ohjelmistoarkkitehtuurit
- hajautetut järjestelmät
- REST ja muut tiedonvaihtoprotokollat
Semanttisen Webin ja Web-palveluiden perusteet
- XML-standardiperhe: XML, XSLT, XQuery
- Webin metatietokerros: RDF, OWL, SPARQL
- SOAP, WSDL, …
Tekninen toteutus käytännössä
- ohjelmointikieliä
- komponentteja
- valmiit kirjastot
- räätälöitävät ratkaisut
Menetelmällinen osaaminen
- käyttäjäkeskeinen suunnittelu
- kehitysprojektin elinkaarimallit
- projektinhallinta
- suunnittelu- ja mallinnusmenetelmät
- testaus
- arviointi
Edistynyt tietojenkäsittely
- tekoäly
- tiedonlouhinta
- hahmontunnistus
- neurolaskenta
Laadukkaan lopputuloksen reunaehtoja
- hyödyllisyys!
- käytettävyys
- saavutettavuus
- laiteriippumattomuus
- tyylikäs Web-grafiikka: CSS & kuvankäsittely (”Web-muotoilu”)
Yleisten sovellusalueiden erityispiirteitä
- projektinhallintajärjestelmät
- dokumenttienhallintajärjestelmät
- asiakkuudenhallintajärjestelmät (Customer Relationship Management)
- Enterprise Resource Planning (ERP)
- suosittelijajärjestelmät (recommender systems)
- asiantuntijajärjestelmät
- päätöksenteon tukijärjestelmät
- tietämyksenhallintajärjestelmät
- yhteisöllinen hypermedia ja muu Web 2.0
Muuta mielenkiintoista
- mukautuva hypermedia
- sosiaalipsykologia ja muut ihmis- ja yhteisötieteet
- yhteisöllinen web
- informaation visualisointi
Mitä muuta aiheeseen liittyvää tulee mieleen? Vastaa kommentoimalla tätä viestiä.
Viimeisen luentoviikon aikana pohditaan ohjelmallista hypermediaa toteuttavan unelmaprojektin koostumusta. Ohjelmallista hypermediaa tuotetaan käytännössä aina projektimuotoisesti, joten projekti käy mainiosti jäsennykseksi opintojakson yhteenvedolle. Mistä tekijöistä unelmaprojekti koostuu?
Projekti alkaa tavoitteiden ja reunaehtojen määrittelyllä. Tavoitteita ja reunaehtoja aiheuttavat:
- käyttäjätarpeet: loppukäyttäjä, ylläpitäjä, (jatkokehittäjä)
- tietoturva
- olemassa olevat järjestelmät
- tuki sisällöntuotannolle
Myös teknologiavalinnat voivat määritellä reunaehtoja. Parasta kuitenkin olisi jos teknologia olisi mahdollista valita projektille asetettujen tavoitteiden perusteella, joten ihannetapauksessa teknologia ei tuo mukanaan uusia reunaehtoja.
Unelmaprojektin synnyttämää lopputuotetta voidaan kuvata seuraavilla laadun sanoilla:
- käytettävyys,
- saavutettavuus,
- laiteriippumattomuus,
- standardinmukaisuus (XHTML, CSS, …),
- yhteensopivuus, siirrettävyys, laajennettavuus, ylläpidettävyys,
- yksinkertaisuus ja
- yleinen skaalautuvuus (käyttöliittymä, käyttäjämäärä, ominaisuuksien määrä, jne.).
Vrt. “Build half a product, not a half-ass product” (Jason Fried, 2005).
Projektin kokoonpanolla on keskeinen merkitys projektin onnistumiselle. Unelmaprojektiryhmän kokoonpanoon kuuluvat esimerkiksi seuraavat asiantuntijat:
- ohjelmoijat,
- sovellusarkkitehti,
- sovellusalan asiantuntija,
- projektipäällikkö/rakennusmestari,
- yksittäisen asiakkaan edustaja,
- käytettävyystieteilijä,
- tekninen tuki,
- graafikko ja
- testaaja.
Projektilla on alkamisaika ja päättymisaika, joiden välissä projekti suunnitellaan ja toteutetaan. Projektin aikajana voidaan hyödyntää hallitusti erilaisten vaihejakomallien mukaisesti jäsennettynä. Vaihtoehtoja ovat ainakin
- vesiputousmallin eri sovellukset tai
- ketterä ohjelmistokehitys.
Unelmaprojektia ajatellessa mieleen tulee kiireettömyys, joka on suora johdannainen työn kokonaismäärän ja käytettävissä olevan ajan suhteesta. Projektin toteutustyön määrän pienentämisen tukena voidaan hyödyntää seuraavia ratkaisuja:
- Web-sovelluskehykset,
- yksittäiset ohjelmistokomponentit tai
- valmiit räätälöitävät sovellukset, esimerkiksi avoimen lähdekoodin sisällönhallintajärjestelmät.
NIH-ilmiön vältteleminen kaikin keinoin on keskeinen keino työmäärän pienentämisessä.
Ennen toteutustyön aloittamista on tietenkin syytä käyttää aikaa työn suunnittelemiseen. Ainakin seuraavat asiat on syytä lyödä lukkoon ja kirjata ylös suunnitteludokumentaatioon:
- tietosisältö,
- yksittäiset toiminnot: kuvaus, sallittu syöte, poikkeukset, tila toiminnon jälkeen, virheilmoitukset,
- toimintovuot (prosessit),
- tekninen arkkitehtuuri ja keskeiset rajapinnat.
Räätälöityjen HYTT-mallin mukaisten dokumenttien käyttäminen on soveltuvin osin toki mahdollista myös ketterässä ohjelmistokehityksessä. Vaihtoehtoisesti suunnittelutyössä voidaan soveltaa Verkkopalvelun sisällöntuotannossa esiteltäviä suunnitteludokumentteja. Suunnitteluperustan (design rationale) käsitteeseen tutustuminen on myös suositeltavaa. Ketterissä menetelmissä valtaosa suunnitteludokumentaatiosta kuitataan esimerkiksi käyttötarinoilla (user story) tai tuotteen ominaisuuksien listalla (backlog tai work queue) ja käytössä olevan sovelluskehyksen omalla dokumentaatiolla.
Laadunvarmistusprosessin automatisointi helpottaa jo julkaistun tuotteen ylläpitoa, esimerkiksi
- validaattorit (HTML, CSS, RSS, RDF) ja
- automatisoitu testaaminen (Selenium, xUnit-perhe, unittest, doctest).
Projektiryhmän työskentelyn tueksi tarvitaan joukko erilaisia sovellusohjelmia kehitystyön rutiinien automatisointiin, yhteisten resurssien hallinnoimiseen, kommunikoimiseen ja tiedon jakamiseen. Unelmaprojektin käytössä on ainakin osa seuraavista välineistä:
- versionhallinta (CVS, SVN),
- kehitysympäristö eli IDE (kääntäjä, ajoympäristö, editori),
- ohjelmointivirheiden hallinta (Google-haku “bug tracker”),
- sähköposti,
- pikaviestimiä (IRC, Jabber, Skype),
- tiedon jakaminen: Wiki, blogi (vrt. Getting Real: Ride the Blog Wave),
- todo-listat ja
- jokin ryhmätyöväline: kalenteri ja muita ominaisuuksia.
Esimerkiksi 37signals on rakentanut joukon sovelluksia sovelluskehitysprojektien tueksi.
Hyvä nyrkkisääntö välineiden valinnassa on se, että välineen käytön myötä säästyvän ajan on oltava välineen tehokkaan käytön oppimiseen kuluvaan aikaan verrattuna merkittävästi suurempi.
Unelmaprojektin välineistö ja kokoonpano on yksinkertainen, mutta antaa tekijöille riittävät eväät laadukkaaseen lopputulokseen pääsemiseen suoraviivaisimmalla mahdollisella tavalla.
Eväitä unelmaan löytyy (pienistä hypetyksen elkeistä huolimatta) esimerkiksi Jason Friedin esitelmästä How to make big things happen with small teams (PDF-muodossa).
Mitä elementtejä unelmaprojektista vielä puuttuu? Kerro mielipiteesi kommentoimalla tätä viestiä.
Opintojakson aikana on keskitytty ensisijaisesti käsittelemään vuorovaikutteista tai muuten ohjelmallisesti toteutettua hypermediaa yksittäisten järjestelmien tapauksessa. Kuitenkin vieläkin mielenkiintoisempaa on tarkastelun yleistäminen kattamaan myös järjestelmien välisen hypermedian. REST muodostaa sopivan polun aihepiiriin tutustumiseen.
Käsitteen Representational State Transfer (REST) määritteli alun perin Roy Fielding väitöskirjassaan Architectural Styles and the Design of Network-based Software Architectures. Paul James on monen muun ohella kirjoittanut lyhyen johdannon aiheeseen ja esittää REST-periaatteet mukavan esimerkin muodossa. Joe Gregorio on kirjoittanut aiheesta artikkelisarjan xml.comiin otsikolla The Restful Web.
Fielding kertoo vuonna 1998 pidetyn puheensa tiivistelmässä seuraavaa:
“The World Wide Web architecture has evolved into a novel architectural style that I call “representational state transfer.” Using elements of the client/server, pipe-and-filter, and distributed objects paradigms, this style optimizes the network transfer of representations of a resource. A Web-based application can be viewed as a dynamic graph of state representations (pages) and the potential transitions (links) between states. The result is an architecture that separates server implementation from the client’s perception of resources, scales well with large numbers of clients, enables transfer of data in streams of unlimited size and type, supports intermediaries (proxies and gateways) as data transformation and caching components, and concentrates the application state within the user agent components.”
REST-ajattelun mukaisesti toimivan arkkitehtuurin periaatteet on kuvattu Fieldingin väitöskirjan luvussa Representational State Transfer (REST).
Doug Hellman on kirjoittanut tiivistelmän Leonard Richardsonin and Sam Rubyn kirjasta RESTful Web Services (O’Reilly Media). Tiivistelmässä listataan muun muassa keskeiset REST-periaatteet:
Descriptive URIs: URIs should convey meaning
Addressibility: Expose all information via URLs
Statelessness: The client maintains the application state so the server does not have to.
Representations: Resources can have multiple representations, based on format, level of detail, language, and other criteria
Connectedness: Link between related resources explicitly within the representations, so the client does not have to know how to build URLs
Uniform Interface: Use the HTTP methods (GET, PUT, POST, DELETE) as designed
Yksityiskohtana mainittakoon, että Fielding viittaa väitöskirjassaan arkkitehti Christopher Alexanderiin, jonka kirja The Timeless Way of Building lienee mullistanut monen ohjelmistoarkkitehdin elämän. Kirjan jälkimainingeista on esimerkiksi syntynyt laaja yleisiä ratkaisumalleja (pattern) määrittelevä ja jakava yhteisö (lisätietoa: Hillside.net).
RESTin ohella apuja maailmanlaajuisen hypermediakoneen rakentamiseen löytyy esimerkiksi erilaista Semanttisen Webin perusteknologioista (XML, RDF, OWL) ja sovelluksista (FOAF ja moni muu), Web-palveluista (siis Web Services), tietovirroista (RSS/Atom), mikroformaateista, yhdistelmäpalveluista (mashup, suomeksi joko fuusaus, survos, muusaus, mässy, sosellus tai soselma =) ja avoimista lisensseistä (erityisesti Creative Commons).
Aiheesta ei koosteta erillistä luentomateriaalia, mutta luennon ydinkohdat luetaan tietenkin mukaan tentittävään aineistoon.
Mitä haluaisit luennolla käsiteltävän? Vastaa kommentoimalla tätä viestiä!
Yhteisön perusteet:
- käyttäjäprofiili
- yhteisö on profiilien yhdistelmä: kontaktien listaaminen, yhdisteleminen kiinnostuksen kohteiden tai muun tiedon kautta, ryhmäytyminen (avoin ryhmä/hyväksyminen/suljettu)
- taggaaminen (wikipedia.org) ja folksonomiat (vanderwal.net)
- syötteen yhteisöllinen arviointi (pisteytys, nosta/laske) ja moderointi (ilmoita epäasiallinen viesti)
- viestintävälineet: huutolaatikot, pikaviestit, kutsuminen, suositteleminen
- kertakirjautuminen ja palvelurajat ylittävä käyttäjäprofiili: OpenID (openid.net), Shibboleth (shibboleth.internet2.edu), Haka-infrastruktuuri (csc.fi), OpenSocial (code.google.com) ja Social Network Portability (microformats.org)
- älä tee näin: Social Network Anti-Patterns (microformats.org)
Yhteisöjen esittäminen:
- The Friend of a Friend (FOAF) project (foaf-project.org)
- Autodiscovery - FOAF (wiki.foaf-project.org)
- Xhtml Friends Network (gmpg.org/xfn/)
- Microformats (microformats.org)
Yhteisöllinen tiedonkäsittely:
- tiedon kaappaaminen (ja alustava luokittelu): del.icio.us, Jaiku, Zotero, todo-listat
- henkilökohtainen sisällöntuotanto: henkilökohtaiset blogit, profiilin muotoileminen, tiedon koostaminen muualta
- yhteisöllinen sisällöntuotanto: wikit
- muutostiedon seuranta: suodatettuja RSS-koosteita, henkilökohtaisia RSS-lukijoita, wikiin toteutettu räätälöitävä RSS-lukija, RSS-planeetat
- kerätyn tiedon visualisointi
Aiheesta ei koosteta erillistä luentomateriaalia, mutta luennon ydinkohdat luetaan tietenkin mukaan tentittävään aineistoon.
Mitä haluaisit luennolla käsiteltävän? Vastaa kommentoimalla tätä viestiä!
Kohti ketterä Web-sovelluskehitystä Internet-nopeudella tapahtuva vs. perinteinen ohjelmistokehitys, ketterä ohjelmistokehitys, Scrum-perusteet, Scrum-prosessi, Extreme Programming (XP), mallintaminen, käytäntöjä (koodin generointi vs. konfigurointi, PHP ja ketterämpi rajapintadokumentaatio)
Luentokalvot :: sivut 136-151
Linkkejä ja lisälukemista:
- Ketterä ohjelmistokehitys
- Is “Internet-speed” software development different? PDF (Baskerville ym.)
- Agile software development methods - Review and Analysis PDF (Abrahamsson ym.)
- Manifesto for Agile Software Development
(agilemanifesto.org) - What is
Extreme Programming? (Ron Jeffries) - Crossing borders: What’s the secret sauce in Ruby on Rails? (Bruce Tate)
- Mallintaminen teoriassa…
- An introduction to Model Driven Architecture - Part I: MDA and today’s systems (Alan Brown)
- Agile Modeling Home Page (Scott W. Ambler)
- … ja käytännössä
- What is ArchGenXML (plone.org)
Tiedonhaun apuvälineet johdanto tiedonhakuun, tiedonhaun menetelmät (hakeminen ja selaaminen), hakukoneen toiminnallisuus, sanahaku ja indeksointi, indeksointi Webissä, tiedon visualisointi ja näkymäpohjainen hakeminen, Semanttinen Web ja tiedonhaku, taustaa ja käsitteitä, Dublin Core, folksonomiat ja kuvailutieto, ongelmia Semanttisessa Webissä
Luentokalvot :: sivut 116-135
Linkkejä ja lisälukemista:
- Esimerkkejä tiedonhaun apuvälineistä
- Ad hoc: Google (tarkennettu haku) (google.fi)
- Ad hoc ja Ajax: A9 ja Google Suggest (google.com)
- Suodattaminen: Huoneistokeskus - kotivahti (huoneistokeskus.fi)
- Rakenteeton selaaminen: Rallikalenteri 2008 (tenab.net)
- Rakenteeseen perustuva selaaminen: Yahoo! Directory (yahoo.com)
- Hyperteksti: Wikipedia (wikipedia.org) ja BrainyEncyclopedia (brainyencyclopedia.com)
- Tiedon visualisointi: KartOO visual meta search engine (kartoo.com)
- Näkymäpohjainen haku: MuseoSuomi (hiit.fi), del.icio.us direc.tor: Delivering A High-Performance AJAX Web Service Broker (johnvey.com), Longwell (simile.mit.edu) ja Use of Faceted Classification (webdesignpractices.com)
- Semanttinen Web
- Semantic Web (w3.org)
- Resource Description Framework (RDF) (w3.org)
- Tutorial on Semantic Web Technologies (Ivan Herman/w3.org)
Mukautuvat verkkopalvelut lähestymistapoja mukautuvuuteen (laiteriippumattomuus, saavutettavuus, kansainvälistäminen & kotoistaminen), mukautuva hypermedia, mitä mukautetaan?, käyttäjän mallintaminen, jakelukontekstin kuvailu (HTTP, CC/PP ja UAProf)
Luentokalvot :: sivut 104-115
Linkkejä ja lisätietoa:
- Mukautuvat verkkopalvelut: esimerkkejä, artikkeleita ja teknisiä perusteita
- Pandora and Last.fm: Nature vs. Nurture in Music Recommenders (Steve Krause : Blog)
- Adaptive Web Sites: An Introduction (Carolyn Wei)
- Composite Capability/Preference Profiles (CC/PP): Structure and Vocabularies 1.0 (w3.org)
- Wireless Application Group User Agent Profile Specification PDF-muodossa (wapforum.org)
- Dataa mukauttamisen tueksi, esimerkkejä:
- Web Services - Audioscrobbler (audioscrobbler.net)
- allmusic (allmusic.com)
Tulevat kaksi viikkoa kuluvat TTY:llä tenttiviikon ja pääsiäistauon merkeissä, joten Hypermedian ohjelmoinnin luennot ja harjoitukset taukoavat muun opetuksen tavoin. Seuraava luento järjestetään tiistaina 1. huhtikuuta ja harjoitukset jatkuvat keskiviikkona 2. huhtikuuta.
Huomaathan, että toinen perusominaisuus - rekisteröityminen - esitellään 7. viikkoharjoituksessa viikolla 15. Kuudennen harjoituskerran tehtävät julkaistaan viikon 12 lopulla.
Muokkaus: Kuudennen harjoituksen tehtävänanto on nyt julkaistu.
Tuoreimmat kommentit
RSS