background image

Inżynieria oprogramowania

Pielęgnacja i ewolucja 

oprogramowania I

background image

Zawartość

Procesy ewolucji oprogramowania

Dynamika ewolucji oprogramowania

Pielęgnacja oprogramowania

Systemy dziedziczone

background image

Definicje

Ewolucja oprogramowania

 (ang. software 

evolution): proces zmian zachodzących w 
oprogramowaniu w czasie jego życia. 

Pielęgnacja oprogramowania

 (ang. 

software maintenance): czynności 
modyfikujące program po jego 
dostarczeniu i wdrożeniu. 

      

IEEE Standard for Software Maintenance No. 

1219    (1993) 

background image

Zmiany w oprogramowaniu

Zmiany w oprogramowaniu są 

nieuniknione: 

Użytkowanie oprogramowania może 

wymuszać nowe wymagania.

Następują zmiany w firmie używającej 

oprogramowanie. 

Istnieje potrzeba poprawy błędów. 

Może nastąpić zmiana sprzętu. 

Może istnieć potrzeba poprawy 

efektywności. 

background image

Znaczenie pielęgnacji 
oprogramowania

 

Duże firmy wkładają ogromne pieniądze w 

oprogramowanie, niezbędne do ich 

działania. 

W celu sprostania wymaganiom, 

oprogramowanie musi być ustawicznie 

aktualizowane. 

Budżet przeznaczony na oprogramowanie w 

dużych firmach na pielęgnację istniejących 

programów jest dużo większy niż budżet 

przeznaczony na nowe systemy 

informatyczne. 

background image

Model tworzenia i 
ewoluowania 
oprogramowania

Specyfikowanie

Specyfikowanie

Specyfikowanie

Projektowanie
 i i

mplementacja

Projektowanie
 i i

mplementacja

Projektowanie
 i i

mplementacja

Zatwierdzanie

Zatwierdzanie

Zatwierdzanie

wersja 1

wersja 3

wersja 2

Działanie

Działanie

Działanie

background image

Ewolucja, serwisowanie, 
wycofywanie

Tworzenie

Ewolucja

Serwisowanie

Wycofywanie

background image

Ewolucja, serwisowanie, 
wycofywanie

Ewolucja

Stan cyklu życia oprogramowania, kiedy 
implementowane są nowe wymagania. 

Serwisowanie

Stan, w którym poprawiane są błędy i  zmiany 
związane ze środowiskiem oprogramowania (nowy 
sprzęt, system operacyjny). Nie implementuje się 
nowej funkcjonalności, gdyż jest to nieopłacalne.

Wycofywanie

Oprogramowanie jest używane, ale żadne zmiany 
nie mają miejsca.

background image

Proces ewolucji 
oprogramowania

Proces ewolucji oprogramowania zależy 

od: 

Typu oprogramowania 

Metodologii tworzenia oprogramowania 

Umiejętności i doświadczenia personelu 

Ewolucja jest wynikiem potrzeby zmian w 

oprogramowaniu. 

Identyfikacja potrzebnych zmian i proces 

ewolucji przeplatają się w całym cyklu 

życia oprogramowania. 

background image

Identyfikacja zmian i proces 
ewolucji

Identyfikacja zmian

Nowy system

Propozycje zmian

Implementacja zmian

background image

Szkic procesu ewolucji

Żądanie

zmian

Analiza

zmian

Planowanie

wydania

Implementacja

zmian

Wydanie

systemu

Naprawa

usterek

Dostosowanie

do platformy

Rozszerzenie

systemu

background image

Implementacja zmian

Proponowane

zmiany

Analiza

wymagań

Aktualizacja
wymagań

Implementacja

wymagań

background image

Implementacja zmian

Propozycja i analiza nowych wymagań. Następnie 

przeprojektowanie, implementacja i testowanie 

systemu. 

Początkowa faza tego procesu może wymagać 

analizy systemu podlegającemu pielęgnacji, 

szczególnie jeśli zmiany implementuje zespół, 

