Arkitektur Done Den Röda Tråden Vad är arkitektur? Vad har vi arkitekturmodellen till? Hur redovisar vi en arkitektur? Hur tar vi fram en arkitektur? Uppgift arkitekturella krav Nu Redovisning/Diskussion arkitekturella krav Den Röda Tråden Hur tar vi fram en arkitektur? Fortsättning Begreppsmodell Architectural Patterns 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 Den Röda Tråden KRAV Vi kan välja utvecklingsmodell Vi kan hantera risk och vet varför Vi kan skriva och estimera krav User stories, -ilities, regler KRAV Vi kan ta fram arkitekturkrav TEST KOD KOD TEST KOD DEPLOYABLE DESIGN VISION behövs IMPLEMENT TEST DRIFTSÄTT KRAV TEST KOD KRAV TEST KOD KOD KOD DEPLOYABLE SYSTEM Finns Arkitektur med här? Risk, Built the thing right, Teams Can we build it, Will it work, will it scale. http://blog.crisp.se/2012/10/25/henrikkniberg/agile-product-ownership-in-a-nutshell
Arkitektur var? Arkitektur var? http://www.extremeprogramming.org/map/project.html Test-first upphov till TDD (Kent Beck)
http://www.iasa.se/wp-content/uploads/2012/05/iasa-arkitektroller-2012.pdf Arkitektroller IASA > Finns olika typer av arkitektur: IT-arkitektur Enterprise architecture Verksamhetsarkitektur Lösningsarkitektur Mjukvaruarkitektur Infrastrukturarkitektur Hur organiserar de sig? Hur samordnar de, når alignment? BRP vs Squads, Tribes, chapter, guild Har filmen något med arkitektur att göra? Loosely coupled tighly aligned squads > Conways law > Hur ser arkitekturen ut? Tjänster/Komponenter > Team 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, publishsubscribe Behövs transaktioner, 2PC?
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 Context Map: Bokföring, Betalning, Produkter, Order Exempel E-handel
-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 Begreppsmodell Varför? > Tydlighet, undvika missförstånd, effektiv kommunikation Begreppsmodell vilka kärnbegrepp finns, hur förhåller de sig till varandra. Varför begreppsmodell? Ökad produktivitet! Effektivare kommunikation Tydlighet, undvika missförstånd Minskad kognitiv last Hjälper oss förstå domänen
Bord för fyra Bord för fyra Exempel E-handel
Arkitekturmönster vs Architectural Style General structure; e.g., shared repository, layers, pipes and filters Distributed systems; e.g., client-server, REST Interactive systems; e.g., Model-View- Controller (MVC), MVVM Integration: SOA/ESB Data Achitecture: Data Warehouse Infrastructure: Load Balancer SOA Service Oriented Architecture - Modellera system som tjänster - Varje tjänst är en autonom implementation av funktionalitet - Messaging eller RPC - Interface baserat på standardiserade protokoll som SOAP, WSDL, UDDI - Tänkt att stödja runtime-beslut om vilken endpoint som ska användas - Service Lookup. REST Representational State Transfer Modellera system som resources Varje resurs används med HTTP-verben GET, POST, PUT, DELETE, etc Tänkt att använda befintlig HTTP-teknik för skalning Ej standardiserat interface Payload oftast XML eller JSON.
Exempel E-handel Front-End > BackEnd: REST BackEnd > Bokföring: SOAP 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, publishsubscribe Behövs transaktioner, 2PC? http://workshops.opengeo.org/stack-intro/introduction.html#introduction
Ok? Feedback! Uppgift till imorgon Ta fram 3 kandidatarkitekturer Ta fram en enkel begreppsmodell
Till nästa vecka Kolla in filmen, 10:45 The Software Craftsmanship Imperative: https://www.youtube.com/watch?v=fdelciml7e4