Io 13 Ewolucja oprogramowania i refaktoryzacja

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

1

In

ż

ynieria oprogramowania

Ewolucja oprogramowania i refaktoryzacja

Prowadz

ą

cy:

Bartosz Walter

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

2

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (2)

Plan wykładów

Zasady skutecznego działania
Specyfikacja wymagań (przypadki użycia)
Przeglądy artefaktów (inspekcje Fagana)
Język UML, cz. I
Język UML, cz. II
Metody formalne (sieci Petriego)
Wzorce projektowe
Zarządzanie konfiguracją (CVS)
Wprowadzenie do testowania
Automatyzacja wykonywania testów (jUnit)
Programowanie Ekstremalne

Ewolucja oprogramowania i refaktoryzacja

Wykład dotycz

ą

cy ewolucji oprogramowania i refaktoryzacji jest ostatnim z

cyklu wykładów po

ś

wi

ę

conych in

ż

ynierii oprogramowania. Przedstawia

przyczyn

ę

ci

ą

głe ewolucji oprogramowania, czynników wpływaj

ą

cych na

jej post

ę

p, sposoby piel

ę

gnacji oprogramowania i omawia zwi

ą

zane z ni

ą

koszty.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

3

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (3)

Agenda

1.Geneza ewolucji oprogramowania
2.Prawa Lehmana
3.Rozwój jądra systemu Linux
4.Koszty pielęgnacji
5.Proces pielęgnacji oprogramowania
6.Refaktoryzacja oprogramowania

W trakcie wykładu zostan

ą

omówione nast

ę

puj

ą

ce zagadnienia

•przyczyny ewolucji oprogramowania, z uwzgl

ę

dnieniem czynników

maj

ą

cych na ni

ą

wpływ

•prawa Lehmana, b

ę

d

ą

ce obserwacjami dotycz

ą

cymi sposobów, w jaki

systemy ewoluuj

ą

•rozwój j

ą

dra systemu Linux, które jest kontrprzykładem dla praw

Lehmana, wraz z wyja

ś

nieniem przyczyny ró

ż

nic pomi

ę

dzy nimi

•czynniki wpływaj

ą

ce na koszt piel

ę

gnacji oprogramowania

•typowy proces piel

ę

gnacji oprogramowania

•refaktoryzacja, jako technika obni

ż

enia kosztów piel

ę

gnacji w niektórych

modelach cyklu

ż

ycia programu.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

4

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (4)

Geneza ewolucji oprogramowania

Zmiana

wymaga

ń

Zmiana

ś

rodowiska

Usuwanie

ę

dów

Potrzeba

ulepszania

Zmiana

jest naturalnym procesem

w cyklu rozwojowym oprogramowania i nie mo

ż

na jej unikn

ąć

Zmiana jest naturalnym elementem

ś

wiata – ka

ż

dy jego element ulega

ewolucji. Podobnie jest z oprogramowaniem: w trakcie swojego

ż

ycia

program ewoluuje w odpowiedzi na ró

ż

ne bod

ź

ce i siły, które na niego

wpływaj

ą

:

•wpływ

ś

rodowiska jest najwa

ż

niejsz

ą

sił

ą

, poniewa

ż

program istnieje w

kontek

ś

cie

ś

rodowiska. Ka

ż

da zmiana w

ś

rodowisku wywołuje potrzeb

ę

zmiany oprogramowania

•zmiana wymaga

ń

jest cz

ęś

ciowo powi

ą

zana ze

ś

rodowiskiem, ale tak

ż

e

z niemo

ż

no

ś

ci

ą

pełnego opisania funkcjonalno

ś

ci oprogramowania zanim

ono powstanie i zostanie wdro

ż

one. Dlatego pocz

ą

tkowe wymagania

zmieniaj

ą

si

ę

, a w odpowiedzi na nie – tak

ż

e program

•usuwanie bł

ę

dów jest oczywist

ą

składow

ą

cyklu

ż

ycia ka

ż

dego programu.

ę

dy maj

ą

ż

n

ą

przyczyn

ę

, od nie

ś

cisło

ś

ci w specyfikacji wymaga

ń

po

ę

dy implementacyjne, ale zawsze skutkuj

ą

ni

ż

sz

ą

postrzegan

ą

jako

ś

ci

ą

programu

•potrzeba ulepszania programu jest niejako wewn

ę

trznym d

ąż

eniem do

doskonało

ś

ci. Ulepszanie nie oznacza tutaj poprawy funkcjonalno

ś

ci, ale

wła

ś

nie pozafunkcjonalnych atrybutów systemu.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

5

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (5)

Waga piel

ę

gnacji oprogramowania

0%

10%

20%

30%

40%

50%

60%

70%

1950

1960

1970

1980

1990

2000

2010

2020

Rok

U

d

z

ia

ł

p

ro

je

k

w

p

ie

l

ę

g

n

a

c

y

jn

y

c

h

Capers Jones (1998)

Aby uzmysłowi

ć

sobie istot

ę

procesu piel

ę

gnacji oprogramowania, warto

przeanalizowa

ć

powy

ż

szy wykres, przedstawiaj

ą

cy dotychczasowy i

prognozowany udział przedsi

ę

wzi

ęć

piel

ę

gnacyjnych w stosunku do

wszystkich przedsi

ę

wzi

ęć

zwi

ą

zanych z oprogramowaniem. Wynika z

niego,

ż

e udział liczby przedsi

ę

wzi

ęć

informatycznych, które dotycz

ą

jedynie piel

ę

gnacji istniej

ą

cego oprogramowania, stale ro

ś

nie, z ok. 10%

w latach 50-tych, do ok. 60% obecnie. Trend ten, cho

ć

w mniejszym

nasileniu, zostanie utrzymany w najbli

ż

szych latach i w roku 2020

osi

ą

gnie ok 67%

Wykres mo

ż

na interpretowa

ć

w ten sposób,

ż

e obecnie rozwój nowego

oprogramowania wymaga znacznie mniejszych nakładów, ni

ż

piel

ę

gnacja

ju

ż

istniej

ą

cego. Wskazuje to na rosn

ą

c

ą

wag

ę

piel

ę

gnacji jako fazy w

cyklu

ż

ycia programu.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

6

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (6)

Waga piel

ę

gnacji oprogramowania cd.

Prawo Moore'a

wydajno

ść

procesora

zwi

ę

ksza si

ę

wykładniczo

Oprogramowanie nie
osi

ą

ga nawet liniowego

wzrostu..

Kolejny przykład dowodz

ą

cy wzrostu wagi piel

ę

gnacji programów dotyczy

znanego prawa Moore'a, które mówi,

ż

e wydajno

ść

procesorów

dost

ę

pnych na rynku podwaja si

ę

ś

rednio co osiemna

ś

cie miesi

ę

cy. Ta

wykładnicza zale

ż

no

ść

w zasadzie sprawdza si

ę

od dłu

ż

szego czasu,

cho

ć

mówi si

ę

tak

ż

e o kresie mo

ż

liwo

ś

ci technologii opartych na krzemie,

który zmieni t

ę

zasad

ę

.

Jednak tworzenie oprogramowania o zło

ż

ono

ś

ci wzrastaj

ą

cej w

podobnym tempie jest niemo

ż

liwe; co wi

ę

cej, nawet znacznie mniej

ambitny cel, jakim jest liniowy wzrost rozmiaru programów, tak

ż

e nie

został osi

ą

gni

ę

ty. To oznacza,

ż

e oprogramowanie w swoim rozwoju

napotyka na istotn

