Pragmatická filozofie Můj zdrojový kód snědla kočka 20 Přijímání odpovědnosti Entropie softwaru 21 Být schopen uhasit požár 22

Podobné dokumenty
Analýza a Návrh. Analýza

CASE nástroje. Jaroslav Žáček

Obsah. Úvod 9 Poděkování 10 Co je obsahem této knihy 10 Pro koho je tato kniha určena 11 Zpětná vazba od čtenářů 11 Errata 11

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

9. Ladění a testování programů. booleovský výraz

Úvod. Programovací paradigmata

ČÁST 1. Rozhodující koncepce odhadů. Co je Odhad? 25

CASE. Jaroslav Žáček

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

1 Úvod 1.1 Vlastnosti programového vybavení (SW)

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Program a životní cyklus programu

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

Joelův test. 12 kroků k lepšímu programování. Jaroslav Šnajdr

ŠVP Gymnázium Ostrava-Zábřeh Úvod do programování

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

TÉMATICKÝ OKRUH Softwarové inženýrství

Úvod do problematiky vývoje Vývoj informačních systémů

X36SIN: Softwarové inženýrství. Životní cyklus a plánování

INFORMATIKA 6. ROČNÍK

Obsah. O autorech 9 Earle Castledine 9 Myles Eftos 9 Max Wheeler 9 Odborný korektor 10. Předmluva 11 Komu je kniha určena 12 Co se v knize dočtete 12

Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části:

Proces vývoje HRIS Vema (Human Resources Information System) Jaroslav Šmarda

Úvod do softwarového inženýrství a týmového vývoje

Vývoj programů. ÚVOD DO OPERAČNÍCH SYSTÉMŮ

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Testování Java EE aplikací Petr Adámek

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

Nástroje pro vývoj software

Dokumentace software

BI-TIS Případová studie

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Metodika analýzy. Příloha č. 1

Předmluva 11. Poděkování 11 O autorech 12 Úvodem 12 Komu je tato kniha určena 13 Jak byste měli tuto knihu číst 13 Web 14

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Úvod do informačních a řídicích systémů. lení

Matematika v programovacích

techlib.cz NOVÝ WEB NTK: vstříc uživatelským potřebám a zvyklostem v globálním prosíťovaném akademickém prostředí

Zajištění kvality programového vybavení - testování

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21

Řízení reálných projektů, agilní metodiky

7. Pracovní postupy. Fakulta informačních technologií MI-NFA, zimní semestr 2011/2012 Jan Schmidt

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

Velká kniha e-learningu

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Úvod 9

MST - sběr dat pomocí mobilních terminálů on-line/off-line

9. Praktická verifikace

Úvod do programovacího jazyka Python

Vyřešené teoretické otázky do OOP ( )

Základy analýzy. autor. Jan Novotný února 2007

7 Jazyk UML (Unified Modeling Language)

PŘÍLOHA C Požadavky na Dokumentaci

2013 IBM Corporation

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Ročníkový projekt. Jaroslav Žáček

CENTRUM VZDĚLÁVÁNÍ PEDAGOGŮ ODBORNÝCH ŠKOL

1. IT_0F1 Základní obsluha MS Office 2010 MS Word, MS Excel, MS PowerPoint, MS Windows

ZADÁVACÍ DOKUMENTACE pro výběrové řízení na dodavatele vzdělávání v oblasti integrace systémů ICT

Úvod do programovacího jazyka Python

Y13ANW ÚVOD DO WEBOVÝCH METODIK. Ing. Martin Molhanec, CSc.

TECHNICKÁ SPECIFIKACE VEŘEJNÉ ZAKÁZKY

5.15 INFORMATIKA A VÝPOČETNÍ TECHNIKA

Algoritmy a algoritmizace

Formy komunikace s knihovnami

Testování SOA systémů v Oracle SOA Suite

Základy databází. O autorech 17 PRVNÍ ČÁST. KAPITOLA 1 Začínáme 19

Pokročilá průmyslová automatizace

Semináˇr Java X J2EE Semináˇr Java X p.1/23

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Architektury Informačních systémů. Jaroslav Žáček

INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE. INFORMATIKA 1.stupeň ZŠ

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Agenda. Smysl teoretických cvičení Klasifikace Obecná pravidla Bugzilla Klasické problémy Poznámky k jednotlivým pojmům Antipatterns Testování testů

Obsahy kurzů MS Office

7 Jazyk UML (Unified Modeling Language)

Sada 1 - Základy programování

programátor vs. vývojář

Objektově orientované technologie Diagram komponent Implementační náhled (Diagram rozmístění) Pavel Děrgel, Daniela Szturcová

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: AVTK. Úvod. strana 1

VZDĚLÁVACÍ OBLAST INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE VYUČOVACÍ PŘEDMĚT: INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE. Charakteristika vyučovacího předmětu:

Zadání soutěžních úloh

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Komprese a dotazování nad XML dokumenty

Architektury počítačů

