Modele cyklu życia systemu cd Zasady programowania zwinnego Wykład 3

Podobne dokumenty
Projektowanie zwinne

Prowadzenie projektu programistycznego. Modele tworzenia oprogramowania. Programowanie kaskadowe i zwinne. Wykład 9

Programowanie Zespołowe

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1

Wskazówki projektowe. Programowanie Obiektowe Mateusz Cicheński

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

Programowanie zespołowe

INICJATYWA STUDENCKA. Gdańsk,

Podejście zwinne do zarządzania projektami

Literatura. J. Nilsson: Applying Domain-Driven Design and Patterns,With Examples in C# and.net, Addison-Wesley Professional, 2006

INŻYNIERIA OPROGRAMOWANIA LAB 1

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

SYSTEMY INFORMATYCZNE ćwiczenia praktyczne

Metodyki zwinne wytwarzania oprogramowania

Programowanie zwinne

Wykład 1 Inżynieria Oprogramowania

Planowanie i realizacja zadań w zespole Scrum

The Agile Way Thomson Reuters case study. Małgorzata Kusyk, PMP Managing Partner, AgilePMO Senior Project Manager, Thomson Reuters

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Wykład 2. MIS n Inżynieria oprogramowania Marzec Kazimierz Michalik Akademia Górniczo-Hutnicza im. S. Staszica w Krakowie

Metodyki programowania. Tomasz Kaszuba 2015

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1

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

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

Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1

Zasadnicze czynności w zarządzaniu projektem, fazy cyklu życia systemu informatycznego. Modele cyklu życia - część 1

Diagramy stanów tworzenie modeli analizy i projektowania Na podstawie UML 2.0 Tutorial

Marcin Kucięba Agile Development

Podstawy modelowania programów Kod przedmiotu

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Metody wytwarzania oprogramowania. Metody wytwarzania oprogramowania 1/31

Charakterystyka oprogramowania obiektowego

Agile Project Management

Feature Driven Development

Oceny z prezentacji INKU011S. Zofia Kruczkiewicz

Wykład 4. Projektowanie. MIS n Inżynieria oprogramowania Październik 2014

Projektowanie systemów informatycznych. wykład 6

Diagramy czynności Na podstawie UML 2.0 Tutorial

Adaptywny kod : zwinne programowanie, wzorce projektowe i SOLID-ne zasady / Gary McLean Hall. Gliwice, cop Spis treści

Wprowadzenie, podstawowe pojęcia, projekt a produkt Wykład1

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

Wprowadzenie, podstawowe pojęcia, projekt a produkt Wykład1

Wzorce projektowe i refaktoryzacja

Projektowanie obiektowe oprogramowania Wykład 4 - SOLID GRASP Wiktor Zychla 2012

Jak być agile w projekcie utrzymaniowym? JOANNA SIEMIŃSKA

Lekkie metodyki. tworzenia oprogramowania

LEKKIE METODOLOGIE WYTWARZANIA OPROGRAMOWANIA

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017

Programowanie Zespołowe

Wykład VII. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Etapy życia oprogramowania

Etapy życia oprogramowania. Modele cyklu życia projektu. Etapy życia oprogramowania. Etapy życia oprogramowania

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

Diagramy czynności tworzenie modelu przypadków użycia Wykład 2

Ogólne określenie wymagań. Ogólny projekt. Budowa systemu. Ocena systemu. Nie. Tak. System poprawny. Wdrożenie. Określenie.

Egzamin / zaliczenie na ocenę*

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

Projekt systemu informatycznego

Zakres wykładu. Podstawy InŜynierii Oprogramowania

Podstawy programowania III WYKŁAD 4

Nazwa przedmiotu: MODELOWANIE I ANALIZA SYSTEMÓW INFORMATYCZNYCH. Modeling and analysis of computer systems Forma studiów: Stacjonarne

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

Metodyki zwinne wytwarzania oprogramowania

Elastyczna metodyka SCRUM

Tworzenie gier na urządzenia mobilne

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

PRZEWODNIK PO PRZEDMIOCIE

Wprowadzenie do metodyki SCRUM. mgr inż. Remigiusz Samborski Instytut Informatyki Politechnika Wrocławska

Zarządzanie projektami. Porównanie podstawowych metodyk