który nie tworzył tego systemu. 

Analiza systemu podlegającego zmianom polega 

na zrozumieniu jego struktury, funkcjonalności 

oraz wpływu implementowanych zmian na 

system. 

background image

Pilne żądania zmian 

W pewnych przypadkach zmiany mogą być 
zaimplementowane z ominięciem pewnych 
kroków: 

Jeśli wykryto usterkę uniemożliwiającą 
poprawne działanie systemu. 

Jeśli zmiana środowiska ma nieoczekiwany 
wpływ na system 

Jeśli mają miejsce niespodziewane zmiany 
gospodarcze, przykładowo pojawienie się nowej 
konkurencji lub zmiany przepisów prawnych. 

background image

Proces awaryjnej naprawy

 

Żądanie

zmian

Analiza 

kodu

źródłoweg

o

Modyfikacja 

kodu źródłowego

Zmodyfikowany

system

Uwaga: każda naprawa awaryjna może prowadzić do pogorszenia 
się struktury systemu. Przyspiesza to proces starzenia się 
systemu, a zatem wprowadzenie nowych zmian staje się coraz 
trudniejsze, a koszty pielęgnacji rosną.

  

background image

Programowanie zwinne, a 
pielęgnacja

 

Filozofia programowania zwinnego opiera się 
na ciągłej ewolucji konstruowanego systemu. 

Z powodu niepełnej dokumentacji, proces 
ewolucji oprogramowania zbudowanego 
metodą zwinną jest trudny. 

Automatyczne testowanie wykorzystywane w 
programowaniu zwinnym może być 
przydatne w procesie ewolucji systemów 
tworzonych tradycyjnie. 

background image

Dynamika ewolucji 
programów

 

Dynamika ewolucji programów to studium 

stanu systemu. 

Większość wyników w tej dziedzinie 

przypisuje się Lehmanowi i Belady’emu 

(1985), którzy sformułowali zbiór „praw” 

zmiany systemu (prawa Lehmana). 

Prawa Lehmana powstały z empirycznych 

studiów związanych z wielkimi systemami 

informatycznymi. Nie jest jasne, czy zasady 

te obowiązują w przypadku małych i 

średnich systemów. 

background image

Prawa Lehmana

Ustawiczna zmiana

Program użytkowany w rzeczywistym środowisku 
nieuchronnie musi podlegać zmianom albo stawać się coraz 
mniej użyteczny w tym środowisku.

Rosnąca złożoność

W miarę jak ewoluujący program zmienia się , jego struktura 
staje się coraz bardziej złożona. Na zachowywanie i 
upraszczanie struktury trzeba przeznaczyć dodatkowe zasoby.

Samoregulacja

Ewolucja programu jest samoregulującym się procesem. 
Atrybuty systemu, takie jak wielkość, czas między wydaniami 
i liczba zgłoszonych błędów, są w przybliżeniu takie same dla 
wszystkich 

background image

Prawa Lehmana

Stabilność organizacyjna

W czasie ewolucji programu tempo jego rozwoju jest w 
przybliżeniu stałe i niezależne od wielkości zasobów (liczby 
wykonawców) przeznaczonych na zbudowanie systemu.

Stała zmiana

W czasie życia systemu przyrostowa zmiana jest stała w 
każdym

 

wydaniu.

Nieustanny wzrost funkcjonalności

Funkcjonalność systemu musi ustawicznie rosnąć , aby 
zadowolić użytkowników. 

background image

Prawa Lehmana

Spadek jakości

Wraz z dokonywaniem zmian pogarsza się struktura 
oprogramowania.

Sprzężenie zwrotne

Każda zmiana systemu ma wpływ na dalsze zmiany 
tego systemu.

background image

Stosowalność praw Lehmana

 

Prawa Lehmana wydają się sensowne dla 

wielkich systemów produkowanych przez 
wielkie firmy.

 

Nie jest jasne, jak należy je zmodyfikować 

dla: 

Systemów wykorzystujących użycie 

