• Nie Znaleziono Wyników

Techniki komputerowe w robotyce

N/A
N/A
Protected

Academic year: 2022

Share "Techniki komputerowe w robotyce"

Copied!
33
0
0

Pełen tekst

(1)

w robotyce

Wykład V

Adaptacyjne zarządzanie projektami

Robert Muszyński KCiR, W12N, PWr

– Skład FoilTEX –

(2)

Metody prowadzenia projektu

Dążenie do opracowania jednej, uniwersalnej metody idealnej – mrzonka

• Metodyki ciężkie

• Metodyki zwinne (lekkie, sprawne (agile methodologies)) – Adaptacyjne zarządzanie projektami (Agile Project Management, APD)

Metodyki zwinne – cechy charakterystyczne:

• zdecydowane ograniczenie liczby dokumentów,

• brak planowania w dłuższej perspektywie czasowej,

• otwartość na zmiany,

• niewielkie zespoły projektowe – zazwyczaj do kilkunastu osób,

• brak wydzielonej fazy projektowej,

• ciągła współpraca z klientem.

(3)

Cele i zasady metodyk zwinnych

• elastyczność i adaptacyjność projektowania względem dynamicznie zmie- niających się potrzeb i oczekiwań klienta,

• tworzenie wartościowych i innowacyjnych rozwiązań zarówno dla firmy jak i konsumentów na każdym etapie projektowania,

• minimalizacja kosztów m.in. dzięki skróceniu harmonogramów procesu wy- twarzania,

• koncentracja na członkach zespołu projektowego, wzrost motywacji wśród pracowników i bezstresowa realizacja projektów,

• ścisła współpraca z klientem – preferowany jest kontakt bezpośredni,

• prostota i samoorganizujące się zespoły,

• satysfakcja klientów dzięki szybkiemu i regularnemu dostarczaniu warto- ściowego produktu,

• minimalizacja ryzyka.

(4)

Programowanie zwinne

(Agile Software Development)

Zaproponowana w 2001r. grupa metodyk wytwarzania oprogramowania opar- tego o programowanie iteracyjne (model przyrostowy) będących alternatywą dla tradycyjnego podejścia opartego o model kaskadowy.

Przedkłada się w nich:

• jednostki i współdziałania między nimi nad procesy i narzędzia,

• działające oprogramowanie nad szczegółową dokumentację,

• współpracę z klientem nad negocjację umów,

• reagowanie na zmiany nad realizowanie planu.

(5)

Założenia Manifestu programowania zwinnego

(Agile Manifesto)

• Osiągnięcie satysfakcji klienta poprzez szybkość wytwarzania

• Działające oprogramowanie jest dostarczane okresowo (raczej tygodniowo niż miesięcznie)

• Podstawową miarą postępu jest działające oprogramowanie

• Późne zmiany w specyfikacji nie mają destrukcyjnego charakteru na proces wytwarzania oprogramowania

• Bliska, dzienna współpraca pomiędzy biznesem a developmentem

• Bezpośredni kontakt – najlepsza forma komunikacji w zespole i poza nim

• Projekty budowane poprzez zmotywowane indywidua, które posiadają peł- ne zaufanie

• Ciągła uwaga nastawiona na aspekty techniczne oraz dobry projekt

• Prostota

• Samozarządzalność zespołów

• Regularna adaptacja do zmieniających się wymagań

(6)

Zespół w programowaniu zwinnym

• Skład zespołów jest wielofunkcyjny oraz samozarządzalny bez zastoso- wania jakiejkolwiek hierarchii korporacyjnej

• Członkowie zespołu biorą odpowiedzialność za zadania postawione w każ- dej iteracji

• Członkowie zespołu sami decydują jak osiągnąć postawione cele

• Zasadniczą sprawą jest bezpośrednia komunikacja pomiędzy członkami zespołu minimalizująca potrzebę tworzenia dokumentacji. Jeśli członko- wie zespołu są w różnych lokalizacjach to planuje się codzienne kontak- ty za pośrednictwem dostępnych kanałów komunikacji (wideokonferencja, poczta elektroniczna, itp.)

(7)

Metodyki zwinne – opracowania

Programowanie ekstremalne (eXtreme Programming (XP))

• Metodyka DevOps

• Metodyka Scrum

• Metodyka Crystal

• Ciągłe doskonalenie (Continuous Improvement – Kaizen)