Zarządzanie testowaniem wspierane narzędziem HP Quality Center

Dobry Product Backlog Oferta szkolenia dla Product Ownerów

12) Wadą modelu kaskadowego jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 13) Wadą modelu opartego na prototypowaniu jest:

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2015

Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1

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

Diagramy klas, diagramy sekwencji Wykład 4

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2

Modelowanie i analiza. warstwy biznesowej aplikacji

Zagadnienia. Inżynieria Oprogramowania

Narzędzia CASE dla.net. Łukasz Popiel

Programowanie obiektowe

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

INŻYNIERIA OPROGRAMOWANIA

Program szkolenia: Zaawansowane programowanie w C++

UML w Visual Studio. Michał Ciećwierz

Zasady organizacji projektów informatycznych

Testowanie aplikacji mobilnych na platformie Android - architektura, wzorce, praktyki i narzędzia

Wsparcie narzędziowe zarządzania ryzykiem w projektach. Spotkanie 2 Zbigniew Misiak (BOC IT Consulting)

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

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

Podstawy Programowania Obiektowego

PRZEWODNIK PO PRZEDMIOCIE

Całościowe podejście do testowania automatycznego dla programistów. (TDD, BDD, Spec. by Example, wzorce, narzędzia)

Specyfikowanie wymagań przypadki użycia

Metodyki zwinne wytwarzania oprogramowania

Model przypadków użycia - rola diagramów aktywności Część 2 Wykładowca Dr inż. Zofia Kruczkiewicz

Programowanie obiektowe

Transkrypt:

Modele cyklu życia systemu cd Zasady programowania zwinnego Wykład 3 Zofia Kruczkiewicz 1

Literatura 1. Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, 2004 2. Stephen H. Kan, Metryki i modele w inżynierii jakości oprogramowania, Mikom, 2006 3. Jacobson, Booch, Rumbaung, The Unified Software Development Process,Addison Wesley, 1999 4. Shalloway A.,Trott James R.,Projektowanie zorientowane obiektowo. Wzorce projektowe. Gliwice, Helion, 2005 5. Robert C. Martin, Micah Martin, Agile Programowanie zwinne. Zasady, wzorce i praktyki zwinnego wytwarzania oprogramowania w C#, Helion 2008 2

Zasady ewolucyjnego zwinnego tworzenia oprogramowania [5] 3

(1) Zasady procesu zwinnego Zasada pojedynczej odpowiedzialności (Single-Responsibility Principle - SRP) Żadna klasa nie może być modyfikowana z więcej niż jednego powodu. 1) Klasa obsługująca reguły biznesowe nie powinna zarządzać trwałością 2) Klasa tworząca obiekty nie powinna ich używać 3) Oddzielanie wzajemnie powiązanych odpowiedzialności- np. obiektowa idea rachunku: Zmiana promowania ze względu na producenta produktu - tylko modyfikacja kodu klas z rodziny TProdukt Zmiana promowania ze względu na ilość zakupionego produktu - tylko modyfikacja kodu klasy TZakup Sposób wyznaczania wartości rachunku np. ze względu na grupy podatkowe zmiana kodu klast typu TRachunek 4

Diagram sekwencji UML obiektowy sposób przedstawienia scenariusza obliczania rachunku :Dzial sprzedazy :Lista rachunkow Wybierz_rachunek_i_pobierz_jego_wartosc obliczwartoscrachunku pętla 4 4.1 obliczwartosczakupu Obliczcenebrutto 4.1.1.1 4.1.1 4.3 4.2 4.1.2 4.4 5 5

6

(6) Obliczanie wartosci rachunku (float TAplikacja::Podaj_wartosc(int nr, int podatek_)) 7

(3) Szukanie rachunku (TRachunek TAplikacja::Szukaj_rachunek(int nr)) 11 8

(11) boolean TRachunek::equals(Object rachunek) Zofia Kruczkiewicz, Kierowanie projektem 9 9

(15) float TRachunek::Podaj_wartosc(int podatek_) 10

(16) float TZakup::Podaj_wartosc(int podatek_) 11

(8) float TProdukt1::Podaj_cene() (9) float TProdukt1::Czesc_brutto() 9 lub 10 (10) Przedefiniowanie metody Czesc_brutto() float TProdukt2::Czesc_brutto() Zofia Kruczkiewicz, Modelowanie i analiza systemów informatycznych 4 12 12