Obsah. Úvodem 9 Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10

Modelování a simulace: o předmětu. Radek Pelánek

Část IV - Bezpečnost 21. Kapitola 19 Bezpečnostní model ASP.NET 23

MPASM a IDE pro vývoj aplikací MCU (Microchip)

Obsah. O autorovi 11 Předmluva 13 Zpětná vazba od čtenářů 14 Errata 14

Hodnoticí standard. Programátor (kód: M) Odborná způsobilost. Platnost standardu. Skupina oborů: Informatické obory (kód: 18)

SIMATIC S IT. Micro Automation. Promoters Meeting October Představení CP IT SPIDER CONTROL TELESERVIS. TESTOVACÍ server.

ČÁST 1. Základy 32bitového programování ve Windows

Novinky ve Visual Studio Tomáš Kroupa

Algoritmizace- úvod. Ing. Tomáš Otáhal

Základní škola a Mateřská škola Třemešná Třemešná 341 tel: IČ:

Informatika a výpočetní technika 1. Ing. Ladislav Nagy Technická univerzita v Liberci FT / KOD / 2011

S ICT ve výuce to umíme_dodávka dodatečného software

Informační a komunikační technologie pro učební obory ME4 a SE4. Makra

Transkript:

Úvodní slovo 11 Předmluva 13 Kdo by měl tuto knihu číst? 13 Co dělá programátora pragmatikem? 14 Jednotliví pragmatici a velké týmy 15 Nikdy nekončící proces 16 Jak je kniha členěna 16 Jak jsme přišli pojmům na jméno? 16 Zdrojový kód a jiné zdroje 17 Stojíme o zpětnou vazbu 17 Poznámka českého vydavatele 17 Poděkování 18 KAPITOLA 1 Pragmatická filozofie 19 1 Můj zdrojový kód snědla kočka 20 Přijímání odpovědnosti 20 2 Entropie softwaru 21 Být schopen uhasit požár 22 3 Polévka ze sekyrky a vařené žáby 23 A co na to vesničané 24 4 Dostatečně kvalitní software 25 Zapojte do kompromisů uživatele 26 Vědět, kdy přestat 26 5 Vaše portfolio znalostí 27 Vaše portfolio znalostí 28 Budujte své portfolio 28 Cíle 29 Příležitosti k učení 30 Kritické myšlení 30 6 Komunikujte! 31 Ujasněte si, co chcete říci 32 Poznejte své publikum 32

4 Obsah Zvolte správný okamžik 33 Zvolte vhodný styl 33 Dbejte na formu 33 Zapojte publikum 34 Naslouchejte 34 Odpovídejte 34 KAPITOLA 2 Pragmatický přístup 37 7 Hříchy opakování 38 Z čeho opakování pramení? 39 Vynucené opakování 39 Nechtěné opakování 40 Opakování z netrpělivosti 42 Opakování v týmu 42 8 Ortogonalita 43 Co je ortogonalita? 43 Neortogonální systém 44 Výhody ortogonality 44 Zvýšení produktivity 45 Snížení rizika 45 Projektové týmy 45 Návrh 46 Nástroje a knihovny 47 Tvorba kódu 48 Testování 49 Dokumentace 49 Život s ortogonalitou 49 9 Reverzibilita 51 Reverzibilita 52 Flexibilní architektura 52 10 Trasovací střely 54 Kód zářící ve tmě 55 Trasovací střely nezasáhnou vždy cíl 56 Trasovací kód versus prototypy 57 11 Prototypy a poznámky 58 Co se hodí testovat na prototypech 58 Jak vytvářet prototypy 59 Prototypy architektury 59

5 Jak prototypy nevytvářet 60 12 Oborové jazyky 61 Implementace minijazyka 63 Datové jazyky a imperativní jazyky 63 Samostatné a integrované jazyky 65 Snadný vývoj, nebo snadná údržba? 65 13 Odhady 66 Jak přesný odhad je dostatečně přesný? 67 Odkud se berou odhady? 68 Pochopte, na co se vás ptají 68 Vytvořte si model systému 68 Rozložte model na komponenty 68 Každému parametru přidělte hodnotu 69 Vypočtěte odpovědi 69 Sledujte svou odhadovací schopnost 69 Odhady časových plánů projektů 70 Co říci, když jste tázáni na odhad 70 KAPITOLA 3 Základní nástroje 73 14 Síla prostého textu 74 Co je prostý text? 74 Nevýhody 75 Síla textu 75 Univerzálnost 76 Snadnější testování 77 Nejmenší společný jmenovatel 77 15 Hrátky s příkazovou řádkou 78 Utility pro příkazovou řádku a systémy Windows 80 16 Vyšší škola editování 81 Jeden editor 82 Funkce editoru 82 Produktivita 83 Jakým směrem se dále vydat 84 Jaké editory jsou k dispozici? 84 17 Správa zdrojového kódu 85 Správa zdrojového kódu a sestavení 86 Jenže náš tým správu zdrojového kódu nepoužívá 86 Produkty pro správu zdrojového kódu 87

