Design af genbrugeligt objektorienteret software

Relaterede dokumenter
Design af genbrugeligt objektorienteret software Evaluering af software ved hjælp af statiske mål.

Objektorientering. Programkvalitet

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater

Assignment #5 Toolbox Contract

Software Design (SWD) Spørgsmål 1

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

Eksempel: et ordresystem note 5 Lagdeling s. 1

Objektorienteret design med arv og polymorfi:

Forelæsning Uge 3 Mandag

Tree klassen fra sidste forelæsning

Bemærk, der er tale om ældre versioner af softwaren, men fremgangsmåden er uændret.

Hvad er Objekter - Programmering

Forelæsning Uge 3 Torsdag

Software Design (SWD) Spørgsmål 1

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1

Forelæsning Uge 5 Mandag

Modern Concurrency Abstractions for C#

DANMARKS TEKNISKE UNIVERSITET

Introduktion til ActionScript, fortsat

Hvem er vi? Kursus Introduktion. Kursuslærerne. Agenda for i dag

Forelæsning Uge 3 Torsdag

Real-time programming safety in Java and Ada

Forelæsning Uge 2 Torsdag

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4

Virkefeltsregler i Java

Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere

LinkGRC. Dokumenter. Brugermanual

Miniprojekt2011. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav.

Klasser og objekter. (Afsnit i manualen)

dintprog Manual Revision: 1241 August 24, 2010 I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

4 Basal Objekt-orienteret Programmering I.

Forelæsning Uge 2 Mandag

Skriftlig eksamen i Datalogi

Test med JUnit 3. Denne artikel introducerer JUnit 3. Den forklarer ideen med JUnit. Og den viser hvordan man konkret bruger det.

Forelæsning Uge 2 Mandag

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning

Lektion 3. Grundlæggende programmering i VR

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 6

Lær Python - Dag 4, modul 1 Objektorienteret programmering

Google App Engine. Google App Engine som platform. Claus Myglegaard Vagner og Jacob von Eyben

30 Objekt-orienteret Programmering i Andre Sprog.

Software 1 with Java. Recitation No. 7 (Servlets, Inheritance)

Test af It-komponent

Databaseadgang fra Java

Datastrukturer. Datastruktur = data + operationer herpå

Datalogi OB, Efterår 2002 OH er, forelæsning 3/ forstå datastrukturer og algoritmer (teoretisk forståelse og intuition)

Specifikation Abstrakt OO OS-API Rev Specifikation. Abstrakt, objektorienteret operativsystem-api

Software Construction 1 semester (SWC) Spørgsmål 1

DM01 DM Obl. Afl. Jacob Christiansen, , D12, Elias 18/ Side 1 af 11

Software Design (SWD) Spørgsmål 1

Objects First with Java A Practical Introduction Using BlueJ

Klasser og Objekter i Python. Uge 46 Learning Python: kap 15-16,

Vejledende løsninger

Jacob Nordfalk. Ingeniørhøjskolen i København. Nykøbing F itvisioncenter 24. februar 2004

Strategisk partnerskab mellem KMD og SAP

Forelæsning Uge 2 Mandag

Programmering i C. Lektion december 2008

Objektorienteret Programmering

Lær Python dag 1 - modul 1

Forelæsning Uge 1 Torsdag

ELEKTRONISK INDBERETNING POST 23/ VERSION 1.13

Specialeforsvar: Fundamentet for et fleksibelt container bibliotek

Forelæsning Uge 6 Mandag

Forelæsning Uge 2 Mandag

Oversigt. Modellering.6. Begrebsmodellering. Begrebsapparat til OO. Fænomener og begreber. Objektorienteret modellering

Ugeseddel 4 1. marts - 8. marts

Lektion 6. Grundlæggende programmering i VR

Software Design (SWD) Spørgsmål 1

Introduktion til OO* og UML

Java Klasse nedarvninger

Om binære søgetræer i Java

Databasesystemer. Databaser, efterår Troels Andreasen. Efterår 2002

SigmaT.

Installation og ibrugtagning af Geomagic Alibre Vault