(2) Zasady procesu zwinnego Zasada otwarte-zamknięte (Open/Closed Principle - OCP) Składniki oprogramowania (klasy, moduły, funkcje itp.) powinny być otwarte na rozbudowę, ale zamknięte dla modyfikacji. 1) Stosowanie dziedziczenia, polimorfizmu, implementacji interfejsów tylko w takich przypadkach, gdy istnieje możliwość zmian. 2) Należy wyeliminować rozpoznawanie klas zarządzanych lub używanych np. instrukcją switch przez klasy, które używają lub zarządzają tymi klasami 3) Przykłady: obiektowa idea rachunku: zmiana promowania ze względu na producenta produktu - tylko modyfikacja kodu produktów przez polimorfizm i dziedziczenie (TProdukt1, TProdukt2) zmiana promowania ze względu na ilość zakupionego produktu - tylko modyfikacja kodu zakupów przez dziedziczenie i polimorfizm (TZakup1, TZakup2, itp.) Sposób wyznaczania wartości rachunku np. ze względu na grupy podatkowe zmiana kodu rachunku przy sumowania wartości zakupów przez dziedziczenie i polimorfizm (TRachunek1, TRachunek1 ) 13

(15) float TRachunek::Podaj_wartosc(int podatek_) Scenariusz metody Podaj_wartosc jest niezalezny od scenariusza wywołanej metody Podaj_wartosc od obiektu klasy TZakup 14

(16) float TZakup::Podaj_wartosc(int podatek_) Scenariusz metody Podaj_wartosc niezależny od zmiennego scenariusza metody Podaj_cene 15

(8) float TProdukt1::Podaj_cene() (9) float TProdukt1::Czesc_brutto() 9 lub 10 (10) Przedefiniowanie metody Czesc_brutto() float TProdukt2::Czesc_brutto() Zofia Kruczkiewicz, Modelowanie i analiza systemów informatycznych 4 16 16

(3) Zasady procesu zwinnego Zasada podstawiania Liskov Musi istnieć możliwość zastępowania typów bazowych ich podtypami. Jest to warunek zasady otwarte-zamknięte (OCP). 1) Klasa potomna nie może mieć mniejszej funkcjonalności niż jej klasa bazowa. Podstawianie klasy potomnej powinno następować automatycznie, bez potrzeby rozpoznawania typu obiektu np. instrukcją switch 2) Przykład: obiektowa idea rachunku: Zakup obliczając cenę nie musi znać typu produktu zawsze otrzymuje cenę brutto (wynikającą z podatku lub/i promocji). Naruszeniem zasady byłoby stosowanie instrukcji if w celu rozpoznania typu produktu, aby pobrać różnie nazwane metody do obliczenia ceny brutto. 17

(1) Szukanie produktu (TProdukt1 TAplikacja::Szukaj_produkt(TProdukt1 produkt)) Klasa Object - metody equals, hashcode Klasy dziedziczące mogą przedefiniować te metody equals, hashcode Kolekcje z pakietu java.util używają te metody np w metodzie indexof. 7 18

(7) boolean TProdukt1::equals(Object atprodukt) 8 oraz 9 lub 10 Zofia Zofia Kruczkiewicz, -Kierowanie Modelowanie projektem i analiza systemów informatycznych 4 19 19

(4) Zasady procesu zwinnego Zasada odwracania zależności (Dependency Inversion Principle -DIP) A. Moduły wysokopoziomowe nie powinny zależeć od modułów niskopoziomowych. Obie grupy modułów powinny zależeć od abstrakcji B. Abstrakcje nie powinny zależeć od szczegółowych rozwiązań. To szczegółowe rozwiązania powinny zależeć od abstrakcji. 1) Strategia programu nie powinna zależeć od szczegółowych rozwiązań w zakresie implementacji. Przykłady: Implementacja klasy JApplet Implementacja interfejsów jako słuchaczy zdarzeń w pakiecie Swing Implementacja obiektów typu wątki 20

(4) Zasady procesu zwinnego 2) Podział na warstwy Warstwy niższe zależą od wyższych Eliminacja zależności przechodniej: warstwa strategii warstwa narzędzi Eliminacja zależności bezpośredniej: warstwa strategii warstwa mechanizmu 21

