Ewolucja Architektury



Podobne dokumenty
I Twój zespół może być zwinny (choć to może trochę potrwać) Paweł Lipiński

Scaling Scrum with SAFe. Małgorzata Czerwińska

Lekkie metodyki. tworzenia oprogramowania

Programowanie Zespołowe

Główne założenia XP. Prostota (Simplicity) Komunikacja (Communication) Sprzężenie zwrotne (Feedback) Odwaga (Agressiveness)

SYSTEMY INFORMATYCZNE ćwiczenia praktyczne

Wszystkie problemy leżą w testach. ForProgress spółka z ograniczoną odpowiedzialnością sp.k.

Jarosław Kuchta Dokumentacja i Jakość Oprogramowania. Wymagania jakości w Agile Programming

Zwinna współpraca programistów i testerów z wykorzystaniem BDD i. by Example (JBehave/Spock/SpecFlow)

Programowanie zespołowe

Umysł / Ciało / Biznes

Ewolucyjna architektura

Metodyki programowania. Tomasz Kaszuba 2015

Oferta szkoleń firmy Code Sprinters

XPrince dla architektów 1

Feature Driven Development

Metodyki zwinne wytwarzania oprogramowania

Programowanie zwinne

PODYPLOMOWE STUDIA ZARZĄDZANIA PROJEKTAMI KATOWICE

NAJLEPSZE STRATEGIE SKUTECZNYCH PROGRAMISTÓW. TECHNIKI PRACY Z KODEM KOD: NSKOD

PODYPLOMOWE STUDIA ZARZĄDZANIA PROJEKTAMI KATOWICE

SCRUM niełatwe wdrażanie metodyki w praktyce. Adam Krosny

Zarządzanie projektami w NGO

Estimation and planing. Marek Majchrzak, Andrzej Bednarz Wroclaw,

Agile vs PRINCE /2015 I rok st. magisterskie Informatyka

szkolenia pod drzewem Wybrane Techniki XP bnd 2008 Tomasz Włodarek. Materiał udostępniany na podstawie licencji Creative Commons (by-nc-nd) 1.00.

EMPIRYZMSCRUM DOŚWIADCZENIE + PODEJMOWANIE DECYZJI = WIEDZA

Michał Olejnik. 22 grudnia 2009

Podejście zwinne do zarządzania projektami

Organizacja procesu projektowania, rozwoju i serwisowania systemu wspomagającego zarzadzanie uczelnią

Planowanie i realizacja zadań w zespole Scrum

PODYPLOMOWE STUDIA ZARZĄDZANIA PROJEKTAMI WARSZAWA

Programowanie zespołowe

Jak uchronić architekturę i wymagania przed chaosem? Warszawa, 27 stycznia 2016 roku

Maciej Oleksy Zenon Matuszyk

Testowanie oprogramowania

Program New Way of Working (NWoW) źródłem motywacji do zmiany postaw. innogy Polska Dorota Kuprianowicz-Legutko

X-DRIVEN DESIGN, Y-DRIVEN DEVELOPMENT NICZEGO NIE ZMIENIĄ

Test-Driven Development

Umowy w branży IT. Jak je konstuować, żeby uniknąć późniejszych nieporozumień. Tomasz Wiese Łukasz Marszał

Wprowadzenie do testów jednostkowych. Marcin Dziedzic, Wiktor Żołnowski

Agile Project Management

Wprowadzenie do metodologii modelowania systemów informacyjnych. Strategia (1) Strategia (2) Etapy Ŝycia systemu informacyjnego

Zmiana zespołu w kierunku Agile

Oferta usług coachingowych firmy Code Sprinters

Programowanie Zespołowe

Leszno Jakie są i będą oczekiwania biznesu wobec IT?

Błędy procesu tworzenia oprogramowania (Badania firmy Rational Software Corporation)

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

know 5 W, : filary wzrostu WHAT WHEN WHO WHY WHERE model biznesowy

Metody wytwarzania oprogramowania. Metody wytwarzania oprogramowania 1/31

Piotr Ślęzak. Gdzie się podziała jakość

KILKA SŁÓW O ROLI PRODUCT MANAGERA

Egzamin / zaliczenie na ocenę*

kompetencji zawodowych Professional Scrum Master I, Certified Scrum Master I Mirosław Dąbrowski zespół Indeed wprowadzenie Scruma

Procesowa specyfikacja systemów IT

Scrum. Zwinna metodyka prowadzenia projektów

PODYPLOMOWE STUDIA ZARZĄDZANIA PROJEKTAMI GDAŃSK

Źródła dumy zawodowej testera oprogramowania

HumanTechnology. Projektowanie interakcji. czyli łatanie dziury w procesie produkcji

KARTA PRZEDMIOTU. Projekt zespołowy D1_10