5. Vores Skole bruger verden hver dag

Eksempel: Skat i år 2000

Thermo Surveillance System TSS

Tredjepart webservices

Abstrakte datatyper C#-version

DM507 Algoritmer og datastrukturer

MapBasic &.NET interaktion. MapBasic.NET. Jakob Lanstorp IT konsulent COWI. Odense 23. Juni jun 2011 MapBasic &.

Skriftlig eksamen i Datalogi

Anvendelse af metoder - Programmering

Sider og segmenter. dopsys 1

DM507 Algoritmer og datastrukturer

Sider og segmenter. dopsys 1

Videregående programmering i Java

Begreber om Godt Software

Webserverprogrammering

IBM WebSphere Operational Decision Management

Udvikling af DOTNET applikationer til MicroStation i C#

Installere Windows Custom PostScript- eller PCL-printerdriverne

Forelæsning Uge 4 Torsdag

Civilingeniøreksamen januar Skriftelig prøve den 12. januar 2001 Kursusnummer 49104

Forelæsning Uge 4 Torsdag

Datastrukturer. Datastruktur = data + operationer herpå

Hvad er et distribueret objekt? Plan Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation

BOSK F2012, 1. del: Prædikatslogik

Klasser og nedarvning

Transkript:

Velkommen Design af genbrugeligt objektorienteret software Evaluering af software ved hjælp af statiske mål. 24 februar 2004 Specialeforsvar af: Søren Gaardbo Jensen Design af genbrugeligt objektorienteret software p. 1/38

Motivation og baggrund Hvad er problemet? Design af genbrugeligt objektorienteret software p. 2/38

Motivation og baggrund Hvad er problemet? Hvad karakteriserer det gode design i forhold til genbrug og vedligeholdelse, og kan vi automatisk evaluere software så problematiske dele identificeres? Design af genbrugeligt objektorienteret software p. 2/38

Motivation og baggrund Hvad er problemet? Hvad karakteriserer det gode design i forhold til genbrug og vedligeholdelse, og kan vi automatisk evaluere software så problematiske dele identificeres? Reusability/Maintainability Profiler. Genbrug? - Vedligeholdelse? Design af genbrugeligt objektorienteret software p. 2/38

Strategi Strategi. Eksisterende softwaremål. Designprincipper og sammenhæng med softwaremålene. Tilstrækkelighed i mål. Eksperimenter. Design af genbrugeligt objektorienteret software p. 3/38

Afgrænsning Objektorienterede paradigme Java. Design af genbrugeligt objektorienteret software p. 4/38

Afgrænsning Objektorienterede paradigme Java. Ingen metadata. Design af genbrugeligt objektorienteret software p. 4/38

Afgrænsning Objektorienterede paradigme Java. Ingen metadata. Statiske mål. public class Receipt { private Sale sale; public Receipt(Sale _sale) { sale = _sale; } public String gettext() { float total=0; String receipt; receipt = sale.getcustomer().getname() + "\n"; receipt += sale.getcustomer().getaddress() + "\n\n"; SalesItems salesitems = sale.getsalesitems(); Product[] p = salesitems.getproducts(); } } for(int i=0; i<salesitems.getproductcount();i++) { receipt += p[i].getname() + "\t" + p[i].getpriceinclvat() +"\n"; total += p[i].getpriceinclvat(); } receipt += "\ntotal:\t\t" + total + "\n"; return receipt; Softwaremål CBO = 5 LOC = 18 Design af genbrugeligt objektorienteret software p. 4/38

Resultat Plug-in til Eclipse blev udviklet. Sammenhæng mellem nogle mål og principper. Nye mål blev konstrueret: Abstraktionsfaktorer. Kendskab. Design af genbrugeligt objektorienteret software p. 5/38

Konklusion Målene kan i nogen grad identificere potentielt problematisk kode. Kan ikke bruges helt uden metadata. Abstraktionsfaktorene ser lovende ud. Skal undersøges nærmere. Design af genbrugeligt objektorienteret software p. 6/38