(4) Zasady procesu zwinnego 3) Odwracanie relacji własności ( Nie dzwoń do nas. To my zadzwonimy do ciebie. ) Interfejsy są związane ze swoimi właścicielami, a nie implementującymi je klasami Warstwa strategii może być wielokrotnie używana w dowolnym kontekście pod warunkiem, że moduły niższego poziomu implementują interfejs usług strategii 22

(4) Zasady procesu zwinnego 4) Zależność od abstrakcji zasada naiwna Kod nie powinien być zależny od konkretnej klasy Żadna zmienna referencyjna nie powinna być typu konkretnej klasy Żadna klasa nie powinna dziedziczyć po konkretnej klasie Żadna metoda nie powinna przedefiniowywać metody zdefiniowanej w klasie bazowej 23

(4) Zasady procesu zwinnego Fabryka abstrakcyjna Abstract Factory Warstwa strategii Warstwa mechanizmu 24

(4) Zasady procesu zwinnego Podsumowanie Kluczowy mechanizm niskiego poziomu Podwyższa odporność kodu na zmiany Prowadzi do tworzenia kodu wielokrotnego użycia 25

(5) Zasady procesu zwinnego Zasada segregacji interfejsów (Interface Segregation Principle - ISP) Klasa implementująca nie powinna być zmuszana do zależności od metod, których nie używa. 1) Separacja przez implementowanie wielu interfejsów 2) Dziedziczenie wielobazowe 26

(5) Zasady procesu zwinnego -Trzy różne interfejsy xxxui -Możliwa jedna implementacja UI -Możliwa definicja: -void g(depositui depositui, TransferUI transfer UI) -Możliwe wywołania: g(ui, ui); g(ui1, ui2); gdzie ui, ui1, ui2 są obiektami klasy implementującej interfejs UI. 27

Programowanie ewolucyjne zwinne - cechy Pojęcie zwinnego programowania zostało zaproponowane w 2001 w Agile Manifesto: SCRUM XP 28

Modele procesów tworzenia oprogramowania - przykłady Modele ewolucyjne zwinne Proces - programowanie zwinne (Agile software development) Produkt oprogramowanie obiektowe 29