wielokrotne

Małych i średnich systemów 

Systemów tworzonych przez małe firmy 

background image

Podsumowanie części I

Tworzenie oprogramowania i jego ewolucję 

należy traktować jako zintegrowany, iteracyjny 

proces. 

Dla systemów zamkniętych koszty pielęgnacji 

są na ogół wyższe niż koszty utworzenia. 

Proces ewolucji oprogramowania sterowany jest 

potrzebą zmian. Zawiera on analizę wpływu 

zmian, planowanie nowego wydania systemu 

oraz implementację zmian. 

Prawa Lehmana są wynikiem analizy wielu 

dużych systemów informatycznych, wykonanej 

na przestrzeni wielu lat. 

background image

Inżynieria oprogramowania

Pielęgnacja i ewolucja 

oprogramowania II

background image

Pielęgnacja oprogramowania

 

Modyfikacja oprogramowania po oddaniu do 

użytku. 

Termin dotyczy na ogół produktów 

zamkniętych. O programach otwartych mówi 

się, że ewoluują tworząc kolejne wersje. 

Pielęgnacja na ogół nie prowadzi do dużych 

zmian architektonicznych. 

Zmian dokonuje się modyfikując komponenty 

systemu i ewentualnie dodając nowe. 

background image

Rodzaje pielęgnacji 

Pielęgnacja w celu naprawy usterek 

oprogramowania. (Błędy kodu, błędy 

projektowe, błędy w wymaganiach.)

 

Pielęgnacja w celu dostosowania 

oprogramowania do innego środowiska. 

(Zmiana sprzętu, systemu operacyjnego lub 

oprogramowania pomocniczego.)

 

Pielęgnacja w celu rozszerzenia lub 

zmodyfikowania funkcjonalności systemu, w 

odpowiedzi na zmiany gospodarcze lub 

organizacyjne. 

background image

Podział kosztów przy 
pielęgnacji

65%

17%

18%

background image

Koszty pielęgnacji 

Na ogół większe niż koszty wytworzenia. Dla 
gospodarczych systemów użytkowych 
porównywalne z kosztami wytworzenia. Dla 
systemów wbudowanych około cztery razy 
większe. (Skrajny przypadek to system tworzony 
przez Boeinga dla sił zbrojnych USA: ponad 100 
razy więcej!!) 

Koszty pielęgnacji rosną wraz z wiekiem 
oprogramowania. Dla bardzo starych systemów 
rosną gwałtownie. 

background image

Pielęgnacja prewencyjna

 

Polega na zaprojektowaniu takiej 
struktury programu, aby ułatwić jego 
późniejszą pielęgnację, w szczególności 
dodawanie nowych funkcjonalności. 
Pielęgnacja prewencyjna pochłania na 
ogół około 5% ogólnego kosztu 
wytworzenia. 

background image

Czynniki wpływające na koszt 
pielęgnacji

Stabilność zespołu 

Koszt pielęgnacji maleje, jeśli przynajmniej 
przez jakiś czas system pielęgnowany jest przez 
zespół wytwarzający. Na ogół jednak zespół ten 
rozwiązywany jest po zbudowaniu systemu. 

Zobowiązania umowne 

Często umowa pielęgnacyjna podpisana jest z 
inną firmą. Wówczas zespół wytwórczy nie ma 
motywacji, aby produkt był łatwy do 
pielęgnacji. 

background image

Czynniki wpływające na koszt 
pielęgnacji

Umiejętności personelu

 

Programiści często uważają pielęgnację za 
czynność mniej ambitny niż tworzenie. W 
konsekwencji, personel pielęgnacyjny ma 
często małe doświadczenie. 

Wiek i struktura programu 

W miarę upływu czasu struktura programu 
ulega degradacji. Ponadto stare programy 
są często napisane w starych językach i 
może brakować dokumentacji. 

background image

Przewidywanie pielęgnacji

 

Jakie części systemu sprawią największe 
trudności personelowi pielęgnującemu i 
jaki będzie ich koszt? 