Analityk i współczesna analiza

INŻYNIERIA OPROGRAMOWANIA LAB 1

ZACHOWANIA ORGANIZACYJNE. Zrozumienie pracy zespołowej

Akademia ADB Wykład I Praca w grupie i jakość kodu

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Projekt zespołowy D1_10

Temat: Zwinne Zarządzanie Projektami IT (Agile / Scrum) Data: marca 2014 r. (2 dni, czwartek-piątek), godz. 9-16

Techniki komputerowe w robotyce

szkolenia dla biznesu

Wprowadzenie do Behaviordriven

CASE STUDY CASE STUDY LISTOPAD

4. Wprowadzanie Scruma w ImmobilienScout Opis sytuacji

Zarządzanie i realizacja projektów systemu Microsoft SharePoint 2010

Programowanie zwinne - wprowadzenie. Programowanie ekstremalne. Wstęp Reguły i praktyki SCRUM. Wprowadzenie Role Zdarzenia Artefakty

KANBAN SCRUM-BAN. Agile PM Zarys AUP

AN EVOLUTION PROCESS FOR SERVICE- ORIENTED SYSTEMS

Efektywne retrospekcje

OFERTA SZKOLEŃ BIZNESOWYCH

ZARZĄDZANIE MARKĄ. Doradztwo i outsourcing

Narzędzia CASE dla.net. Łukasz Popiel

PROJEKTOWANIE ZORIENTOWANE NA UŻYTKOWNIKA W METODYCE SCRUM. Hubert Wawrzyniak Grupa Allegro

Systemy Open Source w zarządzaniu projektami, na przykładzie Redmine i OpenProject. Rafał Ciszyński

Rozdział 5: Zarządzanie testowaniem. Pytanie 1

Outsourcing kadry IT. w branżach: finanse, bankowośd i ubezpieczenia

Projektowanie strategii HR

Projektowanie systemów informatycznych. wykład 6

Zarządzanie projektami. Porównanie podstawowych metodyk

Inżynieria oprogramowania (Software Engineering)

Dobry Product Backlog Oferta szkolenia dla Product Ownerów

Podejście tradycyjne. plan wykonanie sekwencyjna natura wykonywanych zadań

Coaching Zespołu. Podstawowa oferta procesu Team Coachingu dla Organizacji

Programowanie obiektowe

MODEL BIZNESOWY BANKU NA PRZYKŁADZIE KDBS BANK

Wzorce projektowe i refaktoryzacja

Modele cyklu życia oprogramowania

Zarządzanie usługami IT zwinność

Brakujący element Agile: Świadomy zespół

Web frameworks do budowy aplikacji zgodnych z J2EE

Jarosław Kuchta. Projektowanie Aplikacji Internetowych. Wprowadzenie

Transkrypt:

Spójność koncepcyjna oznacza, że centralne dla systemu elementy współpracują jako jednolita, spójna całość. Komponenty pasują do siebie i sprawnie współpracują; architektura osiąga równowagę między elastycznością, utrzymywalnością, efektywnością i responsywnością. Mary & Tom Poppendieck Każda architektura to projekt, ale nie każdy projekt to architektura. Architektura reprezentuje znaczące decyzje mające wpływ na kształt systemu, gdzie to znaczenie jest mierzone kosztem zmiany. "Architektura" to termin, który wiele osób stara się zdefiniować, ale trudno wypracować jedną definicję. Są dwa wspólne elementy: pierwszym jest w y s o k o p o z i o m o w y podział systemu na części; drugi - decyzje, które ciężko zmienić. Martin Fowler, PoEAA Grady Booch Z perspektywy zmiany, rola architektury w zwinnym rozwoju oprogramowania staje się zupełnie jasna: dobra architektura jest responsywna i wspiera zwinność; kiepska będzie się opierać i ją ograniczać. Kevlin Henney Ewolucja Architektury Paweł Lipiński pawel.lipinski@pragmatists.pl

pawel@nyac:/etc$whoami >13 lat jako programista >10 lat w Javie SCJP, SCWCD, SCBCD, SCEA zajmowałem się : developmentem, consultingiem, szkoleniami, audytami, architekturą, prowadzeniem zespołów metodyki: cowboy coding, FDD, Scrum (CSP), XP aktualnie: developer, coach & właściciel @ Pragmatists zainteresowania: (A)OO, agile, zapewnianie jakości oprogramowania, języki http://blog.pragmatists.pl http://blog.pawellipinski.com

Akceptuj zmieniające się wymagania nawet na zaawansowanych etapach projektu. Zwinne procesy wykorzystują zmiany dla uzyskania przewagi konkurencyjnej klienta. Najlepsze architektury, wymagania i projekty powstają w samoorganizujących się zespołach. agile manifesto, zasady #2 & #11

zwinna architektura

