Wikipendium

Share on Twitter Create compendium Add Language
Edit History
Tools
  • Edit
  • History
  • Share on Twitter

  • Add language

  • Create new compendium
Log in
Table of Contents
  1. Brukskvalitet | Usability
  2. Designprinsipper
    1. Affordance
    2. Jacob Nielsen - "10 Heuristics"
    3. Don Norman - "The Design of Everyday Things"
    4. High level goals for data display
    5. Shneiderman's Eight Golden Rules of interface design
  3. Gestaltprinsippene
  4. Konseptuell modell
  5. Metaforer
  6. Brukersentrert design
    1. Fase 1: Forstå brukskontekst
    2. Fase 2: Spesifisere brukerkrav
    3. Fase 3: Design av løsninger
    4. Fase 4: Evaluere design opp mot brukerkrav
  7. Personas
  8. Scenarioer og use case
  9. Prototyper
    1. Ulike prototyper
  10. Brukbarhetstester
    1. 10 punkter for gjennomføring av brukbarhetstest
    2. Debriefing
    3. System Usability Scale (SUS)
    4. Brukbarhetstest som tegneserie
  11. Universell utforming
    1. Funksjonshemming
    2. 7 prinsipper
  12. Interaksjonsteknikker
  13. Model-View-Controller (MVC)
    1. Hendelsesdreven programmering
    2. Så hvordan funker MVC?
    3. Java Swing (deprecated)
      1. JavaFX som gjelder
      2. Java Swing er et rammeverk for brukergrensesnitt i Java.
      3. ActionListener
      4. JList
        1. JList og ListModel
        2. JList og ListCellRenderer
        3. Seleksjon
    4. JavaBeans-baserte modeller
      1. Typisk kallsekvens:
      2. Modeller kan ha modeller
‹

TDT4180: Menneske-maskin-interaksjon (MMI)

Tags:
  • tdt4180
  • usability
  • mtdt
  • mmi
+

"Dere trenger ikke å kunne noe, eller huske noe." - Dag Svanæs (foreleser)

Brukskvalitet | Usability

Brukskvaliteten til et produkt har mye å si for totalvurderingen av produktet. Vi kan, i henhold til ISOs definisjon, dele inn brukskvalitet i tre underkategorier:

  1. Anvendbarhet (Effectiveness)
    • Dekker systemet de relevante funksjonene, og får brukerne til å benytte dem?
  2. Effektivitet (Efficiency)
    • Lar oppgavene seg utføre effektivt?
  3. Tilfredsstillelse (Satisfaction)
    • Den subjektive brukskvalitet. Krever intervjuer og spørreundersøkelser for å fastslå brukernes opplevelse av systemet.

Brukskvaliteten til et produkt er kontekst-avhengig, og avhenger derfor av hvem brukerne av produktet er, hva de ønsker å bruke det til og i hvilken sammenheng det skal brukes. En mobiltelefon kan ha samme brukskvalitet som en klokke dersom man ønsker å sjekke tiden. Det motsatte er kontekst-uavhengige egenskaper, som f.eks. vekt, størrelse, farge og prosessorhastighet.

Interaksjonsdesign handler i dette faget stort sett om utforming av grafiske grensesnitt for nettsider og applikasjoner. I tillegg til brukervennlighet, handler interaksjonsdesign blant annet om:

  • Utility (Nytteverdi)
  • Desirability ("bare må ha")
  • Branding
  • Sosiale medier
  • Integrasjon med andre produkter
  • Vanity (Forfenglighet)

ISO-definisjonene om brukskvalitet og brukersentrert design er i forelesning fra 2018 definert slik:

  • ISO 9241-11 beskriver hva brukskvalitet er.
  • ISO 9241-210 beskriver hvordan en går frem for å lage produkter med høy brukskvalitet.

Designprinsipper

Affordance

En gjenstands affordance er den kvaliteten som gjør at vi kan utføre en handling på den. En knapp signaliserer f.eks at vi kan trykke på den, og en colaflaske signaliserer at vi kan drikke den. Vi har tre former for affordance:

  • Fysisk: Utformingen til et objekt signaliserer ofte hva man kan gjøre med objektet. En colaflaske er formet slik at hånden kan gripe rundt den.
  • Kulturelt: Konvensjoner som læres.
  • Gitt av konteksten eller omgivelsene. ("Nei, på Mac gjør vi det sånn her ..")

