Kvalitní requirementsEdit
Ať už je přístup k rozvoji může být, konečný program, musí splňovat některé základní vlastnosti. Mezi nejdůležitější patří následující vlastnosti:
- spolehlivost: jak často jsou výsledky programu správné. To závisí na koncepční správnost algoritmů, a minimalizace programových chyb, jako jsou chyby v řízení zdrojů (např. přetečení vyrovnávací paměti a podmínky závodu) a logických chyb (například dělení nulou nebo off-by-one chyby).,
- robustnost: jak dobře program předvídá problémy způsobené chybami (ne chybami). To zahrnuje situace, jako jsou nesprávná, nevhodná nebo poškozená data, nedostupnost potřebných zdrojů, jako je paměť, služby operačního systému a síťová připojení, chyba uživatele a neočekávané výpadky napájení.
- použitelnost: ergonomie programu: snadnost, s jakou může člověk program používat pro svůj zamýšlený účel nebo v některých případech i pro neočekávané účely. Takové problémy mohou způsobit nebo zlomit jeho úspěch i bez ohledu na jiné problémy., To zahrnuje širokou škálu textových, grafických a někdy i hardwarových prvků, které zlepšují jasnost, intuitivnost, soudržnost a úplnost uživatelského rozhraní programu.
- přenositelnost: rozsah platforem počítačového hardwaru a operačního systému, na kterých lze zdrojový kód programu sestavit/interpretovat a spustit., To závisí na rozdílech v programování zařízení poskytovaných na různých platformách, včetně hardware a operační systém zdrojů, očekávané chování hardware a operační systém, a dostupnost platformy-specifický kompilátory (a někdy knihoven) pro jazyk zdrojového kódu.
- Udržovatelnost: snadnost, s níž může být program upraven do své současné nebo budoucí vývojáři s cílem provést vylepšení nebo úprav, opravit chyby a bezpečnostní díry, nebo adaptovat na nové prostředí., Správné postupy během počátečního vývoje v tomto ohledu znamenají rozdíl. Tato kvalita nemusí být přímo zřejmá koncovému uživateli, ale může významně ovlivnit osud programu v dlouhodobém horizontu.
- Účinnost/výkon: Měření systémových prostředků program spotřebuje (čas procesoru, paměť, pomalé zařízení, jako jsou disky, šířku pásma sítě a do jisté míry i interakci s uživatelem): čím méně, tím lépe. To také zahrnuje pečlivou správu zdrojů, například čištění dočasných souborů a odstranění úniků paměti., To je často diskutováno ve stínu zvoleného programovacího jazyka. Přestože jazyk jistě ovlivňuje výkon, i pomalejší jazyky, jako je Python, mohou provádět programy okamžitě z lidského hlediska. Rychlost, využití zdrojů, a výkon jsou důležité pro programy, které problémové místo systému, ale efektivní využití programátor čas je také důležité, a souvisí s náklady: další hardware může být levnější.,
čitelnost zdrojového kóduedit
v počítačovém programování se čitelnost týká snadnosti, s jakou může lidský čtenář pochopit účel, řídicí tok a provoz zdrojového kódu. Ovlivňuje aspekty výše uvedené kvality, včetně přenositelnosti, použitelnosti a nejdůležitější udržovatelnosti.
Čitelnost je důležité, protože programátoři tráví většinu svého času čtením, snaží se pochopit a modifikovat existující zdrojový kód, spíše než psát nový zdrojový kód. Nečitelný kód často vede k chybám, neefektivnosti a duplikovanému kódu., Studie zjistila, že několik jednoduchých čitelnost přeměny kód kratší a výrazně snižuje čas to pochopit.
po konzistentním stylu programování často pomáhá čitelnosti. Čitelnost je však více než jen programovací styl. K čitelnosti přispívá mnoho faktorů, které mají málo nebo nic společného se schopností počítače efektivně kompilovat a provádět kód. Některé z těchto faktorů patří:
- Různé styly, odrážky (prázdné)
- Rozklad
- konvence Pojmenování pro objekty (např. proměnné, třídy, postupy, atd.,)
prezentace aspekty (například odrážky, konce řádků, barevné zvýraznění, a tak dále) jsou často řešeny pomocí editoru zdrojového kódu, ale obsah aspekty odrážejí programátor je talent a dovednosti.
byly také vyvinuty různé vizuální programovací jazyky s cílem vyřešit obavy o čitelnost přijetím netradičních přístupů ke struktuře a zobrazení kódu. Cílem integrovaných vývojových prostředí (IDEs) je integrovat veškerou takovou pomoc. Techniky, jako je refaktorování kódu, mohou zvýšit čitelnost.,
Algoritmické complexityEdit
akademické oblasti a technické praxe, počítačové programování jsou oba do značné míry týká objevování a provádění nejvíce efektivní algoritmy pro danou třídu problém. Za tímto účelem jsou algoritmy klasifikovány do příkazů pomocí tzv. velké notace o, která vyjadřuje využití zdrojů, jako je doba provádění nebo spotřeba paměti, z hlediska velikosti vstupu., Expert programátoři jsou obeznámeni s různými dobře zavedenými algoritmy a jejich složitostí a použít tyto znalosti, aby si vybrat algoritmy, které jsou nejvhodnější k okolnostem.
Šachové algoritmy jako exampleEdit
„Programování Počítače pro Hraní Šachů“ byl 1950 dokument, který hodnotí „minimax“ algoritmus, který je součástí historie algoritmické složitosti, kurz na počítač IBM Deep Blue (šachový počítač) je součástí počítačové vědy osnov na Stanford University.,
MethodologiesEdit
prvním krokem ve většině formálních procesů vývoje softwaru je analýza požadavků, následovaná testováním pro stanovení modelování, implementace a eliminace selhání (ladění). Existuje mnoho různých přístupů pro každý z těchto úkolů. Jedním z přístupů populárních pro analýzu požadavků je analýza případů použití. Mnoho programátorů použití formy Agilního vývoje software, kde různé fáze formálního vývoje softwaru jsou integrované spolu do krátkých cyklů, které trvat několik týdnů, nikoli let., Existuje mnoho přístupů k procesu vývoje softwaru.
Populární modelovací techniky zahrnují Objektově-Orientovanou Analýzu a Návrh (OOAD) a Model-Driven Architecture (MDA). Unified Modeling Language (UML) je notace používaná jak pro OOAD, tak pro MDA.
podobná technika používaná pro návrh databáze je Entity-Relationship Modeling (ER Modeling).
implementační techniky zahrnují imperativní jazyky (objektově orientované nebo procedurální), funkční jazyky a logické jazyky.,
Měřicí jazyk užitíedit
je velmi obtížné určit, jaké jsou nejpopulárnější moderních programovacích jazyků., Metody měření programovací jazyk popularity patří: počítání počtu inzerátů, které se zmiňují jazyk, počet prodaných knih a kurzy výuky jazyka (to přeceňuje význam novější jazyky), a odhady počtu stávajících řádků kódu písemné v jazyce (to podceňuje počet uživatelů podnikání jazyky, jako jsou COBOL).
některé jazyky jsou velmi populární pro konkrétní druhy aplikací, zatímco některé jazyky se pravidelně používají k psaní mnoha různých druhů aplikací., Například COBOL je stále silný v podnikových datových centrech často na velkých sálových počítačů, Fortran v technické aplikace, skriptovací jazyky ve Webovém vývoji, a C v embedded software. Mnoho aplikací používá kombinaci několika jazyků při jejich konstrukci a používání. Nové jazyky jsou obecně navržen tak, kolem syntaxi předchozí jazyk s nové funkce přidány, (například C++ přidá objekt-orientace na C a Java přidává správu paměti a bytecode do C++, ale jako výsledek, ztrácí účinnost a schopnost pro low-level manipulaci).,
DebuggingEdit
první známý skutečný chyba způsobující problém v počítači byla můra, v pasti uvnitř Harvard mainframe, zaznamenané v protokolu kniha zápis ze dne 9. září 1947. „Bug“ byl již běžným termínem pro softwarovou vadu, když byla tato chyba nalezena.
Ladění je velmi důležitý úkol v procesu vývoje software, protože má vady v programu může mít významné důsledky pro jeho uživatele., Některé jazyky jsou náchylnější k některým druhům chyb, protože jejich specifikace nevyžaduje, aby kompilátory prováděly tolik kontroly jako jiné jazyky. Použití statického nástroje pro analýzu kódu může pomoci odhalit některé možné problémy. Obvykle je prvním krokem při ladění pokus o reprodukci problému. Může to být netriviální úkol, například jako u paralelních procesů nebo některých neobvyklých softwarových chyb. Také specifické uživatelské prostředí a historie použití mohou ztěžovat reprodukci problému.,
po reprodukci chyby může být nutné zjednodušit vstup programu, aby se usnadnilo ladění. Například, když chyba v kompilátoru může způsobit selhání při analýze nějakého velkého zdrojového souboru, zjednodušení testovacího případu, který má za následek pouze několik řádků z původního zdrojového souboru, může stačit k reprodukci stejného selhání. Trial-and-error/divide-and-conquer je zapotřebí: programátor se pokusí odstranit některé části původního testovacího případu a zkontrolovat, zda problém stále existuje., Při ladění problému v GUI, programátor může vyzkoušet přeskočit některé interakce uživatele z původní popis problému a zkontrolujte, zda zbývající akce jsou dostačující pro chyby, aby se objeví. Skriptování a breakpointing je také součástí tohoto procesu.
ladění se často provádí pomocí ID, jako je Eclipse, Visual Studio, Xcode, Kdevelop, NetBeans a Code::Blocks. Používají se také samostatné debuggery, jako je GDB, a ty často poskytují méně vizuálního prostředí, obvykle pomocí příkazového řádku. Některé textové editory, jako je Emacs, umožňují, aby GDB byl prostřednictvím nich vyvolán, aby poskytoval vizuální prostředí.,