Gestalt-lagarna hjälper dig designa bra användargränssnitt

Gestaltlagarna formulerades första gången 1923 och handlar om hur vi människor tar till oss och tolkar visuell information. Tre exempel på gestaltlagar är likhetslagen, närhetslagen och slutenhetslagen. Likhetslagen kan enkelt förklaras som att våra hjärnor automatiskt antar att liknande symboler hör ihop och därför betraktar dessa som en grupp.  likhetslagen

Likhetslagen säger t.ex. att ovanstående symboler upplevs som lodräta kolumner.

Närhetslagen säger att symboler som är placerade intill varandra upplevs som att de hör ihop.

närhetslagen

Enligt närhetslagen bör därför ovanstående symboler upplevs som två grupper med 9 symboler i, där varje grupp är indelad i tre ”undergrupper” med tre symboler i varje. Närhetslagen kan alltså uppväga/motverka likhetslagen.

Slutenhetslagen säger att hjärnen automatiskt fyller i luckor i en bild för att bilda en (bekant) helhet.

kanizsa_square

Ovanstående bild brukar kallas för Kanizsas kvadrat. Slutenhetslagen stipulerar att symbolerna upplevs som en kvadrat, trots att ingen kvadrat är ritad.

Så, varför tar jag upp dessa Gestaltlagar. Jo, för att de kan vara till stor hjälp när det gäller att utforma ett lättanvänt användargränssnitt. Hur man grupperar, placerar och utformar symboler har stor påverkan på hur man tolkar dessa. Gestaltlagarna är därför bra att känna till för alla som arbetar med gränssnittsdesign.

Den intresserade kan läsa lite mer om gestaltlagarna i denna slideshare-presentation.

 

Testa dina grundläggande UML-kunskaper

UML är ett otroligt kraftfullt modelleringsspråk som innehåller en hel massa olika symboler med ett stort regelverk för hur dessa kan relateras till varandra. Allt detta är beskrivet i UML-specifikationen. För att göra UML lite mer lättillgängligt så har man grupperat olika symboler som ofta används tillsammans till olika diagramtyper.

Fördelen med detta är att man inte behöver lära sig alla UML-symbolerna för att kunna använda språket på ett bra sätt. Nackdelen är att det finns en risk att man går ”vilse” mellan diagramtyperna och inte förstår när man kan/bör använda vilket diagram.

Varje grundläggande UML-kurs bör därför fokusera på att förklara när vilket diagram bör/kan användas för deltagarna. Ett exempel på en sådan kurs är Astrakans kurs ”kommunicera med UML”. Jag har tagit fram ett litet test du kan använda för se om du har koll på detta eller inte…

Testa dina UML-kunskaper (Test your knowledge of UML)

Detta flervalsprov testar grundläggande UML-kunskaper.

UML definierar ett antal olika diagramtyper och många av dessa kan användas för att beskriva ungefär samma saker. Det är upp till användaren att välja vilken diagramtyp han eller hon vill använda. Varje diagramtyp är dock särskilt framtagen för att vara extra bra på att beskriva en ”sak”. Detta prov testar din kännedom om detta, dvs vad är varje diagram ”extra bra” på att beskriva. Känner du till det underlättar det dina egna val.

The quiz tests basic UML-knowledge.

Programmering från Scratch

Nu har till och med Computer Sweden börjat skriva om Scratch:

Så nu är det på tiden att göra något åt saken. De senaste 6 månaderna har jag hört bra saker om ”programmeringsspråket” från alla möjliga håll och kanter så nästa gång äldsta barnen går till sin datakurs ska jag prata med läraren om de inte kan höja nivån ett snäpp.

Idag arbetar de mest med Reading Eggs på sina datakurser. Det vore ju bra om de också kunde börja lära sig programmera så att man kan få lite avlastning hemma, de är ju trots allt nästan 5 respektive 6 år gamla.

Scratch är ett programspråk som är framtaget av MIT för att barn ska utvecklas genom att lära sig ”programmering”. Att lära sig programmera tror jag för med sig en massa bra saker för framtiden. För att citera Lifelong Kindergarten Group, MIT Media Laboratory.

Critical Thinking and Systems Thinking

”As they learn to program in Scratch, young people become engaged in critical reasoning and systems thinking. In order to build projects, students need to coordinate the timing and interactions between multiple “sprites” (programmable moving objects). The ability to program interactive input provides students direct experience with sensing, feedback, and other fundamental systems concepts.”

 

Problem Identification, Formulation & Solution

”Scratch supports problem finding and solving in a meaningful design context. Creating a Scratch project requires thinking of an idea, then figuring out how to break the problem into steps and implement them using Scratch programming blocks. Scratch is designed to be “tinkerable”: students can dynamically change pieces of code and immediately see the results (e.g., doubling a number to see how it changes a graphic effect). Throughout the design process, students engage in experimenting and iterative problem-solving.”

 

Creativity and Intellectual Curiosity

”Scratch encourages creative thinking, an increasingly important skill in today’s rapidly changing world. Scratch involves young people in seeking innovative solutions to unexpected problems—not just learning how to solve a predefined problem, but being prepared to come up with new solutions as new challenges arise.”

Scratch’s hemsida hittar du på http://scratch.mit.edu/ och en utbildningsplan med lite stödresurser finns på http://learnscratch.org/. Bara att skriva ut och ta med till läraren…