ą

przeszkod

ę

, która nie istnieje w przypadku sprz

ę

tu.

T

ą

przeszkod

ą

jest problem z zarz

ą

dzaniem zło

ż

ono

ś

ci

ą

i procesami

starzenia si

ę

oprogramowania.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

7

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (7)

Ewolucja a piel

ę

gnacja

Ewolucja oprogramowania

(ang. software evolution) to

proces zmian zachodz

ą

cych w oprogramowaniu w czasie

jego

ż

ycia.

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 operac.

IEEE Standard for Software Maintenance No. 1219 (1993)

Poniewa

ż

dot

ą

d zamiennie pojawiały si

ę

poj

ę

cia ewolucji oprogramowania

i jego piel

ę

gnacji, dlatego warto bli

ż

ej im si

ę

przyjrze

ć

i okre

ś

li

ć

je

precyzyjniej.

Ewolucja oprogramowania jest procesem jego rozwoju sterowanym
zmianami wymaga

ń

, popraw

ą

ę

dów czy te

ż

rozwojem sprz

ę

tu. Ewolucja

jest nieunikniona: oprogramowanie ewoluuje, poniewa

ż

to le

ż

y w jego

naturze.

Natomiast piel

ę

gnacja to zaplanowany proces, który słu

ż

y do

kontrolowania ewolucji i czynników, które na ni

ą

wpływaj

ą

. Piel

ę

gnacja ma

na celu wykrywanie i usuwanie bł

ę

dów, popraw

ę

atrybutów jako

ś

ciowych

działania programu oraz adaptacj

ę

do zmian w nim zachodz

ą

cych.

Poniewa

ż

jednak, w kontek

ś

cie oprogramowania, ewolucja zawsze

wymaga jakiej

ś

formy piel

ę

gnacji, dlatego poj

ę

cia te czasem stosuje si

ę

zamiennie.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

8

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (8)

Piel

ę

gnacja w modelu kaskadowym

wymagania

projektowanie

implementacja

weryfikacja

piel

ę

gnacja

...

dostawca

u

ż

ytkownik

Model kaskadowy rozwoju oprogramowania zakłada,

ż

e kolejne fazy s

ą

realizowane przez dostawc

ę

(producenta) do momentu wdro

ż

enia,

natomiast piel

ę

gnacja programu zaczyna si

ę

wraz z przekazaniem go

u

ż

ytkownikowi. Takie zało

ż

enie bardzo utrudnia przepływ informacji

zwrotnej mi

ę

dzy u

ż

ytkownikiem a dostawc

ą

. W efekcie program przestaje

odpowiada

ć

potrzebom i oczekiwaniom u

ż

ytkownika, natomiast dostawca

nie jest o nich powiadamiany, poniewa

ż

u

ż

ytkownik jest zainteresowany

utrzymaniem systemu w ruchu, nawet za cen

ę

jego piel

ę

gnacji.

Powoduje to mał

ą

efektywno

ść

piel

ę

gnacji realizowanej w modelu

kaskadowym.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

9

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (9)

Klasyfikacja programów a ewolucja

Program typu S (oparty na Specyfikacji)

zało

ż

enia: dost

ę

pna jest pełna specyfikacja systemu

kryterium jako

ś

ci: zgodno

ść

ze specyfikacj

ą

ewolucja: brak (modyfikacja



nowy problem



nowy program)

Program typu P (rozwi

ą

zuj

ą

cy Problem)

zało

ż

enia: system w przybli

ż

eniu odtwarza rzeczywisto

ść

kryterium jako

ś

ci: akceptowalne rozwi

ą

zanie problemu

ewolucja: prawdopodobna – poprawa programu, ewolucja

ś

rodowiska

Program typu E (osadzony w rzEczywisto

ś

ci)

zało

ż

enia: system funkcjonuje w rzeczywistym

ś

wiecie

kryterium jako

ś

ci: subiektywna ocena u

ż

ytkownika

ewolucja: nieunikniona, program i jego

ś

rodowisko nieustannie

oddziałuj

ą

na siebie

W kontek

ś

cie piel

ę

gnacji oprogramowania, Lehman wprowadził prosty

podział programów na trzy kategorie:

•programy typu S, które s

ą

oparte w cało

ś

ci na formalnej specyfikacji i

dlatego nie podlegaj

ą

ewolucji

•programy typu P, które reaguj

ą

na zmiany w

ś

rodowisku i w

akceptowalny sposób dostarczaj

ą

ś

rodków do interakcji z nim

•programy typu E, które s

ą

osadzone w

ś

rodowisku i nieustannie z nim

oddziałuj

ą

, co powoduje potrzeb

ę

ci

ą

głych zmian

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

10

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (10)

Programy typu S

specyfikacja

PROGRAM

rozwiązanie

świat

• pełna i kompletna

specyfikacja

• poprawno

ść

programu

wzgl

ę

dem specyfikacji

• niezale

ż

no

ść

od

ś

rodowiska

• brak ewolucji

• modyfikacja specyfikacji

= nowy problem

zmiana

Programy typu S reprezentuj

ą

teoretyczn

ą

gał

ąź

rozwoju in

ż

ynierii

oprogramowania. Wobec nich zakłada si

ę

,

ż

e powstały na podstawie

pełnej i kompletnej specyfikacji, w której zawarto wszystkie niezb

ę

dne

informacje w sposób jednoznaczny i niesprzeczny. Przyjmuje si

ę

zało

ż

enie,

ż

e specyfikacja odpowiada niezmiennym potrzebom

u

ż

ytkownika, a zatem jego udział w pracach nad systemem nie jest

konieczny. Jedyn

ą

podstaw

ą

do tworzenia programu, a nast

ę

pnie jego

weryfikacji jest wła

ś

nie specyfikacja. Wszelkie cechy, które

oprogramowanie posiada, a które nie zostały uwzgl

ę

dnione w specyfikacji,

s

ą

ignorowane, poniewa

ż

z punktu widzenia specyfikacji nie istniej

ą

.

W takim modelu proces ewolucyjny w zasadzie nie wyst

ę

puje, poniewa

ż

wszelkie

żą

dania zmian w oprogramowaniu, niezale

ż

nie od ich natury i

ź

ródła, powoduj

ą

stworzenie nowej specyfikacji, której implementacj

ą

jest

zupełnie nowy program.

Oczywi

ś

cie, model ten jest rzadko spotykany w praktyce: ju

ż

zało

ż

enie o

kompletno

ś

ci i niespójno

ś

ci specyfikacji ogranicza jego stosowalno

ść

jedynie do bardzo małych problemów, zwykle o znaczeniu teoretycznym.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

11

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (11)

Programy typu P

specyfikacja

PROGRAM

rozwiązanie

świat

zmiana

model

• model w przybli

ż

eniu

odtwarza

ś

rodowisko

• produkuj

ą

akceptowalne

rozwi

ą

zanie problemu

• zmiany w

ś

rodowisku

wpływaj

ą

na model

• program ulega ewolucji

naprawczej

Kategori

ą

programów, która w wi

ę

kszym stopniu nawi

ą

zuje do

rzeczywisto

ś

ci rozwoju i ewolucji oprogramowania, s

ą

programy typu P.

Model budowany na podstawie obrazu

ś

rodowiska (

ś

wiata rzeczywistego)

na

ś

laduje pewne cechy tego

ś

rodowiska, ale z natury jest niekompletny.

Niepełno

ść

modelu jednak jest po

żą

dan

ą

cech

ą

, poniewa

ż

pozwala

pomija