Akceptacja zmiany systemu zależy od 
zdatności do pielęgnacji komponentów 
systemu, których zmiana dotyczy.

Zmiany systemu degradują jego strukturę. 

Koszty pielęgnacji zależą od liczby zmian, a 
koszty zmian zależą od łatwości 
pielęgnowania systemu. 

background image

Przewidywanie pielęgnacji

Przewidywanie

zdatności do

pielęgnacji

Przewidywanie

kosztów

pielęgnacji

Przewidywanie

zmian

systemu

Których części systemu

będą najczęściej

dotyczyły żądania zmian?

Jak dużo

spodziewamy się

żądań zmian?

Które części systemu

będą najdroższe

w pielęgnacji?

Jaki będzie koszt

pielęgnacji systemu

w czasie jego życia?

Jaki będzie koszt

pielęgnacji systemu

w następnym roku?

background image

Przewidywanie zmian

 

Przewidywanie zmian wymaga znajomości 
związku między systemem a jego 
zewnętrznym środowiskiem. Jeśli związek ten 
jest silny, zmiany w środowisku będą 
wymuszać zmiany w systemie. 

Czynniki wpływające na związek systemu i 
środowiska: 

Liczba i złożoność interfejsów systemu. 

Liczba zmiennych wymagań systemu. 

Procesy gospodarcze, w których używa się systemu. 

background image

Złożoność systemu i jego 
pielęgnacja

 

Koszty pielęgnacji można przewidzieć szacując 

złożoność systemu. Bardziej złożone systemy 

są droższe w pielęgnacji. Dlatego główne 

koszty pielęgnacji dotyczą na ogół niewielu 
(złożonych) komponentów systemu

Złożoność komponentu zależy od

 

Złożoności struktury sterowania 

Złożoności struktur danych 

Rozmiaru komponentu 

background image

Metryki procesu pielęgnacji

Następujące metryki, związane z 

dotychczasową pielęgnacją mogą być użyte do 

przewidywania kosztów dalszej pielęgnacji: 

Liczba zauważonych usterek. 

Średni czas potrzebny na wykonanie analizy zmian. 

Średni czas potrzebny na implementację zmiany. 

Liczba niespodziewanych żądań zmian. 

Jeśli któraś z tych metryk rośnie, 

prawdopodobnie zmniejsza się zdolność 

pielęgnacji systemu i rosną koszty. 

background image

Systemy odziedziczone

 

Systemy informatyczne używane przez 

przedsiębiorstwo przez bardzo długi 

czas. 

Systemy odziedziczone zwykle mocno 

odbiegają od swoich pierwowzorów. 

Struktura systemów odziedziczonych, w 

związku z wieloletnią pielęgnacją, jest 

na ogół znacznie zdegradowana. 

background image

Restrukturalizacja 
oprogramowania

 

Polega na ponownym zaimplementowaniu 

systemów odziedziczonych w celu 

zwiększenia ich zdatności do pielęgnacji. 

Restrukturalizacja nie zmienia 

funkcjonalności systemu. 

Restrukturalizacja unika głębokich zmian 

w architekturze systemu. 

Restrukturalizacja może obejmować 

ponowne dokumentowanie systemu. 

background image

Korzyści z 
restrukturalizacji 

Mniejsze ryzyko

Ponowne tworzenie oprogramowania jest 
ryzykowne. Można popełnić błędy w 
specyfikacji, mogą pojawić się kłopoty z 
tworzeniem, mogą być problemy z ludźmi. 

Mniejszy koszt

 

Przyjmuje się, że restrukturalizacja jest trzy 
do czterech razy tańsza niż tworzenie od 
nowa, 

background image

Proces restrukturalizacji

Pierwotny 

program

Dokumentacja

programu

Zmodularyzowany

program

Pierwotne

dane

Tłumaczenie

kodu

 źródłowego

Inżynieria

wstecz

Ulepszanie

struktury

programu

Modularyzacja

programu

Program

strukturalny

