3URJUDPPHULQJVPHWRGLN+W Vad är Objektorienterad Utveckling? Innehåll ◆ ◆ ◆ ◆ ◆ ◆ ◆ Några reflektioner om programvaruutveckling (och OO i synnerhet) Vad är vi ut efter i del2? Repetition av viktigaste stoffet från del1 Grafik och grafiska användargränssnitt Händelsehantering Återanvändning och strukturering av program Rekursion ³2EMHFWRULHQWHGVRIWZDUHFRQVWUXFWLRQLVWKHVRIWZDUH GHYHORSPHQWPHWKRGZKLFKEDVHVWKHDUFKLWHFWXUHRIDQ\ VRIWZDUHV\VWHPRQPRGXOHVGHGXFHGIURPWKHW\SHVRIREMHFWVLW PDQLSXODWHVUDWKHUWKDQWKHIXQFWLRQRUIXQFWLRQVWKDWWKH V\VWHPLVLQWHQGHGWRHQVXUH´ ◆ >0H\HU@ En (mycket kort) OO historia ❏ 1966: Objektorienterad programmering ❏ 1982: Objektorienterad design ❏ 1988: Objektorienterad analys ❏ 1997: Unificering av notationerna Simula [Dahl och Nygaard] with Ada [Booch] OORA [Coad], OOSA [Shlaer och Mellor] UML V1.0 [Booch, Jacobson, Rumbaugh] PM (Java)--Ht99 [email protected] / [email protected] 1 PM (Java)--Ht99 Traditionell vy ➨ Operationer och datat är skilda enheter ➨ Datat är synlig globalt ➨ Datat är passivt ... ; A func1(…) func2(…) B func3(…) C ... ◆ 2 OO Tillåter en Mera Naturlig Modellering OO vs Traditionell Vy ◆ [email protected] / [email protected] Player OO vy Field uses ➨ Operationer + data = objekt func1(…) « A « « ; func2(…) func2(…) components Club « B « « Hole Border falls into hits Ball rebounds « C « func3(…) PM (Java)--Ht99 [email protected] / [email protected] 3 PM (Java)--Ht99 Men Hur Hittas de Rätta Objekten och Klasserna? ◆ ◆ ◆ ◆ ◆ ◆ Textuell analys (eller t o m grammatisk analys) ❏ ❏ ❏ ❏ Människor Platser Reala ting Abstrakta ting Roller Organisationer Händelser ... ◆ Granska kandidatlistan ❏ ❏ Linguistisk (språklig) analys Rollspel (typ CRC kort) Substantiv => objekt / klasser Verb => metoder Adjektiv => attribut ... ❏ ❏ Synonymer Grammatiken (t ex verb som används som substantiv) Behåll bara de som “passar” problemet Kolla särskild för verb som uttrycker speciella relationer som t ex ❍ ❍ ❍ PM (Java)--Ht99 8PHnXQLYHUVLWHW [email protected] / [email protected] 4 Linguistisk Analys Erfarenhet Återanvändning av tidigare modell Checklista ❏ ❏ ❏ ❏ ❏ ❏ ❏ ❏ [email protected] / [email protected] 5 PM (Java)--Ht99 “vara” (lUHQLVD) ➜ arv? “ha” verb (KDV) ➜ komposition? ... [email protected] / [email protected] 6 3URJUDPPHULQJVPHWRGLN+W Programvaruutvecklingsmodeller ◆ ◆ ◆ ◆ Ad-hoc Utveckling Stora programvarusystem kan inte utvecklas adhoc Stora programvarusystem utvecklas i lag Lagarbete kräver struktur och definierade kommunikationssätt Avsnitt 11 i kursboken (nja inte riktigt): ❏ ❏ ❏ Modifiera tills kunden är nöjd development Vattenfallsmodellen Kvalitet PSP PM (Java)--Ht99 maintenance Drift ➨Fungerar detta även för stora system? [email protected] / [email protected] 7 PM (Java)--Ht99 Vattenfallsmodellen Krav Bygg första versionen Krav [email protected] / [email protected] 8 Relativa Kostnader för Olika Faser .UDYLQVDPOLQJ Analys Design Kodning $QDO\V 3ODQHULQJ 'HVLJQ .RGQLQJ 7HVWQLQJ 8QGHUKnOO Testning Installering Drift och Underhåll &RPSLOHGGDWDIURP 6HH656FKDFK6RIWZDUH(QJLQHHULQJZLWK-DYD,UZLQ PM (Java)--Ht99 [email protected] / [email protected] Typiska Orsaker till Fel 9 PM (Java)--Ht99 Fler Orsaker till Fel )HODNWLJDHOOHUPLVVWRONDGH NUDY )HODNWLJDHOOHUPLVVWRONDGH VSHFLILNDWLRQHU [email protected] / [email protected] 'HVLJQIHOVRPLQYROYHUD IOHUDNRPSRQHQWHU 'HVLJQHOOHUNRGQLQJVIHOL 10 ,QWHUIDFH (QYLURQPHQW 'RFXPHQWDWLRQ +XPDQ 5HTXLUHPHQWVWUDQVODWLRQ HQNRPSRQHQW 8QFRPSOHWHUHTXLUHPHQWV 6WDYQLQJVIHORFKG\OLNW 'DWD )HOUlWWQLQJ /RJLFGHVLJQ $QGUDXUVDNHU 6WXG\IURP 6HH$*ROGEHUJ.65XELQ6XFFHHGLQJZLWK2EMHFWV$GGLVRQ:HVOH\ PM (Java)--Ht99 8PHnXQLYHUVLWHW [email protected] / [email protected] 2WKHU 6WXG\IURPWKH86$LU)RUFH 11 PM (Java)--Ht99 [email protected] / [email protected] 12 3URJUDPPHULQJVPHWRGLN+W Relativa Kostnader för ett Fel Hur Kan Kvalitén Förbättras? ◆ Processförbättring Standardisering “Best practices” Ny (och bättre) teknologi Återanvändning Utbildning … ➨ ➨ Effekten måste kunna mätas Definition av olika mått ◆ ◆ Studies from 1974-1980 IBM AS/400 [94] ◆ ◆ ◆ ◆ QJ HUL DQW DYK U . V DO\ $Q LQJ QHU 3OD Q VLJ 'H QJ GQL .R VW 7H O KnO GHU 8Q 6HH563UHVVPDQ6RIWZDUH(QJLQHHULQJ0F*UDZ+LOO [email protected] / [email protected] 13 PM (Java)--Ht99 Motiveringar för Processförbättringar ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ Bättre process ➾ bättre produkt ? Högre produktivitet Ökning av lönsamheten Kortare time-to-market Bättre kontroll Noggrannare planering Tydligare regler Bättre arbetsmiljö ➾ bättre medarbetare Certifiering PM (Java)--Ht99 [email protected] / [email protected] ◆ ◆ ◆ ◆ ◆ ◆ ◆ 15 ❏ ❏ ❏ ◆ [email protected] / [email protected] .UDY Väldefinierade steg (VFULSWV) Formulär Handledning för formulär Standards Planering Plan Design Ramverk för analysen av arbetet Hjälpmedel för individuella förbättringar Scripts ➭ Utvecklare hittar fler fel ➭ Utvecklare gör exaktare upskattningar ➭ Utvecklare blir produktivare Kodning Kompilering Testning 8PHnXQLYHUVLWHW [email protected] / [email protected] Logs Logs Resultat Plan + Sammanfattning Post Mortem 3URGXNW PM (Java)--Ht99 16 PSP Översikt En process för den enskilde utvecklaren ❏ ◆ QFD Inspections CMM PSP ISO9000 och TickIT Cleanroom modellen Statistiska ansatser PM (Java)--Ht99 PSP ◆ 14 Ansatser till Processförbättringar guidning ◆ [email protected] / [email protected] logning (tid och fel) PM (Java)--Ht99 17 PM (Java)--Ht99 [email protected] / [email protected] 5DSSRUWHU 18 3URJUDPPHULQJVPHWRGLN+W Exempel för ett Script )DV 6\IWH +DQGOHGQLQJI|U363SODQHULQJ Inträdeskrav Problembeskrivning Projektplan sammanfattningsformuläret Tidsloggning 1 Programkrav Framställa eller skaffa ett kravdokument för programmet Säkerställa att kravdokumentet är klart och motsägelsefritt Lösa alla frågor ang kravdokumentet 2 Uppskatta resurser Göra den bästa möjliga uppskattningen av tiden som krävs för att utveckla programmet Utträdeskrav Dokumenterade krav Fullständig projektplan sammanfattning med tidsuppskattning för utvecklingstid Fullständiga tidsloggar PM (Java)--Ht99 8PHnXQLYHUVLWHW [email protected] / [email protected] 19