ć

nieistotne elementy

ś

rodowiska, a co za tym idzie – stosowa

ć

to

podej

ś

cie do wi

ę

kszych i bardziej zło

ż

onych zada

ń

ni

ż

w przypadku

programów typu S. Na podstawie modelu powstaje specyfikacja (równie

ż

niepełna, z mo

ż

liwymi sprzeczno

ś

ciami), a nast

ę

pnie program. Je

ż

eli w

ś

rodowisku zachodzi zmiana, która wymaga odzwierciedlenia w

programie, wówczas program podlega modyfikacji.

W przypadku programów nale

żą

cych do tej kategorii

ś

rodowisko posiada

wpływ na ewolucj

ę

programu, a sam program jest z natury ułomnym

narz

ę

dziem pozwalaj

ą

cym w przybli

ż

eniu rozwi

ą

zywa

ć

postawiony

problem. Program jest uwa

ż

any za poprawny, je

ż

eli produkuje

akceptowalne (z subiektywnego punktu widzenia u

ż

ytkownika)

rozwi

ą

zania. Zachowanie programu powoduj

ą

ce stworzenie

nieakceptowalnego (z powodu bł

ę

du lub zbyt ubogiej funkcjonalno

ś

ci)

rozwi

ą

zania stanowi podstaw

ę

ewolucji takiego programu.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

12

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (12)

Programy typu E

specyfikacja

PROGRAM

świat

zmiana

model

• system osadzony i

pracuj

ą

cy w

ś

rodowisku

• specyfikacja na podstawie

niedoskonałego modelu

• ci

ą

gła informacja zwrotna

od u

ż

ytkowników

ś

wiat i program podlegaj

ą

zmianom wskutek
interakcji mi

ę

dzy sob

ą

Programy typu E odpowiadaj

ą

du

ż

ej grupie rzeczywistych programów,

osadzonych i pracuj

ą

cych przez długi czas w

ś

rodowisku, dla którego

powstały. S

ą

to zwykle du

ż

e systemy, tworzone na zamówienie przez

du

ż

e organizacje wytwarzaj

ą

ce oprogramowanie. Specyfikacja i model s

ą

– podobnie jak w przypadku programów typu P – z natury niepełne i mog

ą

posiada

ć

ę

dy lub luki. Jednak najwi

ę

ksza ró

ż

nica polega na integracji

programu ze

ś

rodowiskiem, co oznacza,

ż

e oba elementy na siebie

nieustannie oddziałuj

ą

. W ten sposób zmiana w

ś

rodowisku natychmiast

oddziałuje na program, wywieraj

ą

c potrzeb

ę

zmiany tak

ż

e w nim.

Powoduje to niemal nieustanny napływ informacji zwrotnej od
u

ż

ytkowników systemu, co pozwala na wprowadzanie zmian

najistotniejszych z ich punktu widzenia.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

13

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (13)

"Prawa" Lehmana

"Prawa" Lehmana

1.

Prawo nieustannej zmiany

2.

Prawo wzrastaj

ą

cej

zło

ż

ono

ś

ci

3.

Prawo samoregulacji

4.

Prawo organizacyjnej
stabilno

ś

ci

5.

Prawo zachowania
przyzwyczaje

ń

6.

Prawo ci

ą

głego wzrostu

7.

Prawo spadku jako

ś

ci

8.

Prawo przyrostowego
rozwoju

Oparte na obserwacjach rozwoju
kilku du

ż

ych systemów (m.in. IBM

OS/360)

Dotycz

ą

du

ż

ych systemów (typu E)

tworzonych na zamówienie w
du

ż

ych organizacjach

Obserwacje cz

ęś

ciowo

potwierdzone przez wyniki projektów
z serii FEAST

Niesprawdzone w innych typach
oprogramowania (S i P)

Raczej obserwacje lub hipotezy ni

ż

prawa

Na podstawie tej klasyfikacji M. Lehman, pocz

ą

wszy od roku 1968,

zaproponował osiem praw dotycz

ą

cych natury ewolucji oprogramowania.

Kolejne prawa pojawiały si

ę

w dłu

ż

szych odst

ę

pach czasu, a

ż

do lat 90-

tych XX wieku. Prawa te zostały opracowane nie na podstawie analizy
statystycznej czy metod formalnego dowodzenia, lecz na podstawie
obserwacji ewolucji kilku du

ż

ych systemów informatycznych (klasycznym

przykładem był IBM OS/360). To spowodowało krytyk

ę

u

ż

ytego przez

Lehmana poj

ę

cia 'prawo', skoro jego obserwacje dotyczyły kilku arbitralnie

wybranych systemów. Wyniki te zostały ponownie zbadane w serii
projektów FEAST, i nazwa 'prawa Lehmana' utrzymała si

ę

.

Warto pami

ę

ta

ć

,

ż

e prawa Lehmana dotycz

ą

programów typu E – du

ż

ych,

wielokrotnie modyfikowanych systemów, które ewoluuj

ą

przez dłu

ż

szy

okres czasu. Jak dot

ą

d brak jest potwierdzenia stosowalno

ś

ci tych praw

dla innych typów programów.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

14

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (14)

Prawo nieustannej zmiany

Program stosowany w rzeczywistym

ś

rodowisku musi by

ć

stale do niego adaptowany

. W przeciwnym przypadku

b

ę

dzie stopniowo coraz mniej u

ż

yteczny.

Prawo to przypomina zasady rz

ą

dz

ą

ce

ś

wiatem natury: organizm

umieszczony w okre

ś

lonym

ś

rodowisku dostosowuje si

ę

do niego lub

ginie. W przypadku oprogramowania sytuacja jest nieco bardziej zło

ż

ona:

potrzeba zmian wynika nie z samego programu, ale z informacji zwrotnej
pochodz

ą

cej z samego

ś

rodowiska. To

żą

dania zmian funkcjonalnych

powoduj

ą

konieczno

ść

modyfikacji (poprawy bł

ę

du, rozszerzenia

funkcjonalnego etc.) oprogramowania.

Istnieje te

ż

dodatkowy czynnik: program posługuje si

ę

pewnym modelem

rzeczywisto

ś

ci, z któr

ą

współpracuje. Im bardziej model ten nie odpowiada

faktycznemu stanowi, tym bardziej konieczne staje si

ę

dostosowanie

modelu do zmieniaj

ą

cej si

ę

rzeczywisto

ś

ci.

Je

ż

eli d

ąż

enie do zmian zostanie w pewien sposób zahamowane,

wówczas w miar

ę

upływu czasu oprogramowanie b

ę

dzie w coraz

mniejszym stopniu odpowiadało potrzebom

ś

rodowiska, a co za tym idzie

- postrzegane jako coraz mniej u

ż

yteczne.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

15

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (15)

Prawo wzrastaj

ą

cej zło

ż

ono

ś

ci

Wraz z ewolucj

ą

oprogramowania jego

struktura staje

si

ę

coraz bardziej zło

ż

ona

.

Piel

ę

gnacja i upraszczanie struktury wymagaj

ą

dodatkowych nakładów.

Drugie prawo Lehmana opisuje zjawisko znane w wielu dziedzinach fizyki:
zwi

ę

kszanie nieuporz

ą

dkowania (entropii) w miar

ę

upływu czasu.

Wprowadzanie zmian do oprogramowania (nazywanych cz

ę

sto

progresywnymi) zwykle narusza pierwotn

ą

struktur

ę

programu, a

kumulacja zmian tylko ten proces nasila. Liczba powi

ą

za

ń