Jacob Nielsen - "10 Heuristics"

  1. Visibility of system status
    • Systemet skal alltid vise brukeren hva som foregår i maskinen
  2. Match between system and the real world
    • Snakk brukerens språk. Begreper, ord og fremstillingsmåte som brukeren forstår
  3. User control and freedom
    • La brukeren ha kontroll, implementer "angre" på alle nivåer
  4. Consistency and standards
    • Konsistens i grensesnittet, følg retningslinjer for plattformen du bruker
  5. Error prevention
    • Lag systemet slik at minst mulig feil forekommer (fleksibilitet)
  6. Recognition rather than recall
    • Brukeren skal ikke behøve å huske informasjon mellom dialoger. Instruksjoner skal være synlige når de trengs
  7. Flexibility and efficiency of use
    • Gi avanserte brukere snarveier ol.
  8. Aesthetic and minimalist design
    • Fjern alt som ikke har en hensikt
  9. Help users recognize, diagnose, and recover from errors
    • Hjelp brukeren dersom det oppstår feil
  10. Help and documentation
    • Lag et godt hjelpesystem

Don Norman - "The Design of Everyday Things"

Don Normans designprinsipper fungerer som tommelfingerregler eller en sjekklistefor å bidra til økt brukskvalitet i et produkt som utvikles. Fordelen ved å bruke designprinsippene ligger i at de kan bidra til å avdekke utfordringer med hensyn til et produkts brukskvalitet på en enkel, effektiv og billig måte. Ved å benytte seg av prinsippene kan man potensielt redusere antall iterasjoner i en brukersentrert design prosess, og dermed redusere kostnader, siden utfordringer kan avdekkes før en brukbarhetstest. Det er likevel begrensninger tilknyttet bruk av designprinsippene. De vil f.eks. være for generelle til å avdekke alle slags brukbarhetsutfordringer tilknyttet et produkt. Selv om en benytter seg av prinsippene må en derfor likevel gjennomføre en brukbarhetstest.

Affordance Hvilken handling inviterer produktet til å gjøre? Knapp - trykk meg
Constraints Begrensninger leder brukeren til å gjøre den "rette" handlingen. Knapp - grået ut
Feedback En handling skal resultere i en tilbakemelding eller konsekvens. Knapp - nytt vindu
Mapping Er det sammenheng mellom handlingen og resultatet? Knapp (pil opp) - volum opp
Visibility Brukeren må ha oversikt over produktets tilstand og mulige handlinger. Progresjonsbar, cancel-knapp
Consistency Like oppgaver har like måter å utføres på. Designet bygger på regler. "Klikk-og-dra" for å markere komponenter

High level goals for data display

Smith and Mosier (1986):

Consistency of data display Standardiser bruk av elementer gjennom applikasjon slik at du får konsistens.
Efficient information assimilation by the user Formatet på informasjonen bør være kjent for brukeren og være i sammenheng med dataene som skal vises. Eks. vis liste som en liste, og ha punkter/tallene på venstreside og ikke på høyreisde. Med andre ord: Ikke vær dust.
Minimal memory load on the user Brukeren skal ikke behøve å huske ting fra en visning til den neste.
Compatibility of data display with data entry Formatet på vist informasjon skal være direkte lenket til formatet på input-fields. Eks. bruk input-fields som oppdaterer andre sider direkte (live preview f.eks.)
Flexibility for user control of data display Brukere burde kunne få informasjonen vist på en måte som passer med oppgaven de skal gjøre.

Shneiderman's Eight Golden Rules of interface design

  1. Streb etter konsistente sekvenser og design
  2. Jobb for universal brukbarhet
  3. Det bør være feedback fra systemet uansett hva brukeren gjør
  4. Sekvenser eller grupper med handlinger bør ha en tydelig slutt. Eks. handling på nettet har en tydelig slutt med "bekreftelsessiden."
  5. Forhindre feil. Brukeren burde ikke kunne gjøre feil, rett og slett.
  6. Gjør det enkelt å rulle tilbake (angre) handlinger
  7. Støtt et variert utvalg kontroller. Brukere med lite kunnskap skal kunne bruke applikasjonen, men erfarne brukere bør få hurtigtaster og andre verktøy som gjør at de kan jobbe fortere.
  8. Unngå at brukeren må huske informasjon selv.