Manifest Zwinnego Tworzenia Oprogramowania z 2001 (http://agilemanifesto.org/iso/pl/) Wytwarzając oprogramowanie i pomagając innym w tym zakresie, odkrywamy lepsze sposoby wykonywania tej pracy. W wyniku tych doświadczeń przedkładamy: Ludzi i interakcje ponad procesy i narzędzia. Działające oprogramowanie ponad obszerną dokumentację. Współpracę z klientem ponad formalne ustalenia. Reagowanie na zmiany ponad podążanie za planem. Doceniamy to, co wymieniono po prawej stronie, jednak bardziej cenimy to, co po lewej. Kent Beck Mike Beedle Arie van Bennekum Alistair Cockburn Ward Cunningham Martin Fowler James Grenning Jim Highsmith Andrew Hunt Ron Jeffries Jon Kern Brian Marick 30

Zasady kryjące się za Manifestem Zwinnego Wytwarzania Oprogramowania http://agilemanifesto.org/iso/pl/principles.html Kierujemy się następującymi zasadami: 1. Najważniejsze dla nas jest zadowolenie Klienta wynikające z wcześnie rozpoczętego i ciągłego dostarczania wartościowego oprogramowania. 2. Bądź otwarty na zmieniające się wymagania nawet na zaawansowanym etapie projektu. Zwinne procesy wykorzystują zmiany dla uzyskania przewagi konkurencyjnej Klienta. 3. Często dostarczaj działające oprogramowanie od kilku tygodni do paru miesięcy, im krócej tym lepiej z preferencją krótszych terminów. 4. Współpraca między ludźmi biznesu i programistami musi odbywać się codziennie w trakcie trwania projektu. 5. Twórz projekty wokół zmotywowanych osób. Daj im środowisko i wsparcie, którego potrzebują i ufaj im, ze wykonają swoją pracę. 6. Najwydajniejszym i najskuteczniejszym sposobem przekazywania informacji do i w ramach zespołu jest rozmowa twarzą w twarz. 31

7. Podstawową i najważniejszą miarą postępu jest działające oprogramowanie. 8. Zwinne procesy tworzą środowisko do równomiernego rozwijania oprogramowania. Równomierne tempo powinno być nieustannie utrzymywane poprzez sponsorów, programistów oraz użytkowników. 9. Poprzez ciągłe skupienie na technicznej doskonałości i dobremu zaprojektowaniu oprogramowania zwiększa zwinność. 10. Prostota sztuka maksymalizacji pracy niewykonanej jest zasadnicza. 11. Najlepsze architektury, wymagania i projekty powstają w samoorganizujących się zespołach. 12. W regularnych odstępach czasu zespół zastanawia się jak poprawić swoją efektywność, dostosowuje lub zmienia swoje zachowanie. 32

Agile Manifesto (wersja źródłowa) We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more. 33

Metodyka typu Agile Scrum sprint (iteracja (2-4 tygodnie), scrum meeting (spotkanie codziennie 15 min), sprint review (podsumowanie sprintu)) Podstawowe zadanie metodyki: dostarczaniu kolejnych, coraz bardziej dopracowanych produktów, włączaniu się przyszłych użytkowników w proces wytwórczy, samoorganizacji zespołu wykonawców. Role główne Zespół - 5-9 osób, zaangażowana w tworzenie oprogramowania Właściciel produktu (Product owner) - osoba reprezentująca klienta, która może należeć do zespołu Kierujący zespołem (Scrum master) osoba ułatwiająca działania zespołu 34

Modele procesów tworzenia oprogramowania - przykłady Modele ewolucyjne zwinne Proces - programowanie ekstremalne XP(Extreme Programming) - praktyki XP Produkt - oprogramowanie obiektowe 35

XP podejście do iteracyjno-rozwojowego tworzenia oprogramowania http://www.agile-process.org 36

Cykl życia oprogramowania XP - http://www.agile-process.org Trzy poziomy planowania: 1. Planowanie wydania obejmujące kilka iteracji 2. Planowanie pojedynczej iteracji (sprint) 3. Planowanie obejmujące 1-dniowy zakres pracy (fragment iteracji) Rzetelny plan obejmujący zakres prac w ciągu 1 tygodnia (SCRUM 30 dni). Plan obejmuje elastyczne wykorzystanie modelowania, projektowania i implementacji Elastyczne zarządzanie zespołem (sieciowe, specjalistyczne, nieegoistyczne) Wynika z postępu prac określonych w planach jednodniowych 37

Planowanie: zespół planuje czas i budżet, zespół planuje ryzyko Praktyki XP [2] zespół planuje kolejność opowiadań (opis działania systemu wykonany przez klienta lub wykonawcę) klient definiuje: Zakres działań Terminy ukończenia wersji priorytety Metafora systemu sposób działania systemu Prosty projekt do testowania zakresu działań Programowanie parami przy jednej stacji roboczej (cały zespół około 10 osób) Testy jednostkowe i akceptacji przed i po wykonaniu właściwego kodu Refaktoryzacja w ciągu tworzenia i rozwijania kodu 38

Praktyki XP [2] Uwspólnienie kodu - przez parokrotne przypisywanie zespołom różnych zadań związanych z innymi zadaniami, każdy wykonawca zna obraz całego kodu Ciągła integracja kodu Przedstawiciel klienta jako członek wykonawców (testy akceptacji, ekspert domen) 40-godzinny tydzień pracy ciągła aktywność zespołu wykonawców Małe wersje : tworzone są wersje niewielkie z przydatnymi funkcjami Standardy kodowania najpierw definiowane, a potem stosowane 39

Cechy Poszczególne elementy wzajemnie się wspierają Zachowanie kontroli nad procesem Ogranicza wstępne zbieranie danych o wymaganiach Ogranicza analizę i modelowanie projektu Ogranicza planowanie na rzecz późniejszej elastyczności ogranicza liczbę klas i dokumentacji Wydajne tworzenie małych i średnich "projektów wysokiego ryzyka oparte na synergii stosowania rozmaitych praktyk zapewniające eliminację wad i wykorzystania zalet tych praktyk. 40

Kwestie kontrowersyjne Brak dokładnej specyfikacji. Stałe angażowanie strony klienta. Zbyt swobodne zmiany kodu 41