i interakcji

pomi

ę

dzy ró

ż

nymi modułami w systemie zwi

ę

ksza si

ę

, co utrudnia

zrozumienie go, a tak

ż

e jego dalsze modyfikacje.

Alternatyw

ą

jest poniesienie dodatkowych nakładów w trakcie piel

ę

gnacji,

po

ś

wi

ę

conych na czynno

ś

ci antyregresywne: upraszczanie struktury i

lepsze wkomponowanie wprowadzanych zmian w istniej

ą

ce

oprogramowanie.

Równowaga pomi

ę

dzy czynno

ś

ciami progresywnymi a regresywnymi

zale

ż

y od ilo

ś

ci i rodzaju informacji zwrotnej płyn

ą

cej ze

ś

rodowiska:

inaczej s

ą

obsługiwane

żą

dania zwi

ą

zane z napraw

ą

ę

dów, a inaczej z

rozszerzeniami funkcjonalnymi.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

16

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (16)

Prawo samoregulacji

Ewolucja oprogramowania jest samoreguluj

ą

cym

procesem

o rozkładzie atrybutów procesu i produktu

bliskim rozkładowi normalnemu.
Podstawowe

atrybuty procesu ewolucji pozostaj

ą

stałe

dla ka

ż

dego wydania.

Proces ewolucji jest wypadkow

ą

sił obecnych w

ś

rodowisku oraz reakcji

na nie. Z uwagi na liczno

ść

tych sił, na ró

ż

nym poziomie i o ró

ż

nym

nat

ęż

eniu, wiele obserwacji dokonanych na istniej

ą

cym oprogramowaniu

wskazuje,

ż

e ich suma posiada rozkład normalny. Oznacza to,

ż

e taki

system sterowany informacj

ą

zwrotn

ą

płyn

ą

c

ą

ze

ś

rodowiska ma

wła

ś

ciwo

ś

ci samoreguluj

ą

ce.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

17

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (17)

Rozwój IBM OS/360

0

2000

4000

6000

8000

0

5

10

15

20

25

30

wydanie

lic

z

b

a

m

o

d

u

łó

w

Prawo organizacyjnej stabilno

ś

ci

Tempo rozwoju oprogramowania

w całym jego cyklu

ż

ycia jest

stałe

, bez wzgl

ę

du na dost

ę

pno

ść

zasobów,

je

ż

eli podczas jego piel

ę

gnacji nie wykorzystano

wła

ś

ciwie informacji zwrotnej.

Lehman (1968)

Prawo to jest szczególne, poniewa

ż

opisuje obserwacj

ę

sprzeczn

ą

z

intuicj

ą

. Powszechnie przyjmuje si

ę

,

ż

e wydajno

ść

pracy zale

ż

y od jej

organizacji i decyzji zarz

ą

dczych na ró

ż

nych szczeblach.

Tymczasem w przypadku oprogramowania (typu E) tempo jego rozwoju w
fazie piel

ę

gnacji jest w przybli

ż

eniu stałe i nie jest zwi

ą

zane z ilo

ś

ci

ą

dost

ę

pnych zasobów. Brooks w swojej ksi

ąż

ce "Mityczny osobomi

ę

si

ą

c"

wskazuje nawet przykłady przedsi

ę

wzi

ęć

programistycznych, w których

zwi

ę

kszanie zasobów prowadzi do zmniejszenia wydajno

ś

ci i wydłu

ż

enia

harmonogramu prac z uwagi na bardziej zło

ż

on

ą

komunikacj

ę

.

Dane zebrane przez Lehmana wskazuj

ą

,

ż

e tempo rozwoju ka

ż

dego

systemu na pewnym etapie stabilizuje si

ę

na stałym poziomie. Wykres

przedstawia najbardziej znany przykład, na podstawie którego Lehman
sformułował swoje prawa: tempo rozwoju systemu IBM OS/360. Do
wydania 19 tempo wzrostu jest w przybli

ż

eniu stałe, natomiast chaotyczne

zachowanie w ostatnich wydaniach jest interpretowane jako efekt zbyt
du

ż

ej ilo

ś

ci informacji zwrotnej wprowadzonej do wydania 20.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

18

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (18)

Prawo zachowania przyzwyczaje

ń

W dłu

ż

szej perspektywie,

rozmiar kolejnych wyda

ń

systemu jest statystycznie niezmienny

. Przyswojenie

nowych funkcji systemu wymaga czasu.

Znajomo

ść

celów realizowanych przez oprogramowanie jest jednym z

czynników wpływaj

ą

cych na jego rozwój. Zbyt du

ż

a liczba zmian

zawartych w wydaniu powoduje,

ż

e u

ż

ytkownicy nie s

ą

w stanie tych

zmian przyswoi

ć

i opanowa

ć

, czyli w praktyce nie korzystaj

ą

z dodanej

funkcjonalno

ś

ci. Powoduje to poczucie chaosu i nadmiaru informacji. Im

wi

ę

ksza funkcjonalno

ść

jest zwi

ą

zana z kolejnymi wydaniami programu,

tym trudniej jego odbiorcom zapozna

ć

si

ę

ze zmianami i wykorzysta

ć

je.

W ten sposób tempo rozwoju zale

ż

y od stopnia przyswojenia wiedzy o

wprowadzonych zmianach przez ka

ż

dego z u

ż

ytkowników.

Ponadto, du

ż

a liczba zmian to du

ż

a liczba potencjalnych bł

ę

dów, które

nast

ę

pnie b

ę

d

ą

wymagały kolejnego, czysto naprawczego wydania

programu.

Dane zgromadzone przez Lehmana wskazuj

ą

,

ż

e zale

ż

no

ść

mi

ę

dzy liczb

ą

nowych funkcji a czasem potrzebnym do ich przyswojenia nie jest liniowa.
Prawdopodobnie istniej

ą

pewne progi funkcjonalno

ś

ci dostarczanej w

ka

ż

dym wydaniu, powy

ż

ej których konieczne staje si

ę

zmodyfikowanie

zachowania programu.

Prawo to nazywa si

ę

prawem zachowania przyzwyczaje

ń

, poniewa

ż

nawyki zwi

ą

zane z obsług

ą

oprogramowania stanowi

ą

bardzo wyrazisty i

intuicyjny przykład czynnika ograniczaj

ą

cego tempo rozwoju

oprogramowania.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

19

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (19)

Prawo ci

ą

głego wzrostu

Funkcjonalno

ść

oprogramowania musi

rosn

ąć

, aby

satysfakcja

odbiorców systemu pozostała

na tym

samym poziomie

Prawo szóste jest zbli

ż

one do prawa pierwszego, cho

ć

dotycz

ą

one nieco

innego zjawiska. Opisuje ono nowe, niezale

ż

ne

ź

ródło zmian w

oprogramowaniu.

Zakłada si

ę

zwykle,

ż

e w momencie powstawania programu jego

specyfikacja zawiera definicje wszystkich wymaga

ń

. W trakcie rozwoju, z

powodu ogranicze

ń

bud

ż

etowych i organizacyjnych, s

ą

ograniczane one

do pewnego ich podzbioru. Wymagania, które nie zostały zawarte w tym
podzbiorze, s

ą

wykluczane z dalszych prac lub odraczane na przyszło

ść

.

Jednak w pewnym momencie funkcje, które nie zostały
zaimplementowane, stan

ą

si

ę

utrudnieniem w pracy z systemem,

zmniejszaj

ą

c jego u

ż

yteczno

ść

. W ten sposób powstaje potrzeba zmian