Gestaltprinsippene

Gestaltprinsippene beskriver hvordan folk organiserer visuelle elementer i grupper, og man bør ta hensyn til disse når man vurderer brukervennligheten til en nettside eller en applikasjon. De består av disse underelementene:

Likhet Når objekter ligner på hverandre (i form og/eller farge), ser man dem ofte som ett objekt.
Kontinuasjon En linje som har en bestemt retning oppfattes som om den fortsetter i samme retning.
Helhet Dersom et objekt er uferdig, vil hjernen observere hele objektet ved å fylle inn den manglende informasjonen.
Nærhet Når objekter er plassert nærme hverandre, blir de ofte sett på som en gruppe.
Forgrunn og bakgrunn Øyet skiller et objekt (forgrunn) fra det som ligger rundt objektet (bakgrunn).

Konseptuell modell

En konseptuell modell besvarer spørsmålet: Hvordan er systemet ment å se ut ifra brukeren? Det er den mentale modellen vi ønsker at brukeren skal ha i hodet sitt av virkemåten og strukturen til produktet. Den konseptuelle modellen spesifiserer hvilke designmetaforer, konsepter, relasjoner og mapping som blir benyttet. Dette er viktig å tenkte på fordi produktet er rettet mot brukeren, og vi må tenke på hvordan brukeren oppfatter produktet.

Man tar utgangspunkt i brukerens perspektiv, og benytter to undermodeller: funksjonelle modeller (Hvordan gjør jeg .. ?) og systemmodeller (Hvorfor virker det slik?). Scenarier synliggjør konsekvenser av valg m.h.t. konseptuell modell.

Mental modell er en modell den individuelle brukeren danner seg om systemet og hvordan det fungerer. Den "riktige" mentale modellen er den konseptuelle modellen.

Metaforer

Ifm. designet kan du ta i bruk metaforer for at brukeren skal kunne relatere seg til, eks. metaforen skrivebord eller søppelbøtte. Velg metaforer som samsvarer med brukerens konseptuelle oppgaver, og som representerer systemets virkemåte. Metaforer kan være en effektiv måte å kommunisere den konseptuelle modellen til brukeren.

Brukersentrert design

Brukersentrert design er en metode for å designe produkter med god brukskvalitet. Illustrasjon av brukersentrert design

Fase 1: Forstå brukskontekst

Identifiser hvem som hovedsaklig kommer til å bruke produktet, hvorfor de vil bruke produktet, hva de krever av produktet og i hvilke sammenhenger de vil benytte seg av produktet.

Teknikker for å forstå brukskontekst

  • Feltstudier
  • Intervjuer
  • Gruppeintervju/fokusgrupper
  • Automatisk logging av bruksmønstre
  • Rollespill
  • Literaturstudie

Teknikker for å formidle brukskontekst

  • Personas basert på observasjon og intervju
  • Scenarier av dagens situasjon basert på observasjon
  • Loggdata-analyser

Fase 2: Spesifisere brukerkrav

Når vi vet hva og under hvilken kontekst produktet skal brukes så kan vi spesifisere krav til produktet.

Teknikker for å spesifisere krav

  • Intervju med brukere og andre interessenter.
  • Fokusgrupper.
  • Rollespill.

Teknikker for å formidle krav

  • Kravlister (user requirements specification)
  • Overordnede ikke-funksjonelle krav (bl.a. brukervennlighet)
  • Scenarier og personas som viser tenkt
    system i bruk (use cases)

Fase 3: Design av løsninger

Når vi vet akkurat hva vi skal lage kan vi avhengig av hvor langt vi er kommet i designprosessen begynne å produsere et produkt.

Teknikker for å utvikle designløsninger:

  • Prototyping:
  • Ikke-funksjonelle (papirprototyper)
  • Funksjonelle (kjørende prototyper)
  • Scenarier m/personas for løsning i bruk.
  • Designretningslinjer (Norman, Nielsen, etc)

Teknikker for å formidle designløsninger:

  • Utprøving/Demo av selve prototypene
  • Vise scenarier m/personas for tenkt system i bruk

Fase 4: Evaluere design opp mot brukerkrav

Etter å ha utviklet en designløsning må man få brukerenes tilbakemelding av produktet.