• Lean Development/Management

• Global Launch Process

• Adaptive Software Development

• Feature Driven Development

• Behavior Driven Development

• (Acceptance) Test Driven Development

• pochodne (Prince II, Rational Unified Process, XPrince)

(8)

Programowanie ekstremalne – zalecenia

• Iteracyjność Program tworzy się w iteracjach i – co ważniejsze – planuje tylko na- stępną iterację.

• Nie projektować z góry Nie można z góry przewidzieć, jaka architektura będzie najlepsza dla danego problemu. Dlatego należy ją tworzyć w miarę rozszerzania progra- mu.

• Testy podzespołów Testy podzespołów pisze się zanim w ogóle zacznie się pisać kod – najlepiej na początku iteracji. Potem pisze się kod, który potrafi je wszystkie przejść.

• Ciągłe modyfikacje architektury Architektura nie jest czymś, czego nie wolno ruszać. Jeśli modyfikacja architektury ułatwi przejście danej iteracji i nie zepsuje wyników testów uzyskanych na poprzednich iteracjach, należy ją wykonać.

• Programowanie parami Programiści piszą w parach: jedna osoba pracuje przy klawiaturze i jest głównym koderem, druga obserwuje pierwszą, zgłasza poprawki, zadaje pytania wyjaśniające. Umożliwia to wyłapanie wielu błędów oraz wzajemną naukę.

• Stały kontakt z klientem Specyfikacje są prawie zawsze wieloznaczne, dziurawe i sprzeczne ze sobą. Tak więc należy mieć stały kontakt z tym, dla kogo to oprogramowanie jest tworzone (klient zamawiający program, czy też użytkownicy końcowi). Jeśli kontakt jest dobry, można się nawet obyć bez specyfikacji.

(9)

Programowanie ekstremalne – postulaty

• Planowanie

Twórz w sposób iteracyjny

Spraw by każdy wiedział, jak działa każdy moduł Często wypuszczaj wydania

Jeśli XP zaczyna zawodzić, zmień je!

• Projektowanie

Niech projekt będzie prosty

Nie dodawaj nadmiernej funkcjonalności

Dokonuj refaktoringu wtedy, gdy jest to konieczne

• Implementacja

Stosuj ustaloną konwencję

Najpierw napisz testy, potem właściwy kod Programowanie w parach

Często integruj kod

Optymalizuj na samym końcu Brak nadgodzin!!!

Każdy jest równo odpowiedzialny za kod

• Testowanie

Każdy fragment kodu, musi mieć odpowiadające mu testy

Kod jest umieszczany w repozytorium, dopiero po zaliczeniu wszystkich testów Gdy znajdziesz błąd, stwórz dla niego testy

(10)

Metodyka DevOps

• Development and Operations Program tworzy się przy ciągłej komunikacji, współ- pracy i integracji pomiędzy programistami i specjalistami od eksploatacji – zespolenia roz- woju i eksploatacji. . . i testów

• Development – wymaga zmian

• Operations – wymaga stabilizacji

• Dev&Ops – sposób na minimalizację ryzyka błędów aplikacji produkcyjnych

Rekomendacje (środowisko IT):

• stosowanie programowania zwinnego (lub metod podobnych)

• częste wdrożenia (nawet do kilkunastu dziennie)

• dostępność infrastruktury w chmurze i jej wirtualizacja

• narzędzia automatyzacji i zarządzania konfiguracją w centrum danych

(11)

Metodyka DevOps – zasady

• Usprawnienie komunikacji w zespołach projektowych

• Wykorzystanie metodyk zwinnych przy tworzeniu aplikacji

• Automatyzacja procesów testowania i wdrażania na produkcję

• Sprawne wykorzystanie informacji zwrotnej

• Dzielenie się wiedzą: zarówno techniczną (kodem Open Source) jak i biz- nesową

(12)

Metodyka DevOps – proces (∞∞)

Metodyka DevOps zaleca wykorzystanie różnorodnych zestawów narzędzi (toolchains) z kategorii (odzwierciedlających kluczowe aspekty procesu – wie- lofunkcyjny tryb pracy):

• Kodowanie (Code) – narzędzia do rozwój i przegląd kodu, kontroli wersji, scalanie kodu

• Budowanie (Build) – narzędzia do ciągłej integracji, śledzenia statusu kom- pilacji

