Design Vad är design? Vad är arkitektur? Architectural Pa:erns Designprinciper Design Pa:erns UML Domain Driven Design Domänmodell Vad lärde jag mig förra lekfonen? Hur bidrog jag Fll lärandet? Kravhantering sammanfa0ning BDD/ATDD/SpecificaFon By Example User stories AcceptanstesPall/Testscenarion Icke- funkfonella krav Technical Stories DokumentaFon Domain Driven Design Ubiquituous language Vad är en modell? Vad är en domän? 1
13/04/14 Filmen: SpoFfy Engineering Culture Vad är design? Test Driven Design google define: design the act of working out the form of something 2
Varför Design? Varför? När? För vem? (Mo:agare?) Resultat? Artefakter? När? När? 3
För vem? Övning Skapa en (enkel) begreppsmodell av domänen uffrån våra 3 mest signifikanta user stories Sök produkt Lägg i kundvagn Betala Grundläggande Designprinciper AbstracFon DecomposiFon and modularizafon Coupling and Cohesion EncapsulaFon and informafon hiding Consistency (Ubiquituous language) 4
Grundläggande Designprinciper No one gets it right the first Fme! Analysis Paralysis Vad är arkitektur? google define:architecture 5
All architecture is design, but not all design is architecture. Architecture represents the significant decisions where significance is measured by cost of change Grady Booch Architecture is simply the deliberate and considered resolufon of significant problems. Kevin Seal (h:p://www.codingthearchitecture.com/ pages/book/disambiguafng- architecture.html) The sohware architecture of a program or compufng system is the structure or structures of the system, which comprise - sohware components - the externally visible properfes of those components, - and the relafonships among them. Bass, Clements, and Kazman. Sohware Architecture in PracFce, Addison- Wesley 1997 6
Geggan mellan lådorna i komponentdiagrammet Vad är arkitektur? IT- arkitektur Enterprise architecture Verksamhetsarkitektur Lösningsarkitektur Mjukvaruarkitektur Infrastrukturarkitektur h:p://www.iasa.se/wp- content/uploads/2012/05/iasa- Arkitektroller- 2012.pdf Arkitektroller IASA 7
Varför? När? För vem? Mo:agare? Resultat? Artefakter? Varför Arkitektur? En enkel process WHIRLPOOL 8
Architectural views h:p://en.wikipedia.org/wiki/file:4%2b1_architectural_view_model.jpg Architectural views Logical view: Class, CommunicaOon, Sequence Development view: Component, Package Process view: AcFvity Physical view: Deployment Use case view: Use case diagram 9
Architectural views Exempel: Logisk vy: KommunikaFonsdiagram Fysisk vy: Deploymentdiagram Logisk vy: Klassdiagram över tjänster Marknadsföringsvy SAD Övning Skapa e: (enkelt) kommunikafonsdiagram över komponenter/tjänster uffrån våra 3 mest signifikanta user stories Sök produkt Lägg i kundvagn Betala Övning Skapa e: (enkelt) deploymentdiagram uffrån våra 3 mest signifikanta user stories och Fdigare diagram Sök produkt Lägg i kundvagn Betala 10
Pa0ern/Mönster a general reusable solufon to a commonly occurring problem within a given context h:p://en.wikipedia.org/wiki/sohware_design_pa:ern Arkitekturmönster General structure; e.g., shared repository, layers, pipes and filters Distributed systems; e.g., client- server, REST InteracFve systems; e.g., Model- View- Controller (MVC), MVVM IntegraFon: SOA/ESB Data Achitecture: Data Warehouse Infrastructure: Load Balancer Övning Vilka mönster är kandidater a: använda i vår arkitektur? 11
Detaljerad Design Vad är en bra design? Grundläggande Designprinciper AbstracFon DecomposiFon and modularizafon Coupling and Cohesion EncapsulaFon and informafon hiding Completeness and primioveness (DoD) Consistency (Ubiquituous language) 12
Grundläggande Designprinciper Reveal Intent - Naming SRP: Single Responsibility Principle One and one reason only to change DRY: Don t Repeat Yourself DuplicaFon: Missed opportunity for abstracfon! Simple design YAGNI: You ain t gonna need it! TacFcal DDDesign pa:erns DDD Pa:ern language! h:ps://domainlanguage.com/ddd/pa:erns/ddd_reference_2011-01- 31.pdf 13
Strategic DDDesign pa:erns DDD Pa:ern language! h:ps://domainlanguage.com/ddd/pa:erns/ddd_reference_2011-01- 31.pdf WHIRLPOOL Design pa:erns EnFty Value- Object Aggregate Repository Service 14
Övning Förfina domänmodellen: A:ribut, mulfplicitet, pa:erns, etc. Design pa:erns Factory Builder DI vs ServiceLocator UML Klassdiagram/Komponentdiagram KommunikaFonsdiagram Sekvensdiagram Deploymentdiagram 15
13/04/14 UML Syntax Den kan ni redan! Övning Skapa kommunikafonsdiagram och/eller sekvensdiagram över komponenter/ tjänster. Förfina med Repository, Service, etc. UML Syntax h:p://mapfight.appspot.com/africa- vs- gl/africa- greenland- size- comparison 16
Refererat material h:ps://domainlanguage.com/ddd/pa:erns/ddd_reference_2011-01- 31.pdf Till nästa föreläsning Kolla in filmen! Habits of a Responsible Programmer, Anders Janmyr: h:p://oredev.org/2013/wed- fri- conference/habits- of- a- responsible- programmer 17