funkcjonalnych obejmuj

ą

cych wymagania pomini

ę

te we wcze

ś

niejszych

fazach. Implementacja tych wymaga

ń

ma za zadanie utrzyma

ć

poziom

satysfakcji u

ż

ytkowników z systemu na dotychczasowym poziomie.

Piel

ę

gnacja oprogramowania zakłada wi

ę

c nieustanny rozwój

funkcjonalny. Co ciekawe, w innych dziedzinach in

ż

ynierii, np.

budownictwie l

ą

dowym, sytuacja taka nie wyst

ę

puje lub jej waga jest

znacznie mniejsza: od mostu nikt nie wymaga, aby w miar

ę

upływu czasu

był on wyposa

ż

ony w dodatkowe mo

ż

liwo

ś

ci, np. podnoszenie i

opuszczanie prz

ę

sła w celu przepuszczenia ruchu wodnego lub

zwi

ę

kszenie no

ś

no

ś

ci.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

20

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (20)

Prawo spadku jako

ś

ci

Jako

ść

oprogramowania spada

, o ile nie jest ono

dostosowywane do zmian zachodz

ą

cych w swoim

ś

rodowisku operacyjnym.

Jako

ść

oprogramowania jest postrzegana z dwóch punktów widzenia: z

zewn

ą

trz, przez u

ż

ytkownika, i z wewn

ą

trz, przez programist

ę

. Oba

punkty widzenia dotycz

ą

innych problemów: u

ż

ytkownika interesuj

ą

ę

dy

i funkcjonalno

ść

, natomiast programist

ę

tak

ż

e wewn

ę

trzna struktura

programu. Jako

ść

w obu tych aspektach ulega degradacji w miar

ę

upływu

czasu.

Jako

ść

zewn

ę

trzna dotyczy liczby i rodzaju znajdowanych bł

ę

dów oraz

funkcji oferowanych przez system. System pracuj

ą

cy w satysfakcjonuj

ą

cy

sposób przez dłu

ż

szy czas tak

ż

e jest nara

ż

ony na wykrycie w nim bł

ę

du.

W

ś

ród innych powodów mo

ż

na wymieni

ć

zwi

ę

kszaj

ą

ce si

ę

z upływem

czasu potrzeby i oczekiwania u

ż

ytkowników, ich przyzwyczajenia, a tak

ż

e

ewoluuj

ą

ce standardy jako

ś

ciowe oprogramowania, szczególnie przy

pojawiaj

ą

cej si

ę

na rynku konkurencji. W oczach u

ż

ytkownika program,

który nie nad

ąż

a za post

ę

pem, staje si

ę

przestarzały i mniej u

ż

yteczny,

nawet je

ż

eli jego funkcjonalno

ść

nie ulega zmianie.

Jako

ść

wewn

ę

trzna jest bardziej obiektywn

ą

miar

ą

zło

ż

ono

ś

ci struktury

programu. Pokazuje ona po

ś

rednio, jaka jest zdolno

ść

programu do

piel

ę

gnacji. Zmiany, wprowadzane wraz z ewolucj

ą

, zwykle nie s

ą

prawidłowo integrowane z istniej

ą

c

ą

struktur

ą

i j

ą

pogarszaj

ą

.

Lehman wskazuje,

ż

e jedynie rygorystyczna piel

ę

gnacja jest w stanie

zapobiec spadkowi jako

ś

ci oprogramowania w miar

ę

upływu czasu.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

21

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (21)

Prawo przyrostowego rozwoju

Procesy ewolucyjne oprogramowania s

ą

wielopoziomowe, posiadaj

ą

natur

ę

iteracyjn

ą

i wymagaj

ą

informacji z wielu punktów widzenia

.

Wykorzystanie informacji zwrotnej pozwala osi

ą

gn

ąć

istotn

ą

popraw

ę

procesu ewolucji.

Rozwój IBM OS/360

0

2000

4000

6000

8000

0

5

10

15

20

25

30

wydanie

lic

z

b

a

m

o

d

u

łó

w

Prawo to jest uogólnieniem i podsumowaniem pozostałych praw, i nie jest
oparte na nowych obserwacjach, a raczej dostarcza nowych wniosków
wynikaj

ą

cych ze znanych ju

ż

faktów. Stwierdza,

ż

e ewolucja

oprogramowania jest zło

ż

onym, wielopoziomowym i uwzgl

ę

dniaj

ą

cym

wiele punktów widzenia systemem z informacj

ą

zwrotn

ą

. Przykładem tego

wniosku jest analiza przedstawionego wcze

ś

niej wykresu prezentuj

ą

cego

rozwój systemu IBM OS/360. Stabilny rozwój w pocz

ą

tkowym okresie

wynika ze stabilnej pracy systemu sterowanego informacj

ą

zwrotn

ą

.

Załamanie i niestabilno

ść

wzrostu po 19 wydaniu wynikała z próby

nadmiernego rozwoju systemu w wydaniu 20, co spowodowało
konieczno

ść

wprowadzenia poprawek w kolejnych wydaniach. Zaburzyło

to trend wzrostu systemu.

Rola informacji zwrotnej znana była ju

ż

wcze

ś

niej, jednak dopiero teraz

została ona wyra

ż

ona tak dobitnie. Lehman podkre

ś

la,

ż

e zaskakuj

ą

cy dla

niego jest fakt, i

ż

została ona zinterpretowana w ten sposób dopiero po

kilkunastu latach bada

ń

.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

22

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (22)

Wnioski z praw Lehmana

• Oprogramowanie, aby pozostało u

ż

yteczne, musi

ewoluowa

ć

• Jako

ść

oprogramowania (zdolno

ść

do ewolucji)

pogarsza si

ę

z upływem czasu

• Rosn

ą

ca zło

ż

ono

ść

oprogramowania w pewnym

momencie znacznie utrudnia dalszy rozwój systemu

Tempo rozwoju oprogramowania jest w najlepszym

przypadku stałe i nie zale

ż

y od sposobu zarz

ą

dzania

Prawa Lehmana pokazuj

ą

,

ż

e oprogramowanie, które ma by

ć

u

ż

yteczne

przez dłu

ż

szy czas, musi ewoluowa

ć

. W przeciwnym razie jego jako

ść

wewn

ę

trzna (struktura kodu) oraz zewn

ę

trzna (postrzegana przez

u

ż

ytkowników) pogarsza si

ę

, a

ż

oprogramowanie ulega wyparciu z rynku.

Istotnym problemem jest wzrost zło

ż

ono

ś

ci oprogramowania w miar

ę

rozwoju programu. Istnieje punkt nasycenia, poza którym dalszy rozwój
jest bardzo trudny lub nawet niemo

ż

liwy, o ile nie wcze

ś

niej stosowano

technik zarz

ą

dzania zło

ż

ono

ś

ci

ą

i nie restrukturyzowano programu na

bie

żą

co.

Jednym z silniejszych twierdze

ń

Lehmana jest ograniczenie tempa

rozwoju i wskazanie,

ż

e nie zale

ż

y ono od podejmowanych decyzji

zarz

ą

dczych.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

23

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (23)

Rozwój j

ą

dra Linuxa

0

200 000

400 000

600 000

800 000

1 000 000

1 200 000

1 400 000

1 600 000

1 800 000

01 1993

06 1994

10 1995

03 1997

07 1998

12 1999

04 2001

L

O

C

LOC, wersja rozwojowa

LOC, wersja stabilna

Godfrey (2000)

Prawa Lehmana nie dotycz

ą

