/[cvs]/Kamel/HCI_text.tex
ViewVC logotype

Contents of /Kamel/HCI_text.tex

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.12 - (show annotations)
Sun Mar 9 18:17:30 2003 UTC (21 years, 2 months ago) by jontas
Branch: MAIN
Changes since 1.11: +27 -10 lines
File MIME type: application/x-tex
df

1 \documentclass[12pt, a4paper]{article}
2 \usepackage[latin1]{inputenc}
3 \usepackage{setspace}
4
5 \begin{document}
6 \thispagestyle{empty}
7 \begin{centering}
8 \huge{HCI Text}\\
9 \huge{DVC002: Människa-datorinteraktion (MDI), 5p}\\
10 \huge{2003, period 1}\\\vspace{.3in}
11 \large{av}\\
12 \LARGE{Jonas Petersson \& Mathias Börjesson}\\\vspace{.4in}
13 \large{Institutionen för programvaruteknik och datavetenskap\\
14 Blekinge Tekniska Högskola\\\vspace{.03in}}
15 \texttt{e-mail:}\\
16 \emph{jopd01@student.bth.se}\\
17 \emph{tb00mbo@student.bth.se}\\
18 \end{centering}
19 \newpage
20 \tableofcontents
21 \newpage
22 \onehalfspacing
23 \section{Kurserfarenheter} %Är detta ett bra namn?
24
25 Detta kapitel kommer att ta delar av det vi har gått igenom
26 i kursen, samt försöka belysa vissa av dem.
27
28 \subsection{Användandet av en minsta gemensamma
29 utvecklingsmiljö}
30
31 Ett syfte med att introducera en minsta gemensamma
32 utvecklingsmiljö är att underlätta processen att
33 producera programvara, även om man inte sitter vid sin
34 egen dator, utan hos någon annan.
35
36 Nyttan med en minsta gemensamma utvecklingsmiljö i en miljö med flera utvecklare är att
37 det hämmar användandet av egna utvecklingsverktyg,
38 underlättar användandet av en annan dator, underlättar utbildning, samt
39 underlättar administrationen av systemet då alla datorer
40 har samma programvara installerad.
41 Dock så är ju en nackdel med att nyttja en gemensam
42 utvecklingsmiljö att då det kommer nya människor som
43 inte är vana vid denna miljö så måste de utbildas, men
44 genom att tänka sig för då man skapar en gemensam
45 utvecklingsmiljö så kan utbildningstiden minskas till
46 ett minimum, eller till och med undvikas.
47
48 Det som skall eftersträvas i en gemensam
49 utvecklingsmiljö är dels att få den lättförståelig
50 (eller självförklarande), men att den för detta inte på
51 något sätt skall vara på en nivå för nybörjare, utan ha
52 all den styrka som utvecklarna behöver då de utvecklar
53 programvara. Kan den gemensamma utvecklingsmiljön
54 introduceras som något som kan underlätta arbetet så
55 kommer användarna att med glädje byta, även om det kan
56 innebära vissa initiala problem.
57
58 \subsection{Användandet av script vid mjukvaruproduktion}
59
60 Detta kan lätt tyckas att detta inte har med MDI att
61 göra, men vi kommer att förklara detta lite senare.
62 Tanken med att använda diverse script är främst att
63 abstrahera krångliga kommandon (eller om man vill långa)
64 från användaren, och istället bara använda ett kort
65 kommando. Detta innebär att det blir enklare att hålla
66 ordning på det man utvecklar då det i scriptet går
67 snabbt att skriva ner de kommandon som ser till att
68 källfilerna ligger i en katalog, de kompilerade
69 programmet i en, och hjälp filerna i en tredje (om
70 programmeringsspråket stödjer detta (t.ex. Java API).\\
71
72 %Eller är det svaret vi skall skjuta in?
73 Men hur är detta något som är intressant ur en MDI
74 synpunkt?\\
75 Jo, tanken var ju att ta alla dom krångliga kommandona,
76 och helt enkelt byta ut mot ett kort script. Krasst sett
77 är detta grunden för MDI. Att ta något krångligt
78 kommando, och byta ut mot ett lättare.
79
80 \subsection{GUI design mönster}
81
82 GUI står för Graphical User Interface, eller grafiskt
83 användar gränsnitt på svenska. Ett GUI kan se ut på
84 ett (nästan) oändligt antal sätt, men alla dessa följer
85 ett eller flera mönster för hur man använder dessa. Då
86 dessa mönster upprepas så är det viktigt för oss som
87 utvecklare att vi känner till de mönster som finns, vad
88 de går ut på, samt vad som är viktigt att tänka på. En
89 anledning till att detta var viktigt att lära oss är
90 genom att vi lär oss detta kan vi spara tid när vi skall
91 utveckla en programvara som skall interagera med en
92 människa (vilket det stora flertalet program gör), genom
93 att vi inte ska behöva uppfinna hjulet igen.
94
95 Vi hade en laboration där vi skulle identifiera design
96 mönster i en färdig programvara från SUN Microsystems,
97 och efter detta även i en programvara vi själva har
98 gjort. Detta innebar att vi var tvungna att lära oss
99 känna igen de olika mönster som är vanligt förekommande,
100 och på detta sättet så kom vi även att fundera på när de
101 olika mönstren är praktiska, och när dom inte är det. Vi
102 har genom denna laboration kommit fram till att design
103 mönster är något viktigt i utveckling av programvara,
104 och är något vi kommer att ta med oss till framtiden.
105
106 \subsection{Prototyper och Mock-ups}
107
108 En mock-up är en form av prototyp. Den görs i ett
109 passande material, och beroende på vilken information
110 man har om den färdiga produkten så görs den med den
111 detaljnivå som är passande. Denna mock-up används sedan
112 för att testa om konceptet man har håller, och hur det
113 skall implementeras. En mock-up behöver inte vara för en
114 programvara, utan kan lika gärna vara för en fysisk
115 produkt, men i kursen har vi inriktat oss på programvara
116 då detta är det intressanta för oss. Då man skapat en
117 mock-up så tar man denna, och testar på en eller flera
118 tilltänkta användare, och lyssnar på deras åsikter om
119 den. När man har kommit förbi detta stadiet så kan man
120 bygga en lite mera avancerad prototyp för att vidare
121 utveckla produkten. En mock-up är vanligtvis (eller
122 i alla fall dom vi har gjort) ``dynamiskt statiska''
123 vilket kan låta som en motsägelse, men vad vi menar med
124 det är att den görs dynamisk är att det går att byta
125 detaljer i mock-upen för att symbolisera interaktion. En
126 annan fördel med en mock-up framför en fungerade
127 prototyp är att en mock-up är gjord av ett billigt
128 material, och går snabbt att göra och göra om då man inser att
129 lösningen man har inte håller, utan behöver göras om för
130 att passa användaren och hans behov.
131
132 Vi tror att vi kommer att använda någon form av
133 mock-uper efter denna kursen då en mock-up är ett snabbt
134 sätt att visa hur man menar att GUI't skall se ut, och
135 om man har ett förslag till ett GUI så är det enkelt att
136 hitta funktionalitet som man har missat, och det kan
137 även vara enklare att förklara vad man vill göra för en
138 kund som inte kunskaper inom programvaruutveckling vad
139 det är som man skall göra, och vad han får och inte får.
140 Han kan även ta mock-upen och visa för slutanvändarna,
141 och dessa kan också komma till tals om hur produkten
142 skall se ut, och dess funktionalitet.
143
144 \section {Designmönster}
145
146 När man designar GUI'n så är det nästan omöjligt att
147 inte använda något/några design mönster. Dom flesta sätt
148 att strukturera upp ett GUI följer de mönster som finns
149 definierade. Detta märkte vi av på första laborationen
150 när vi skulle identifiera mönster som vi hade använt i
151 ett program vi själva hade gjort långt innan vi hade
152 hört talas om MDI, och dess betydelse. En anledning till
153 att man använder design mönster är att om flera program
154 ser ut likadant, och uppför sig likadant så kommer
155 användaren att känna sig hemma i det, även om han aldrig
156 har sett programmet tidigare, eller ens ett program som
157 liknar detta (till funktionalitet sett).
158
159 \emph{``Ett väl-designat GUI låter användaren göra fel''}
160 (Grand, M. 1999)\\
161 Detta är viktigt därför att om det inte går att göra fel,
162 eller viktigare att återhämta sig från ett fel utan en
163 förlust, då kommer användaren att ta det lugnt och
164 försiktigt, men trots detta kommer användaren att göra
165 många fel (eller snarare så är det så det upplevs då alla fel gör
166 skada). Men om GUI't låter användaren återhämta sig om han
167 gör fel så kommer han att jobba i ett bättre tempo, och
168 göra färre fel. Något som är väldigt viktigt om GUI't
169 tillåter att man gör fel så måste det varna om det finns
170 aktioner som man kan göra som det inte går att återhämta
171 sig ifrån.
172
173 \subsection{Vikten av att känna igen sig i ett program}
174
175 En viktig sak med att få användaren att känna igen sig
176 är att detta ger en ``säkerhets känsla'' i programmet,
177 användaren känner att han vet (i viss mån) hur han skall
178 bära sig åt för att göra olika saker. Nästan alla
179 program där man kan spara sitt arbete, öppna en fil med
180 gammalt arbete osv har detta i en meny märk ``Arkiv'' på
181 svenska, kommandon som kopiera, klistra in, gör om osv.
182 ligger under en meny ``redigera''. Detta gör att en
183 användare kan känna igen sig även om han aldrig har
184 nyttjat programmet tidigare.
185
186 \section{Interaktions Design}
187
188 När man pratar om interaktions design så menar man att
189 man sätter användaren och hans behov i fokus, och att man
190 inte så mycket bryr sig om tekniken bakom.
191
192 Detta innebär dock att för att kunna designa något så
193 måste vi känna till målgruppen och dess behov. Att jobba med
194 interaktions design är väldigt snarlikt till att jobba med
195 en användarcentrerad lösning. Det går antingen att jobba
196 med interaktions design om man har en färdig målgrupp som
197 har ett behov av programvaran, eller att man tänker sig en
198 målgrupp, och skapar produkten därefter.
199
200 Om man har en färdig målgrupp som har behov av en produkt
201 så är det ``enkelt'' att skapa denna då man hela tiden kan
202 rådfråga målgruppen, skapa mock-uper, prototyper osv, och
203 få direkt feedback på det man har gjort. Det finns undantag
204 då man inte kan skapa mock-uper och det är när själva slut
205 produkten är hemligstämplad och det finns andra aktörer på
206 marknaden som jobbar med samma område. Att då låta vanliga
207 användare komma i kontakt med sin design innebär att hemlig
208 information kan spridas till konkurrenterna om de nu råkas
209 få tag på samma testpersoner.
210
211 En annan sak som är viktig, mycket viktig med Interaktions
212 design är att den sker iterativt.
213
214 \section{Konceptuella modeller}
215
216 \emph{``Det viktigaste är att designa användarens
217 konceptuella modell. Allt annat skall ses som
218 underordnat för att göra modellen klar, tydlig och
219 konkret. Detta är nästan tvärt emot hur den mesta
220 mjukvaran utvecklas.''}(Liddle, David. 1996)\\
221 Preece, Rogers and Sharp 2002 definierar en konceptuell
222 modell som \emph{``en beskrivning av det föreslagna
223 systemet i termer av integrerade idéer och koncept om
224 vad det skall göra, bete sig samt se ut som, som skall
225 förstås av användaren på rätt sätt''}\\
226
227 När man skapar en konceptuell modell så är det viktigt
228 att man funderar över hur den slutliga produkten skall
229 se ut, baserat på användarnas behov och krav. För att
230 försäkra sig om att användaren kommer att förstå
231 modellen så som den är tänkt är det viktigt att
232 genomföra noggranna och iterativa tester.
233
234 En viktig del av den konceptuella modellen är att
235 besluta vad användaren skall göra när han använder
236 produkten. Detta kan även kallas interaktions sätt
237 dvs hur en användare skall få utföra jobbet. När man
238 väljer interaktions sätt så får man även tänka över hur
239 man skall interagera med produkten (programvaran), skall
240 det vara med knappar, menyer, röstkommandon osv.
241
242 När man har kommit så här långt med sin modell så är det
243 dags att börja fundera över hur GUI't skall se ut, olika
244 mönster, dess fördelar och nackdelar osv. Ju fler man
245 provar med, och funderar över, ju större är chansen att
246 produkten blir bra, och det är viktigt att man jobbar
247 iterativt, och att man använder lite olika metoder, och
248 data (gärna även utvecklare om det går) i dom olika
249 iterationerna för att täcka in så mycket som möjligt.
250
251 Basen i att konstruera en bra konceptuell modell är
252 användaren, och det användaren skall kunna göra.
253
254 Det finns ett otal olika konceptuella modeller, men vi
255 kommer bara att ta upp dom två vanligaste.
256
257 \subsection{Konceptuella modeller baserat på
258 aktiviteter}
259
260 De fyra vanligaste aktiviteterna användarna kommer att
261 göra (sett ur MDI synpunkt) är:
262 \begin{itemize}
263 \item Instruera
264 \item Konversera
265 \item Manipulera och navigera
266 \item Utforska och surfa %är surfa en bra översättning av browsing?
267 \end{itemize}
268 När man instruerar så förklarar man vad man vill att
269 systemet skall göra, man ger order. Detta kan ske t.ex.
270 med knappar, menyer osv.\\
271 När man konverserar så gör man det som man gör med en
272 människa, antingen talar man till systemet med rösten,
273 eller så skriver man, men man håller sig till ett
274 normalt språk.\\
275 När man manipulerar och navigerar så har man en
276 representation (av något) som man kan manipulera för att
277 uppnå önskat resultat. Det är en klar fördel om
278 representationen delar vissa egenskaper som användaren
279 kan förstå av den fysiska världen.\\ %analoga lät fel, men fysiska låter heller inte riktigt bra... Jag höll på att skriv riktiga, men kom att tänka på vad det skulle innebära
280 När man utforskar och surfar så är systemet utformat på
281 ett sådant vis att användaren kan få information utan
282 att behöva formulera frågor.
283
284 Det är viktigt att förstå att man måste inte välja en av
285 dessa, utan man kan välja flera om man känner för det,
286 ofta kan man få ett resultat som blir närmare det
287 användaren efterfrågar om man väljer att blanda flera
288 aktiviteter.
289 \subsubsection{Instruera}
290
291 Detta är en relativt enkel modell att bygga upp, även om
292 det kan vara krångligt att bygga upp den på ett bra
293 sätt. Antingen kan man använda knappar, menyer osv för
294 att ge instruktioner, eller så kan man använda
295 textsträngar. En klar nackdel med denna modellen är att
296 om kommandona är långa (eller krångliga) kommer
297 användaren att glömma bort det, och behöva extra hjälp
298 när han skall nyttja denna. Detta är ett vanligt
299 mönster, och återfinns i flera produkter på ett sätt
300 eller ett annat.
301
302 \subsubsection{Konversera}
303
304 Denna metoden är vanligast om det handlar om någon form
305 av expert system, eller sökfunktioner. En klar fördel
306 med att nyttja detta mönster är att även en människa med
307 små kunskaper inom både data, och ämnet som experten kan
308 kan ställa frågor, och få hjälp. En nackdel med detta
309 mönstret är att om användaren ställer frågor på ett sätt
310 som man inte har tänkt sig, eller som inte finns med i
311 informations basen så kan svaren till användaren bli
312 helt uppåt väggarna om man inte är noga med hur man
313 behandlar indatan.
314
315 \subsubsection{Manipulera och navigera}
316
317 a
318
319 \subsubsection{Utforska och surfa}
320
321 a
322
323 \subsection{Konceptuella modeller baserat på objekt}
324
325 När man utgår från ett objekt så tar man ett objekt som
326 användaren kan relatera till, en bok, kaffe bryggare
327 eller dyl. Och sedan så gör man sin modell så att den
328 liknar det fysiska objektet. Det bör även gå att
329 manipulera objektet på ett vis som liknar det fysiska
330 objektet. Men man bör även tänka på vilka funktioner en
331 användare kan tänkas önska utöver dom som finns i det
332 verkliga objektet. Om man gör en ordebehandlare kan det
333 vara väldigt trevligt om denna klarar av att t.ex.
334 kompilera texten, rättstavning osv.
335
336 \subsection{Interface metaforer}
337
338 Denna metod går ut på att man tar och försöker efterlikna
339 en välkänd metod, eller något som användaren känner igen
340 för att manipulera systemet. Det handlar oftast om att man
341 försöker abstrahera bort hur datorn gör, och istället
342 likna det vi något som man känner igen. Dock så är boken
343 vi har väldigt kritisk mot denna metoden att utveckla
344 produkter, så vi tänker inte gå in på denna så djupt. Dock så
345 tror vi att det borde vara en bra metod att iallafall
346 fundera på, men man måste nog vara försiktig så att man
347 inte gör ``hål'' i designen då man använder metaforer.
348
349 \section{Värdet av MDI}
350
351 Hela ämnet kanske kan verka abstrakt, och som något som bara tar
352 upp tid att hålla på med, men faktum är att den tid (och de pengar)
353 man lägger ner på MDI tjänar man igen ganska så fort.
354 Dessutom så är det med hjälp av en mock-up lätt att tidigt
355 fånga design fel, eller till och med logik fel, och ju
356 tidigare man kan hitta fel, desto billigare blir dom att
357 avhjälpa.
358
359 En annan viktig sak att tänka på med MDI är att man kan på
360 ett sätt använda det som en reklam tavla för sitt företag,
361 om man gör en extraordinär lösning på något så kommer
362 detta att sprida sig, men det kommer ännu mer att sprida
363 sig om man gör dåliga MDI lösningar. Ett företag som
364 tidigare har köpt en produkt som kanske är bra, bara det
365 att de inte kan nyttja den kommer inte att köpa en produkt
366 till av samma företag som den förra.
367
368 Även om själva funtionaliteten i applikationen (eller vad
369 det nu är som skapats) kanske är helt banbrytande och
370 ruskigt innovativ så kanske inte produkten kan säljas
371 ändå, på grund av att användarna helt enkelt inte klarar
372 av att använda den för att gränssnittet är alldeles för
373 klumpigt, långsamt och förvirrande. \emph{``Jag fattar inte varför man år 2000 ska behöva
374 vänta ibland en sekund innan telefonen fattar att man
375 vill hoppa ett steg till vänster i menyerna.''}(Mats
376 Ekstrand, 2000-09-20 i en recension av Ericssons R310)
377 Man brukar säga att utseendet inte spelar någon roll,
378 men när det gäller MDI så spelar det stor roll. Det första
379 man möts av när man får/köper en produkt är gränssnittet,
380 må det så vara en knappsats, touchscreen eller ett flashigt GUI.
381
382 \end{document}

root@recompile.se
ViewVC Help
Powered by ViewVC 1.1.26