Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
talentemprzyopanowywaniuzłożonościsamolotu.Toprowadziłorównieżdotego,
żejednaczwartapilotówtestowychzginęławakcji.9
Obecniesprawymająsięinaczej.Przedstartempilociprzeprowadzająmnóstwowe-
ryfikacji.Niektóreznichmogąwydawaćsięniepotrzebnieuciążliwe,jaknaprzykład
przedstawieniesięimienieminnymczłonkomzałogi.Wyobraźmysobiejednak,żesa-
molotwpadniewkorkociągitrzebanatychmiastpoinformowaćkogośoproblemie.Nie
znającimienia,ciężkobyłobysiękomunikować.
Tosamomożnaodnieśćwobecdobregooprogramowania.Regularneuruchamianie
zestawusystematycznychsprawdzeńwceluprzetestowania,czynaszeoprogramowanie
działapoprawnie,czynie,pozwalanajegospójnedziałanie.
Wewczesnychdniachtworzeniaoprogramowaniawiększośćtestówbyłaprzeprowa-
dzanaponapisaniuwłaściwegooprogramowania(jesttotakzwanymodelkaskadowy10,
wykorzystywanyprzezNASAiinneorganizacjedoprojektowaniaoprogramowania
itestowaniago).Współdziałałotodobrzezpowszechnymwówczasstylemzarządzania
projektami.Podobniedosposobubudowaniasamolotów,wprzypadkuoprogramowania
najpierwpowstawałjegoprojekt,następniepisanokodzgodniezespecyfikacjami,apo-
temtestowanoprogramprzeddostarczeniemgoklientowi.Tametodatestowaniamogła
zajmowaćmiesiąceanawetlata.DoprowadziłotodosformułowaniaManifestuprogramo-
waniazwinnego11,atakżedopowstaniakulturytestowaniaiprogramowaniasterowanego
testami(TDD),zainicjowanegoprzezKentaBecka,WardaCunninghamaiwieluinnych.
Koncepcjaprogramowaniasterowanegotestamijestprosta:najpierwpiszemytest
sprawdzający,cochcemyosiągnąć;wykonujemygo,potwierdzając,żedajewynikne-
gatywny;piszemykodnaprawiającytest;anastępniepoprawiamykod,abydopasować
godowskazówekSOLID.Choćwieleosóbzwracauwagę,żewydłużatocykltworzenia
oprogramowania,toznaczącoograniczaliczbębłędówwkodzieipoprawiastabilność
działaniaoprogramowania.12
Samoloty,któremająniskątolerancjęnabłędy,częstodziałająwtensamsposób.
ZanimpilotbędziemógłzasiąśćzasteramiBoeinga787,spędzaXgodzinwsymulatorze
lotów,żebyzrozumiećisprawdzićswojąznajomośćsamolotu.Samolotytestowane
przedstartem,apóźniejrównieżwtrakcielotu.Znowoczesnymtworzeniemoprogra-
mowaniajestbardzopodobnie.Testujemyswojąwiedzę,pisząctestyprzedwdrożeniem
oprogramowania,atakżemonitorującjużwdrożoneoprogramowanie.
Nadalpozostajejednakjedenproblem:wrzeczywistości,wktórejnicniepozostaje
takiesamo,napisanietestuniesprawia,żekodbędziedobry.DavidHeinemerHanson
wswojejpopularnejprezentacjinatematszkódwynikającychzpodejściasterowanego
9AtulGawande,TeChecklistManifesto(NewYork:MetropolitanBooks),str.161.
10https://en.wikipedia.org/wiki/Waterfall_model
11http://agilemanifesto.org/
12NachiappanNagappaniin.,nRealizingQualityImprovementthroughTestDrivenDevelopment:
ResultsandExperienceofFourIndustrialTeams”
,EmpiricalSofwareEngineering13,no.3(2008):
289302,http://bit.ly/Nagappanetal.
Prawidłowepisanieoprogramowania
|
5