Teknikker for å evaluere designløsninger:

  • Brukbarhetstesting i lab
  • Fokusgrupper for feedback på løsning
  • Felt-tester og logging av bruk
  • Skjema (SUS)

Teknikker for å formidle resultat fra evaluering:

  • Testrapport fra brukbarhetstest (summativ eller formativ)
  • Oppsummering av feedback fra fokusgruppe
  • Analyser av felt-tester og loggdata

Det som er viktig å legge merke til er at denne prosessen er iterativ og kan (og bør) utføres mange ganger i løpet av en designprosess. Det er ikke nødvendig å starte på fase 1 etter man har evaluert designet opp i mot brukerkravene, men man tar en vurdering på hvilket steg i prosessen man burde hoppe til for å kunne forbedre produktet.

Personas

For å vurdere brukskvaliteten til et produkt under utvikling, kan man lage brukerkarakterer innen forskjellige målgrupper. Disse kan lages med utgangspunkt i intervjuer med kunden. Man gir personaeneen historie og en kontekst, og bruker disse personene, og altså ikke brukere generelt, under utviklingen. Man tenker altså gjennom hvorvidt et av personaene vil forstå den aktuelle dialogen eller menyen, eller i det hele tatt ville brukt funksjonen(e).

Generell struktur - Navn, alder, jobb, sivilstatus, boform - Litt om livet: interesser, personlighet og kjerneverdier.

Eksempel: Eksempel på persona

Scenarioer og use case

Scenario Et scenario er en beskrivelse av et forutsett bruksmønster. Når man skal designe et nytt brukergrensesnitt eller polere et gammelt kan det være gunstig å bruke scenarioer for å kartlegge bruksmønster.
Use case Viser forhold mellom aktører og oppgaver/funksjonalitet for å oppnå et mål. Eksempelvis kan det demonstrere hvilke oppgaver/funksjoner som ligger mellom brukeren og systemet for å legge til en avtale i en kalender. Use case er gjerne en generalisering på bakgrunn av et scenario. Use case modelleres gjerne i et use case diagram.

Når du lager scenario, tenk på det følgende:

  • Lag så realistiske og komplette scenarioer som mulig. Bruk gjerne case studier, oppgaveanalyser eller faktiske observasjoner for å få scenarioet så realistisk som mulig.
  • Lag scenarioet slik at rekkefølgen på oppgaven tilsvarer det den ville gjort i virkeligheten.
  • Match scenarioet til brukerne: Enkle scenarier til noviser, mer komplekse for eksperter.
  • Unngå jargon
  • Unngå å gi "hint" til oppgavens løsning, gjennom måten man presenterer oppgaven på. Unngå å bruke ord som tilsvarer navnet på den funksjonen du vil at de skal bruke
  • Presenter oppgaven i målrettet form med et enkelt språk (presenter målet med oppgaven, ikke enkeltstegene)

Ulemper med å bruke scenarioer og/eller use cases kan være:

  • At det kan være vanskelig for designere og utviklere å forsøke å identifisere brukerens bruk
  • Det kan ta lang tid
  • Uforutsette hendelser blir gjerne glemt (de er jo uforutsette) og det kan føre til svakheter i systemet
  • Det kan føre til at man må ha flere prototyper av systemet.
  • Det kan være vanskelig å beskrive casen på en god måte, og informasjon kan på den måten gå tapt . Det kan være vanskelig å generalisere fra scenarioer, og man får dermed abstrakte use cases
  • Å ha kontroll på alle scenarioer kan være utfordrende.

Prototyper

Eksemplifiserer systemet gjennom en faktisk håndfast modell, eks. tegnet brukergrensesnitt på papir.

Ulike prototyper

Horisontal prototype Viser totalsystemet uten særlig mye interaktivitet eller funksjonalitet
Vertikal prototype Gå i dybden på en detalj, dvs. implementere nok interaktivitet og funksjonalitet til å kunne teste dette.
Wizard-Of-Oz-modell Utseendemodell animert med mennesker og tilgjengelig teknologi bak kulissene. Det skal være en realistisk gjengivelse hvis alt fungerer. Kan være kostbart.
Low-fi prototype Enkel prototype uten mye detalj, hverken grafikk eller interaksjon. Brukes gjerne tidlig i prosjekter. Enkle å lage.
High-fi protoytpe Kompleks prototype. Koster mer. Brukes senere i prosjektet. Ligner på det ferdige produktet.
Interaktiv prototype Er gjerne en veritikal prototype, eller kombinasjon. Er en quick and dirty implementajson av interaktivitet vha. egnet verktøy. Trenger ikke leve eget liv. Brukes til å teste designidéer.
Papirprototype Tegnet prototype. Raskt å lage. Design av grenesnittet slik brukeren opplever det. Ikke riktig responstid, mangler lyder og animasjoner. Krever god forestillingsevne hos brukeren.

