Metody wytwarzania oprogramowania Metody wytwarzania oprogramowania 1/31
Metody wytwarzania oprogramowania 2/31 Wprowadzenie Syndrom LOOP Late Późno Over budget Przekroczono budżet Overtime nadgodziny Poor quality kiepska jakość Rozwiązanie: Więcej dyscypliny
Metody wytwarzania oprogramowania 3/31 Model CMM Właściwości Departament Obrony USA SEI, Carnegie-Mellon Univ. 1987-97 CMMI: grudzień, 2000
Metody wytwarzania oprogramowania 4/31 Procedury dla CMM Poziom 2 przeglądy zobowiązań zewnętrznych, opracowanie planu przedsięwzięcia szacowanie rozmiaru, pracochłonności, kosztu, krytycznych zasobów obliczeniowych i harmonogramu dokonywanie zmian w planie przeglądy przedsięwzięcia przy kamieniach milowych planowanie zapewnienia jakości...
Metody wytwarzania oprogramowania 5/31 Krytyka podejść zorientowanych na dyscyplinę Dużo czasu poświęconego na administrację Papierowa fikcja Skupienie się na procesie, nie na jakości produktu Zapis procedur utrudnia poprawy procesów Dyscyplina zabija inicjatywę i elastyczność
Metody wytwarzania oprogramowania 6/31 Programowanie ekstremalne Extreme Programming lekka (ang. agile) metodyka rozwoju oprogramowania 1999 Kent Beck
Metody wytwarzania oprogramowania 7/31 Manifest zwinności Ważniejsze: Jednostki i interakcje niż procesy i narzędzia, czyli ewidentnie sprzeciwiają się podejściom zorientowanym na procedury i dyscyplinę Działające oprogramowanie niż obszerna dokumentacja stawiają na jakość produktu końcowego Współpraca klienta niż negocjacja kontraktu Nadążanie za zmianami niż trzymanie się planu
Metody wytwarzania oprogramowania 8/31 Wartości XP Komunikacja wymagania, wyobrażenie systemu głównie werbalna Prostota na początku najprostsze rozwiązanie refaktoryzacja pomaga przekształcić w bardziej skomplikowane Sprzężenie zwrotne w różnych wymiarach: system klient zespół
Metody wytwarzania oprogramowania 9/31 Wartości XP Odwaga aby nie projektować na wyrost aby refaktoryzować kod aby wyrzucić kod kiedy potrzeba Szacunek pomiędzy członkami zespołu czasu i pracy innych
Metody wytwarzania oprogramowania 10/31 Główne reguły i praktyki XP Struktura zespołu Relacje z klientem Zapewnienie jakości Programowanie parami
Metody wytwarzania oprogramowania 11/31 Opowieści użytkowników Są wstępem do rozmowy Są krótkie Opisują funkcję/cechę systemu Mają wartość dla klienta Muszą być testowalne
Metody wytwarzania oprogramowania 12/31 Hydrodynamiczny model projektu Data dostarczenia Koszt Defekty Niekompletność
Metody wytwarzania oprogramowania 13/31 Hydrodynamiczny model projektu Data dostarczenia Koszt Defekty Niekompletność
Metody wytwarzania oprogramowania 14/31 Cykl życia w XP stosuj częste, krótkie wydania wydanie: Ma wartość użytkową trafia do użytkowników końcowych Wydanie podziel na przyrosty przyrost: niepusty zbiór opowieści użytkownika charakter wewnętrzny 2 3 tygodnie Znajdź metaforę dla systemu metafora: wyjaśnia działanie systemu w terminach zrozumiałych dla klienta
Metody wytwarzania oprogramowania 15/31 Gra planistyczna Klient Pisze opowieść Informatycy Szacują opowieść Klient Dzieli opowieść
Zarządzanie zmianą w CMM Metody wytwarzania oprogramowania 16/31
Zarządzanie zmianą w XP Metody wytwarzania oprogramowania 17/31
Zarządzanie zmianą w XP Metody wytwarzania oprogramowania 18/31
Metody wytwarzania oprogramowania 19/31 Testy akceptacyjne Arkusz1 14 12 Liczba testów 10 8 6 4 2 Błąd Sukces 0 1 2 3 4 5 6 Kolejna iteracja
Metody wytwarzania oprogramowania 20/31 Zapewnianie jakości Dbaj o prostotę Unikaj optymalizacji Dla każdej jednostki kodu opracuj NAJPIERW zestaw testów, potem pisz kod Automatyczne wykonanie testów Refaktoryzacja
Metody wytwarzania oprogramowania 21/31 Zapewnianie jakości Kod musi przejść wszystkie testy jednostkowe zanim przekażesz go do eksploatacji Dla każdego wykrytego błędu utwórz zestaw testów Często integruj kod Często wykonuj testy akceptacyjne i publikuj ich wyniki
Metody wytwarzania oprogramowania 22/31 Programowanie parami Cały produkt jest kodowany w parach Standard kodowania Tylko jedna para integruje kod w danej chwili Pary się zmieniają Kod jest własnością całego zespołu System zarządzania wersjami Otwarta przestrzeń dla zespołu
Metody wytwarzania oprogramowania 23/31 Czynniki ryzyka Klient cały czas pracuje z zespołem Brak dokumentacji Brak fazy projektowania Krótka perspektywa planowania
Metody wytwarzania oprogramowania 24/31 Podsumowanie Manifest zwinności zorientowanie na ludzi i komunikację dopuszczenie zmian jakość oprogramowania Gra planistyczna Programowanie parami Wady XP
Metody wytwarzania oprogramowania 25/31 Geneza ewolucji oprogramowania Zmiana jest naturalnym procesem w cyklu rozwojowym oprogramowania i nie można jej uniknąć Zmiana środowiska Zmiana wymagań Potrzeba ulepszania Usuwanie błędów
Metody wytwarzania oprogramowania 26/31 Ewolucja a pielęgnacja Ewolucja oprogramowania: Ewolucja oprogramowania (ang. software evolution) to proces zmian zachodzących w oprogramowaniu w czasie jego życia. Pielęgnacja oprogramowania: Pielęgnacja oprogramowania (ang. software maintenance) to czynności modyfikujące program po jego dostarczeniu i wdrożeniu. Cele: poprawa błędów poprawa wydajności lub innych atrybutów programu adaptacja produktu do zmian w środowisku operacyjnym.
Metody wytwarzania oprogramowania 27/31 Czynniki wpływające na koszt pielęgnacji Czynniki wpływające na koszt pielęgnacji: Dziedzina zastosowań systemu Stabilność personelu pielęgnacyjnego Czas życia oprogramowania Stabilność sprzętu Jakość kodu i dokumentacji Czynniki nie wpływające na koszt pielęgnacji Metoda zarządzania przedsięwzięciem Dostępność zasobów
Metody wytwarzania oprogramowania 28/31 Inżynieria ponowna proces transformacji istniejącego oprogramowania (ang. legacy software) w celu poprawy jego pielęgnowalności niższe ryzyko niż w przypadku budowy nowego systemu opłacalne, jeżeli koszt jest niższy od kosztu stworzenia nowego systemu stosowane w przypadku często ewoluujących fragmentów systemu
Metody wytwarzania oprogramowania 29/31 Refaktoryzacja Refaktoryzacja to: zmiana wewnętrznej struktury kodu programu która zwiększa jego czytelność i obniża koszt pielęgnacji ale nie zmienia jego obserwowalnego zachowania
Metody wytwarzania oprogramowania 30/31 Koszt refaktoryzacji Refaktoryzacja nie zwiększa funkcjonalności programu, ale kosztuje: identyfikacja problemu przekształcenie kodu weryfikacja poprawności Koszt zależy od: własności języka oprogramowania wsparcia ze strony narzędzi CASE natury wykonywanego przekształcenia liczby i jakości posiadanych testów
Metody wytwarzania oprogramowania 31/31 W wykładzie wykorzystano materiały Programowanie ekstremalne, Jerzy Nawrocki, Łukasz Olek, http://wazniak.mimuw.edu.pl/index.php?title=io-12-wyk-toc Ewolucja oprogramowania i refaktoryzacja, Bartosz Walter, http://wazniak.mimuw.edu.pl/index.php?title=io-13-wyk-toc