jednak wszystkich rodzajów

oprogramowania.

Na wykresie przedstawiono rozwój j

ą

dra systemu Linux. Pierwsza wersja,

udost

ę

pniona w marcu 1994 roku, składała si

ę

z 487 plików o ł

ą

cznej

długo

ś

ci 165 KLOC. Wersja 2.3.39, opublikowana w styczniu 2000 roku,

obejmowała ju

ż

4854 pliki o ł

ą

cznej długo

ś

ci 2.2 MLOC. Warto jednak

zauwa

ż

y

ć

,

ż

e rozwój systemu, szczególnie w tzw. wersji rozwojowej

nast

ę

pował w tempie szybszym od liniowego, co stanowi zaprzeczenie

czwartego prawa Lehmana. Zatem istnieje mo

ż

liwo

ść

rozwoju systemu

szybszego ni

ż

przewidział to Lehman.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

24

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (24)

Czynniki sukcesu rozwoju j

ą

dra Linuxa

• Proces sterowany informacj

ą

zwrotn

ą

• Modularna architektura (podsystemy, sterowniki)

• Znaczne nakłady na piel

ę

gnacj

ę

kodu i refaktoryzacj

ę

• Zrównoleglony rozwój wielu elementów systemu

• Efekt wzrastaj

ą

cej popularno

ś

ci

• Eksperymentalne cechy a wydania stabilne

• Kultura open source

Jakie czynniki wpływaj

ą

na t

ę

wła

ś

ciwo

ść

Linuxa?

Jest to produkt open source, tworzony jednocze

ś

nie w sposób równoległy

przez wielu programistów. Wymagania s

ą

definiowane na bie

żą

co i

szeregowane wg priorytetów do implementacji w kolejnych wersjach.
Wyst

ę

puje zatem p

ę

tla sprz

ęż

enia zwrotnego: program jest rozwijany na

bie

żą

co, zgodnie ze zmianami

ś

rodowiska (jest to potwierdzenie

pierwszego prawa Lehmana). Ponadto znaczne nakłady s

ą

inwestowane

w bie

żą

c

ą

restrukturyzacj

ę

kodu, co pozwala zaoszcz

ę

dzi

ć

znaczne

ś

rodki w pó

ź

niejszych fazach.

Linux jest te

ż

zorganizowany w sposób modularny, dzi

ę

ki czemu mo

ż

liwe

jest tak szerokie zrównoleglenie prac. Znaczna cz

ęść

funkcjonalno

ś

ci jest

zaimplementowana w sterownikach, które s

ą

niezale

ż

ne od samego j

ą

dra.

Linux posiada dwie zasadnicze gał

ę

zie konfiguracji: stabiln

ą

, na której

znajduj

ą

si

ę

elementy przetestowane, o wysokiej wiarygodno

ś

ci, oraz

rozwojow

ą

, zawieraj

ą

c

ą

wszystkie elementy, tak

ż

e te nie do ko

ń

ca

przetestowane. Sukcesywnie elementy z tej ostatniej s

ą

testowane i

przenoszone na gał

ąź

główn

ą

. To rozwój gał

ę

zi rozwojowej –

wielokierunkowy,

ż

ywiołowy – charakteryzuje si

ę

ponadliniowym

wzrostem.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

25

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (25)

Piel

ę

gnacja w modelu spiralnym

wymagania

implementacja

weryfikacja

piel

ę

gnacja

wdro

ż

enie

W modelu spiralnym, odzwierciedlaj

ą

cym ewolucyjn

ą

natur

ę

tworzenia

oprogramowania, piel

ę

gnacja nie jest faz

ą

ko

ń

cz

ą

c

ą

cykl

ż

ycia programu

– jest elementem ka

ż

dego przyrostu funkcjonalnego. Pozwala ona na

lepsze zaimplementowanie nowych wymaga

ń

bez degradacji istniej

ą

cej

struktury oprogramowania.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

26

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (26)

Modele piel

ę

gnacji oprogramowania

ostro

ż

ne planowanie i

zarz

ą

dzanie

wyczerpuj

ą

ca weryfikacja wersji

powolna ewolucja

ż

ywiołowy, wielokierunkowy

rozwój

du

ż

a liczba poprawek

okresowa refaktoryzacja

Raymond (2000)

Zatem mo

ż

na wyró

ż

ni

ć

tak

ż

e inn

ą

klasyfikacj

ę

modeli piel

ę

gnacji

oprogramowania, opart

ą

na obserwacjach E. Raymonda dotycz

ą

cych

metod open source:

styl budowy katedry: szczegółowo zaplanowany, nie ulegaj

ą

cy łatwo

zmianom i ewolucji, oraz

styl bazaru,

ż

ywiołowo rozwijaj

ą

cego si

ę

w wielu kierunkach,

charakteryzuj

ą

cy si

ę

wieloma wydaniami i konieczno

ś

ci

ą

okresowej

restrukturyzacji

Szczególnie interesuj

ą

cy jest ten drugi model, reprezentowany m.in. przez

Linuxa, w którym system nieustannie znajduje si

ę

w fazie piel

ę

gnacji.

Wa

ż

ne jest to,

ż

e charakteryzuje si

ę

on wi

ę

kszym tempem wzrostu ni

ż

przewidziane prawami Lehmana, charakterystycznymi dla stylu budowy
katedry. Zatem model ci

ą

głego, wielokierunkowego rozwoju okazuje si

ę

skuteczniejszy ni

ż

model planowanego rozwoju.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

27

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (27)

Pracochłonno

ść

piel

ę

gnacji

Prewencyjna

5%

Naprawcza

20%

Doskonal

ą

ca

50%

Adaptacyjna

25%

Lientz, Swanson (1980)

usuwanie bł

ę

dów

dostosowanie
oprogramowania
do
zmieniaj

ą

cego

si

ę

ś

rodowiska

bez zmiany
funkcjonalno

ś

ci

implementacja
nowych wymaga

ń

inwestycja w
piel

ę

gnowalno

ść

Na piel

ę

gnacj

ę

oprogramowania składaj

ą

si

ę

cztery ró

ż

ne rodzaje

aktywno

ś

ci

•piel

ę

gnacji doskonal

ą

cej (ok. 50%), która ma na celu implementacj

ę

nowych lub zmienionych wymaga

ń

funkcjonalnych

•piel

ę

gnacji adaptacyjnej (ok. 25%), która dostosowuje program do zmian

zachodz

ą

cych w

ś

rodowisku

•piel

ę

gnacji naprawczej (ok. 20%), która słu

ż

y usuwaniu bł

ę

dów z

programu

•piel

ę

gnacji prewencyjnej (ok. 5%), która polega na wewn

ę

trznej

restrukturyzacji programu, co pozwala zmniejszy

ć

koszty piel

ę

gnacji w

przyszło

ś

ci

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

28

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (28)

Koszt piel

ę

gnacji oprogramowania

• Koszt piel

ę

gnacji zwykle jest

wy

ż

szy

od kosztu stworzenia

oprogramowania

– koszt linii kodu w Boeingu: $30, piel

ę

gnacji: $4000 (Boehm, 1985)

• Koszt piel

ę

gnacji

ro

ś

nie

wraz z okresem piel

ę

gnacji

0

50

100

150

200

250

300

Produkt B

Produkt A

Jak ju

ż

wskazano na wst

ę

pie, piel

ę

gnacja jest procesem wymagaj

ą

cym

coraz wi

ę

cej wysiłku i po

ś

wi

ę

cenia wi

ę

kszych zasobów ni