Brukbarhetstester

Å teste brukbarheten til et system.

Formativ Evaluering med den hensikt å gi tilbakemelding for å forbedre produktet. Her er det fokus på hvilke feil brukere oppdager, og hvordan dette kan meldes tilbake til utviklerne.
Summativ Evaluering med hensikt å måle eller godkjenne brukskvaliteten til et produkt. Fokus på målbare kriterier som oppgavegjennomføring, feilrate og subjektiv tilfredstillelse.

Arbeidssteg i brukbarhetstesting:

  1. Utvikling av målsettinger og hypoteser for testen og utvikling av testplan (hvor, når osv.)
    • Hvem er kunde? Hva er hensikten med testen? Hva skal resultater brukes til? Hvilke ressurser trengs? Når skal den gjennomføres og hvem er ansvarlig?
  2. Skaffe brukere gjennom tilfeldig eller stratifisert utvalg
    • Lage brukerkarakteristikker.
    • Bør ha med: alder, kjønn, holdninger til denne typen produkt, læringsstil, holdning til teknologi, utdanningshistorie, erfaring med IKT, produkterfaring, jobbhistorie.
      • Dette brukes til å kartlegge hvilke brukere som ikke forstår ol.
    • Antallet brukere avhenger av ressurser, tilgjengelighet, varighet av testen, hvor høy grad av objektivitet som er nødvendig, kompleksitet i brukergrensesnitt.
      • 5-8 brukere for evalutiv, 8-10 for summativ. Gitt ressurser kan man selvsagt ha mer i begge tilfeller.
  3. Forberede materiale og kontekst
    • Forbered testen i detalj. Hva skal testes? Kontekst og omgivelser? Hvilke oppgaver skal løses? Utvikle et scenario, se egen seksjon.
  4. Velg forsøksleder
    • Hvem bør være forsøksleder? Noen med høy objektivitet, god kjennskap til produktet og som er profesjonelle.
  5. Pilot-test
    • Gir anledning for at teamet kan prøve seg. Oppdager svakheter ved metodikk og test-design.
  6. Utføre testen
    • 10 punkter, se under.
  7. Omforming av data til funn og anbefalinger
    • Identifiser feilhandlinger og problemer. Forsøk å komme til bunns i hva problemene skyldes. Prioriter funnene. Utvikle løsningsforslag. Indiker hvor man trenger ytterlige forskning. Produser rapport.

10 punkter for gjennomføring av brukbarhetstest

Dette er punkter testleder går gjennom med bruker.

  1. Introduser deg selv
    • Hvem du er, hvem folka i teamet er. Håndhils. Oppnå trygghet.
  2. Beskriv hensikten med testen
    • "Vi trenger hjelp med å teste et produkt -tester produktet, ikke deg. Vil finne ut hvor brukbart produktet er."
    • Hensikten er en forståelse for våre forventinger og behov.
  3. Fortell deltakerne at de kan avbryte når de vil
    • Hensikt: Trygghet tillit og følelse av kontroll
  4. Beskriv utstyret i rommet og begrensingene til prototypen
    • Fokus på hva testen skal handle om.
  5. Lær bort hvordan man tenker høyt
    • Vis selv. Hensikt - få innsikt i brukerens strategier og mentale modeller
  6. Forklar at du ikke kan tilby hjelp under testen
    • Blir anledning til å spørre og diskutere etter testen. Hvis de lurer på noe kan de gjerne si det høyt, da blir det lettere å huske i etterkant.
    • Forklar hvordan prototypen avviker fra virkeligheten.
  7. Beskriv oppgaven og produktet
    • Beskriv oppgavene brukerene skal utføre. Legg frem summarisk oppgaveliste.
    • Beskriv produktet og systemet. Ikke avslør funksjonalitet eller operative begrep som du ønsker feedback på.
  8. Spør om det er noe de lurer på og kjør testen
    • Lar brukeren komme til ordet før testens start.
    • Reflekter brukerens spørsmål tilbake til dem.
    • Ikke grip inn når ting går galt.
    • Ta detaljerte notater. Mer om testens gjennomføring under.
  9. Avslutt testen med å la brukeren uttale seg før du samler eventuelle løse tråder
    • Avslutt testen når alle oppgaver er gjort eller tiden er oppbrukt. Besvar brukerens spørsmål.
    • Diskuter ting dere fant interessant underveis.
    • Be om en subjektiv vurdering og eventuelle forslag til redesign.
  10. Bruk resultatene
    • Analyser sammenbrudd.
    • List opp og prioriter problemer.
    • Finn årsaker til de viktigste problemene og let etter alternative designløsninger.
    • Husk at hensikten med testen er input til redesign.
    • Hensikten med prototypen er å ha materiale å teste.
    • Tester der resultatene ikke brukes er bortkastet tid, og protottyper som aldri testes er bortkastet tid