projektowanie systemu należy do zespołu, który go tworzy świadome decyzje wymagają danych - te pojawiają się w czasie tworzenia systemu decyzje podejmowane są przez zespół - wzmaga to odpowiedzialność i zaangażowanie oraz zwiększa szanse na to, że decyzje te będą lepsze by architektura mogła ewoluować, architekt (rola) musi być świadomy następstw i kosztów zmian - te zna tylko zespół

wybierz najprostszą architekturę, jaka może zadziałać gdy założymy, że architektura ewoluuje wraz z rozwojem systemu, możemy też założyć, że ma ona wspierać wyłącznie te własności które są niezbędne TERAZ i których wymagalności jesteśmy absolutnie pewni (YAGNI) czym prostsza architektura, tym łatwiej zapanować nad nią zespołowi czym większy zespół tym bardziej jest to prawdą

kod prawdę Ci powie ewolucja architektury, projektu, kodu to ciągła refaktoryzacja, nieprzerwane próby i testy prowadzące do właściwego rozwiązania czasem trzeba spróbować paru różnych podejść by empirycznie sprawdzić które jest lepsze to najlepszy sposób pozyskiwania wiedzy i doświadczenia architektonicznego

Test-Driven Architecture testy wydajności i stabilności weryfikują poprawność architektury (odpowiedniość względem wymagań niefunkcjonalnych) by można było wykryć niedociągnięcia, muszą być one wykonywane ciągle i często (CI) testy mogą więc prowadzić architekturę podobnie jak prowadzą projekt

czym wyżej chcesz skoczyć, tym większy weź rozbieg pewne rzeczy da się założyć już na początku, by uniknąć później niepotrzebnych przeróbek pewne rzeczy wynikają z doświadczenia i nie ma sensu weryfikować rzeczy które z niego w jasny sposób wynikają czasem last responsible moment to sam początek projektu jeśli trzeba podjąć jakąś decyzję, a mamy komplet danych, nie ma sensu udawać, że nie wiemy co zrobić

architektura powstaje przez współpracę czasem to jest wspólna praca na poziomie zespołu developerskiego przy dużych systemach jest to praca architekta z team lead ami, biznesem, change managementem, itp. itd. by zweryfikować poprawność architektury - to TDA, gdzie testami są stanowiska, wymagania i oczekiwania wszystkich zaangażowanych stron dalej jest to praca zespołowa - tym razem jednak decyzje podejmowane są w zespole architektonicznym

jak to wygląda w praktyce? wstępna wizja ewaluacja i zmiany rozwój oprogramowania architekt systemowy zespół architektury: architekt + programiści zespoły programistyczne

jaka powinna więc być zwinna architektura? powinna zachęcać do zmian - musi modyfikowalna więc być rozszerzalna i powinna promować jakość - dbać o testowalność, czytelność, pewność promować tworzenie wartości - ułatwiać dodawanie funkcjonalności, umożliwić regularne prezentacje nowych funkcji umożliwiać badania - programiści powinni zawsze mieć możliwość sprawdzania różnych podejść, weryfikacji swoich idei być samodokumentująca się - architektura jest w kodzie, im czytelniejszy jest on na wysokim poziomie, tym mniej trzeba opisywać (czasem nawet same nazwy pakietów wystarczają do opisania architektury...)

5 głównych zasad Ekonomia - KISS Wyrażanie intencji Separation of concerns Symetria - schematy, łatwość zrozumienia Wyłanianie się - zespołowość

architektura to taki sam aspekt projektu jak każdy inny podlega tym samym siłom i zasadom iteracyjność, komunikacja (zwrotna), równomierne rozłożenie decyzji/ryzyka w projekcie sprzyja reagowaniu na zmiany

architektura to nie dokument czy zalecenia, lecz efekt długotrwałego procesu, który zaczyna się od wstępnych założeń, a potem w czasie rozwoju systemu reaguje na nowo nadchodzące dane i dostosowuje się do nich to komunikat o aktualnym stanie systemu, wspólna wiedza zespołu podlegająca ciągłej ewolucji architektura jako taka nie ma wartości dla klienta, jest jednak ona elementem obniżania kosztów utworzenia tej wartości

One of the more insidious and persistent myths of agile development is that upfront architecture and design are bad; that you should never spend time up front making architectural decisions. That instead you should evolve your architecture and design from nothing, one test-case at a time. Pardon me, but thatʼs Horse Shit. (...) Donʼt feel that TDD is the only way to design. On the other hand, donʼt let yourself get too vested in your designs. Allow TDD to change your plans if it leads you in a different direction. Robert C. Martin, ObjectMentor blog, The Scatalogy of Agile Architecture, 25.04.2009

Dziękuję (Q&A) pawel.lipinski@pragmatists.pl http://www.pragmatists.pl