ż

w tworzenie

oprogramowania. Przyjmuje si

ę

,

ż

e koszt piel

ę

gnacji w ka

ż

dym systemie

mo

ż

e by

ć

porównywalny lub wy

ż

szy od kosztu jego stworzenia, w

zale

ż

no

ś

ci od czasu jego piel

ę

gnacji i innych, wymienionych wcze

ś

niej,

czynników. Skrajnym przykładem jest dysproporcja kosztu stworzenia i
piel

ę

gnacji jednej linii kodu w systemie tworzonym przez Boeinga dla Sił

Powietrznych USA: napisanie kosztowało $30, natomiast piel

ę

gnacja

ponad stukrotnie wi

ę

cej! Wynika to z obserwacji,

ż

e roczny koszt

piel

ę

gnacji ro

ś

nie wraz z okresem jej trwania.

Na wykresie przedstawiono przykład dwóch produktów, ró

ż

ni

ą

cych si

ę

kosztem wytworzenia i piel

ę

gnacji. W przypadku produktu A koszt

produkcji był wy

ż

szy ni

ż

produktu B, jednak pozwoliło to ograniczy

ć

koszt

piel

ę

gnacji i w sumie całkowity koszt zwi

ą

zany z programem (ang. total

cost of ownership, TCO).

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

29

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (29)

Model kosztowy Boehma

Przykład

AME = 1.0 x 10% x 125 PM = 12.5 PM

AME = 1.0 x ACT x SDT

AME – roczna pracochłonno

ść

zw. z piel

ę

gnacj

ą

[PM]

ACT – rzeczywista wzgl

ę

dna liczba zmian [%]

SDT – pracochłonno

ść

rozwoju oprogramowania [PM]

Boehm (1981)

pracochłonno

ść

rozwoju

oprogramowania:
125 osobomiesi

ę

cy

rozmiar zmian:
10% kodu

Zaproponowany przez Boehma prosty model kosztowy przewiduje,

ż

e

piel

ę

gnacja oprogramowania jest zwi

ą

zana z wysiłkiem proporcjonalnym

do rozmiaru modyfikowanego kodu. Oznacza to,

ż

e piel

ę

gnacja systemu,

którego koszt budowy wyniósł np. 125 osobomiesi

ę

cy, wyniesie rocznie

tak

ą

cz

ęść

tego kosztu, jaka uległa zmianie w tym okresie (np. dla 10%

b

ę

dzie to 12.5 osobomiesi

ą

ca).

Model ten, wzorowany na COCOMO, mo

ż

e zosta

ć

rozszerzony tak

ż

e o

inne czynniki wpływaj

ą

ce na wysoko

ść

oszacowania. W takim przypadku

czynniki te s

ą

mno

ż

one przez otrzymany wynik.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

30

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (30)

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

Na koszt piel

ę

gnacji ma wpływ wiele czynników technicznych i

pozatechnicznych.

•Pierwszym z nich jest dziedzina systemu: w przypadku obszarów dobrze
zdefiniowanych, o intuicyjnych wymaganiach, koszt b

ę

dzie ni

ż

szy; w

przypadku dziedzin o wysokiej zmienno

ś

ci wymaga

ń

koszt b

ę

dzie wy

ż

szy.

•Podobny wpływ ma stało

ść

personelu. Szybka rotacja pracowników

powoduje,

ż

e twórca oprogramowania nie zajmuje si

ę

ź

niej jego

piel

ę

gnacj

ą

. Wi

ąż

e si

ę

to z dodatkowym kosztem zrozumienia

oprogramowania przez nowego pracownika.

•Wiek oprogramowania równie

ż

obci

ąż

a koszt piel

ę

gnacji. Wynika to z

kosztów piel

ę

gnacji sprz

ę

tu, na którym system jest uruchamiany, a tak

ż

e

dotychczasowych zabiegów piel

ę

gnacyjnych, które utrudniaj

ą

wprowadzanie kolejnych zmian. W momencie, gdy koszt piel

ę

gnacji

przekracza koszt stworzenia nowego systemu, dalsza ewolucja jest
ekonomicznie nieuzasadniona.

•Szybki rozwój sprz

ę

tu komputerowego sprzyja potrzebie zmian w

oprogramowaniu. Nowe mo

ż

liwo

ś

ci procesorów s

ą

wykorzystywane przez

nowe aplikacje, wobec czego starsze musz

ą

by

ć

modyfikowane w celu

utrzymania si

ę

na rynku.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