Ting å huske på under testen:

  • Ikke korriger problemer der og da.
  • Aldri hjelp brukeren, med mindre det er siste utvei, eks. hvis vedkommende er veldig lost, svært forvirret, oppgaven gjør brukeren ukomfortabel, brukeren er så frustrert at det er like før han/hun gir opp, missing link i produktet, bugs eller krasj i systemet.
  • Når du hjelper brukeren skal du ikke skylde på vedkommende. Hjelp vedkommende gradvis. Hjelpen kan påvirke det som skjer senere, så vær forsikig.
  • Gi brukeren en tidlig følelse av suksess (lette oppgaver)
  • Presenter en oppgave av gangen (reduserer mental belastning)
  • Hold en avslappet atmosfære i testrommet (server kaffe og ta pauser)
  • Unngå forstyrrelser; lukk døren og sett opp lapp. Slå av telefoner
  • Aldri hint til brukeren om at hun gjør feil eller jobber sakte
  • Minimer antall observatører i rommet (sett opp monitor i rommet ved siden av)
  • Ikke la overordnede observere brukerne
  • Hvis forsøkslederen får en følelse av at testsituasjonen er belastende for brukeren: Avslutt forsøket
  • Observer testen upartisk, ikke la brukeren få en følelse av dine preferanser.
  • Vær oppmerksom på hvordan du sier ting og ditt eget kroppsspråk. Det skal svært lite til før brukerne aner hva du mener
  • Behandle hver enkelt bruker som et individ (ta pauser mellom brukerne)
  • Ikke redd brukerne når de sliter med et problem
  • Vær sikker på at brukerene er ferdig med oppgaven før du går videre (brukeren er ofte veldig usikker, selv om hun har utført den riktige responsen)
  • Interager med brukeren underveis for å sikre verbalisering

Generelt sett: Hold deg i bakgrunnen, ha en passiv holdning, hjelp brukeren til å formidle det han eller hun tenker på.

Debriefing

  • La først brukeren uttrykke seg
  • Start diskusjonen på et høyt nivå, og jobb dere nedover.
  • Trekk frem punkter du har notert
  • Fokuser på å forstå problemene, ikke å løse de
  • Etter alle aspekter er diskutert, åpne for innspill fra de andre i forsøket
  • Åpne for at brukeren kan komme med ekstra innspill eller informasjon
  • Forhold deg upartisk. Bruker skal ikke behøve å forsvare sine handlinger.

System Usability Scale (SUS)

Kan la brukeren fylle ut spørreskjema. Flere standardiserte, bla. SUS (System Usability Scale) som gir et tall mellom 0 og 100 på opplevd brukervennlighet. Se figur.

SAS-skjema

Brukbarhetstest som tegneserie

CC BY-NC-SA 4.0 Eirik Vågeskar Brukbarhetstesttegneserie

Universell utforming

Funksjonshemming

Funksjonshemming oppstår når det ikke er samsvar mellom en persons funksjonsevner og kravene omgivelsene stiller.

7 prinsipper

  1. Like muligheter for bruk
  2. Fleksibel i bruk
  3. Enkel og intuitiv bruk
  4. Forståelig informasjon
  5. Toleranse for feil
  6. Lav fysisk anstrengelse
  7. Størrelse og plass for tilgang og bruk