Restrukturalizacja

danych

Zrestrukturalizowane

dane

background image

Czynności restrukturalizacji

Tłumaczenie kodu źródłowego 

Kod programu jest tłumaczony na nowy język lub 

nowszą wersję języka dotychczasowego. 

Inżynieria wstecz 

Program jest analizowany. Wydobywa się z niego 

informacje, które pomogą w udokumentowaniu jego 

struktury i funkcjonalności. 

Ulepszanie struktury programu 

Struktura sterowania programu jest analizowana i 

modyfikowana tak, aby program był bardziej 

czytelny. 

background image

Czynności restrukturalizacji

 

Modularyzacja programu 

Grupuje się powiązane części programu i, 
gdy jest to potrzebne, usuwa się 
nadmiarowość. W pewnych przypadkach 
można zmienić sprzętową architekturę 
systemu (np. przejście od systemu 
scentralizowanego na system rozproszony). 

Restrukturalizacja danych 

Zmienia się dane przetwarzane przez 
program tak, aby odzwierciedlić zmiany 
programu. 

background image

Koszty restrukturalizacji

 

Koszty restrukturalizacji zależą od 

zakresu czynności. Najtańsze jest 

tłumaczenie kodu źródłowego, 

najdroższe są zmiany dotyczące 

architektury sprzętowej. Ponadto należy 

uwzględnić następujące czynniki: 

Jakość strukturalizowanego oprogramowania 

Wspomaganie narzędziowe strukturalizacji 

Zakres niezbędnej konwersji danych 

Dostępność ekspertów (dotyczy szczególnie 

systemów wykorzystujących bardzo stare 

języki oprogramowania). 

background image

Granice restrukturalizacji

 

Istnieją granice stopnia ulepszania 

oprogramowania dzięki strukturalizacji. 

Nie da się przekształcić systemu w ramach 

różnych paradygmatów (np. z języka 

funkcyjnego na obiektowy). 

Nie da się automatycznie przeprowadzić 

dużych zmian architektonicznych. 

background image

Faktoryzacja

 

Faktoryzacja jest ustawicznym procesem 
ulepszania oprogramowania w trakcie jego 
tworzenia i pielęgnacji. Jej celem jest 
uniknięcie degradacji struktury i kodu 
oprogramowania, a zatem zmniejszenie 
kosztów pielęgnacji. 

Faktoryzacja jest nieodłączną częścią 
programowania zwinnego. 

background image

Typowe usterki kodu

 

Duplikacja kodu. 

Bardzo długa metoda. 

Bardzo rozbudowana klasa (reprezentuje kilka 

klas logicznych). 

Komentarze opisujące realizację kodu. 

Niepotrzebnie złożony wzorzec projektowy. 

Łańcuchy wywołań metod. 

Pojemnik na dane (klasa nie posiada metod). 

Podklasa w małym stopniu wykorzystuje 

odziedziczone atrybuty i pola. 

background image

Zarządzanie systemami 
odziedziczonymi 

Firmy wykorzystujące systemy odziedziczone 

muszą wybrać strategię pielęgnowania ich: 

Całkowite zezłomowanie systemu.

 Należy to 

uczynić, jeśli system nie odwzorowuje dobrze 

procesów gospodarczych firmy. Ma to na ogół 

miejsce, jeśli procesy te ulegną istotnej zmianie. 

Kontynuacja użytkowania systemu.

 Należy to 

uczynić, jeśli system jest potrzebny, stabilny i 

jego użytkownicy nie zgłaszają dużej liczby 

zmian. 

background image

Zarządzanie systemami 
odziedziczonymi

Restrukturalizacja systemu.

 Należy wybrać tę 

opcję jeśli jakość systemu została zdegradowana 

przez liczne zmiany pielęgnacyjne, a ciągle 

pojawiają się żądania nowych zmian. 

Zastąpienie systemu, lub jego części, przez 

nowe oprogramowanie.

 Tę opcję należy wybrać 