6 Obsah 18 Ladění 87 Psychologie ladění 88 Postoj k ladění 88 Kde začít 89 Strategie ladění 89 Vizualizujte data 90 Trasování 91 Gumová kachnička 91 Proces eliminace 92 Moment překvapení 93 Co zkontrolovat při ladění 93 19 Práce s textem 94 20 Generátory kódu 97 Pasivní generátory kódu 97 Aktivní generátory kódu 98 Generátory kódu nemusí být složité 100 Generátory kódu nemusí generovat kód 100 KAPITOLA 4 Pragmatická paranoia 101 21 Programování na základě smlouvy 102 Návrh na základě smlouvy 102 Implementace návrhu na základě smlouvy 105 DBC a havárie v pravý čas 106 Jiná využití invariantů 107 Dynamické smlouvy a agenti 109 22 Mrtvé programy nelžou 111 Havárie je lepší než slon v porcelánu 111 23 Asertivní programování 112 Aserce nechte zapnuté 113 24 Kdy používat výjimky 115 Co je výjimečné? 116 Jednou z možností jsou rutiny pro obsluhu chyb 117 25 Jak vyvážit prostředky 118 Objekty a výjimky 120 Vyvažování a výjimky 120 Vyvažování prostředků v Javě 122

7 KAPITOLA 5 Ohnout, nebo zlomit 125 26 Odstraňování závislostí a Demeterův zákon 126 Minimalizace vazeb 126 Demeterův zákon pro funkce 127 Je mezi programy rozdíl? 127 27 Metaprogramování 130 Dynamická konfigurace 130 Aplikace řízené metadaty 131 Program jako dodo mauricijský 133 28 Vazby v čase 134 Pracovní postupy 135 Architektura 137 Návrh pro paralelní programy 138 Čistší rozhraní 139 Nasazení 140 29 Jde jen o pohled 140 Vydavatel/předplatitel 141 Model-pohled-ovladač 142 Co se skrývá za GUI 143 Někde vazby zůstaly (i po těch letech) 145 30 Tabule 146 Některé implementace tabule 147 Příklad aplikace 148 KAPITOLA 6 Když píšete program 151 31 Spoléhání na náhodu 152 Jak spoléháme na náhodu při programování 152 Programovat musíme s rozmyslem 154 32 Rychlost algoritmů 155 Odhady algoritmů 156 Symbol O() 156 Odhad pomocí zdravého rozumu 157 Rychlost algoritmů v praxi 158 33 Refaktorizace 160 Kdy má smysl refaktorizovat 161 Jak refaktorizujeme programy 162

8 Obsah 34 Kód, který se snadno testuje 165 Jednotkové testování 165 Testování na základě smlouvy 165 Psaní testů jednotek 167 Standardní testovací postupy 168 Jak vytvoříme testovací okno 170 Kultura testování 170 Zlobiví průvodci 171 KAPITOLA 7 Předprojektová příprava 175 36 Jak vydolovat zadání 176 Zadání musíme vydolovat 176 Dokumentace zadání 177 Diagramy případů užití 179 Nadbytečné specifikace 181 Myslete na budoucnost 181 Ještě jeden malinký penízek... 182 Ve te si významový slovník 182 Text musí být dostupný 183 37 Jak řešit hlavolamy 184 Stupně volnosti 184 Musí přece existovat snadnější způsob! 185 38 Až budete připraveni, dřív ne 186 Správný úsudek, nebo zbytečné odklady? 186 Náměty k zamyšlení 187 39 Specifikační past 187 40 Kroužky a šipky 189 Vyplatí se formální metody? 190 Měli bychom používat formální metody? 190 KAPITOLA 8 Pragmatické projekty 193 41 Pragmatické týmy 194 Žádná rozbitá okna 194 Vařené žáby 194 Komunikujte 195 Neopakujte se 195

9 Ortogonalita 195 Automatizace 197 Vědět, kdy přestat 197 42 Všudypřítomná automatizace 198 Vše automaticky 198 Překlad projektu 199 Automatizace sestavování 200 Základy automatické administrativy 201 Ševcova žena 202 43 Nemilosrdné testování 203 Co testovat 204 Jak testovat 206 Ověřování systémů s grafickým rozhraním (GUI) 208 Kdy testovat 209 Utahování sítě 210 44 Vše je o psaní 211 Komentáře v programu 211 Spustitelné dokumenty 213 Technická síla 214 Výstupy můžete tisknout i tkát... 214 Značkovací jazyky 215 45 Velká očekávání 216 Komunikační předpoklady 217 Čestné kolečko 217 46 Pýcha a předsudek 218 PŘÍLOHA A Zdroje 221 Profesní společenstva 221 Budování knihovny 222 Knihy 223 Internet 224 Zdroje na Internetu 224 Bibliografie 232 PŘÍLOHA B Odpovědi ke cvičením 237 Rejstřík 263