Tendenser inden for systemudviklingsrocesser Den Danske Advantage Gen Brugergrue Den 13. marts 2003
Agenda Rational Unified Process (RUP) Princier og Best Practices Faser, iterationer og disciliner Roller, aktiviteter og leverancer extreme Programming (XP) Værdier og raktikker Agile Software Develoment The Agile Manifesto En virksomhedstilasset roces Iocore Unified Process (IUP) Sørgsmål?
Glenn Petersen Konsulent i mere end 20 år som udvikler, team leader, roceskonsulent, teknisk rojektleder og arkitekt Tilasning og imlementering af RUP og RUP-insirerede udviklingsrocesser i danske og skandinaviske virksomheder Software Arkitekt å Java-baserede systemer (J2EE) Undervisning i RUP, Kravstyring, OOD&D samt Use Case modellering for Iocore Academy
Rational Unified Process (RUP)
RUP oversigt Best Practices Develo Iteratively Manage Requirements Use Comonent Architecture Model Visually (UML) Continuously Verify Quality Manage Change Princier Iterative and incremental Use Case Driven Architecture Centric Configurable Risk Driven Object-Oriented
Iterativ og Inkrementel Organization along content Organization along time
Use Case Drevet Business Model/ Domain Model Gives inut to Use Case Model Verified by Test Model Secified by Realized by Distributed by Imlemented by Analysis Model Design Model Deloyment Model Imlementation Model
Arkitektur centreret Klasser, akker og interfaces Logical View Imlementation View Filer, komonenter og lag Process Processer, tråde og tasks 1..* Thread Process View Scenario View Use Cases Noder og forbindelser Process Unit Deloyment View Udvalgte UC til arkitekturen + Kvalitets attributter
Konfigurerbar Develoment Case Organisational Develoment Case
Risikodrevet Risikoanalyse Arkitekturafrøvning (tekniske risici) Tidlig adressering af risici
Objekt-Orienteret Sunde rincier lært fra OO Abstraktion Indkasling Polymorfi Nedarvning Komonenter vs. Objekter
RUP begreber Roller Cohesive set of resonsibilities that a erson may lay, e.g. System Analyst, Architect, etc. Leverancer (Artifacts) Deliverable used, roduced or modified during lifecycle Aktiviteter Unit of work erformed by one or more ersons laying a role Disciliner Collection of related activities, and roles and artifacts related to these activities
Roller, aktiviteter og leverancer En leverance / dokument Rolle inden for rojektet Kravliste Påkrævet leverence En aktivitet (unit of work), som skal udføres Produceret leverance Roller inden for det gule område har ansvaret for alle aktiviteter inden for samme område Assisterende rolle - ekstern til rojektet Systemanalytiker Udarbejd Use Case Model Review Use Case Model Use Case Model Kunde En ekstern rolle hjæler til ved nogle aktiviteter
extreme Programming (XP)
Modning af udviklingsrocesser Problem Proces til håndtering af roblem
Små rocesser og store rocesser Disciliner Dokumenter extreme Programming RUP Agile
extreme Programming Kent Beck: extreme Programming exlained: Embrace Change Addison-Wesley, 1999 ISBN: 0201616416
XP - en letvægtsroces Iterations lan System!!! Stories Bruger Whiteboards Udviklere Kommunikation og samarbejde
XP grundværdier Kommunikation Brugere og udviklere i samme rum To mennesker ved et whiteboard slår alt Enkelthed I både rocessen og systemet Feedback Mod Hurtig feedback å krav, design, system, etc.. - seeder systemudviklingen o Udviklere skal turde tro å, at brugerne vil det bedste Brugerne skal turde stole å, at udviklerne laver så meget som muligt
XP - raktikker The Planning Game Pair Programming Small Releases Collective Ownershi Metahor Continuous Integration Simle Design 40-hour week Testing On-site Customer Refactoring Coding Standard
Agile Software Develoment
The Agile Manifesto Individuals and interactions over rocesses and tools Mennesker og kommunikation over metoder og værktøjer Working software over comrehensive documentation Kørende systemer over omfattende dokumentation Customer collaboration over contract negotiation Leverandør-kunde samarbejde over kontrakter og forhandlinger Resonding to change over following a lan Reagere å ændringer over at følge en lan
Agile letvægtsmetoder extreme Programming (XP) Kent Beck, Ward Cunningham www.extremeprogramming.com Adative Software Develoment Jim Highsmith www.adasivesd.com Scrum Jeff Sutherland, Ken Schwaber www.controlchaos.com Crystal Methods Alistair Cockburn Alistair.Cockburn.us Lean Develoment Bob Charette, Poendiecks www.oendieck.com/ld.htm Feature Driven Develoment (FDD) Jon Kern, Stehen Mellor www.netbulon.com/fdd/ Dynamic Systems Develoment Method (DSDM) www.dsdm.org Pragmatic Programmer Davis Thomas, Andrew Hunt www.ragmaticrogrammer.com Agile Testing Brian Marick www.testing.com/agile
Hvad er Agile? The Agile Manifesto Individuals and interactions over rocesses and tools Mennesker og kommunikation over metoder og værktøjer Artikler Artikler Artikler Working software over comrehensive documentation Kørende systemer over omfattende dokumentation www.agilealliance.org Customer collaboration over contract negotiation Leverandør-kunde samarbejdsklima over kontrakter og forhandlinger Resonding to change over following a lan Reagere å ændringer over at følge en lan User Grous
Rational Software (RUP) Annonceret: 19. august 2002
Microsoft...
IBM...
En virksomhedstilasset roces Iocore Unified Process (en adræt udviklingsroces)
RUP oversigt Best Practices Develo Iteratively Manage Requirements Use Comonent Architecture Model Visually (UML) Continuously Verify Quality Manage Change Princier Iterative and incremental Use Case Driven Architecture Centric Configurable Risk Driven Object-Oriented
RUP begreber Roller Cohesive set of resonsibilities that a erson may lay, e.g. System Analyst, Architect, etc. Leverancer (Artifacts) Deliverable used, roduced or modified during lifecycle Aktiviteter Unit of work erformed by one or more ersons laying a role Disciliner Collection of related activities, and roles and artifacts related to these activities
Iterativ og Inkrementel Organization along content Organization along time
Ændringsarat via iterationer Administrate users Create item Sell items Udate rice Correct number on stock Register order delivery Order items Find item Refund items Total sales Extract turnover Generate reorts Order via Delete item Internet Udate cororate discount Project re-lanning sots Iteration 0 Iteration 1 Iteration 2 Iterations 3-n M A A M A A M A A M A A D-C-T D-C-T D-C-T D-C-T I I I I R1 R2 Incetion Elaboration Construction 0 1 2 3 4 5 6 7 8 9 10 11 Months
Hvordan laceres Use Cases i iterationer? Administrate users Create item Sell items Udate rice Correct number on stock Register order delivery Order items Find item Refund items Total sales Extract turnover Generate reorts Order via Delete item Internet Udate cororate discount Risiko Forretningsværdi Afhængigheder Ressourcer Iteration 0 Iteration 1 Iteration 2 Iterations 3-n Incetion Elaboration R1 R2 Construction 0 1 2 3 4 5 6 7 8 9 10 11 Months
Placering af Use Cases i iterationer Vi starter med at lanlægge den første iteration Vi venter med detaljerne Generate om reorts de efterfølgende iterationer. Vi Delete item Total sales lanlægger dem først Udate cororate senere når discount vi ved mere Extract turnover Risiko Forretningsværdi Afhængigheder Ressourcer Order via Internet Iteration 0 Iteration 1 Iteration 2 Iterations 3-n Administrate users Create item Order items Sell items Udate rice Correct number on stock Register order delivery Find item Refund items??? Order items R1 R2 Incetion Elaboration Construction 0 1 2 3 4 5 6 7 8 9 10 11 Months
Fra RUP til en tilasset komonent-baseret roces Mere forretningsmodellering Mere kravstyring Mere test Mere arkitektur Komonent-baseret udvikling (CBD) Service-Orienteret Arkitektur (SOA)
Plug-Ins SELECT Persective Volere kravindsamling Cockburn Use Cases Hofmeister arkitektur framework CBD & SOA Agile metoder extreme Programming Scrum
Iocore Unified Proces - Disciliner Producerende Disciliner Forretningsmodellering Kravanalyse Arkitekturdesign Detaljeret design Konstruktion Igangsætning Støttende Disciliner Konfigurations- & Versionsstyring Projektledelse Test og kvalitetssikring Kravstyring
Architecture Disciline Detail Overview Vision document Stakeholders request Requirements List Use Case Model Scoe of the Architecture Software Architect Perform Global Analysis Define Concetual Architecture Preare for Realisation Concetual View Module View Code View Execution View
Arkitekturdesign (Hofmeister) Udarbejd global analyse Rammer for arkitekturen Produktsyn Design funktionalitet Koncetuelt arkitektursyn Tilrettelæg realisering Udviklingssyn Arkitekturrammer Koncetuelt arkitektursyn Udviklingssyn Driftssyn Leverancesyn Scoing af komonenter Driftssyn Leverancesyn Detaljeret design og imlementering (kode og data)
Requirements Management Disciline Workflow Overview Define Scoe Preare for change Define Requirements Baseline Secify Use Case Model Manage Change
Iocore Unified Process Faser/Iterationer Forretningsanalyse Interessentliste Forretningsmodel Kravanalyse Kravliste Use Case Model Disciliner Arkitekturdesign Detaljeret design Rammer Udviklingssyn Komonentsecifikation Udvikling Komonenter Programmer Test og kval. sikring Test Cases Projektledelse Iterationslan
Afrunding
RUP De ti basale aktiviteter Iterative and incremental Plan Phases and Iterations Develo Iteration Plan Iteration Assessment Develo Develoment Case Use Case-driven Develo vision Find actors and Use Cases Detail a Use Case Risk-driven Identify and Assess Risk Architecture centric Architectural Analysis Construct Architectural Proof-of-Concet
Endnu mere basalt Brug iterationer Byg en fornuftig arkitektur Adresser risici tidligt Betragt de nævnte rocesser, metoder og teknikker som en værktøjskasse luk det bedste Embrace change
Hvad skal vi gøre, hvis kravene ændres undervejs? Der vil komme ændringer så hvad kan vi gøre ved det? Beskytte rojektet mod den store verden? Åben dørene og lav en lan?
Mennesker gør en forskel! "We cannot become what we want to be by remaining what we are." Max DePree www.deree.org