Interaksjonsteknikker

  • Ikonbasert GUI: Man velger et verktøy som anvendes på objekter.
  • Kommandobasert (command language): En tekstlig dialog med kommandospråk. Best egnet for eksperter og fagpersoner, siden kommandoene må brukes jevnlig for å ikke glemmes.
  • Direkte manipulasjon (direct manipulation): Brukeren kan endre objektet direkte, noe som gir en økt brukerkontroll. Brukeren får gjerne en visuell representasjon av objektet. Endringer bør være reverserbare.
  • Form fill: Fyll ut et skjema som sendes over nett til en server. Resultat returneres som en ny figur med riktige farger.

Model-View-Controller (MVC)

Hendelsesdreven programmering

Ifm. implementasjon av brukergrensesnitt bruker man gjerne det som kalles "hendelsdreven programmering." Man lar metoder kalles ut fra hendelser som inntreffer. Applikasjonen sover inntil hendelser inntreffer. Man har to typer hendelser:

  • Leksikalse hendelser er de minste enhetene i en brukerinteraksjon, og er direkte knyttet til de fysiske input-enhetene til datamaskinen. Dette er det laveste nivået av hendelser vi har.
  • Syntaktiske hendelser er en sekvens av leksikalske hendelser i en bestemt kontekst.

Når man implementerer et hendelsdrevent design bruker man gjerne en observator-observert-teknikken. En callback er en metode som kalles når en hendelse inntreffer.

Så hvordan funker MVC?

MVC er en programvarearkitektur/teknikk for å skille data fra grensesnittelementer. Det kan sees på som en realisering av de to øverste lagene i en 3-lags-arkitektur bestående av grensesnitt, business logic og persistens. MVC stammer fra Smalltalkprosjektet, der man skilte mellom modellen, viewet og kontrolleren.

Model Et objekt for lagring av data. Representerer gjerne et objekt, og har dermed attributter kalt properties. Modellen må ha metoder for å lese og skrive attributtene, og kunne sende ut endringshendelser.
View View er en visning. Leser og visualiserer data.
Controller Logikk. Tolker input og endrer data.

Fordeler med MVC er at man enkelt kan bytte ut en del (eks. bytte ut et view, men beholde data), man kan ha flere view mot samme data og de koordineres automatisk. Ulempen er at det blir mer komplekst.

Model, View og Controller-objekter kobles under kjøring sammen slik at en modell kan ha flere View-Controller-par koblet til seg. Ved å automatisere oppdatering av alle views når modellen endres, innfører man en abstraksjon som gjør det lettere å legge til nye views. Oppdatering av views gjøres ved at modellen holder en liste med de View-Controllere som er koblet til den, og varsler disse ved endring.

Java Swing (deprecated)

JavaFX som gjelder

JavaFX har erstattet Swing fra og med vår 2015, se https://www.ntnu.no/wiki/display/tdt4100/JavaFX for mer info.

JavaFX og resten av den såkalte teknikkdelen er heller ikke med i pensum til eksamen, men brukes kun i øvingsopplegget, fra og med vår 2016.

En JavaFX spilleliste med det meste som er pensumrelevant finnes også på youtube.

Java Swing er et rammeverk for brukergrensesnitt i Java.

MVC i Swing

Vanligvis vil view og kontroller deles opp, men det er ikke vanlig i dette emnet for å holde eksempler og oppgaver litt enklere.

Eksamensrelevant pensum:

ActionListener Ideen om en callback for å håndtere hendelser.
Modeller i MVC Skiller data fra presentasjon. Kan lage sin egen modell ved å subklasse en default modell.
JList Listmodell og seleksjonsmodell. Må kunne lage en LineRenderer.
Bruk av JavaBeans sine mekanismer for å lage en egen modell. Riktig bruk av (bounded) properties og supportklassen.
Kunne lage et eget View til en egen beans-basert modell vha. JPanel. Riktig bruk av oppdateringer.
Modeller kan ha modeller Kunne lage en modell til en modell, og forstå hvorfor dette er nyttig.

PDF med Swing-pensumet

ActionListener

Metoder: public void actionPerformed(ActionEvent e) brukes når en action forekommer.

