Problemlösning. Analys och design OOA&D. Programutveckling sker i faser OOA&D. Fastställa och analysera förutsättningarna/ kraven.

Relevanta dokument
Klasser och objekt? Objekt och klasser. Analys och design. Objekt. Klass. Programmering?

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

Syftet med en personlig handlingsplan

Klass och metoddesign. Skapa en OO-design. Kodkonvention. Hur kan man jobba med kodkvalité? Implementation. Bra klasser är grunden

Hur utvecklar man användbara system? Utvärdering. Användbarhet handlar om kvalitet. Utvärdering. Empiriska mätningar. Metoder

Skriva B gammalt nationellt prov

Individuellt Mjukvaruutvecklingsprojekt

912 Läsförståelse och matematik behöver man lära sig läsa matematik?

Lathund, procent med bråk, åk 8

Svenska Du kan med flyt läsa texter som handlar om saker du känner till. Du använder metoder som fungerar. Du kan förstå vad du läser.

Varierad undervisning för lust a1 lära

Lathund till Annonsportalen

Erfarenheter från ett pilotprojekt med barn i åldrarna 1 5 år och deras lärare

Introduktion. Den objektorienterade modellen Grundläggande begrepp Klass Klassen som abstraktion

Svenska som andraspråk, år 8

Programmering för språkteknologer II, HT2014. Rum

Förskollärarprogrammet

Laborativ matematik som bedömningsform. Per Berggren och Maria Lindroth

Processinriktning. Anvisning. Diarienummer: KS 2015/2121 Dokumentansvarig: Utveckling, planering och uppföljning, Utvecklingsledare

Minoritetsspråk Åk 9

Idag: Dataabstraktion

Objektorientering. Grunderna i OO

4-6 Trianglar Namn:..

F5 Kodkvalitet. Programutveckling sker i faser. Livscykel, vidareutveckling och återanvändning

Kvalitetsrapport Så här går det

För dig som är valutaväxlare. Så här följer du reglerna om penningtvätt i din dagliga verksamhet INFORMATION FRÅN FINANSINSPEKTIONEN

Välkommen till Arbetsförmedlingen! Information till dig som är arbetssökande

Handledning för digitala verktyg Talsyntes och rättstavningsprogram. Vital, StavaRex och SpellRight

Uppdragsbeskrivning. Digital Skyltning. Version 1.0 Mats Persson. Distributionslista. Namn Åtgärd Info.

Omfattning: heldagar samt tre coachtillfällen med personlig coaching. För mer information och frågor kontakta oss på info@shifteducation.

Upplägg och genomförande - kurs D

En grafisk guide till vår identitet

Hur skapar man formula r

Elevinflytande i planeringen av undervisningen. BFL-piloter Mats Burström

PRÖVNINGSANVISNINGAR

Klasser och objekt i C#

Gissa det hemliga talet

Läraren som moderator vid problemlösning i matematik

Boken om Teknik. Boken om Teknik är en grundbok i Teknik för åk 4 6.

Bedömning för lärande formativ klassrumspraktik Per Berggren och Maria Lindroth

Sundbybergs stad Skolundersökning 2015 Föräldrar förskola Fristående förskolor totalt Antal svar samtliga fristående förskolor: 360 (57 %)

Fråga 2 (3p): Läs påstående och anledning och välj det alternativ som passar bäst.

SANNOLIKHET. Sannolikhet är: Hur stor chans (eller risk) att något inträffar.

4-3 Vinklar Namn: Inledning. Vad är en vinkel?

Varför är det så viktigt hur vi bedömer?! Christian Lundahl!

Sundbybergs stad Skolundersökning 2015 Föräldrar förskola Stella Nova förskola

Kreativitet i PU processen

Studiehandledning. Reflektionsfrågor till del I

Läroplanen i Gy Ett arbete för att öka förståelsen av det som står i läroplanen och hur det ska tolkas i klassrumsarbetet

Distribuerade Informationssystem VT-04

VÄGLEDNING FÖRETAGSCERTIFIERING Ansökan, recertifiering och uppgradering Version: (SBSC dok )

Tränarguide del 1. Mattelek.

Efter att du har installerat ExyPlus Office med tillhörande kartpaket börjar du med att göra följande inställningar:

Gemensam problemlösning. Per Berggren och Maria Lindroth

Objektorientering Klasser

Föräldrabroschyr. Björkhagens skola - en skola med kunskap och hjärta. Vad ska barnen lära sig i skolan?

