Arkitektur Vad är arkitektur? Vad har vi arkitekturmodellen till? Hur redovisar vi en arkitektur? Hur tar vi fram en arkitektur? Uppgift När? Varför? För vem? Resultat? (Artefakter?) Efter lunch Redovisning/Diskussion arkitekturella krav Hur tar vi fram en arkitektur? Fortsättning Begreppsmodell Architectural Patterns Den Röda Tråden Vi kan välja utvecklingsmodell Vi kan hantera risk och vet varför Vi kan skriva och estimera krav User stories, -ilities, regler KRAV VISION KRAV behövs KRAV KRAV DESIGN IMPLEMEN TEST DRIFTSÄTT Skillnad på agil och trad? Trad: Mycket up front - kontrollera det okända genom att gissa Agil/Lean: Defer Commitment, Build knowledge, Fail fast - Slösa inte tid på att gissa När skriver vi testfallen? TEST TEST TEST TEST KOD KOD KOD KOD KOD KOD DEPLOYABLE DEPLOYABLE SYSTEM Arkitektur Vad är arkitektur? Vad har vi arkitekturmodellen till? Hur tar vi fram en arkitektur? Hur redovisar vi en arkitektur? Uppgift
Vad är arkitektur? När? Varför? Hantera Risk! Kan vi bygga det? Kommer det funka? Varför börjar vi inte koda direkt? För vem? (Mottagare?) Resultat? (Artefakter?) google define:architecture 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 resolution of significant problems. Kevin Seal (http://www.codingthearchitecture.com/ pages/book/disambiguatingarchitecture.html) The software architecture of a program or computing system is the structure or structures of the system, which comprise - software components - the externally visible properties of those components, - and the relationships among them. Bass, Clements, and Kazman. Software Architecture in Practice, Addison-Wesley 1997 Geggan mellan lådorna i komponentdiagrammet
Arkitektur Vad är arkitektur? Vad har vi arkitekturmodellen till? Hur redovisar vi en arkitektur? Hur tar vi fram en arkitektur? Uppgift Vad har vi arkitekturmodellen till? Kommunicera utåt Metafor Något att visa för stakeholders powerpoint-arkitektur. Kommunicera inåt Vilka delar ska vi ha? SRP, Coupling och Cohesion Vad ska varje del ansvara för? Logisk Vy Hur sitter delarna ihop? Beroenden? Context Map, Logisk Vy Vem bygger vad? Context Map Hur ska komponenterna kommunicera med varandra? API, In-process, tcpip, http, binärt, xml, json, buss, meddelandekö, publish-subscribe? Middleware; application server, webserver, messaging, publish-subscribe Behövs transaktioner, 2PC? Arkitektur Vad är arkitektur? Vad har vi arkitekturmodellen till? Hur redovisar vi en arkitektur? Hur tar vi fram en arkitektur? Uppgift
Mottagare Kund > Hög nivå utan detaljer Mellan team > Komponenter, beroenden, API:er Inom team > Komponenter, beroenden, API:er Kund > Hur funkar det? Alla team > Hur sitter delarna ihop? > Vem bygger vad? > Beroenden? Inom/Andra team > Hur funkar vår komponent? Andra mottagare Drift Support Marknadsföring Drift > Hur deployar vi? Support > Vem ska jag fråga när det inte funkar? Marknadsföring > Varför är detta mycket bättre än allt annat? Architectural views http://en.wikipedia.org/wiki/file:4%2b1_architectural_view_model.jpg
Architectural views Villa använder vi till vad? Rita på tavlan! Kund > Hög nivå utan detaljer - Powerpointnivå Mellan team > Komponenter, beroenden, API:er Inom team > Komponenter, beroenden, API:er Logical view: Class, Communication, Sequence Development view: Component, Package Process view: Activity Physical view: Deployment Use case view: Use case diagram Architectural views Logical view: Class, Communication, Sequence Physical view: Deployment + Marknadsföringsvy: Powerpointdiagram Kontextvy: Kontextdiagram Villa använder vi till vad? Rita på tavlan! Kund > Hög nivå utan detaljer - Powerpointnivå Mellan team > Komponenter, beroenden, API:er Inom team > Komponenter, beroenden, API:er Hur sitter delarna ihop? > Logisk vy, fysisk vy Vem bygger vad? Beroenden? > Klassdiagram med komponenter, kontextdiagram Framgår en hel del! Powerpoint-diagram http://workshops.opengeo.org/stack-intro/introduction.html#introduction
Klassdiagram Kommunikationsdiagram http://www.uml-diagrams.org/examples/online-shopping-uml-communication-diagram-example.html Sekvensdiagram https://en.wikipedia.org/wiki/security_assertion_markup_language
http://agilemodeling.com/artifacts/deploymentdiagram.htm Deployment diagram Deployment diagram http://agilemodeling.com/artifacts/deploymentdiagram.htm Arkitektur Vad är arkitektur? Vad har vi arkitekturmodellen till? Hur redovisar vi en arkitektur? Hur tar vi fram en arkitektur? Uppgift
Hur tar vi fram en arkitektur? Utgå från vetenskapligt sätt 1. Sätt upp hypotes - kandidatarkitektur! 2. Testa hypotesen utifrån arkitekturellt signifikanta user stories och -ilities-scenarion. Hur vet vi vilka som är arkitekturellt signifikanta? De som påverkar arkitekturen mest 3. Sätt upp ny hypotes, minst 3 kandidatarkitekturer! ni kommer tillsammans ta fram >3 Riskhantering: Vad behöver vi veta mera om? Arkitekturellt signifikanta vs evolutionary design Brainstorma och testkör! En enkel process Exempel E-handel Sök produkt Lägg i kundkorg Ändra antal i kundkorg Ta bort ur kundkorg Registrera användare Sortera produkter Logga in Lägg order Betala
-ilities / Icke-funktionella krav Maintainability Usability Performance Security Scalability Availability/Reliability Portability Varje ility ska ha ett testbart case! Tex Vad händer om vi vill kunna skala från 1000 till 1000000 användare? Vi vill börja med en relationsdatabas, men vill eventuellt kunna byta till NoSQL, osv Sammanfattningsvis Arkitekturellt signifikanta user stories Arkitekturellt signifikanta -ilities > Logisk vy Fysisk vy Marknadsföringsvy Kontextvy Testkör mot arkitektur Uppgift till 13:15 Ta fram arkitekturellt signifikanta user stories Ta fram arkitekturellt signifikanta ickefunktionella krav Redovisas på en poster per grupp Syfte: Öva! Det måste inte bli rätt!