Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
1.WarTOśĆaUTOMaTYZaCJiTESTÓW
Częścizdodanejwtensposóbzłożonościniedasięuniknąć.Będzieonaistniećna-
wetwtedy,gdyskrupulatniezaplanujemyizaprojektujemyzgórycałeoprogramowanie.
Jesttotzw.złożonośćwewnętrzna(inherentcomplexity).Jednakwwiększościprzypadków
powodamiistnieniaprzeważającejczęścizłożonościoprogramowaniajestszybkiewpro-
wadzanienowychfunkcjibezodpowiedniegoprojektu,brakkomunikacjiwewnątrzze-
społulubbrakodpowiedniejwiedzyczytowzakresiewykorzystywanejtechnologii,czy
teżwobszarzepotrzebbiznesowych.Teoretyczniezłożonośćmożnabyzredukować
poprzezskrzętnezaplanowaniezgórycałegooprogramowania,alewrzeczywistościjest
onanaturalnączęściąkażdegoprojektuoprogramowania.Tentypzłożonościnazywany
jestczęstozłożonościąprzypadkową(accidentalcomplexity).
Każdazłożonośćczytowewnętrzna,czyprzypadkowaniesiezesobąpewienkoszt.
Koszttenjestoczywiścieczęściącałkowitegokosztuwytworzeniaoprogramowania,naktóry
wpływmagłównieliczbaprogramistówitesterówpomnożonaprzezczaspotrzebnyimna
dostarczenieoprogramowania(oczywiściepomnożonarównieżprzezichwynagrodzenie).
Zgodniezpowyższym,gdyzłożonośćfragmentuoprogramowaniawzrasta,jegokosztrów-
nieżrośnie,ponieważprzetestowaniewszystkiegooraznaprawaznalezionychbłędów(ipo
-
nowneprzetestowaniekodu)wymagawiększejilościczasu.Ponadtozłożonośćprzypadko-
wasprawiarównież,żeoprogramowaniejestbardziejułomneitrudniejszewutrzymaniu,
acozatymidzie,wymagajeszczewięcejczasunaprzetestowanieinaprawębłędów.
Utrzymywaniestałegokosztu
Narysunku1.1pokazanoto,cochcemyosiągnąć:kosztutrzymywanynastałympoziomie
wmiarędodawanianowychfunkcji.Niestetydodawanienowychfunkcjioznaczazwykle
zwiększaniezłożonościoprogramowania,conaturalniezwiększajegokoszt.Istniejąjednak
dwaczynniki,któremogąnampomócwutrzymaniukosztunastałympoziomie:
1.Minimalizowaniekosztówuruchamianiastalepowiększającegosięzestawutestówregresji.
2.Pisaniekodu,któryjestłatwywutrzymaniu.
Pierwszyczynnikmożemyłatwoosiągnąćpoprzezzautomatyzowaniewiększości
testów.Natomiastnadrugiczynnikdużywpływmazłożonośćprzypadkowa,przezco
znacznietrudniejgokontrolować.
Wkodzie,któryjestłatwywutrzymaniu,złożonośćwprowadzanadooprogramowania
wwynikudodawaniadoniegonowychfunkcjimabardzomałylubzerowywpływnazło-
żonośćfunkcjijużistniejących.Oznaczato,żejeśliwzrostzłożonościbędziemyutrzymy-
waćwtempieliniowym,tonadalbędziemymogliutrzymaćstabilnykoszt,jaktopokazano
narysunku1.2.Oczywiściezdolnośćdododawaniazłożonościchcielibyśmyzachować
jedyniedlazłożonościwewnętrznej(tj.nowychfunkcji)iniemarnowaćjejnazłożoność
przypadkową.Niestetyzłożonośćprzypadkowasprawia,żewwiększościrzeczywistych
projektów,wmiarędodawaniakolejnychfunkcjizłożonośćrośniedużoszybciejniżlinio-
wo(patrzrysunek1.3).Tozkoleipowodujerównieżwzrostkosztówdodawanianowych
funkcjinaprzestrzeniczasu,cozostałoprzedstawionenarysunku1.4.
6