Tvorba software a algoritmizace 1
Obsah Vývoj software Metodiky vývoje systémů Programování Algoritmizace Záznam a prvky algoritmu Příklady 2
Účel systému Systém je souborem souvisejících částí, které spolu vzájemně spolupracují za účelem splnění určitého cíle. Počítačový systém se skládá z: Hardware Software Lidí Procedur Dat 3
Kolik stojí vývoj software? 4
Kdo se podílí na vývoji software? Uživatelé Nový software musí být vždy vyvíjen ve spolupráci s uživateli, kteří ho budou používat Management Manažeři organizace, ve keré bude software nasazen, by měli konzultovat rozpočet a zdroje Technický personál Bude realizovat projekt, nebo spolupracovat na jeho vývoji Systémový analytik Informační specilista, který provádí systémovou analýzu, návrh a implementaci software 5
Proč vývoj software? Využití příležitosti (proaktivní přístup) Zvýšení příjmů podniku Snížení nákladů Získání konkurenční výhody Řešení problému (reaktivní přístup) Vyhnout se potížím Nařízení Pokyn k akci (shora od vedení) 6
Vývoj software: Vývoj software Aktivity, které vedou k tvorbě řešení softwarové aplikace nebo informačního systému, který řeší určitý problém nebo příležitost Doporučené postupy řešení aplikací a informačních systémů metodiky Většina ICT firem disponuje vlastními metodikami (např. IBM RUP, Unicorn ES,aj.), ale existují i standardní (ITIL, COBIT) nebo univerzitní metodiky 7
Životní cyklus vývoje software Aplikace prochází fázemi životního cyklu Každá fáze zahrnuje aktivity, které musí být vykonány při vzniku aplikace Fáze životního cyklu se opakují aplikace se dostává na vyšší úroveň, zahrnuje nové požadavky uživatelů, využívá moderní technologie, apod. 8
Fáze životního cyklu systému 1. Plánování a příprava 6. Užívání a údržba systému 2. Analýza systému 5. Implementa ce systému 3. Návrh systému 4. Vývoj systému Zdroj: Using Infromation Technology, 2013. 9
Fáze 1: Plánování a příprava Předběžná analýza Návrh alternativních řešení Interview se zaměstnanci Průzkum konkurence Volba, zda ponechat stávající systém, vylepšení nebo vývoj nového Náklady a přínosy Předložení předběžného plánu a doporučení Tištěná zpráva Pro další fázi je nezbytné schválení managementu 10
Fáze 2: Analýza systému Sběr dat Rozhovory s pracovníky a vedoucími Příprava, distribuce a analýza dotazníkového šetření Průzkum dokumentace k stávajícímu systému Pozorování současných pracovních postupů Analýza dat Modelování pomocí nástrojů (CASE) Diagram datových toků (DFD, Data Flow Diagram) znázornění průchodu dat systémem 11
Fáze 2: Analýza systému Sepsání zprávy Dokumentace funkcí k současnému systému Dokumentace potíží současného systému Záznam požadavků na nový systém Doporučení k dalším krokům Nutnost získat svolení vedení k dalšímu postupu 12
Data Flow Diagram (DFD) Příklad: internetový obchod 13
Fáze 3: Návrh systému Předběžný návrh Prototyp, návrh pomocí CASE nástrojů Detailní návrh: Požadavky na výstupy Požadavky na vstupy Požadavky na ukládání dat Požadavky na zpracování dat Systémové kontroly Záohování Písemná zpráva a schválení vedení pro další postup 14
Fáze 4: Vývoj systému Návrh nebozakoupení novéhosoftware Rozhodnutí zda koupit hotovéřešení nebo nechat vytvořit nový software Vlastní tvorba programování Pořízení nového hardware nebo upgrade Testování systému Testování modulů: testuje se výkon jednotlivých součástí Testování systému: moduly jsou propojeny a testovány, zda spolují dohromady; reálná data 15
Fáze 5: Implementace systému Volba strategie zavedení nového systému Přímá implementace: ukončení starého a zavedení novéhosystému ( ze dne naden ) Souběžná implementace: souběžně používáme starý a nový systém, dokud se nový systém spolehlivě neprověří Postupná implementace: části novéhosystému postupně nahrazujíčásti původníhosystému Pilotní implementace: ověření funkčnosti nového systému v menším rozsahu (např. Oddělení) Školení a trénink uživatelů 16
Fáze 6: Provoz a údržba systému Auditování systému a pravidelné hodnocení Provádění úprav systému dlenových požadavků Dokončení dokumentace Dokumentace by se měla vytvářet a aktualizovat v průběhu všech fází životního cyklu systému 17
Když se nepoužívá standardní metodika 18
Příběh softwarového projektu Jak zákazník popsal svoje přání Jak to pochopil vedoucí projektu Co navrhnul analytik Co stvořil programátor Co konzultant vylíčil zákazníkovi Dokumentace k systému Které funkce byly nainstalovány Co bylo zákazníkovi naúčtováno Jaká byla podpora uživatelů Co zákazník doopravdy chtěl 19 Zdroj: donationcoder.com
Programování 20
Programování Program je sada instrukcí, které vykonává počítač a tím zpracovává data na informace Programování patří do fáze č. 4 životního cyklu software 5 kroků: 1. Objasnění a definice zadání (úlohy) 2. Návrh programu 3. Kódování programu 4. Testování programu 5. Dokumentace a údržba programu 21
Programování krok 1: Objasnění zadání Nutno objasnit účel programu a jeho uživatele Požadované výstupy Požadované vstupy Jak má probíhat zpracování Ověření vhodnosti programu ( Skutečně se to vyplatí? ) Zpracování analýzy (písemně) 22
Programování krok 2: Návrh programu Tvorba algoritmu, nebo posloupnosti kroků vedoucích k řešení stanoveného zadání Strukturované programování: Logická posloupnost modulů Metoda shora-dolů (top-down approach) Hierarchické grafy Pseudokód Alternativa: objektové programování 23
Hierarchický graf 24 Zdroj: Using Infromation Technology, 2013.
Pseudokód 25 Zdroj: Using Infromation Technology, 2013.
Programování krok 2: Návrh programu (pokračování) Strukturované programování: Využívá řídící struktury: Sekvence (logická posloupnost jednotlivých kroků) Selekce (např. IF THEN ELSE) Iterace (cyklus), např. DO UNTIL / DO WHILE Znázornění v grafické podobě pomocí vývojových diagramů, strukturogramů 26
Programování krok 3: Kódování Převod grafického znázornění programu do programovacího jazyka Výběr programovacího jazyka Odlišnost programovacích jazyků v syntaxi, gramatických pravidlech Nutno dodržovat (syntaktické chyby syntax error) 27
Programování krok 4: Testování programu Syntaktické chyby (automaticky) Logické chyby (ručně) Debugging = proces identifikace, hledání a odstraňování všech syntaktických a logických chyb v počítačovém programu Beta testování programu na reálných datech V první fázi test na správných datech V druhé fázi test s nesprávnými daty běžní uživatelé hledají skryté chyby 28
Programování krok 5: Dokumentace a údržba programu Dokumentace je písemný popis programu, jeho funkcí a návod jak řešit problémy Uživatelská dokumentace pro uživatele (např. uživatelská příručka online, zabudovaná v programu, tištěná) Technická dokumentace pro správce ICT Programátorská dokumentace pro údržbu a rozvoj software (může být i ve zdrojovém kódu) 29
Strukturované programování Viz Programování - krok č. 2 30
v životě 31
v informatice 32
ALGORITMIZACE chci něco spočítat a/ rozmyslím si, jak postupovat b/ provedu výpočet podle vymyšleného postupu l ad a/ tvůrčí činnost, mohu vymýšlet různé strategie a hledat důvtipné triky l ad b/ mechanicky provádím výpočet: ani nemusím problému moc rozumět, ale musím pracovat pečlivě 33
ALGORITMUS Přesný návod či postup pro řešení daného typu úlohy V širším slova smyslu: jakýkoliv postup řešení (např. kuchyňský recept) V užším slova smyslu: postup splňující silnější požadavky (např. počítačový algoritmus) 34
Algoritmus - požadavky 1. mechanický lze ho provést i bez bližšího porozumění 2. diskrétní rozdělený na dílčí kroky 3. hromadný pro řešení celé třídy úloh (např. součin dvou celých čísel) 4. deterministický po každém kroku je určeno, který další krok bude následovat 5. konečný (rezultativní) postup skončí v konečném počtu kroků 6. správný pro přípustné vstupní údaje a po určitém počtu kroků se vždy dospěje k výsledku 35
Záznam algoritmu srozumitelný musí být jasné, co a jak řeší přehledný rychle uchopitelný dostatečně podrobný pro objasnění způsobu řešení dostatečně stručný detaily jsou matoucí slovním vyjádřením často nedokonalý popis grafem, obrázkem, schématem smluveným grafickým vyjádřením - vývojovým diagramem - plošným strukturogramem vhodně okomentovaným programem 36
Vývojový diagram vs. strukturogram předvolené směry činnost činnost činnost činnost činnost spojovací čáry hranice mezi plochami 37
Příklad algoritmu - 1 Nákup rohlíků v obchodě Jdi do obchodu Vezmi nákupní košík Dojdi k oddělení s pečivem Vezmi sáček Dej do něj rohlíky Co když mají zavřeno? Co když nemají rohlíky? Co když? Dojdi k pokladně Zaplať Vrať košík Ukliď rohlíky do tašky Odejdi z obchodu 38
Příklad algoritmu - 2 Výpočet povrchu kvádru Čti délku strany a Čti délku strany b Čti délku strany c S ab =a*b S bc =b*c S ac =a*c S=2*(S ab +S bc +S ac ) Co když uživatel zadá nulové délky stran a,b,c? Co když uživatel zadá zápornou délku strany? c Vypiš S ab, S bc, S ac Vypiš celkový povrch S a b 39
Základní prvky algoritmu 1. sekvence jednotlivý krok, prováděný vždy 2. selekce větvení, volba pokračování podle podmínky 3. iterace cyklus, opakované provádění podmíněno a) testem na začátku b) testem na konci 40
sekvence činnosti se provádějí v daném pořadí Sekvence činnost činnost činnost činnost činnost činnost činnost přiřazovací příkazy, volání podprogramů, 41
Sekvence - příklad Výměna obsahu dvou proměnných x = 3 y = 12 pom = x x = y y = pom čti x, y Sestrojte algoritmus, který načte dvě reálná čísla do proměnných x a y a prohodí jejich hodnoty. Proměnná 1. pojmenované místo operační paměti, které obsahuje data, jež mohou být měněna během zpracování algoritmu (programu) 2. místo v operační paměti, které začíná na určité adrese a má daný počet bytů 42
Selekce selekce výběr z možných pokračování podmínka ano ne podmínka ano ne příkaz_a příkaz_b příkaz_a příkaz_b if (podmínka) then příkaz_a else příkaz_b 43
selekce výběr z možných pokračování Selekce podmínka ne ano podmínka ne ano příkaz_a příkaz_a if (podmínka) then příkaz_a else nic 44
Selekce - příklad Dělení dvou čísel Ano Čti A, B Je B = 0? Ne Vypiš: Pokus dělit nulou! Podíl = A/B Vypiš podíl 45
zajímavost Vícenásobná selekce 1 2 3 podmínka n default příkaz_a příkaz_b příkaz_c příkaz_n Příkaz_Z do case (podmínka) 1 příkaz_a 2 příkaz_b 3 příkaz_c... n příkaz_n default příkaz_z 46
iterace opakování Iterace s testem na začátku ne podmínka ano podmínka ano činnost činnost ne for (od ; pokud ; krok) činnost while (podmínka) činnost 47
Příklad Iterace s testem na začátku Příprava šálku kávy Ano Máš rychlovarnou konvici? Ne Vezmi konvici Nalij do ní 0,1 l vody Chceš uvařit více vody? Přidej 0,1 l vody Postav a zapni konvici Vezmi prázdný šálek Nasyp do šálku kávu Dokud není voda uvařená Čekej 30 vteřin Zalij šálek vodou Nelze připravit šálek kávy pomocí rychlovarné konvice 48
iterace opakování Iterace s testem na konci činnost poprvé vždy, dále při ano činnost podmínka podmínka ano ne ne do činnost while podmínka repeat činnost until podmínka 49
Příklad Iterace s testem na konci Skládání zkoušky na vysoké škole Dokud nejsi přihlášen(a) na termín Najdi nejbližší termín zkoušky Je termín volný? Ano Přihlas se na termín Pokus se složit zkoušku Ne Dokud není zkouška splněna s výsledkem <=3 Zkouška úspěšně splněna 50
Selekce vs. Iterace Selekce výběr z více možností; provádí se pouze jednou a neopakuje se Např. Je hodnota v proměnné a větší než 0? Pokud ano: přičti do a 1 ; pokud ne, odečti od a 1. Iterace činnost uvedená v bloku iterace se může opakovat více než jednou, dokud platí podmínka Např. Je hodnota v proměnné a větší než 0? pokud ano, odečti od a 1 a testuj znovu podmínku; pokud ne, přejdi k dalšímu kroku. 51
Počítačový software Uživatel zadává svoje požadavky počítačovému hardware prostřednictvím instrukcí v software Tyto instrukce musí být zapsány v podobě srozumitelné mikroprocesoru (CPU) - programování 52
Programování vs. algoritmizace Programování = proces tvorby (psaní) programu pomocí programovacího jazyka Algoritmizace = proces tvorby algoritmu (postupu řešení) Programování algoritmizace 53
Programovací jazyk Počítač (CPU) rozumí elektrickým signálům (bity) jazyk strojového kódu Příliš dlouhé a složité Programovací jazyk zápis instrukcí ve zkrácené podobě srozumitelné člověku Speciální program překladač převádí instrukce programovacího jazyka do strojového kódu 54
10 PRINT HELLO 20 END 55
Překlad zdrojového kódu programu 10 PRINT HELLO Překladač 1001101 programovacího 1110101 jazyka 0010110 Zdrojový kód programu Zapsáno v BASIC, C, aj. Proces překládání zdrojového kódu Program ve strojovém kódu Obr: quantifactus.wcupa.edu/lab/mis/software.ppt 56
Souhrnné otázky 1. Vysvětlete rozdíl mezi algoritmizací a algoritmem. 2. Může algoritmus vzniknout a fungovat i bez použití počítače? Vysvětlete. 3. Uveďte alespoň 3 základní požadavky na algoritmus. 4. Vysvětlete rozdíl mezi požadavky na mechanický a hromadný algoritmus. 5. V čem se liší nákres algoritmu pomocí vývojového diagramu a pomocí plošného strukturogramu? 6. Co je to proměnná? 7. Vyjmenujte základní prvky algoritmu. 8. Uveďte příklad sekvence. Jaký je rozdíl mezi sekvencí a selekcí? 9. Vysvětlete rozdíly mezi selekcí a iterací? 10. K čemu slouží podmínka v iteraci? Kde se může nacházet? 11. Za jakých okolností dojde k opakování bloku činností v iteraci? Uveďte příklad. 12. Algoritmizujte úlohu naplnění 5 lahví vodou. Znázorněte pomocí plošného strukturogramu. 57
Souhrnné otázky 13. Z jakých důvodů dochází k vývoji software? Uveďte příklady. 14. Uveďte alespoň tři různé nástroje, které pomáhají efektivnějšímu vývoji software. 15. Co je to metodika vývoje software? Vysvětlete a uveďte příklad. 16. Co obnáší fáze životního cyklu software analýza a návrh? 17. Vysvětlete. Vysvětlete rozdíl mezi algoritmizací a programováním. 18. K čemu slouží programovací jazyk? 19. Jaká je úloha překladače zdrojového kódu při tvorbě programu? 58