Softwarová chyba
Softwarová chyba je chyba, nedostatek, chyba, selhání nebo kaz v počítačovém programu, který předejde tomu od se chovat jak zamýšlený. Většina chyb se vynoří z chyb a chyb udělaných lidmi v jeden program je zdrojový kód nebo jeho design, a nemnoho být způsoben kompilátory produkovat chybný kód. Program, který obsahuje velké množství chyb, a/nebo chyby, které vážně se střetávají s jeho funkčností, je řekl, aby byl kočárek. Hlásí, že popíše chyby v programu jsou obyčejně známé jako oznámení o chybě, chyba reportuje, problém reportuje, potíž reportuje, měnit žádosti, a tak dále.
Nepřehlédněte: Tato stránka obsahuje strojový překlad textu z anglické encyklopedie Wikipedia. Pokud budou některé pasáže špatně srozumitelné, zkuste se podívat i na text v originále, který najdete pod odkazem Software bug. Překlad byl vytvořen pomocí překladače Eurotran.
Efekty
Chyby mohou mít širokou paletu efektů, s kolísajícími úrovněmi potíže k uživateli programu. Některé chyby mají jen důvtipný účinek na funkčnost programu, a smět tak ležet nezjištěný na dlouhou dobu. Vážnější chyby mohou způsobit program ke srážce nebo zmrazit vedení k popření služby. Jiní se kvalifikují jako chyby bezpečnosti a síla například umožnit zlomyslného uživatele obejít řízení přístupu aby získal neautorizované výsady.
Výsledky chyb mohou být extrémně vážné. Chyby v řízení kódu Therac-25 radiační léčba stroj byl přímo zodpovědný za některé smrti pacienta v 80-tých letech. V roce 1996, Evropská organizace pro kosmonautiku' s nás $1 miliarda prototypu Ariane 5 raketa byla zničena méně než minuta po startu, kvůli chybě v deskovém vedení počítačový program. V červnu 1994, královské letectvo Chinook narazil do Mull Kintyre, zabíjení 29. Toto bylo zpočátku odmítnuto jako chyba pilota ale vyšetřování Týdeník počítače odhalil dostatečný důkaz přesvědčit Dům pánů dotaz že to může byli zaviněni softwarovou chybou v letadle počítač řízení motoru.
V roce 2002, studium pověřené americkým ministerstvem obchodu ' národní institut standardů a technologie uzavřeli, že softwarové chyby, nebo chyby, být tak převládající a tak škodlivý že oni stáli americkou ekonomiku odhadovaný $59 miliarda každoročně, nebo o 0.6 procento hrubého domácího produktu.
Etymologie
Pojetí ten software by mohl obsahovat chyby se datuje k 1842 v poznámkách Ady Byronové na analytickém motoru ve kterém ona mluví o obtíži přípravného programu ' karty pro Charlese Babbage je analytický motor:
| ... analyzovat proces muset stejně byli vykonáváni aby zařídil Analytical motor s nutnými operativními daty; a to zde může také ležet možný zdroj chyby. Udělil to aktuální mechanismus je neomylný v jeho procesech, karty mohou dát tomu špatné objednávky | . ”
Použití termínu “chyba” popisovat nevysvětlitelné defekty byl díl žargonu inženýrství pro mnoho dekád a předchází počítače a počítačový software; to může původně byli používáni v inženýrství hardwaru popsat mechanický selhává. Například, Thomas Edison napsal následující slova v dopise kolegovi v 1878:
| #lquote | To bylo jen tak ve všech mých vynálezů. První krok je intuice, a jde s nárazem pak obtížemi vyvstávat — tato věc selže a [to je] pak to ' chyby — jako takový malé chyby a obtíže jsou volány — ukazovat sebe a měsíce intenzivního pozorování, studium a práce jsou potřeba před obchodním úspěchem nebo porucha je jistě podávána. | #rquote |
Problémy s elektronikou radaru během 2. světové války byly odkazoval se na jako chyby (nebo závady), a tam je dostačující svědectví že použití se datuje hodně dříve.
Vynález termínu je často chybně připsaný k Graceovi Hopperovi, kdo propagoval příčinu selhávat v časném electromechanical počítači. Typická verze příběhu je daná touto citací:
| #lquote | V roce 1946, když Hopper byl propuštěn z boje, ona se připojila ke schopnosti Harvarda u laboratoře počítání kde ona pokračovala v její práci na svém místě II a označit III. Operátoři stopovali chybu ve značce II k můře chycené ve směně, razit chybu termínu. Tato chyba byla opatrně vzdálená a nahrávala k září palubní knihy 9th 1945 [sic]. Pocházet z první chyby, dnes my voláme chyby nebo závada je [sic] v programu chyba. | #rquote |
Hopper nebyl vlastně jeden kdo našel hmyz, zatímco ona ochotně přiznala. A datum bylo 9. září, ale v roce 1947, ne 1945. Operátoři, kteří dělali najdou to (včetně Williama “účet” Burke, pozdnější námořních zbraní laboratoř, Dahlgren Va.), byl obeznámen s termínem inženýrství a, pobavený, choval hmyz se zápisem “první skutečný případ chyby se nalézat.” Hopper miloval vyprávět příběh.
Zatímco to je jisté, že Mark II operátoři nerazili termín “chyba”, to bylo navrhl, že oni dělali minci příbuzný termín, “ladit”. Dokonce toto je nepravděpodobné, od Oxford anglického slovníkového hesla pro “ladit” obsahuje použití “ladění” v souvislosti s motory letadla v 1945 (viz článek ladění pro více).
Prevence
Chyby jsou důsledek přírody lidské faktory v programovací úloze. Oni se vynoří z omylů vyrobený programátoři během designu, kódování a datové položky. Například: V vytvářet relativně jednoduchý program třídit seznam slov do abecedního pořadí, něčí design by mohl nedokázat zvažovat, že co by mělo stát se, když slovo obsahuje pomlčka. Snad, když změní abstraktní návrh do voleného programovacího jazyka, jeden by mohl bezděčně vytvořit pryč-- jedna chyba a nedokázat třídit poslední slovo v seznamu. Konečně, když píše výsledný program do počítače, jeden by mohl náhodně psát ' < ' kde ' > ' byl míněn, možná končit bytím slov tříděným do opačného abecedního pořadí. Komplexnější chyby mohou vzniknout z nezamýšlených vzájemných ovlivňování mezi různými částmi počítačového programu. Toto často nastane, protože počítačové programy mohou být komplexní — milióny linek dlouho v některých případech — často mít been naprogramovaný mnoho lidí přes velkou délku času, tak že programátoři jsou neschopní k mentálně sledovat každou možnou cestu ve kterém části mohou se ovlivňovat. Další kategorie chyby volala podmínka závodu přijde jeden když proces vběhne více než jeden nit nebo dva nebo více procesů běží současně a přesný rozkaz popravy kritických sledů kódu nebyl vhodně synchronizoval.
Průmysl softwaru dal velkou snahu do najití metod pro předcházet programátorům od bezděčně představovat chyby zatímco píše software. To zahrnuje:
- Programovací styl
- Techniky programování
- Metodologie vývoje
- Podpora programovacího jazyka
- Analýza kódu
Ladění
Nacházet a opravovat chyby nebo “ladění”, vždy byl hlavní role programování počítače. Maurice Wilkes, časný počítačový průkopník, popsal jeho realizaci v pozdních čtyřicátých létech to hodně z jeho odpočinku život byl by utracené najití chyb v jeho vlastních programech. Jako počítač programy stanou se více komplexní, chyby stanou se obvyklejší a těžké k opravě. Často programátoři utrácejí více času a nález úsilí a opravovat chyby než psací nový kód.
Obvykle, nejtěžší část ladění lokalizuje chybnou část zdrojového kódu. Jakmile chyba se nalézá, opravovat to je obvykle snadný. Programy známé jako ladící programy existují pomoci programátorům lokalizovat chyby. Nicméně, dokonce s pomocí debuggeru, lokalizovat chyby je něco umění. To není neobvyklé pro chybu v jedné části programu k poruchám příčiny v úplně jiné sekci, tak dělat to obzvláště obtížný sledovat (například, chyba v grafické vizualizační rutině působit soubor já/O rutina k selhání); toto je nejvíce obyčejně zaviněno chybami, které vedou ke korupci instrukcí programu nebo proměnných v paměti.
Typicky, první krok v ustavení chyba najde způsob, jak reprodukovat to snadno. Jednou chyba je reprodukována, programátor může používat ladící program nebo nějaký jiný nástroj sledovat provádění programu ve vadné oblasti, a najít bod u kterého program se ztratil. Někdy, chyba není jedno vadné poučení, ale reprezentuje chybu myšlení nebo plánování na díle programátora. Takový logické chyby vyžadovat část programu být opraven nebo přepsaný.
To není vždy snadné reprodukovat chyby. Některé chyby jsou odjištěny vstupy k programu, který může být obtížný pro programátora k re-vytvořit. Jedna příčina Therac-25 ozařovací strojové smrti byly chyba, která nastala jen, když obsluha stroje velmi rychle zadala plán léčby; to trvalo dny zvyku stát se schopný dělat toto, tak chyba neprojevila v testování nebo když výrobce pokoušel se kopírovat to. Jiné chyby mohou mizet, když program je provozován s debuggerem; tito jsou heisenbugs (komicky pojmenoval podle Heisenberg principu neurčitosti.)
Ladění je ještě zdlouhavý úkol vyžadovat značnou pracovní sílu. Od devadesátých lét, zvláště následovat Ariane 5 letu 501 pohromy, tam byl obnovený zájem ve vývoji efektivní automatizovaný pomáhá k ladění. Například, metody statické kódové analýzy abstraktním výkladem už dělaly významné úspěchy, zatímco ještě zůstane hodně z práce v průběhu.
Vedení chyby
To je běžná praxe pro software být propuštěn se známými chybami, které jsou považovány za non-kritický. Zatímco produkty softwaru obsahují neznámé množství chyb neznáma když dopravený, měření během testování mohou poskytovat statisticky spolehlivý odhad množství pravděpodobných chyb zbývající. Většina velkých softwarových projektů udržuje seznam “známých chyb”. Tento seznam informovat uživatele o chybách, které nejsou fixované v aktuálním vydání, nebo ne fixovaný vůbec, a často provizorní řešení je nabídnuto dále.
Tam jsou různé důvody pro takový seznam:
- Vývojáři často nemají čas opravit všechny non-hrozné chyby.
- Chyba mohla být opravena v nové verzi nebo místě, které není přesto povolené.
- Změny na požadovaný kód k opravě chyba by byla velká, a by přinášel s nimi šance uvádět jiné chyby do systému.
Daný nahoře, to je často zvažováno nemožný psát kompletně chyba-vysvobodit software z nějaké skutečné složitosti. Tak chyby jsou roztříděny krutostí a minimem-krutost non-kritické chyby jsou tolerovány, zatímco oni neovlivní pořádnou operaci systému, pro většinu uživatelů. NASA je SATC zvládal redukovat množství chyb k méně než 0.1 na 1000 řad kódu (SLOC) ale toto nebylo plst být proveditelný pro nějaké projekty skutečného světa.
Jeden myšlenkový směr, popularizovaný Eric S. Raymond jak Linusovo právo v jeho eseji Katedrála a bazar, myslí si to populární otevřený-získat software myslí si lepší šance mít nemnoho nebo žádné chyby než jiný software, protože “daný dost očních bulev, všechny chyby jsou mělké”. Toto tvrzení bylo sporné, nicméně: počítačový bezpečnostní specialista Elias Levy psal to “to jde snadno skrýt zranitelnosti v komplexu, malý rozuměl a undocumented zdrojový kód,” protože, “dokonce jestliže lidi zhodnotí kód, to neznamená, že oni jsou způsobilí dělat tak.”
Zranitelnosti bezpečnosti
Zlomyslný software může pokoušet se využívat známé zranitelnosti v systému — který smět nebo smět ne být chyby. Viry nejsou chyby v sobě — oni jsou typicky programy, které dělají přesně co oni byli navrhnuti dělat. Nicméně, viry jsou občas odkazoval se na jako takový v populárním tisku.
Obyčejné druhy chyb počítače
- Pojmová chyba (kód je správně psán, ale programátor nebo návrhář opravdu zamýšleli pro to dělat něco jiného)
- Divize nulou
- Použití špatného operátora, takový jako vykonání úkolu místo testu rovnosti
- Dereference nulového pointeru
- Nekonečné smyčky a nekonečná rekurze
- Používat proměnnou uninitialized
- Zpřístupňovat paměť ne vlastnil (porušení přístupu)
- Zdroj prosakuje, kde systémový zdroj takový jako paměť nebo kliky souboru je vyčerpán tím, že opakovaně přidělí nové jednotky a nikdy pustí je.
- Chraňte přetečení, ve kterém program pokusí se ukládat data podél konce sady.
- Mrtvý bod
- Pryč jednou chybou
- Podmínka závodu
- Aritmetické přetečení nebo podtečení
- Ztráta aritmetické preciznosti kvůli zaoblování, například v konverzi typu nebo ve formátování výstupu
- Ztráta aritmetické preciznosti kvůli číselně nestálým algoritmům
- Nechráněný kritický průřez končit poruchou k vzájemně vyřadit přístup k proměnné společné víc než jednomu souběžnému procesu. Nechráněné kritické průřezy mohou vést k podmínkám závodu. Čas-- kontrola-k-čas-- používat (TOCTTOU) je forma nechráněného kritického průřezu.
- Unpropagated se aktualizuje; např. programátor připraví chybu pro “myAdd” ale zapomene opravit stejnou chybu v “mySubtract” kvůli nedostatku opětovného použití kódu (tyto chyby mírnily se neopakují filozofie)
- Poznámky ven data nebo nesprávný; např. “vrátí celé číslo”, “následující funkce je chyba-volný”
Chyby v populární kultuře
- V 1968 románu 2001: Odyssea prostoru (a korespondovat 1968 filmu), kosmická loď je palubní počítač, Hal 9000, pokouší se zabít všechny jeho členy posádky. V následku 1982 románu, 2010: Odyssea dva, a doprovázet 1984 filmu, 2010, to je ukázal, že tato akce byla způsobena na počítači mít been naprogramovaný se dvěma odporujícími si cíli: úplně odhalit všechny jeho informace, a držet pravý účel tajemství letu od osádky; tento konflikt způsobil Hala stát se paranoidní a nakonec zabíječský.
- V 1984 písni 99 červených balónů (ačkoli ne v originální německé verzi), “chyby v softwaru” vedou k počítači splést si skupinu balónů pro jaderná střela a začínat atomová válka.
- 2004 románu chyba, Ellen Ullmanová, je o programátorském pokusu najít nepolapitelnou chybu v aplikaci databáze.
Viz též
- Závada
- Návrat softwaru
- ISO 9126, který třídí chybu jak jeden defekt nebo nonconformity
- Oklika
- Chyba sledovat systém
- Hniloba kousku
- Anti-vzor
- Neobvyklé softwarové chyby (schroedinbug, heisenbug, Bohr chyba, a mandelbug)
Poznámky
- ^ Chinook vrtulníková pohroma
- ^ Softwarové chyby stojí nás ekonomický miláček
- ^ Edison k Puskas, 13 listopadu 1878, Edison doklady, Edison národní laboratoř, USA služba národního parku, West Orange, N.J., citovaný v Thomasi P. Hughesovi, Američan Genesis: Historie amerického nadání pro vynález, Tučňák Books, 1989, ISBN 0-14-009741-4, na stránce 75.
- ^ FCAT NRT test, Harcourt, 03/18/2008
- ^ Danis, Sharron Ann: “chovat násypku admirála Gracea Murraye”[1]
- ^ Definice chyby
- ^ Palubní kniha s chybou počítače
- ^ IEEE anály historie práce na počítači, Vol 22 záležitosti 1, 2000
- ^ První počítačová chyba
- ^ Huizinga, Dorota; Kolawa, Adam (2007). Automatizovaná defektní prevence: Nejlepší praxe ve vedení softwaru. Wiley-IEEE počítač tisk společnosti. pp. 426. ISBN 0470042125. http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470042125. html.
- ^ McDonald, Marc; Musson, Robert; Smith, Ross (2007). Praktický průvodce prevencí defektu. Microsoft tisk. pp. 480. ISBN 0735622531. http://www.microsoft.com/MSPress/books/9198. aspx.
- ^ “Pustit Early, vydání často”, Eric S. Raymond, Katedrála a bazar
- ^ “Široký otevřený zdroj”, Elias Levy, SecurityFocus, 17. dubna 2000
Externí odkazy
- Sbírka softwarových chyb (Thomas Huckle, Tu München)
- Počítačově zaměřené incidenty s komerčními letadly (Peter B. Ladkin et al., Universität Bielefeld)
- An zkoumání Therac-25 nehody (Nancy Leveson, univerzita Washingtona a Clark S. Turner, univerzita Kalifornie u Irvinea)
- Smrtelná dávka: Ozařovací smrti spojené k AECL chybám počítače (Barbara Wadeová se zvedla, kanadská koalice pro nukleární zodpovědnost)
- Softwarové strašidelné povídky (Nachum Dershowitz)
- Software nepropadne (Paul Niquette]
- Obraz “první počítačové chyby” chyba tohoto termínu je vypracována nahoře. (námořní historické centrum)
- Strana od 1947 palubní knihy s “první skutečný případ chyby se nalézat” (můra) (národní muzeum historie Američana)
- První chyba počítače! E-mail od 1981 o Adm. Hopperova chyba
- Jak ohlásit chyby účinně (Simon G. Tatham)
- Rychlosti poruchy designu
- Chyba sledovat základy: Začátečník má průvodce zpravodajstvím a defekty stopování (Mitcha Allena)
- Historie je nejhorší softwarové chyby
- Chyba projekt izolace - tento projekt má sledovat chyby populárního otevřeného zdrojového softwaru. (balíčky pro dostupný pánský klobouk)
- BugSpy.net - se plazí web pro nejnovější chyby v populárním serverovém softwaru. To pokusí se zobrazovat jen otevřené chyby.