Objekter implementerer ActionListener-interfacet og mottar hendelser fra f.eks. en JButton.

Pensum:

  • Meldingen mottas av det JPanelet som kjører grensesnittet.
  • Indre klasser i JPanel.
  • Det opprettes en eksplisitt ekstern klasse.

JList

  • Viser liste av data-verdier i henhold til ListModel
  • Støtter seleksjon iht. ListSelectionModel (single, single-interval, multiple-interval)
  • Visning av enkeltverdi iht. ListCellRenderer

JList og ListModel

  • JList er et view mot en eksisterende modell.
  • ListModel er modell-grensesnittet.
  • int getSize()
  • Object getElementAt(int)
  • JList lytter etter endringer i modell-objektet
  • add/removeListDataListener(ListDataListener)
  • contentChanged(ListDataEvent)
  • ListDataEvent-hendelser er utgangspunktet for oppfriskning av skjermbildet

JList og ListCellRenderer

  • Omtrentlig sekvens av operasjoner
  • spør ListModel om størrelse getSize()
  • itererer over alle elementene
  • spør om verdi getElementAt(int)
  • ber renderer konfigurere og returnere komponent
  • spør om størrelsen og gir plass
  • ber komponenten tegne seg selv
  • posisjon og størrelse huskes slik at en vet hvilke linjer som er hvor
  • for hver linje som endres gjentas dette

Seleksjon

  • ListSelectionModel-klassen håndterer logikken
  • SINGLE_SELECTION
  • Valg av kun ett element
  • Valg av nytt element fjerner eksisterende valg
  • SINGLE_INTERVAL_SELECTION
  • Valg av flere etterfølgende elementer
  • Shift-klikk for å utvide seleksjonen i begge retninger
  • MULTIPLE_INTERVAL_SELECTION
  • Valg uten begrensninger på antall eller intervaller
  • Control-klikk toggler enkeltelementer
  • Shift-klikk utvider seleksjonen
  • Sentrale klasser
  • ListSelectionModel
  • ListSelectionListener
  • ListSelectionEvent
  • Sentrale metoder
  • JList.addListSelectionListener
  • ListSelectionListener.valueChanged

JavaBeans-baserte modeller

  • En JavaBean har visse egenskaper og følger visse navngivingskonvensjoner:
  • Alle JavaBeans har et sett properties av ulike kategorier.
  • Alle JavaBeans er kodet iht. visse konvensjoner:
  • Navngiving av metoder for å lese og skrive properties.
    • read-metode: public String getName()
    • write-metode: public void setName(String name)
  • generering av hendelser ved endringer av properties:
    • hendelsesklasse: PropertyChangeEvent
    • metoder for å registrere PropertyChangeListener-lystener:
    • add/removePropertyChangeListener

Typisk kallsekvens:

Ved start av programmet har man gjerne et hovedpanel (MainProgram etc.) som holder eventuell subviews. DHovedprogrammet lager en instans av modellen og gir den til alle views som er avhengig av modellen. Deretter:

  1. Komponenter legger seg til som lytter på modell
  2. Modellen legger lytteren inn i liste
  3. Komponenten (eller annet objekt) endrer på en property i modellen
  4. Modellen lager en endringshendelse og kaller endringsmetoden til alle lytterne.
  5. Lytterne reagerer på endringshendelsen. Lytterne får endringshendelsen uavhengig av hvilket objekt som endret propertyen.

Modeller kan ha modeller

  • Noen ganger ønsker man å ha en felles datamodell for Swing-komponenter som har forskjellige type modeller.
  • De kan ikke ha samme modell direkte.
  • For hver type komponent må det da lages en mellommodell som videreformidler meldinger ned til den egentlige modellen.
  • En slik mellommodell kalles ofte for en adapter eller wrapper.

Written by

Stian Jensen mariofrans Assios anna duvholt boyebn j4hr3n obratvedt hegebor siggen Gustav Dyngeseth sindrsb aggie Vages thormartin91 finninde Esso herleikh liangzh magnusnn Alex torestef nikzy
Last updated: Wed, 5 Jun 2019 19:41:32 +0200 .
  • Contact
  • Twitter
  • Statistics
  • Report a bug
  • Wikipendium cc-by-sa
Wikipendium is ad-free and costs nothing to use. Please help keep Wikipendium alive by donating today!