Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Metody wytwarzania oprogramowania
Metody wytwarzania oprogramowania 1/31
Wprowadzenie
Syndrom LOOP
I Late – PóźnoI Over budget – Przekroczono budżetI Overtime – nadgodzinyI Poor quality – kiepska jakość
Rozwiązanie:Więcej dyscypliny
Metody wytwarzania oprogramowania 2/31
Model CMM
WłaściwościI Departament Obrony USAI SEI, Carnegie-Mellon Univ.I 1987-97I CMMI: grudzień, 2000
Metody wytwarzania oprogramowania 3/31
Procedury dla CMM Poziom 2
I przeglądy zobowiązań zewnętrznych,I opracowanie planu przedsięwzięciaI szacowanie rozmiaru, pracochłonności, kosztu, krytycznych
zasobów obliczeniowych i harmonogramuI dokonywanie zmian w planieI przeglądy przedsięwzięcia przy kamieniach milowychI planowanie zapewnienia jakościI . . .
Metody wytwarzania oprogramowania 4/31
Krytyka podejść zorientowanych na dyscyplinę
I Dużo czasu poświęconego na administracjęI Papierowa fikcjaI Skupienie się na procesie, nie na jakości produktuI Zapis procedur utrudnia poprawy procesówI Dyscyplina zabija inicjatywę i elastyczność
Metody wytwarzania oprogramowania 5/31
Programowanie ekstremalne
Extreme Programming
I lekka (ang. agile) metodyka rozwoju oprogramowaniaI 1999I Kent Beck
Metody wytwarzania oprogramowania 6/31
Manifest zwinności
Ważniejsze:
I Jednostki i interakcje niż procesy i narzędzia, czyli ewidentniesprzeciwiają się podejściom zorientowanym na procedury idyscyplinę
I Działające oprogramowanie niż obszerna dokumentacja –stawiają na jakość produktu końcowego
I Współpraca klienta niż negocjacja kontraktuI Nadążanie za zmianami niż trzymanie się planu
Metody wytwarzania oprogramowania 7/31
Wartości XP
I KomunikacjaI wymagania, wyobrażenie systemuI głównie werbalna
I ProstotaI na początku najprostsze rozwiązanieI refaktoryzacja pomaga przekształcić w bardziej skomplikowane
I Sprzężenie zwrotneI w różnych wymiarach:
I systemI klientI zespół
Metody wytwarzania oprogramowania 8/31
Wartości XP
I OdwagaI aby nie projektować na wyrostI aby refaktoryzować kodI aby wyrzucić kod kiedy potrzeba
I SzacunekI pomiędzy członkami zespołuI czasu i pracy innych
Metody wytwarzania oprogramowania 9/31
Główne reguły i praktyki XP
I Struktura zespołuI Relacje z klientemI Zapewnienie jakościI Programowanie parami
Metody wytwarzania oprogramowania 10/31
Opowieści użytkowników
I Są wstępem do rozmowyI Są krótkieI Opisują funkcję/cechę systemuI Mają wartość dla klientaI Muszą być testowalne
Metody wytwarzania oprogramowania 11/31
Hydrodynamiczny model projektu
Data dostarczenia Koszt Defekty Niekompletność
Metody wytwarzania oprogramowania 12/31
Hydrodynamiczny model projektu
Data dostarczenia Koszt Defekty Niekompletność
Metody wytwarzania oprogramowania 13/31
Cykl życia w XP
I stosuj częste, krótkie wydaniaI wydanie:
I Ma wartość użytkowąI trafia do użytkowników końcowych
I Wydanie podziel na przyrostyI przyrost:
I niepusty zbiór opowieści użytkownikaI charakter wewnętrznyI 2–3 tygodnie
I Znajdź metaforę dla systemuI metafora:
I wyjaśnia działanie systemu w terminach zrozumiałych dlaklienta
Metody wytwarzania oprogramowania 14/31
Gra planistyczna
I KlientI Pisze opowieść
I InformatycyI Szacują opowieść
I KlientI Dzieli opowieść
Metody wytwarzania oprogramowania 15/31
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
Testy akceptacyjne
Arkusz1
Strona 1
1 2 3 4 5 6
0
2
4
6
8
10
12
14
BłądSukces
Kolejna iteracja
Lic
zba
tes
tów
Metody wytwarzania oprogramowania 19/31
Zapewnianie jakości
I Dbaj o prostotęI Unikaj optymalizacjiI Dla każdej jednostki kodu opracuj NAJPIERW zestaw testów,
potem pisz kodI Automatyczne wykonanie testówI Refaktoryzacja
Metody wytwarzania oprogramowania 20/31
Zapewnianie jakości
I Kod musi przejść wszystkie testy jednostkowe zanimprzekażesz go do eksploatacji
I Dla każdego wykrytego błędu utwórz zestaw testówI Często integruj kodI Często wykonuj testy akceptacyjne i publikuj ich wyniki
Metody wytwarzania oprogramowania 21/31
Programowanie parami
I Cały produkt jest kodowany w parachI Standard kodowaniaI Tylko jedna para integruje kod w danej chwiliI Pary się zmieniająI Kod jest własnością całego zespołuI System zarządzania wersjamiI Otwarta przestrzeń dla zespołu
Metody wytwarzania oprogramowania 22/31
Czynniki ryzyka
I Klient cały czas pracuje z zespołemI Brak dokumentacjiI Brak fazy projektowaniaI Krótka perspektywa planowania
Metody wytwarzania oprogramowania 23/31
Podsumowanie
Manifest zwinnościI zorientowanie na ludzi i komunikacjęI dopuszczenie zmianI jakość oprogramowania
Gra planistyczna
Programowanie parami
Wady XP
Metody wytwarzania oprogramowania 24/31
Geneza ewolucji oprogramowania
Zmianajest naturalnym procesem w cyklu rozwojowym oprogramowania inie można jej uniknąć
I Zmiana środowiskaI Zmiana wymagańI Potrzeba ulepszaniaI Usuwanie błędów
Metody wytwarzania oprogramowania 25/31
Ewolucja a pielęgnacja
Ewolucja oprogramowania:Ewolucja oprogramowania (ang. software evolution) to proceszmian zachodzących w oprogramowaniu w czasie jego życia.
Pielęgnacja oprogramowania:Pielęgnacja oprogramowania (ang. software maintenance) toczynności modyfikujące program po jego dostarczeniu i wdrożeniu.Cele:
I poprawa błędówI poprawa wydajności lub innych atrybutów programuI adaptacja produktu do zmian w środowisku operacyjnym.
Metody wytwarzania oprogramowania 26/31
Czynniki wpływające na koszt pielęgnacji
Czynniki wpływające na koszt pielęgnacji:
I Dziedzina zastosowań systemuI Stabilność personelu pielęgnacyjnegoI Czas życia oprogramowaniaI Stabilność sprzętuI Jakość kodu i dokumentacji
Czynniki nie wpływające na koszt pielęgnacji
I Metoda zarządzania przedsięwzięciemI Dostępność zasobów
Metody wytwarzania oprogramowania 27/31
Inżynieria ponowna
I proces transformacji istniejącego oprogramowania (ang. legacysoftware) w celu poprawy jego pielęgnowalności
I niższe ryzyko niż w przypadku budowy nowego systemuI opłacalne, jeżeli koszt jest niższy od kosztu stworzenia nowego
systemuI stosowane w przypadku często ewoluujących fragmentów
systemu
Metody wytwarzania oprogramowania 28/31
Refaktoryzacja
Refaktoryzacja to:
I zmiana wewnętrznej struktury kodu programuI która zwiększa jego czytelność i obniża koszt pielęgnacjiI ale nie zmienia jego obserwowalnego zachowania
Metody wytwarzania oprogramowania 29/31
Koszt refaktoryzacji
Refaktoryzacja nie zwiększa funkcjonalności programu, alekosztuje:
I identyfikacja problemuI przekształcenie koduI weryfikacja poprawności
Koszt zależy od:
I własności języka oprogramowaniaI wsparcia ze strony narzędzi CASEI natury wykonywanego przekształceniaI liczby i jakości posiadanych testów
Metody wytwarzania oprogramowania 30/31
W wykładzie wykorzystano materiały
I Programowanie ekstremalne, Jerzy Nawrocki, Łukasz Olek,http://wazniak.mimuw.edu.pl/index.php?title=Io-12-wyk-toc
I Ewolucja oprogramowania i refaktoryzacja, Bartosz Walter,http://wazniak.mimuw.edu.pl/index.php?title=Io-13-wyk-toc
Metody wytwarzania oprogramowania 31/31