• Testowanie (Test) – narzędzia do określanie wydajności na podstawie wy- ników testów

• Przygotowanie pakietów (Package) – repozytoria, przygotowanie aplikacji do wdrożenia

• Udostępnianie wydań (Release) – narzędzia do zarządzania zmianami, au- tomatyzacji i zatwierdzania wydań

• Konfigurowanie (Configure) – narzędzia do zarządzania i konfiguracji infra- strukury

• Monitorowanie (Monitor) – narzędzia do monitorowania wydajności aplika- cji, opinii użytkownika końcowego

(13)

Metodyka DevOps – narzędzia

• Monit – monitorowanie i korekcja błędów (watchdog)

• Collectd/Collectl – monitorowanie pracy komputera

• Nagios (& Icinga) – monitorowanie usług i zasobów sieciowych

• Consul – zestawianie i konfiguracja serwisów

• Elastic Stack (& Kibana) – zarządzanie danymi (i ich wizualizacja)

• Jenkins – wykonywanie zadań (ciągła integracja)

• Docker – wdrażanie i uruchamianie aplikacji

• Ansible – automatyzacja zadań i zarządzania konfiguracją

• Git (GitHub) – system kontroli wersji

Więcej na https://devops.com/9-open-source-devops-tools-love/

(14)

Metodyka Scrum

• Iteracyjne podejście do zadania wytworzenia produktu – sekwencja mini- przedsięwzięć zwanych iteracjami (sprintami)

• Inkrementalne wytwarzanie produktu – funkcjonalność produktu rośnie po- przez nowe własności, dodawane kolejno podczas każdej iteracji

• Samoorganizujące się zespoły

• Role uczestników projektu:

właściciel produktu (product owner), mistrz scrum (scrum master),

członek zespołu (team member)

• Zestaw narzędzi oraz technik:

wykres malejący (burn-down chart),

wykaz prac (zbiór wymagań) produktu (product backlog), wykaz prac sprintu (sprint backlog),

spotkania planowania sprintu (sprint planning meetings), spotkania przeglądu sprintu (sprint review meetings), codzienne zebrania (brief meetings)

(15)

Metodyka Scrum – role

• Właściciel produktu – określa początkowy wykaz prac produktu, plan edycji produktu (hierarchię), budżet

• Mistrz scrum – odpowiada za egzekwowanie praktyk i zasad Scrum, nad- zoruje sposób wykorzystania metodyki, „ekranuje” zespół i usuwa prze- szkody

• Zespół scrum – buduje produkt, jest „międzyfunkcyjny” i „samoorganizują- cy się”: obejmuje całą wiedzę niezbędną dla dostarczenia w każdym Sprin- cie produktu będącego potencjalnym wynikiem sprintu oraz posiada bardzo duży stopień autonomii i odpowiedzialności

(16)

Metodyka Scrum – role

(17)

Metodyka Scrum – cykl

(18)

Metodyka Scrum – sprint

Sprint to pojedyncza iteracja, o sugerowanym czasie trwania równym trzy- dzieści dni – ważne by wszystkie iteracje miały tę samą długość.

• Spotkanie planowania sprintu – zajęcie jednodniowe (do ośmiu godzin) czterogodzinna sesja planowania – powstaje wykaz prac sprintu: lista

czynności o najwyższym priorytecie możliwych do wykonania w pojedyn- czej iteracji wybrana z wykazu prac produktu, oraz cel sprintu: korzyść, jaką zmiany w produkcie muszą dostarczyć (z udziałem właściciela pro- duktu)

podział wykazu prac sprintu na zadania – jednostki pracy szacowane na cztery do sześciu godzin – do wykonania w celu dostarczenia wymaga- nej funkcjonalności; lista zadań niekoniecznie musi być kompletna (bez udziału właściciela produktu, który jednakże powinien być dostępny)

Przestrzeganie ograniczeń czasowych: jeśli upłynął czas przeznaczony dla danej czyn- ności, to musi ona zostać zakończona – należy raczej usunąć zadanie z listy zadań niż do- puszczać do pracy po godzinach; przy codziennym wybieraniu zadań członkowie zespołu powinni brać zadania „których nie wiedzą jak zrobić” – będą się dzięki temu doskonalić i nie popadną w rutynę

(19)