a n = A2 n + B4 n. { 2 = A + B 6 = 2A + 4B, S(5, 2) = S(4, 1) + 2S(4, 2) = 1 + 2(S(3, 1) + 2S(3, 2)) = 3 + 4(S(2, 1) + 2S(2, 2)) = = 15.

Flyktingläget på Tjörn Februari 2016

Systematiskt kvalitetsarbete

Uppdrag: Huset. Fundera på: Vilka delar i ditt hus samverkar för att elen ska fungera?

En Single-Page Application för små barn, barnens föräldrar samt en och annan mormor

Disclosure. SOMP-I skapades av Kristina Persson. SOMP-I ägs av Barnens rörelsebyrå Kristina Persson & Kine Johansen är delägare i företaget

GHI-12:123 Rev B Cockpit Communicator. Release 7.3 Enklare och tydligare

Kampanj kommer från det franska ordet campagne och innebär att man under en tidsbegränsad period bedriver en viss verksamhet.

Mål Blå kurs Röd kurs

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

DOP-matematik Copyright Tord Persson. Bråktal Läs av vilka tal på tallinjen, som pilarna pekar på. Uppgift nr

Programexempel: tärningsspel

Sid i boken Rekrytering. Författare Annica Galfvensjö, Jure Förlag

Sanktioner Uppföljning av restauranger som fått beslut om föreläggande/förbud år 2010

Visualisering av golfboende

BRUK. bedömning reflektion utveckling kvalitet

1. Angående motion om julgran

Lösningar s. 8 Perspek9v s. 7

Lathund för pedagoger Grundskola med:

Boll-lek om normer. Nyckelord: likabehandling, hbt, normer/stereotyper, skolmiljö. Innehåll

Dokumentation inom Socialtjänsten - vad gäller efter årsskiftet?

Objektorienterad programmering

Syfte med

Fel och felhantering. Undantag

Folkets Synonymlexikon

Programmera en NXT Robot

Anna Kinberg Batra Inledningsanförande 15 oktober 2015

WORKSHOP I KOLLEGAHANDLEDNING

Små- och medelstora företag ser potential med slopade handelshinder. Stockholm, december 2014

Specialpedagogisk kompetensutveckling för all pedagogisk personal inom Barn- och Utbildningsförvaltningen i Östersunds kommun.

Vetenskapliga begrepp. Studieobjekt, metod, resultat, bidrag

Administration Excelimport

Rekursion: varför? Problem delas upp i mindre bitar algoritm för att lösa problemet erhålls från problemformuleringen

Utvärdering APL frågor till praktikant

ÄT RÄTT NÄR DU TRÄNAR

Diskussionsfrågor till version 1 och 2

Användarmanual - Digitalt utbildningsprotokoll (DUP)

Hur motiverad är patienten?

Matris för Hem och Konsumentkunskap åk.6 8 Nivå 1 Nivå 2 Nivå 3 Nivå 4

Axiell Arena. Samarbeta om bilder Regionbiblioteket i Kalmar län

Facit med lösningsförslag kommer att anslås på vår hemsida Du kan dessutom få dem via e-post, se nedan.

Transkript:

Analys och design med hjälp av CRC Problemlösning Alla större projekt misslyckas, eftersom det är omöjligt för utvecklarna att till fullo förstå uppgiften som ska lösas och vilka alla problem som är inneboende i uppgiften. Antaganden måste klargöras Möjliga feltolkningar måste undanröjas När problem/uppgifterna blir större, måste lösningen delas in i hanterliga delar Denna teknik är fundamental för programvaruutveckling I objektorienterad utveckling delas lösningen in i objekt och klasser 40 41 Programutveckling sker i faser Här: starkt förenklat version Passar bara mindre projekt Fem delmoment: Fastställa och analysera förutsättningarna/kraven Skapa en design Implementera koden Testning Dokumentation OBS! Testning och dokumentation ska ske parallellt med de övriga momenten. 42 OOA&D Design Kräver förståelse för uppgiften/problemet Analys Kräver språk för att uttrycka designen i Kräver ett strukturerat arbetssätt Bygger på erfarenhet Syftar till att få fram en OO modell som går att implementera Design och analys hör ihop 43 OOA&D Modeller underlättar kommunikation Oberoende av programspråk Abstraherar från oväsentliga detaljer Underlättar testning i tidigt skede CRC-kort UML (ett modelleringsspråk för OO utveckling) Fastställa och analysera förutsättningarna/ kraven Vad ska göras? Vilka begränsningar finns? Är alla oklarheter utredda? Gör modeller/utkast Undvik att tänka på implementationen 44 45

Skapa en design Bestäm klasser, objekt och metoder som behövs Vad finns redan? Bestäm algoritmer för problemlösningen I princip oberoende av programmeringsspråk Diagram Pseudokod Designa för återanvändning? Det är svårare att göra generella lösningar Kan löna sig i framtiden Återanvändning har varit en stor anledning till OOboomen 46 Implementation Översättning av design till källkod Implementationen fokuserar på kod-detaljer Alla viktiga beslut tas vid analys och design 47 Testning och dokumentation Tester måste konstrueras för extremer, svagheter och gränsfall Med tester ska fel finnas och inte undvikas Testa tidigt och ofta Det är inte bara kod som kan testas Dokumentera fortlöpande ANALYS SYSTEM DESIGN PROGRAM DESIGN V modellen Validera kraven Verifiera designen KODNING SYSTEMTEST ENHETS- & INTE- GRATIONSTEST DRIFT & UNDERHÅLL ACCEPTANS- TEST 48 49 Vad kännetecknar en god klass En odelad, väldefinierad abstraktion Uppgiften kan beskrivas kort och tydlig Namnet är en substantiv eller adjektiv som beskriver abstraktionen på ett adekvat sätt Har ett koncist och sammanhängande gränssnitt Har tillstånd och beteende Representerar en mängd möjliga run-time objekt Problemet ska delas upp i lämpliga klasser Cohesion och Coupling (sammanhörighet och koppling) Metoderna i varje klass ska ha stark sammanhörighet Klasserna ska vara löst kopplade (oberoende av varann) OOA&D med CRC-kort Analys Förstå problemet/uppgiften Utveckla en OO modell av problemet Design Utveckla en OO modell av lösningen Modeller underlättar kommunikation Oberoende av programspråk Abstraherar från oväsentliga detaljer Underlättar testning i tidigt skede CRC-kort UML(ett modelleringsspråk för OO utveckling) Rollspelsdiagram 50 51

CRC Metoden Grupparbete(4-6 personer) Hitta kandidatobjekt Filtrera kandidatobjekten Skapa CRC-kort för kvarvarande kandidatobjekt Definiera scener för testning av modellen (testfall) Spela in scener m.h.a rollspelsdiagram (testa) Uppdatera CRC-korten och scenerna 52 Brainstorming Kandidater? Fokuserat utforskande Okritiskt förhållningssätt i genereringsfasen Kräver bra förståelse och analys Substantiv & adjektiv i uppdragsbeskrivning Lätt metod Kräver en vettig och inte allt för ordig och lång beskrivning Mix 53 Filtrering Oavsett metod så måste man göra en bearbetning av kandidaterna Så att god klass-design uppnås Liknande kandidater slås ihop Skippa kandidater som: CRC-kort Class-Responsibilities-Collaborators Klass-ansvar-sammarbetspartner Ett CRC-kort motsvarar en klassbeskrivning Inte går att benämna med ett substantiv eller adjektiv Beskriver imp. detaljer, egenskaper, utan direkt ansvar, modellerar GUI, systemklasser, utanför Informellt verktyg för att ta fram och utvärdera olika ramarna, alternativ 54 55 Scenarier RPD Exempel på hur systemet används Hur gör man för att ta fram scenarier? Brainstorming, Vilka använder systemet, hur använder man systemet, vilka kommer i kontakt med systemet, Så heltäckande det går Kräver en gedigen förståelse och analys av uppgiften Börja med några väldigt enkla 56 57

Uppdatera CRC-korten Efter några scenarion När CRC-korten är någorlunda stabila kan de göras om till mera formella klassdiagram Design 58 59 UML Klassdiagram Cohesion Varje metod ska vara ansvarig för bara en uppgift Cohesion mäter huruvida en metod uppfyller detta krav Ju mer en metod fokuserar på en enda uppgift, desto enklare är det att finna ett bra namn enklare och förståeligare blir koden Metoder med stark samhörighet kan lättare ändras utan att andra metoder påverkas Det ska vara möjligt att beskriva en metod med en enkel mening med ett verb och ett objekt 60 61 Exempel 1: Cohesion: Exempel 1 public void setnameandage (String name, int age); public void setname (String name); public void setage (int age); Exempel 2: /* Anropas en gång om året */ public void calculateholidays(); { holidays += new Holidays(); age++; public void calculateholidays(); public void incrementage(); 62 Exempel 3: Cohesion: Exempel 2 public void setfirstname (String name){ firstname = name; public void setlastname (String name){ lastname = name; public void setfirstname (String name) { firstname = name; public void setlastname (String name){ lastname = name; 63

Kategorier av metoder Konstruktorer Skapa instanser Selektor (get-metod) Returnerar information om objektets tillstånd Mutator (set-metod) Ändra objektets tillstånd Annat Gör någonting En metod ska tillhöra bara en kategori 64 Coupling Klasserna ska vara så oberoende som möjligt av varandra Coupling mäter hur starkt klasserna är kopplade Ju lösare klasserna är kopplade, desto enklare är det att förstå en enstaka klass enklare och förståeligare blir systemet som helhet Klasserna med lös koppling kan lättare ändras utan att andra klasser påverkas Systemet blir lättare att ändra Mera flexibilitet PROBLEM: Arv skapar starka kopplingar 65 Ju starkare relation desto starkare koppling ( sämre) svag koppling Dependency Association Komposition! Arv UML: Klassrelationer <<beror på>> relation stark koppling 66