Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
2020Ekosystemtworzeniaoprogramowania
41
.Trybwdrożenia(ang.release)-stabilnawersjaoprogramowania,któraprzeszłain-
tensywnetesty,jestwpełnigotowadodziałania,zoptymalizowanaiprzeznaczonado
dystrybucjiwśródużytkowników.
Załóżmy,żeudałonamsięotrzymaćstabilnąwersjęnaszegooprogramowania
imożemyprzystąpićdoprawdziwychobliczeń.Wwieluprzypadkachwydajnośćmoże
jednakniebyćsatysfakcjonującazpowodudługichczasówwykonaniaczytego,że
oprogramowanieutknęłowmartwympunkcie.Możnatoskorygowaćzapomocąpro-
filera.Jegoroląjestpomiarwydajnościkomponentówsłużącychdobudowyoprogra-
mowaniaiwykrycieflgorących”fragmentówkodu,odpowiedzialnychzaspowolnienia.
Takiemiejscaodnalezionewkodzie-konsumującewiększośćczasuwykonania-mogą
zostaćzoptymalizowanepoprzezużycieinnychalgorytmówlubrefaktoryzację(czyli
ponownezaprojektowanieiimplementację),jeślitomożliwe-dopostacizrównole-
glonej.Następniemożemypowtórzyćcałyprocestworzeniaoprogramowaniawcelu
zbudowaniajegokolejnej,ulepszonejwersji.
Wtrakciecyklutworzenianaszegooprogramowanianiemożemyzapominać
oochronieikontrolijegowersji.Jesttomożliwedziękiwykorzystaniujednejzplatform
pozwalającychnakontrolęźródełiwersjonowanie,omówionychwdodatkuwpod-
rozdzialeA.6.2.
Gdyoprogramowaniejestjużgotowe,możnajewdrożyćnakonkretnejplatformie
sprzętowej.Stopieńzależnościmiędzyoprogramowaniemasprzętem(ang.software-
-hardware,wskrócieS/H)jestfunkcjąwłasnościoprogramowania.Znaczyto,żejed-
neprogramymożnazłatwościąuruchomićnaniemalkażdejplatformiesprzętowej,
podczasgdyinnewymagająznacznychmocyobliczeniowychlubnp.dostrojeniapod
konkretnewyświetlacze.Stądteż,jeślijesttowskazane,takiefunkcjonalnościtrzeba
wziąćpoduwagęwtrakciekolejnychkrokówtworzeniaoprogramowania.
Takwięcprocestworzeniaoprogramowaniaczęstoprzypominaspiralę:tesame
zadaniapowtarzanerazzarazem,osiągniemyzadowalającerozwiązanie.Innymi
słowy,możemydziałaćwcyklachocorazwiększejiwiększejśrednicy.Tymsamym
wchodzimywspiralnymodeltworzeniaoprogramowania,stanowiącyuznanąstrategię
wykorzystywanąprzezwielefirm.Jeślipodejścietakiezostaniewłaściwiezorganizowa-
ne,wpraktycemożeokazaćsięwysoceskuteczne.Wkolejnympodrozdzialeprzyjrzymy
siębliżejkolejnymetapomtworzeniaoprogramowania.
Irzeczostatnia,alewcalenienajmniejważna.Zauważmy,żeekosystemprogra-
mowaniaprzedstawionynarysunku2.3uwzględniatylkojednąosobę,zaśtworzenie
irozwójoprogramowaniawymagajązwyklepracyzespołowej.Czynnikludzki,który
częstobywaprzeoczanywksiążkachdotyczącychprogramowania,możemiećznaczny
wpływnasukceslubporażkękażdegoprojektu.Choćtaistotnakwestiaznajdujesię
pozazakresemniniejszejksiążki,efektywnedziałanieobejmujerównieżwspółpracę
isposóborganizacjiprojektu(McConnell2004).Dopewnegostopniajesttowspie-
raneprzezmodułowąstrukturęprojektówwC++oraznarzędziaodpowiadająceza
wersjonowanieiutrzymanieoprogramowania,takiejakGitiGitHubprzedstawione
narysunku2.3.