KanBan-flöde i EA

I enterprise architect finns det stöd för att definiera ett kravs tillstånd. De fördefinierade tillstånden är; approved, implemented, mandatory, proposed och validated. Om man inte tycker dessa passar det egna arbetssättet så kan man enkelt ändra dessa till något eget.

Välj först settings => project types => general types

Sedan kan du lägga till, ta bort eller ändra de befintliga tillstånden efter behag. Det går också att tilldela respektive tillstånd en färg som man kan visa i diagrammet genom att gå in på: Tools => Options => object => show status colors in diagram.

Vill man arbeta mer kanban-orienterad skulle man till exempel kunna använda sig av tillstånden;

  1. Ej klar för utveckling
  2. Klar för utveckling
  3. Klar för test
  4. Klar för driftsättning
  5. Driftsatt

Kanban-stöd i TFS 2010

Microsoft har tagit fram ett stöd för att arbeta med KanBan i Team Foundation Server. Se mer på http://vsarkanbanguide.codeplex.com/.

David Andersson har sagt följande om denna:

While this template doesn’t really deliver the spirit of kaizen nor easily enable the a sequence of changes and improvements, it is a big start. It will go a long way to encouraging adoption of kanban systems and a service-oriented, service-delivery model for software development. Kanban systems do help control variation in flow (mura) and eliminate overburdening (muri, if WIP limits are set even vaguely correctly). So I really want to encourage Microsoft and encourage .Net users and MSDN members to consider adopting it. It’s a step in the right direction and as a community I’d like us to get behind it and encourage it.

Gör vad du vill förutom att arbeta…

Idag var vår första ”gör vad du vill förutom att arbeta -dag ”.  Konceptet var enkelt, alla skulle samlas på kontoret och vara där hela dagen, ingen ”fick” arbeta med sina uppdrag. Istället skulle man göra något roligt,  något som man velat göra men inte hunnit med under sin ordinarie arbetstid. Var och en valde själv.

Otroligt kul! Fullt med folk på kontoret, och jag tror aldrig det varit så tyst. Alla var så uppe i det man gjorde att man glömde bort tid och rum. Ämnena varierade, några provade att utveckla mobilappar, några lärde sig mer om olika verktyg som clearcase och visual studios debugger. Någon tittade på responsive web design, någon testade att utveckla på dokumentdatabaser. Någon gjorde den där hårddisk back-upen som man inte hunnit med tidigare, men alltid haft dåligt samvete för. Några kunde inte riktigt hålla sig, utan smygjobbade åt kunden…

Själv tittade jag på Enterprise architect och hur man kan skapa egna UML-profiler och mallpaket. Mer om det senare.

Vi avslutade dagen med middag på Allmänna Galleriet.

Produktsumma i Google Spreadsheets

Produktsumma är en fantastiskt användbar funktion i Excel, givetvis finns det en motsvarighet i Google Spreadsheet. Den heter Sumproduct och kan användas för att summera värden i en kolumn (C2:C4 i exemplet nedan) med multipla villkor som följer:

=SUMPRODUCT((INDEX(A2:A4)=numeriskt urvalskriterium)*(INDEX(B2:B4)=”textuellt urvalskriterium”);C2:C4)

Urvalskriterierna utvärderas till 1 om de är uppfyllda och till 0 om de inte är uppfyllda. Det innebär att man genom att multiplicera dessa med varandra får man motsvarande ett ”OCH-villkor”, dvs samtliga villkor måste vara uppfyllda för att värdet ska tas med i totalen.

Använder man istället +, får man motsvarande ett ”ELLER-villkor”, dvs värdet tas med i totalen förutsatt att någon av villkoren är uppfyllda.

=SUMPRODUCT((INDEX(A2:A4)=numeriskt urvalskriterium)+(INDEX(B2:B4)=”textuellt urvalskriterium”);C2:C4)

Index-funktionen är nödvändig för att man ska kunna jämför villkoret med värdet. Kom också ihåg att det är argumenten separeras med semikolon om du har ställt in svenska som språk och i annat fall är det kommatecken som gäller.

En agil kravhanteringsprocess

Att arbeta agilt med krav har ingenting med vilken ”mall” man använder för att dokumentera kraven, utan beror på förhållningssättet man har till kraven. Oavsett om man arbetar med user stories eller användningsfall är nedanstående process att rekommendera.

  1. Ta reda på problemet som ska lösas (dvs definiera vilket slags system som ska byggas).
  2. Sätt problemet i sitt sammanhang och förstå hur verksamheten fungerar (t.ex. genom att skissa upp systemkartan, domänmodeller och/eller verksamhetsprocessen)
  3. Identifiera de som berörs av arbetet (kalla det intressenter, roller, aktörer eller vad du vill).
  4. För varje ”mänsklig” intressent, fundera på vad det är för typ av människa; stresstålig, IT-kunnig, domänkunskap, språk, arbetsmiljö?
  5. För varje intressent (människor och system): ta reda på vad han/hon/den/det värderar. Kalla det värdeobjekt, user stories, användarmål eller användningsfall.
  6. Prioritera
  7. Gå igenom och diskutera varje värdeobjekt med både verksamhet och IT
  8. Prioritera igen…