Disposition Eksisterende softwaremål. Designprincipper og sammenhæng med softwaremålene. Tilstrækkelighed i mål. Eksperimenter. Konklusion. Design af genbrugeligt objektorienteret software p. 7/38

Softwaremål Strukturerede paradigme. Objektorienterede paradigme. To gennemgående begreber: Kobling. Kohæsion. Design af genbrugeligt objektorienteret software p. 8/38

Kobling & Kohæsion Kobling. Design af genbrugeligt objektorienteret software p. 9/38

Kobling & Kohæsion Kobling. Client +getyearssince(int year) MySystem +getcurrentyear() return MySystem.getCurrentYear() - year; // return years: yy Design af genbrugeligt objektorienteret software p. 9/38

Kobling & Kohæsion Kobling. Client +getyearssince(int year) MySystem +getcurrentyear() return MySystem.getCurrentYear() - year; // return years: yy Kobling fra client til MySystem. Design af genbrugeligt objektorienteret software p. 9/38

Kobling Ændringer i et modul kan kræve ændringer i koblede moduler. Svært at isolere til genbrugelige moduler. Svært at overskue: Kræver kendskab til koblede dele. Design af genbrugeligt objektorienteret software p. 10/38

Kohæsion Kohæsion. Design af genbrugeligt objektorienteret software p. 11/38

Kohæsion Kohæsion. +method(...) ClientF2C Converter +convert(int type, int value):int +method(...) ClientI2C Converter.convert( FAHRENHEIT_2_CELSIUS, 100) Converter.convert( INCHES_2_CM, 100) public int convert(int type, int value) { int result = 0; switch(type) { case FAHRENHEIT_2_CELSIUS: result = (int) ((value - 32) / 1.8); break; case INCHES_2_CM: result = (int) (value * 2.54); break; } return result; } Design af genbrugeligt objektorienteret software p. 11/38

Kohæsion Lettere at vedligeholde. Mindre fejlbehæftet [McConnell] Lav kohæsion er udtryk for uhensigtsmæssigt design. Design af genbrugeligt objektorienteret software p. 12/38

Måling af kobling Fan in/fan out. Coupling Between Object classes: CBO Coupling Factor: COF. Globale data Fan out (opdatering) Fan in (hentning) Fan in (Kald fra andre moduler) Modul Fan out (Kald til andre moduler) Design af genbrugeligt objektorienteret software p. 13/38

Måling af kohæsion Kan ikke måles! Design af genbrugeligt objektorienteret software p. 14/38

Måling af kohæsion Kan ikke måles! Lack of COhesion in Methods: LCOM. Flere versioner. Design af genbrugeligt objektorienteret software p. 14/38

Disposition Eksisterende softwaremål. Designprincipper og sammenhæng med softwaremålene. Tilstrækkelighed i mål. Eksperimenter. Konklusion. Design af genbrugeligt objektorienteret software p. 15/38

Designprincipper Der findes mange principper. Mange egenskaber kan ikke måles. Udvalgt fire principper: Information Expert. Polymorphism. Law of Demeter. Design mod et interface. Design af genbrugeligt objektorienteret software p. 16/38

Designprincipper Information Expert. Mindre kommunikation mellem klasser. Højere kohæsion i klassen. DataClass attributes 1..m OperationClass +operation 1..n Design af genbrugeligt objektorienteret software p. 17/38

Designprincipper Information Expert. Mindre kommunikation mellem klasser. Højere kohæsion i klassen. Ikke problemfrit. DataClass attributes 1..m OperationClass +operation 1..n Design af genbrugeligt objektorienteret software p. 17/38

Polymorphism Polymorphism. Bruges til udvidelser og erstatninger. Hvis princippet erstatter switch i kode, redureres koblingen. Receipt 1 1 Sale <<uses>> <<interface>> PrintDeviceInterface +print(string):void +setitalics(boolean):void +setboldface(boolean):void 1 1 PrintDeviceFactory ScreenPrintDevice <<creates>> Design af genbrugeligt objektorienteret software p. 18/38