• Zebrania codzienne – organizowane o tej samej porze (najlepiej przed rozpoczęciem pracy), w tym samym miejscu, co najwyżej pięćdziesięcio- minutowe spotkanie (najlepiej na stojąco).

otwarte dla wszystkich, jednak głos zabierać mogą tylko członkowie ze- społu (obecność obowiązkowa)

służy jedynie synchronizowaniu działań (a nie rozwiązywaniu proble- mów)

każdy członek zespołu odpowiada na pytania:

∗ Co robiłeś wczoraj?

∗ Co będziesz robił dziś?

∗ Co ci stoi na przeszkodzie?

• Spotkanie przeglądu sprintu – na koniec sprintu zespół przedstawia wła- ścicielowi produktu, co osiągnięto w ostatniej iteracji; po tym właściciel pro- duktu określa, czy cel sprintu został osiągnięty (maksymalnie czterogodzin- ne)

• Spotkanie retrospektywne sprintu – po spotkaniu przeglądu sprintu ze- spół i mistrz scrum rozmawiają o tym, które zadania i czynności zostały wykonane należycie i jak można usprawnić następny sprint (maksymalnie trzygodzinne, bez właściciela produktu)

(20)

• Nadzwyczajne zakończenie sprintu – mistrz scrum lub właściciel projek- tu ma prawo przerwania sprintu jeśli

cel sprintu okazał się już nieistotny,

występują szczególnie uciążliwe problemy z realizacją postawionych za- W razie potrzeby zostaje podjęta akcja naprawienia problemu, po czymdań.

organizuje się nowy sprint, najpewniej z nowym wykazem prac i nowym celem.

Sprint – komentarze

• Zarządzanie zespołem – właściciel produktu oraz mistrz scrum powinni pohamować swe zapędy do rządzenia zespołem, nawet jeśli członkowie zespołu tego sobie życzą. Zespół powinien sam wypracować sobie równo- wagę, bez wpływów z zewnątrz. Każda zewnętrzna pomoc jedynie utrudnia zespołowi samoorganizowanie się.

• Modyfikacja wykazu prac sprintu – niedopuszczalna! Jeśli nowe cechy są tak ważne, że dodanie ich jest nieodzowne, należy zarządzić nadzwy- czajne zakończenie sprintu.

(21)

Metodyka Scrum – Tablica zadań

(22)

Metodyka Scrum – Tablica zadań

(23)

Metodyka Scrum – Tablica zadań

(24)

Metodyka Scrum – Wykresy wygaszania

Wygaszanie sprintu

Wygaszanie wypuszczenia

(25)

Ciągłe doskonalenie (Kaizen)

Kaizen – japońskie słowo o podwójnym znaczeniu:

kaizen (w japońskim pisane znakami kanji) oznacza poprawę, polepszenie, zmianę na lepsze (Kai – zmiana, Zen – dobrze),

kaizen (w japońskim pisane pismem sylabicznym katakaną) oznacza japońską filozofię biznesową (sposób postępowania) ustawicznego polepszania, poprawiania procesu za- rządzania i produkcji na wszystkich jego szczeblach, z uwzględnieniem m.in. technik biz- nesu „just-in-time”.

Skuteczne przez stosowanie w uporządkowany sposób:

• zarządzania przez jakość – Total Quality Management (TQM)

• dostaw dokładnie na czas – Just-in-time (JIT)

• całkowitego produktywnego utrzymania ruchu maszyn – Total Productive Maintenance (TPM)

• rozwijania strategii – Policy Deployment (Hoshin Kanri)

• systemu sugestii – Staff Suggestion System (Kaizen Teian)

• pracy w małych grupach – Small Group Activity (SGA)

(26)

7 zasad Lean Software Development

• Eliminacja marnotrawstwa

• Wzmocnienie pozyskiwania wiedzy

• Podejmowanie decyzji najpóźniej jak to możliwe

• Wdrażanie najwcześniej jak to możliwe

• Respektowanie zespołu

• Tworzenie jakości i spójności

• Spojrzenie na całość

(27)

Global Launch Process

Całościowe, ustrukturyzowane i metodyczne podejście do procesu projekto- wania i wdrożenia

Cele główne

• Bezpieczne wdrożenia (NM)

• Jakość (GCA, DRR)

• Terminowość (bramki Go / No go & SORP)

• Wydajność (JPH, Akceleracja)

• Budżet (e)

