pelna-wersja-niezawodnosc-oprogramowania_nieopr.pdf

(8016 KB) Pobierz
656486839 UNPDF
IDZ DO
Niezawodnoæ
oprogramowania
Autor: Steve Maguire
T³umaczenie: Andrzej Gra¿yñski
ISBN: 83-7197-429-9
Tytu³ orygina³u:
SPIS TRECI
KATALOG KSI¥¯EK
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
Writing solid code: Microsoft's
Format: B5, stron: oko³o 400
TWÓJ KOSZYK
To w³anie programista mo¿e w znacznym stopniu przyczyniæ siê do tego,
i¿  wykrywanie b³êdów i walka z nimi stan¹ siê zadaniami ³atwiejszymi i bardziej
skutecznymi -- tê w³anie tezê Autor stara siê udowodniæ w niniejszej ksi¹¿ce,
ilustruj¹c  swe wywody konkretnymi przyk³adami.
Niektóre ze wskazówek i zaleceñ zawartych w treci niniejszej ksi¹¿ki sprzeciwiaj¹ siê
wielu powszechnie przyjêtym praktykom programowania i jako takie prowokowaæ
mog¹ do stwierdzeñ w rodzaju nikt tak nie pisze lub wszyscy ³ami¹ tê regu³ê.
Warto wówczas zastanowiæ siê nad przyczyn¹ -- je¿eli nikt tak nie pisze, to dlaczego?
Czy przypadkiem stare nawyki nie okazuj¹ siê silniejsze od racjonalnoci?
Odpowied na te i inne pytania Czytelnik znajdzie w tej ksi¹¿ce.
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWOCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
656486839.003.png 656486839.004.png 656486839.005.png 656486839.006.png
SPIS TRECI
5
Przedmowa do wydania polskiego...................................................................9
Wstp ...............................................................................................................15
Dwa najwaniejsze pytania............................................................................................................16
Nazewnictwo.................................................................................................................................17
Rozdział 1. Hipotetyczny kompilator ...........................................................21
Poznaj swój jzyk programowania................................................................................................23
Poyteczne Narzdzie — Lint.......................................................................................................27
To tylko kosmetyczne zmiany.......................................................................................................27
Nigdy wicej błdów.....................................................................................................................28
Rozdział 2. Sprawdzaj samego siebie ...........................................................31
Przypowie'( o dwóch wersjach.....................................................................................................32
Asercje...........................................................................................................................................33
„Niezdefiniowane” oznacza „nieprzewidywalne”.........................................................................36
Zagadkowe asercje.........................................................................................................................37
Kompatybilno'( kontrolowana......................................................................................................39
Gdy niemoliwe staje si moliwe................................................................................................43
Nic o nas bez nas...........................................................................................................................45
Co dwa algorytmy, to nie jeden.....................................................................................................48
Usuwaj błdy jak najwcze'niej......................................................................................................52
Rozdział 3. Ufortyfikuj swoje podsystemy...................................................59
Jest bł9d, nie ma błdu...................................................................................................................60
Zutylizuj swoje 'mieci...................................................................................................................62
Jestem ju gdzie indziej.................................................................................................................66
Kontroluj wykorzystanie pamici..................................................................................................69
Spójrz na to, czego nie wida(........................................................................................................72
Wybieraj rozs9dnie........................................................................................................................76
Szybki czy bezbłdny....................................................................................................................77
Teraz lub pó=niej...........................................................................................................................77
656486839.001.png
6
NIEZAWODNO OPROGRAMOWANIA
Rozdział 4. Jak wykonuje si Twój kod .......................................................81
Uwiarygodnij swój kod..................................................................................................................82
Przetestuj wszystkie rozgałzienia.................................................................................................83
>ywotne znaczenie przepływu danych..........................................................................................85
Czy czego' nie przeoczyłe'...........................................................................................................87
Spróbuj, a polubisz........................................................................................................................88
Rozdział 5. Niekomunikatywne interfejsy ...................................................91
getchar() zwraca liczb, nie znak...................................................................................................92
realloc() a gospodarka pamici9....................................................................................................94
Uniwersalny meneder pamici.....................................................................................................96
Nieprecyzyjne parametry...............................................................................................................98
Fałszywy alarm............................................................................................................................101
Czytanie pomidzy wierszami.....................................................................................................103
Ostrzegaj przed niebezpieczeCstwem..........................................................................................105
Diabeł tkwi w szczegółach..........................................................................................................108
Rozdział 6. Ryzykowny biznes ....................................................................111
int intowi nierówny......................................................................................................................112
Nadmiar i niedomiar....................................................................................................................116
„Projekt” czy „prawie projekt”....................................................................................................118
Po prostu robi9, co do nich naley...............................................................................................120
Przecie to to samo......................................................................................................................124
?: to take if..................................................................................................................................125
Precz z redundancj9.....................................................................................................................128
Wysokie ryzyko, bez odwrotu.....................................................................................................129
Przeklta niespójno'(...................................................................................................................133
Nie przypisuj zmiennym informacji diagnostycznych................................................................135
Nie warto ryzykowa(...................................................................................................................137
Rozdział 7. Dramaturgia rzemiosła ............................................................141
Szybko'(, szybko'(.....................................................................................................................142
Złodziej otwieraj9cy zamek kluczem nie przestaje by( złodziejem............................................144
Kademu według potrzeb............................................................................................................146
Nie uzewntrzniaj prywatnych informacji...................................................................................148
Funkcje-pasoyty.........................................................................................................................150
Programistyczne 'rubokrty........................................................................................................153
Syndrom APL..............................................................................................................................155
Bez udziwnieC, prosz.................................................................................................................156
Na 'mietnik z tymi wszystkimi trikami.......................................................................................158
Rozdział 8. Reszta jest kwesti/ nawyków...................................................163
Hokus-pokus, nie ma błdu.........................................................................................................163
Zrób dzi', co masz zrobi( jutro....................................................................................................165
Doktora!!!....................................................................................................................................166
Je'li działa, nie poprawiaj............................................................................................................167
Funkcja z wozu, koniom lej.......................................................................................................169
Elastyczno'( rodzi błdy.............................................................................................................169
Spróbuj.........................................................................................................................................171
Kwity Harmonogram..................................................................................................................172
„Tester” — nazwa w sam raz dla testera.....................................................................................173
Programista zawinił, testera powiesili.........................................................................................175
Zdefiniuj swe priorytety...............................................................................................................176
SPIS TRECI
7
Epilog.............................................................................................................181
Dodatek A Lista kontrolna kodowania ......................................................183
Dodatek B Podprogramy zarz/dzania pamici/ .......................................189
Dodatek C Odpowiedzi ................................................................................197
Skorowidz......................................................................................................225
JAK WYKONUJE SI TWÓJ KOD
81
Omawiane w poprzednich rozdziałach metody „automatycznego” wykrywania
błdów — asercje, testy integralno ci podsystemów, itp. — stanowi" narzdzia
niezwykle u#yteczne i znaczenie ich naprawd trudno przeceni$, jednak#e w nie-
których przypadkach okazuj" si one zupełnie „nieczułe” na błdy wystpuj"ce w
testowanym kodzie. Przyczyna tego stanu rzeczy jest tyle# oczywista, co banalna;
wyja nijmy j" na (bliskim ka#demu z nas) przykładzie zabezpieczenia domu czy
mieszkania.
Otó# najbardziej nawet wymy lne zabezpieczenie drzwi i okien oka#e si zu-
pełnie nieprzydatne w sytuacji, gdy złodziej dostanie si do domu np. przez klap
w dachu, czy te# otworzy sobie drzwi dorobionym kluczem. Podobnie, najwra#-
liwszy nawet czujnik wstrz"sowy zamontowany skrycie w magnetowidzie czy
komputerze nie uchroni przez kradzie#" np. drogocennej kolekcji obrazów. W
obydwu tych przypadkach zagro#enie pojawia si bowiem poza obszarami, na mo-
nitorowanie których zorientowane s" urz"dzenia alarmowe.
Na identycznej zasadzie, najbardziej nawet wymy lne asercje, czy jeszcze bar-
dziej zaawansowane fragmenty kodu testuj"ce wystpowanie spodziewanych wa-
runków, s" co warte jedynie wtedy, gdy w ogóle zostaj" wykonane! Brak alarmu
ze strony okre lonej asercji niekoniecznie wiadczy o spełnieniu testowanego przez
t asercj warunku, ale mo#e by$ tak#e wynikiem jej pominicia; podobnie punkt
przerwania spowoduje zatrzymanie wykonywania programu jedynie wtedy, gdy
wykonana zostanie instrukcja, na której punkt ten ustawiono.
Wyja nia to poniek"d, dlaczego niektóre błdy potrafi" skutecznie wymyka$
si (niczym sprytne szczury) najgstszej nawet sieci asercji czy punktów przerwa/,
które tym samym stanowi" tylko dodatkowy kłopot dla programisty, a tak#e powo-
duj" dodatkow" komplikacj i tak przewa#nie ju# zło#onego kodu.
81
656486839.002.png
Zgłoś jeśli naruszono regulamin