Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

Relevanta dokument
Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15

Objektorienterad programmering

Mer OOP. Variation i typ. Medlen repetition. Generiska klasser. Gränssnitt - Interface. Mer om klasser Några exempel UML

Objektorientering. Grunderna i OO

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

Separation of Concern. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.

Imperativ programmering. Föreläsning 4

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

UML 1(5) Introduktion till Unified Modeling Language. 1 Bakgrund och historik

TDP005. Föreläsning 3 - UML. Filip Strömbäck

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Objektorienterad analys och design

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Course Contents. Objektorienterad programmering. Goals. Buzzwords. Course overview (1) Book. Objektorienterad programmering d2. DAT050, 16/17, lp 2 1

Objektorienterad programmering. Grundläggande begrepp

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

Separation of Concern. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Johannes Åman Pohjola, 2017

Introduktion. Grundkursen

Configuration testing Why? Vad det är tänkt att koden ska göra. Performance testing Kommentarer Skriva om koden som kommentar

Föreläsning 15: Repetition DVGA02

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

Föreläsning 1. Introduktion Utveckla för förändring

Föreläsning 5. När skall man använda implementationsarv? När skall man använda implementationsarv?

Programmering = modellering

Designmönster, introduktion. Vad är det? Varför skall man använda mönster?

Objektorientering Klasser

Kursplanering Objektorienterad programmering

HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN)

TDA550 Objektorienterad programmering, fortsättningskurs. Föreläsning 1. Introduktion Variabler och typer

Objektorienterad analys och design

UML: Exempel. Ett modelleringsspråk. UML: Ansvar. UML: tre huvudanvändningar. Exempel: En klass position storlek. UML Unified Modelling Language

Sammanfattning och Tentamensinfo Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Objekt-orienterad programmering och design. DIT953 Niklas Broberg, 2018

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

Inkapsling (encapsulation)

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad konstruktion

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Introduktion. Byggstenar TDBA

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

Objektorienterad programmering

Objektorientering Användning

Introduktion. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket?

Historik: OOP. Objektorientering. Historik: OOP (forts) En Dum Fråga

Problemlösning. Planering av program. Konstruktion. Programmeringsmetaforer. Problemlösning. Programmering = Problemlösning

Del av projektuppgiften. Systemarkitektprogrammet

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

+Överskådlighet Normalt sätt blir ett program skrivet i det procedurella paradigmet överskådligt. Modifikationer på delproblem kan ske med lätthet.

SOLID är en akronym för fem stycken designprinciper som används vid mjukvaruutveckling. SOLID står för:

Föreläsning 1 Introduktion Utveckla för förändring

Introduktion. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

Arkitektur Michael Åhs

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

Introduktion och OO. Objekt-orienterad Programmering och Design (TDA552) Alex Gerdes, HT-2018

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

RUP - Rational Unified Process

Föreläsning 8, Design

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

SKOLFS. beslutade den XXX 2017.

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Föreläsning 23. Tobias Wrigstad. Refaktorering

PMM (Process Maturity Metrics) Allmänt. Mätetal för framgångsfaktorer. 1. CM konfigurationsstyrning

TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS

Objektorienterad Programmering (TDDC77)

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

Aktivitet ett: Kommunicera! Aktiviteter i praktiken. Parprogrammering. Aktiviteter. Parprogrammeringens sju myter. Parprogrammeringens sju myter

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Objektorienterad programmering

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Objekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016

Kursens mål. Objektorienterad programmering. Kursupplägg. Tillgodoräknande. Kursbok. Labsalar

Tentamen NOA011 Systemarkitektprogrammet. 51 poäng

Användning av modeller för system/produktutveckling

Objektorientering/ Klasser

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Vad händer med L3: ΔL3-L4 för Krav följs upp av annan projektgrupp. Föreläsning 5: V&V II + Design II Efterläsning Kodning

Programmering och algoritmiskt tänkande. Tema 3, föreläsning 1 Jody Foo

Frågor och svar till tentamen i Kravhantering

Introduktion till arv

Testning på 3 föreläsningar. PV7180 Verifiering och Validering. Litteratur. Vad är testning? Varför testa och olika syn? Målet med testning

Föreläsning 1, vecka 6: Abstraktion genom objektorientering

Objektorienterad analys och design

Transkript:

RE SD PD I UT IT ST AT Mjukvarudesign System Requirement Specification Inkrementell och iterativ! Konceptuell design (VAD) Systemdesign (OOA) Arkitekturell (grovkornig, UML) Teknisk design (HUR) Programdesign (OOD) Detaljerad design (moduldesign, lågnivådesign) System Design Description 2 Konceptuell design Berättar för kund och utvecklare vad systemet kommer att kunna göra Svarar exempelvis på följande frågor Var kommer data att komma ifrån? Vad händer med datat i systemet? Hur kommer systemet se ut för användaren? Vilka val har användaren? God konceptuell design fås genom att Beskriva systemets funktionalitet Fristående från implementation Kopplat till kraven Teknisk design Berättar för utvecklare hur systemet kommer att se ut och bete sig Innefattar Hiearki och funktion hos komponenter Datastrukturer (listor, relationstabeller, objekt) Dataflöden (funktioner, gränssnitt, use cases) Kan angripas på olika sätt, exempelvis Decomposition Objektorienterat Datastrukturbaserat Händelseorienterat Dataflödesbaserat Aspektorienterat 3 4

Datastrukturbaserad design Ett programs struktur ska spegla strukturen hos de data som programmet hanterar Exempel: ckson Structured Programming Dataflödesbaserad design Följer datats flöde genom systemet Kan ofta baseras på use cases identification check id withdrawal order withdraw money money Visar komponenterna hos ett system Och deras relationer 5 6 Objektorienterad design Principer för objektorienterad design Substantiv ger objekt Verb ger metoder Basen för objektorientering Arv Inkapsling Polymorfism Huvudpoäng: Återanvändning 7 God teknisk design Hög självständighet hos komponenter Koppling och kohesion Undantagsidentifiering och hantering Feltolerans och förebyggande av fel Error (mänskligt) Fault (uppstår av errors, buggar) Failure (konsekvensen som användaren märker) Aktiv felhantering (koda för att förhindra fel) Passiv felhantering (fånga upp fel) 8

Koppling (coupling, interdependence) Beroenden mot andra komponenter Referenser, dataflöden, kontroll över andra komponenter, komplexitet i interface mellan komponenter Hög koppling är dåligt Eftersom komponenter blir mycket svåra att ändra, dvs. får kass underhållbarhet Undantag: klasser som aldrig ändras (va.util) 9 Kohesion (cohesion, intradependence) Klister inom komponenter eller system Hög Låg - Funktionell (väl relaterade funktioner) - Sekventiell (output -> input) - Kommunikativ (gemensam dataaccess) - Procedurell (ordningsbaserad) - Tidsrelaterad - Logisk - Slumpmässig 10 Att avgöra kohesionstyp Kan modulerna ses som något som bara ska utföra en sak? Hur är aktiviteterna i modulerna relaterade? Varken eller Tillhör aktiviteterna samma generella kategori? Data Flödeskontroll Är sekvensen viktig? Är sekvensen viktig? 11 Funktionell Sekventiell Kommunikativ Procedurell Tidsrelaterad Logisk Slumpmässig Strategi Övergripande tänk Heuristiker Tumregler, anpassningsregler, mönster Notation En uppsättning notationer (informell) Diagram eller matematisk form (formell) SRS Konceptuell - Strategi - Heuristik - Notation Teknisk - Strategi - Heuristik - Notation 12 SDD

Strategi Divide et impera (Alexander den store) Dela upp i delproblem Lös delproblemen Sätt ihop fullständig lösning av de lösta delproblemen Functional decomposition Decomposition trees Top-down Bottom-up Middle-out Heuristik Designprinciper Designmönster Omfaktorisering (refactoring) Effektivisera, optimera och öka läsbarhet utan att ändra funktionalitet Förbereder för och förenklar återanvändbarhet Ökar flexibiliteten i arkitekturen, vilket bidrar till okomplicerad design och en enkelhet att lägga till eller ändra krav Ökar underhållbarheten 13 14 Unken kod är skäl för omfaktorisering Duplicerad kod Långa metoder Stora klasser Utspridda ändringar Switch/Case-satser Onödig generalitet Primitiva tvångstankar Kommentarer 15 Exempel på omfaktoriseringar Encapsulate data En variabel görs private och enda sättet att ändra den är genom en public-funktion. Detta för att man ska vet exakt vem som ändrar den och hur Extract Method Ett antal rader kod gör något som hör ihop. Ta dessa rader och ge dem ett eget namn genom att lägga dem i en egen metod Inline Method En metods namn är precis lika tydligt som metodens kod. Byt ut anropet till koden Replace Data Value with Object En klass har ett enkelt datavärde som behöver extra data eller beteende. Gör datavärdet till en egen klass 16

Notation UML En samling diagram och notationer för att förenkla kommunikationen Mer eller mindre standardiserat Pseudokod Programfunktionalitet fast i naturligt språk Programspråksoberoende Kommunikationsförenklande Referenser Software engineering for students, kapitel 6, 8, 9, 10, 11 Designmönster för programmerare, Bilting, kapitel 8 Refactoring, Martin Fowler RUT 7.1, 7.3 17 18