Projektowe DNA

• Continuous Improvement Teamwork

• PDCA (Plan-Do-Check-Act – Zaplanuj-Wykonaj-Sprawdź-Popraw;

cykl Deminga)

• Lessons Learned

• Kaizen

(28)

Global Launch Process

Główne procesy

• „Uruchomienie” zespołów

• Planowanie

• Szkolenie

• Przygotowanie fabryki

• Budowa w fabryce

• Walidacja

(29)

Global Launch Process

Inne procesy

• Instalacja maszyn

• Remonty kapitalne

• Szybkie wdrożenia inżynieryjne

• Projekty R&D

• Uruchamianie nowych działów

• Projekty środowiskowe (oczka wodne, domki dla pszczół itp.)

• Wydarzenia socjalne (pikniki rodzinne itp.)

• Strefy komfortu (przyciąganie pracowników)

• Projekty IT (serwerownie itp.)

(30)

Global Launch Process

Zagadnienia

• Proces produkcji versus projekt

• Określenie „Punktu bez powrotu”

• Symulacja konsekwencji

• Czwarta rewolucja przemysłowa – Przemysł 4.0 (Industry 4.0)

(31)

Metodyka XPrince

(eXtreme PRogramming IN Controlled Environments)

Własności:

• jest zwinna,

• posiada mechanizmy kontroli,

• zachowuje odpowiedni poziom dokumentacji technicznej,

• ma prostą i efektywną strukturę organizacyjną,

• jest przejrzysta dla wyższej kadry zarządczej,

• wykorzystuje dobre praktyki programistyczne, zarządzanie wersjami,

ciągła integracja, testy jednostkowe, testy akceptacyjne,

implementacja kierowana testami ( TDD – Test Driven Development), opracowanie rozwiązań próbnych (spike solution).

(32)

Metodyki zwinne – porównanie

• Metodyki zwinne ze względu na swą różnorodność są nieporównywalne

• Metodyka Scrum dotyczy strony zarządzania projektem, pozostawiając in- żynierskie sprawy – projektowanie, kodowanie, zarządzanie konfiguracją, testowanie itd. – samoorganizującemu się zespołowi

• Programowanie ekstremalne dotyczy spraw inżynierskich i nie dostarcza żadnych specyficznych narzędzi do zarządzania projektem

• Lean Development dotyczy zarządzania projektem ale w znacznie szer- szym ujęciu niż metodyka Scrum – z punktu widzenia organizacji całego przedsiębiorstwa

• W praktyce często stosuje się wspomniane metodyki razem, istnieją także metodyki oparte na ich połączeniu

(33)

Metodyki zwinne

(by dilbert)

Cytaty

Powiązane dokumenty

Do kodowania liczb całkowitych korzysta się z 1 lub 2 bajtów (moŜe być takŜe większa liczba), a do deklaracji tych liczb w programie korzysta się ze specjalnych

Jeśli nie, wyszukje sie kolejny hotel spełniający podane ograniczenia (standard, ZakresWyzywienia i SportRozrywka, czas pobytu). Po pozytywnym wyniku poszukiwań obiekt Kierunek

termin Wyróżniono egzemplarze zwykłe typu TEgzemplarz, oraz egzemplarze TEgzemplarz_termin z dodatkowo oznaczonym terminem oddania - rozróżniane w ramach danego tytułu

 Każdy plan musi obejmować pewien Przyrost wartości produktu, który powinien być maksymalizowany z punktu widzenia każdego Sprintu oraz Rejestru Produktu (Backlog Produktu) i

Skorzystaj z pomocy e-podręcznika: https://epodreczniki.pl/a/sasiedzi-polski-podsumowanie/D1702Fp8P Notatkę możesz wykonać w formie rysunku,

Podobnie to święto obchodzi się w Republice Południowej Afryki, a także w Kanadzie, gdzie Dzień Matki jest najpopularniejszym.. świętem, po Bożym Narodzeniu

fi ę przyrody, Lublin 2000, RW KUL, ss. Ogólna metodologia nauk, Lublin 2001, RW KUL, ss. II, zmienione). Metodologia nauk przyrodniczych, Lublin 2002, RW KUL, ss.

Także i z tego względu przeciętne liczby w iernych, przy­ padających na jeden kościół, trzeba traktow ać z dużą ostrożnością, pam iętając że nie oddają