jeśli nowe czynniki, przykładowo zmiana sprzętu, 

powodują, że system nie może działać lub 

można znacznie zwiększyć jego efektywność. 

background image

Ocena systemu 
odziedziczonego 

System odziedziczony należy oceniać z 
dwóch punktów widzenia. 

Gospodarczy punkt widzenia polega na ocenie 
wartości systemu dla przedsiębiorstwa. 

Systemowy punkt widzenia polega na jakości 
oprogramowania. 

Łącznie wartość gospodarcza i jakość 
systemu pomagają w podjęciu decyzji, co 
dalej robić z systemem odziedziczonym 

background image

Kategorie systemów 
odziedziczonych

 

Niska jakość, mała wartość gospodarcza 

Utrzymanie tych systemów w użyciu będzie 

kosztowne, a stopa zwrotu dla przedsiębiorstwa 

będzie mała. Są to kandydaci do złomowania. 

Niska jakość, duża wartość gospodarcza 

Wnoszą duży wkład w działanie przedsiębiorstwa, 

a zatem nie można ich złomować. Niska jakość 

oznacza jednak, że koszty ich działania są 

wysokie. Są to kandydaci do restrukturalizacji lub 

wymiany (jeśli są gotowe komponenty 

wielokrotnego użycia). 

background image

Kategorie systemów 
odziedziczonych

 

Wysoka jakość, mała wartość gospodarcza. 

Nie warto podejmować ryzyka wymiany tych 

systemów. Można kontynuować zwykłą 

pielęgnację tych systemów; można też je 

zezłomować. 

Wysoka jakość, duża wartość gospodarcza 

Systemy należy dalej użytkować, a ich wysoka 

jakość oznacza, że nie ma potrzeby 

inwestowania w ich restrukturalizację lub 

wymianę. Należy kontynuować zwykłą 

pielęgnację systemu. 

background image

Ocena wartości gospodarczej 
systemu odziedziczonego 

Punkty widzenia następujących podmiotów 

powinny być wzięte pod uwagę: 

Użytkownicy systemu. Jak oceniają skuteczność 

systemu we wspomaganiu procesów gospodarczych? 

Jak duża część funkcjonalności jest wykorzystywana? 

Klienci biznesowi. Czy wyniki działania systemu są 

przezroczyste dla klientów? 

Menedżerowie liniowi. Czy system wnosi istotny 

wkład w powodzenie ich działu? Czy dane 

przechowywane w systemie są krytyczne w pracy 

działu tego menedżera? 

background image

Ocena wartości gospodarczej 
systemu odziedziczonego

Menedżerowie informatyki. Czy występują 
trudności w znalezieniu ludzi do pielęgnacji 
systemu? Czy system pochłania zasoby, 
które można by lepiej wykorzystać w innych 
systemach? 

Wyżsi menedżerowie. Czy system i związane 
z nim procesy gospodarcze wnoszą istotny 
wkład w realizację celów gospodarczych 
przedsiębiorstwa? 

background image

Oszacowanie technicznej 
jakości systemu 

Szacując techniczną jakość systemu 
należy oszacować zarówno samą aplikację, 
jak i środowisko, w którym aplikacja jest 
używana. Na środowisko składa się sprzęt 
oraz oprogramowanie pomocnicze 
(kompilatory, narzędzia CASE, systemy 
operacyjne, systemy baz danych itp.) 
potrzebne do działania oraz pielęgnacji 
i/lub restrukturalizacji systemu. 

background image

Czynniki wpływające na 
ocenę środowiska 

Stabilność dostawców

Czy dostawcy sprzętu i oprogramowania pomocniczego są 
obecni na rynku? Jeśli tak, czy są finansowo stabilni, aby 
kontynuować działanie? Jeśli nie, czy ktoś inny może przejąć 
ich rolę? 

Wskaźnik awarii

Czy wskaźnik awarii sprzętu jest wysoki? Jak często 
występują awarie oprogramowania pomocniczego 
wymagające ponownego 

uruchomienia systemu?