Law of Demeter Law of Demeter. Receipt Sale Customer String +print() +getcustomer() +getname() -sale:sale -customer:customer -name:string customer.getname() return name; sale.getcustomer().getname() Sale Receipt Customer Design af genbrugeligt objektorienteret software p. 19/38

Law of Demeter - 2 Receipt Sale Customer String +print() +getcustomername() +getname() -sale:sale -customer:customer -name:string return customer.getname() return name; sale.getcustomername() Sale Receipt Customer Reducerer koblinger i systemet. Design af genbrugeligt objektorienteret software p. 20/38

Design mod et interface Design mod et interface. Generelt princip. Sikrer information hiding. Polymorphism afhænger af dette. Design af genbrugeligt objektorienteret software p. 21/38

Disposition Eksisterende softwaremål. Designprincipper og sammenhæng med softwaremålene. Tilstrækkelighed i mål. Eksperimenter. Konklusion. Design af genbrugeligt objektorienteret software p. 22/38

Tilstrækkelighed Ingen mål afslører brud på Design mod et interface. Design af genbrugeligt objektorienteret software p. 23/38

Tilstrækkelighed Ingen mål afslører brud på Design mod et interface. Abstraktionsfaktorer. Design af genbrugeligt objektorienteret software p. 23/38

Tilstrækkelighed Ingen mål afslører brud på Design mod et interface. Abstraktionsfaktorer. KoblingsAbstraktionsFaktor baseret på CBO. Design af genbrugeligt objektorienteret software p. 23/38

Abstraktionsfaktorerne Koblingsbaseret abstraktion er ikke altid tilstrækkelig. Design af genbrugeligt objektorienteret software p. 24/38

Abstraktionsfaktorerne Koblingsbaseret abstraktion er ikke altid tilstrækkelig. Design af genbrugeligt objektorienteret software p. 24/38

Kendskab Kendskab. Tæller samtlige typer der er kendskab til. Supermængde til CBO. Grænseklasser medtages i målet. Design af genbrugeligt objektorienteret software p. 25/38

Abstraktionsfaktorerne Forholdet mellem interface koblinger i forhold til samtlige koblinger. Forholdet mellem interface kendskaber i forhold til samtlige kendskaber. Design af genbrugeligt objektorienteret software p. 26/38

Disposition Eksisterende softwaremål. Designprincipper og sammenhæng med softwaremålene. Tilstrækkelighed i mål. Eksperimenter. Konklusion. Design af genbrugeligt objektorienteret software p. 27/38

Eksperimenter To forskellige eksperimenter. Tre softwaremål LCOM. CBO. Kendskabet. Design mod et interface. Abstraktionsfaktorene. Design af genbrugeligt objektorienteret software p. 28/38

Eksperimenter Information Expert. Kobling er reduceret. Kohæsion er forbedret (småt system). Kendskab er reduceret. Design af genbrugeligt objektorienteret software p. 29/38

Eksperimenter Polymorphism. Koblingen er bedre pga. omfordeling af koblingerne. Kohæsionen er uændret (småt system). Kendskab er reduceret. Design af genbrugeligt objektorienteret software p. 30/38

Eksperimenter Law of Demeter. Kobling er bedre pga. omfordeling af koblingerne. Kohæsionen er uændret (småt system). Kendskab er lidt reduceret uden parm. og lidt forøget med parm. Design af genbrugeligt objektorienteret software p. 31/38

Eksperimenter Svært at sige noget om kohæsionen pga. systemets størrelse. Generelt bliver koblinger reduceret. Generelt bliver kendskabet reduceret. Koblingsmålet kan måske bruges til identifikation af problematiske klasser. Design af genbrugeligt objektorienteret software p. 32/38

Eksperimenter - Abstraktionsfaktorene Interfaceprincippet i Eclipse & POS. To versioner: Kendskab & kobling. Forventet at Eclipse er mere abstrakt end POS. Design af genbrugeligt objektorienteret software p. 33/38