31

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (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

•Wreszcie, ostatnim czynnikiem jest wewn

ę

trzna jako

ść

oprogramowania

oraz dokumentacji. Program podzielony na moduły, o niewielkiej liczbie
powi

ą

za

ń

, mo

ż

e by

ć

modyfikowany cz

ęś

ciami, bez potrzeby zmiany

pozostałych modułów. Tak

ż

e j

ę

zyk programowania wpływa na koszt

piel

ę

gnacji: j

ę

zyki wysokiego poziomu s

ą

pod tym wzgl

ę

dem ta

ń

sze.

Wyczerpuj

ą

co przetestowany system posiada mniej bł

ę

dów, a co za tym

idzie – wymaga mniejszych nakładów z tym zwi

ą

zanych. Natomiast

aktualna i pełna dokumentacja pozwala cz

ęś

ciowo zrekompensowa

ć

koszty zwi

ą

zane z rotacj

ą

pracowników i szybciej identyfikowa

ć

obszary

wymagaj

ą

ce zmian.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

32

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (32)

In

ż

ynieria ponowna

In

ż

ynieria ponowna (ang. re-engineering)

• 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

In

ż

ynieria ponowna (czyli re-in

ż

ynieria) jest poj

ę

ciem stosowanym w

odniesieniu do piel

ę

gnacji istniej

ą

cych systemów o słabej

piel

ę

gnowalno

ś

ci. Celem jest zwi

ę

kszenie tej zdolno

ś

ci przez zmian

ę

jego

wewn

ę

trznej struktury, aktualizacj

ę

dokumentacji etc. Stosowanie jej

pozwala ograniczy

ć

koszty zwi

ą

zane z piel

ę

gnacj

ą

, a tak

ż

e ryzyko

zwi

ą

zane ze stworzeniem całkowicie nowego oprogramowania.

Oczywi

ś

cie, wi

ąż

e si

ę

z tym dodatkowy koszt, jaki nale

ż

y ponie

ść

w fazie

tworzenia programu, jednak jest on rodzajem inwestycji zwracaj

ą

cej si

ę

podczas piel

ę

gnacji. Z uwagi na koszty, warto stosowa

ć

in

ż

ynieri

ę

ponown

ą

, szczególnie w tych fragmentach systemu, które cz

ę

sto

ewoluuj

ą

.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

33

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (33)

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

void doSth()

void doSth()

Szczególnym przypadkiem in

ż

ynierii ponownej jest refaktoryzacja.

Dotyczy ona tylko zmian zachodz

ą

cych w kodzie programu, a wi

ę

c na

najni

ż

szym poziomie restrukturyzacji.

Poj

ę

cie wywodzi si

ę

od faktoryzacji, czyli przydziału odpowiedzialno

ś

ci do

obiektów. Refaktoryzacja jest zatem ponownym podziałem systemu na
obiekty. Wynika z tego,

ż

e dotyczy głównie paradygmatu obiektowego,

cho

ć

poj

ę

cia tego u

ż

ywa si

ę

tak

ż

e w stosunku do j

ę

zyków strukturalnych

(np. C).

Spo

ś

ród własno

ś

ci refaktoryzacji warto wspomnie

ć

o dwóch

najwa

ż

niejszych: jej celem jest poprawa jako

ś

ci wewn

ę

trznej struktury

kodu, a jednocze

ś

nie nie mo

ż

e ona zmienia

ć

zachowania programu (tzn.

program po przekształceniu zachowuje si

ę

identycznie jak przed zmian

ą

).

Zapewnienie tej ostatniej własno

ś

ci jest najtrudniejszym krokiem

refaktoryzacji.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

34

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (34)

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 programowania

• wsparcia ze strony narz

ę

dzi CASE

• natury wykonywanego przekształcenia

• liczby i jako

ś

ci posiadanych testów

Z refaktoryzacj

ą

, podobnie, jak z ka

ż

d

ą

czynno

ś

ci

ą

in

ż

ynierii ponownej,

zwi

ą

zany jest dodatkowy koszt, który nie powoduje wzrostu

funkcjonalno

ś

ci systemu. Dlatego konieczne jest jego ograniczenie

poprzez automatyzacj

ę

lub cz

ęś

ciow

ą

automatyzacj

ę

niektórych

czynno

ś

ci: identyfikacji obszarów kodu wymagaj

ą

cych refaktoryzacji,

samego wykonania przekształcenia, a na ko

ń

cu, weryfikacji jego

poprawno

ś

ci. Nakład ten zale

ż

y od

ś

rodowiska, w którym dokonywana

jest refaktoryzacja: j

ę

zyka programowania, narz

ę

dzi, a tak

ż

e samego

przekształcenia oraz istnienia testów jednostkowych (JUnit), które
ułatwiaj

ą

weryfikacj

ę

poprawno

ś

ci.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

35

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (35)

Przykład

Wył

ą

czenie metody

void scalarProduct(String[] params) {

int[] x = prepareX(params);
int[] y = prepareY(params);
int[] product = computeXY(x, y);
// ...
for (i = 0; i < x.length; i++) {

out.println("X = " + x[i]);
out.println("Y = " + y[i]);
out.println("X * Y = " + product[i]);

}

}

void scalarProduct(String[] params) {

int[] x = prepareX(params);
int[] y = prepareY(params);
int[] product = computeXY(x, y);
// ...
printScalarProduct(x, y, product);

}

void printScalarProduct(int[] x, int[]y,
int[] product) {

for (i = 0; i < x.length; i++) {

out.println("X = " + x[i]);
out.println("Y = " + y[i]);
out.println("X * Y = " + product[i]);

}

}

Przykładem refaktoryzacji jest najprostsze przekształcenie: wył

ą

czenie

metody z kodu. Metoda scalarProduct() wykonuje dwie funkcje: obliczenie
pewnych warto

ś

ci, a nast

ę

pnie ich wy

ś

wietlenie. Celem refaktoryzacji jest

zatem zmniejszenie jej zło

ż

ono

ś

ci poprzez podział. W efekcie, z metody

zostaje wył

ą

czona nowa metoda printScalarProduct(), która zawiera kod

odpowiedzialny za wy

ś

wietlanie wyników. Jest ona wywoływana z

oryginalnej funkcji, przez co wywołanie tej ostatniej powoduje dokładnie te
same efekty co poprzednio.

Analizuj

ą

c to przekształcenie warto zastanowi

ć

si

ę

nad warunkami jego

poprawno

ś

ci. Aby istniała mo

ż

liwo

ść

utworzenia nowej metody, inna o

takiej nazwie nie mo

ż

e ju

ż

istnie

ć

(taki bł

ą

d wykryłby kompilator) ani nie

mo

ż

e by

ć

odziedziczona, co spowodowałoby zmian

ę

zachowania

programu (taki bł

ą

d jest znacznie trudniejszy do wykrycia). Oba te warunki

mo

ż

na zweryfikowa

ć

bez konieczno

ś

ci uruchamiania programu, jedynie

na podstawie analizy jego kodu

ź

ródłowego.

background image

Bartosz Walter

Ewolucja oprogramowania i refaktoryzacja

36

In

ż

ynieria oprogramowania

Ewolucja i refaktoryzacja oprogramowania (36)

Podsumowanie

• Ewolucja oprogramowania jest naturalnym

procesem jego rozwoju

• Istniej

ą

3 typy oprogramowania z punktu widzenia

piel

ę

gnacji

• Prawa Lehmana opisuj

ą

natur

ę

ewolucji

oprogramowania typu E

• Model spiralny i zwinno

ść

pozwalaj

ą

łatwiej

piel

ę

gnowa

ć

oprogramowanie

• Zarz

ą

dzanie zło

ż

ono

ś

ci

ą

poprzez okresow

ą

restrukturyzacj

ę

wspomaga piel

ę

gnacj

ę

• Refaktoryzacja jest inwestycj

ą

pozwalaj

ą

c

ą

ograniczy

ć

koszt piel

ę

gnacji

Podczas wykładu zaprezentowano podstawowe zagadnienia zwi

ą

zane z

ewolucj

ą

i piel

ę

gnacj

ą

oprogramowania. Ewolucja jest procesem

naturalnym i w praktycznych zastosowaniach nie da si

ę

jej unikn

ąć

. Prawa

Lehmana, opisuj

ą

ce natur

ę

ewolucji jednej z kategorii oprogramowania,

pokazuj

ą

,

ż

e programy, które nie ewoluuj

ą

, staj

ą

si

ę

coraz mniej

u

ż

yteczne. Czynnikiem wspomagaj

ą

cym piel

ę

gnacj

ę

jest sterowanie

ewolucj

ą

poprzez informacj

ę

zwrotn

ą

płyn

ą

c

ą

ze

ś

rodowiska. Dlatego

cyklem

ż

ycia szczególnie dobrze wspomagaj

ą

cym t

ę

faz

ę

rozwoju

oprogramowania jest model spiralny.

Koszt zwi

ą

zany z piel

ę

gnacj

ą

zwykle przekracza koszt stworzenia

oprogramowania. Dlatego stosowanie cyklicznej restrukturyzacji pozwala
ograniczy

ć

ten koszt, za cen

ę

dodatkowych nakładów w fazie rozwoju.


Wyszukiwarka

Podobne podstrony:
ewolucjonizm wykłady + pytania, Ewolucjonizm wykład 13, EWOLUCJONIZM - wykład nr 13
io, 13-19, 13
Ewolucja oprogramowania
INSECTA cw 12-13, Ewolucja i systematyka bezkręgowców
Inżynieria oprogramowania syllabus IV niestac 07 08, Prywatne, WAT, SEMESTR IV, IO, io, Materiały od
inzynieria oprogramowania pytania na egzamin dypolmowy, studia, IO
2007 04 Ewolucja wzorca polimorfizmu zewnętrznego w C [Inzynieria Oprogramowania]
sciaga io świder, Studia, Semestr 4, Inżynieria Oprogramowaia
Ewolucja ZZL prezentacja z dn 13 11 2006 r
io, IIS PWSZ, inżynieria oprogramowania, io
Egzamin z IO 2014 Załącznik biznes BOO, Studia, Politechnika Opolska, Semestr IV, [Wyk] Inżynieria o
mFAQ 2 13 Instalacja polskiej wersji językowej oprogramowania LOGO! Soft Comfort
diagramy, IIS PWSZ, inżynieria oprogramowania, io
ofi sciaga, Studia WIT - Informatyka, IO - Inżynieria Oprogramowania
Ewolucja$ 05 2010 (13)

więcej podobnych podstron