Wiek

Jaki jest wiek sprzętu i oprogramowania pomocniczego?

Wydajność

Czy wydajność oprogramowania pomocniczego jest 
wystarczająca?

background image

Czynniki wpływające na 
ocenę środowiska 

Obsługa lokalna

Jaka obsługa lokalna jest wymagana w celu utrzymania 
sprzętu i oprogramowania pomocniczego? Jaki jest koszt 
obsługi?

 

Koszty pielęgnacji

Jakie są koszty serwisowania sprzętu i kupna kolejnych 
licencji na oprogramowanie pomocnicze?

Zdolność do współpracy

Czy występują problemy związane ze współpracą w 
ramach oprogramowania pomocniczego? Przykładowo, 
czy aktualna wersja systemu operacyjnego umożliwia 
działanie posiadanych kompilatorów? 

background image

Czynniki wpływające na 
ocenę aplikacji

Zrozumiałość

Jak trudno zrozumieć kod źródłowy aplikacji? Jak 
skomplikowane są struktury sterowania i struktury 
danych

Dokumentacja

Jaka dokumentacja jest dostępna? Czy dostępna 
dokumentacja jest spójna i aktualna?

Dane

W jakim stopniu dane są zduplikowane w różnych 
plikach? Czy istnieje explicite model danych? Czy 
zgromadzone dane są spóje i aktualne?

background image

Czynniki wpływające na 
ocenę aplikacji

Wydajność

Czy wydajność aplikacji jest wystarczająca? Czy 
problemy z wydajnością rzeczywiście mają wpływ na 
użytkowników systemu?

Język programowania

Czy istnieją nowoczesne kompilatory (interpretery) 
dla języka użytego do napisania aplikacji?  Czy ten 
język jest nadal używany w nowych aplikacjach?

background image

Czynniki wpływające na 
ocenę aplikacji

Zarządzanie konfiguracjami

Czy kolejne wersje systemu były właściwie zarządzane? 
Czy istnieją dokładne opisy wersji komponentów, z których 
składa się aktualna wersja systemu?

Dane testowania

Czy istnieją dane testowe? Czy istnieją dane testów 
regresywnych? (Testowanie regresywne: testowanie po 
dodaniu nowej funkcjonalności w celu upewnienia się, że 
zmiany w kodzie nie spowodowały błędów w jednej z 
funkcji działającej poprawnie w poprzedniej wersji.

Umiejętności personelu

Czy w firmie pracuje osoba, która jest w stanie pielęgnować 
aplikację? Czy w firmie pracują osoby znające system?

background image

Metryczna ocena aplikacji

 

Oceniając aplikację, możemy dodatkowo 
rozważać następujące miary: 

Liczba żądań zmian. Im większa, tym niższa 
jakość systemu. 

Liczba interfejsów użytkownika. Im większa, tym 
większe prawdopodobieństwo, że w interfejsach 
wystąpią niespójności i redundancje. 

Objętość danych. Im większa, tym większe 
prawdopodobieństwo, że dane będą niespójne. 

background image

Podsumowanie części II

Istnieją trzy typy pielęgnacji 
oprogramowania 

W celu naprawy błędów 

W celu dostosowania systemu do innego 
środowiska 

W celu dostarczenia lub zmodyfikowania nowej 
funkcjonalności. 

Restrukturalizacja polega na ponownym 
zaimplementowaniu systemu w celu jego 
łatwiejszej pielęgnacji. 

background image

Podsumowanie części II

Faktoryzacja jest ustawicznym procesem 

ulepszania oprogramowania w trakcie 

jego tworzenia i pielęgnacji. Jej celem jest 

uniknięcie degradacji struktury i kodu 

oprogramowania, a zatem zmniejszenie 

kosztów pielęgnacji. 

Wartość gospodarcza i jakość systemu 

odziedziczonego decyduje czy system ten 

należy zezłomować, zrestrukturalizować 

czy dalej poddawać zwykłej pielęgnacji. 


Document Outline