Kendskab Kendskab. Kendskab i Eclipse og Pos 80 70 60 50 40 30 20 10 0 x = 0 0<x<10 10 <= x < 20 20 <= x < 30 30 <= x < 40 40 <= x < 50 50 <= x < 60 60 <= x < 70 70 <= x < 80 % af klasser 80 <= x < 90 90 <= x < 100 100 <= x Kendskab Eclipse Pos 35 30 25 20 15 10 5 0 Kendskab (0 < kendskab <= 20) i Eclipse og Pos Eclipse Pos 0 < x <= 2 2 < x <= 4 4 < x <= 6 6 < x <= 8 8 < x <= 10 10 < x <= 12 12 < x <= 14 14 < x <= 16 16 < x <=18 18 < x <=20 Kendskab Design af genbrugeligt objektorienteret software p. 34/38 % af klasser

Kobling Kobling. Kobling (CBO) i Eclipse og Pos 70 60 50 40 30 20 10 0 x = 0 0<x<10 10 <= x < 20 20 <= x < 30 30 <= x < 40 40 <= x < 50 50 <= x < 60 60 <= x < 70 70 <= x < 80 % af klasser 80 <= x < 90 90 <= x < 100 CBO Eclipse Pos 20 18 16 14 12 10 8 6 4 2 0 Kobling (CBO) i Eclipse og Pos (0 < CBO <=20) Eclipse Pos 0 < x <= 2 2 < x <= 4 4 < x <= 6 6 < x <= 8 8 < x <= 10 10 < x <= 12 12 < x <= 14 14 < x <= 16 16 < x <=18 18 < x <=20 CBO Design af genbrugeligt objektorienteret software p. 35/38 % af klasser

Abstraktionsfaktorerne Abstraktionsfaktorerne. Kendskabsabstraktionsfaktoren (KAF) i Eclipse og Pos 70.00 60.00 50.00 40.00 30.00 20.00 10.00 - x = 0 0 < x < 0.1 0.1 <= x < 0.2 0.2 <= x < 0.3 0.3 <= x < 0.4 0.4 <= x < 0.5 0.5 <= x < 0.6 0.6 <= x < 0.7 0.7 <= x < 0.8 0.8 <= x < 0.9 0.9 <= x < 1 x = 1 % af klasser og interfaces KAF Eclipse Pos 80.00 70.00 60.00 50.00 40.00 30.00 20.00 10.00 - Koblingsabstraktionsfaktoren (CAF) i Eclipse og Pos Eclipse Pos x = 0 0 < x < 0.1 0.1 <= x < 0.2 0.2 <= x < 0.3 0.3 <= x < 0.4 0.4 <= x < 0.5 0.5 <= x < 0.6 0.6 <= x < 0.7 0.7 <= x < 0.8 0.8 <= x < 0.9 0.9 <= x < 1 x = 1 CAF Design af genbrugeligt objektorienteret software p. 36/38 % af klasser

Disposition Eksisterende softwaremål. Designprincipper og sammenhæng med softwaremålene. Tilstrækkelighed i mål. Eksperimenter. Konklusion. Design af genbrugeligt objektorienteret software p. 37/38

Konklusion Der er en sammenhæng mellem designprincipper og mål. En automatisk identifikation af potentielt problematiske områder er mulig men... Design af genbrugeligt objektorienteret software p. 38/38

Konklusion Der er en sammenhæng mellem designprincipper og mål. En automatisk identifikation af potentielt problematiske områder er mulig men......der er brug for metadata for at kunne anvende resultaterne. Design af genbrugeligt objektorienteret software p. 38/38

Konklusion Der er en sammenhæng mellem designprincipper og mål. En automatisk identifikation af potentielt problematiske områder er mulig men......der er brug for metadata for at kunne anvende resultaterne. Eksperimenterne var for små til at sige noget om målet LCOM. Design af genbrugeligt objektorienteret software p. 38/38

Konklusion Der er en sammenhæng mellem designprincipper og mål. En automatisk identifikation af potentielt problematiske områder er mulig men......der er brug for metadata for at kunne anvende resultaterne. Eksperimenterne var for små til at sige noget om målet LCOM. Abstraktionsmålene forventes at sige noget om systemets generelle fleksibilitet, men skal undersøges nærmere. Design af genbrugeligt objektorienteret software p. 38/38