View
4
Download
0
Category
Preview:
Citation preview
1
Tvorbasoftwareaalgoritmizace
2
Obsah
• Vývojsoftware• Metodikyvývojesystémů• Programování• Algoritmizace• Záznamaprvkyalgoritmu• Příklady
3
Účelsystému
• Systémjesouboremsouvisejícíchčástí,kteréspoluvzájemněspolupracujízaúčelemsplněníurčitéhocíle.
• Počítačovýsystémseskládáz:– Hardware– Software– Lidí– Procedur– Dat
4
Kolik stojí vývoj software?
5
Kdo sepodílí na vývoji software?
• Uživatelé– Nový softwaremusí být vždy vyvíjen ve spolupráci s
uživateli,kteří hobudou používat• Management
– Manažeři organizace,ve keré bude softwarenasazen,byměli konzultovat rozpočet azdroje
• Technický personál– Bude realizovat projekt,nebo spolupracovat na
jeho vývoji• Systémový analytik
– Informační specilista,který provádí systémovouanalýzu,návrh aimplementaci software
6
Pročvývojsoftware?
• 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)– Vyhnoutsepotížím
• Nařízení– Pokynkakci(shoraodvedení)
7
Vývojsoftware
• Vývojsoftware:– Aktivity,kterévedouktvorběřešenísoftwarovéaplikaceneboinformačníhosystému,kterýřešíurčitýproblémnebopříležitost
– Doporučenépostupyřešeníaplikacíainformačníchsystémů–metodiky
– VětšinaICTfiremdisponujevlastnímimetodikami(např.IBMRUP,UnicornES,aj.),aleexistujíistandardní(ITIL,COBIT)nebouniverzitnímetodiky
8
Životnícyklusvývojesoftware
• Aplikaceprocházífázemiživotníhocyklu• Každáfázezahrnujeaktivity,kterémusíbýtvykonánypřivznikuaplikace
• Fázeživotníhocykluseopakují– aplikacesedostávánavyššíúroveň,zahrnujenovépožadavkyuživatelů,využívámodernítechnologie,apod.
9
Fázeživotníhocyklusystému1.
Plánováníapříprava
2.Analýzasystému
3.Návrhsystému
4.Vývojsystému
5.Implementacesystému
6.Užíváníaúdržbasystému
Zdroj: Using Infromation Technology, 2013.
10
Fáze 1:Plánování apříprava• Předběžná analýza• Návrh alternativních řešení– Interviewsezaměstnanci– Průzkum konkurence– Volba,zda ponechat stávající systém,vylepšení nebovývoj nového
• Náklady apřínosy• Předložení předběžného plánu adoporučení– Tištěná zpráva– Prodalší fázi jenezbytné schválení managementu
11
Fáze 2:Analýza systému• Sběr dat– Rozhovory spracovníky avedoucími– Příprava,distribuce aanalýza dotazníkovéhošetření
– Průzkum dokumentace kstávajícímu systému– Pozorování současných pracovních postupů
• Analýza dat–Modelování pomocí nástrojů (CASE)– Diagramdatových toků (DFD,DataFlowDiagram)– znázornění průchodu dat systémem
12
Fáze 2:Analýza systému
• Sepsání zprávy– Dokumentace funkcí ksoučasnémusystému
– Dokumentace potíží současného systému– Záznam požadavků na nový systém– Doporučení kdalším krokům
• Nutnost získat svolení vedení kdalšímupostupu
13
DataFlowDiagram(DFD)Příklad:internetový obchod
14
Fáze 3:Návrh systému• Předběžný návrh– Prototyp,návrh pomocí CASEná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 aschválení vedení prodalší postup
15
Fáze 4:Vývojsystému• Návrh nebo zakoupení nového software– Rozhodnutí zda koupit hotové řešení nebo nechatvytvořit nový software
– Vlastní tvorba – programování• Pořízení nového hardwarenebo upgrade• Testování systému– Testování modulů:testuje sevýkon jednotlivýchsoučástí
– Testování systému:moduly jsou propojeny atestovány,zda spolují dohromady;reálná data
16
Fáze 5:Implementace systému
• Volba strategie zavedení nového systému– Přímá implementace:ukončení starého azavedenínového systému (“ze dne na den”)
– Souběžná implementace:souběžně používámestarý anový systém,dokud senový systémspolehlivě neprověří
– Postupná implementace:části nového systémupostupně nahrazují části původního systému
– Pilotní implementace:ověření funkčnosti novéhosystému vmenším rozsahu (např.Oddělení)
• Školení atrénink uživatelů
17
Fáze 6:Provoz aúdržba systému
• Auditování systému apravidelné hodnocení• Provádění úprav systému dle novýchpožadavků
• Dokončení dokumentace– Dokumentace byseměla vytvářet aaktualizovat vprůběhu všech fází životního cyklu systému
18
Kdyžsenepoužívástandardnímetodika…
19
Jakzákazníkpopsalsvojepřání
Jaktopochopilvedoucíprojektu
Conavrhnulanalytik Costvořilprogramátor Cokonzultantvylíčilzákazníkovi
Dokumentaceksystému
Kteréfunkcebylynainstalovány
Cobylozákazníkovinaúčtováno
Jakábylapodporauživatelů
Cozákazníkdoopravdychtěl
Zdroj: donationcoder.com
Příběhsoftwarovéhoprojektu
20
Programování
21
Programování• Programjesadainstrukcí,kterévykonávápočítačatímzpracovávádatanainformace
• Programovánípatřídofázeč.4životníhocyklusoftware
• 5kroků:1. Objasněníadefinicezadání(úlohy)2. Návrhprogramu3. Kódováníprogramu4. Testováníprogramu5. Dokumentaceaúdržbaprogramu
22
Programování– krok1:Objasněnízadání
• Nutnoobjasnitúčelprogramuajehouživatele• Požadovanévýstupy• Požadovanévstupy• Jakmáprobíhatzpracování• Ověřenívhodnostiprogramu(„Skutečněsetovyplatí?“)
• Zpracováníanalýzy(písemně)
23
Programování– krok2:Návrhprogramu
• Tvorbaalgoritmu,neboposloupnostikrokůvedoucíchkřešenístanovenéhozadání
• Strukturovanéprogramování:– Logickáposloupnostmodulů–Metodashora-dolů(top-down approach)– Hierarchickégrafy– Pseudokód
• Alternativa:objektovéprogramování
24
Hierarchickýgraf
Zdroj: Using Infromation Technology, 2013.
25
Pseudokód
Zdroj: Using Infromation Technology, 2013.
26
Programování– krok2:Návrhprogramu(pokračování)
• Strukturovanéprogramování:– Využívářídícístruktury:• Sekvence(logickáposloupnostjednotlivýchkroků)• Selekce(např.IF– THEN– ELSE)• Iterace(cyklus),např.DOUNTIL/DOWHILE
– Znázorněnívgraficképodoběpomocívývojovýchdiagramů,strukturogramů
27
Programování– krok3:Kódování
• Převodgrafickéhoznázorněníprogramudoprogramovacíhojazyka
• Výběrprogramovacíhojazyka• Odlišnostprogramovacíchjazykůvsyntaxi,gramatickýchpravidlech– Nutnododržovat(syntaktickéchyby– syntaxerror)
28
Programování– krok4:Testováníprogramu
• Syntaktickéchyby(automaticky)• Logickéchyby(ručně)• Debugging=procesidentifikace,hledáníaodstraňovánívšechsyntaktickýchalogickýchchybvpočítačovémprogramu
• Betatestováníprogramunareálnýchdatech– Vprvnífázitestnasprávnýchdatech– Vdruhéfázitestsnesprávnýmidaty– běžníuživateléhledajískrytéchyby
29
Programování– krok5:Dokumentaceaúdržbaprogramu
• Dokumentacejepísemnýpopisprogramu,jehofunkcíanávodjakřešitproblémy
• Uživatelskádokumentace– prouživatele(např.uživatelskápříručka– online,zabudovanávprogramu,tištěná)
• Technickádokumentace– prosprávceICT• Programátorskádokumentace– proúdržbuarozvojsoftware(můžebýtivezdrojovémkódu)
30
Strukturovanéprogramování
• VizProgramování- krokč.2
31
vživotě
32
vinformatice
33
ALGORITMIZACE
• chciněcospočítata/ rozmyslímsi,jakpostupovatb/ proveduvýpočetpodlevymyšlenéhopostupu
l ada/tvůrčíčinnost,mohuvymýšletrůznéstrategieahledatdůvtipnétriky
l adb/mechanickyprovádímvýpočet:aninemusímproblémumocrozumět,alemusímpracovatpečlivě
34
ALGORITMUS
• Přesnýnávodčipostupprořešenídanéhotypuúlohy
• Vširšímslovasmyslu:jakýkolivpostupřešení(např.kuchyňskýrecept)
• Vužšímslovasmyslu:postupsplňujícísilnějšípožadavky(např.počítačovýalgoritmus)
35
Algoritmus- požadavky
1. mechanický – lzehoprovéstibezbližšíhoporozumění
2. diskrétní – rozdělenýnadílčíkroky3. hromadný – prořešenícelétřídyúloh(např.součin
dvoucelýchčísel)4. deterministický – pokaždémkrokujeurčeno,který
dalšíkrokbudenásledovat5. konečný (rezultativní)– postupskončívkonečném
počtukroků6. správný – propřípustnévstupníúdajeapourčitém
počtukrokůsevždydospějekvýsledku
36
Záznamalgoritmu
• slovnímvyjádřením– častonedokonalýpopis• grafem,obrázkem,schématem• smluvenýmgrafickýmvyjádřením- vývojovýmdiagramem- plošnýmstrukturogramem
• vhodněokomentovanýmprogramem
• srozumitelný– musíbýtjasné,coajakřeší• přehledný– rychleuchopitelný• dostatečněpodrobný– proobjasněnízpůsobuřešení• dostatečněstručný– detailyjsoumatoucí
37
Vývojovýdiagramvs. strukturogram
předvolenésměry
činnost
činnost
činnost
činnost
činnost
hranicemeziplochamispojovacíčáry
38
Příkladalgoritmu- 1
„Nákuprohlíkůvobchodě“
Dojdikodděleníspečivem
Vezmisáček
Dejdonějrohlíky
Dojdikpokladně
Zaplať
Vraťkošík
Vezminákupníkošík
Jdidoobchodu
Ukliďrohlíkydotašky
Odejdizobchodu
Cokdyžmajízavřeno?Cokdyžnemajírohlíky?Cokdyž…?
39
Příkladalgoritmu- 2
„Výpočetpovrchukvádru“
Čtidélkustranyc
Sab=a*b
Sbc=b*c
Sac=a*c
S=2*(Sab+Sbc+Sac)
VypišSab,Sbc,Sac
Čtidélkustranyb
Čtidélkustranya
VypišcelkovýpovrchS
Cokdyžuživatelzadánulovédélkystrana,b,c?
Cokdyžuživatelzadázápornoudélkustrany?
ab
c
40
Základníprvkyalgoritmu
2. selekce– větvení,volbapokračovánípodlepodmínky
1. sekvence– jednotlivýkrok,prováděnývždy
3. iterace– cyklus,opakovanéprováděnípodmíněnoa) testemnazačátkub) testemnakonci
41
Sekvence
činnost
činnost
činnost
činnost
činnost
činnost
…přiřazovacípříkazy,
volánípodprogramů,…činnost
sekvence– činnostiseprovádějívdanémpořadí
42
Sekvence- příklad
„Výměnaobsahudvouproměnných“
pom=x
x=y
y=pom
čtix,y
y=12
x=3
Sestrojtealgoritmus,kterýnačtedvěreálnáčísladoproměnnýchx ay aprohodíjejichhodnoty.
Proměnná1. pojmenovanémístooperačnípaměti,
kteréobsahujedata,ježmohoubýtměněnaběhemzpracováníalgoritmu(programu)
2. místovoperačnípaměti,kterézačínánaurčitéadreseamádanýpočetbytů
43
Selekce
if(podmínka)then příkaz_Aelse příkaz_B
podmínka
ano ne
příkaz_A příkaz_B
nepodmínka
ano
příkaz_A příkaz_B
selekce– výběrzmožnýchpokračování
44
ne
Selekce
podmínkapodmínka
ano
if(podmínka)then příkaz_Aelse nic
ano ne
příkaz_A
příkaz_A
selekce– výběrzmožnýchpokračování
45
Selekce- příklad
„Dělenídvoučísel“
JeB=0?Ano Ne
Vypiš:„Pokusdělitnulou!“ Vypišpodíl
ČtiA,B
Podíl=A/B
46
Vícenásobnáselekce
docase(podmínka)1příkaz_A2příkaz_B3příkaz_C...npříkaz_Ndefault příkaz_Z
podmínka1
default
zajímavost
23
příkaz_A příkaz_B
n
příkaz_N Příkaz_Zpříkaz_C
47
Iterace– stestemnazačátku
podmínka
for(od; pokud ; krok)činnostwhile (podmínka)činnost
činnost
ne
ano
podmínkane
ano
činnost
iterace– opakování
48
Příklad– Iteracestestemnazačátku
„Přípravašálkukávy“Mášrychlovarnoukonvici?
Ano Ne
Nelzepřipravitšálekkávypomocírychlovarnékonvice
VezmikonviciNalijdoní0,1lvody
Chcešuvařitvícevody?
PostavazapnikonviciVezmiprázdnýšálek
Dokudnenívodauvařená
Zalijšálekvodou
Přidej0,1lvody
Čekej30vteřin
Nasypdošálkukávu
49
ano
Iterace– stestemnakonci
podmínka
do činnostwhile podmínkarepeatčinnost untilpodmínka
činnost
podmínka
činnost poprvévždy,dálepřiano
ne
ne
iterace– opakování
50
Příklad– Iteracestestemnakonci
„Skládánízkouškynavysokéškole“
Ano Ne
Dokudnenízkouškasplněnasvýsledkem<=3
Dokud nejsi přihlášen(a)natermín
NajdinejbližšítermínzkouškyJetermínvolný?
Přihlassenatermín
Pokussesložitzkoušku
Zkouška úspěšněsplněna
51
Selekce vs.Iterace• Selekce – výběrzvícemožností;provádísepouzejednouaneopakujeseNapř. Jehodnotavproměnnéa většínež0?Pokudano:přičtidoa 1;pokudne,odečtioda 1.
• Iterace – činnostuvedenávblokuiteracesemůžeopakovatvícenežjednou,dokudplatípodmínkaNapř. Jehodnotavproměnnéa většínež0? – pokudano,odečtioda 1atestujznovupodmínku; pokudne,přejdikdalšímukroku.
52
Počítačovýsoftware
• Uživatelzadávásvojepožadavkypočítačovémuhardwareprostřednictvíminstrukcívsoftware
• Tytoinstrukcemusíbýtzapsányvpodoběsrozumitelnémikroprocesoru(CPU)-programování
53
Programovánívs.algoritmizace
• Programování=procestvorby(psaní)programupomocíprogramovacíhojazyka
• Algoritmizace=procestvorbyalgoritmu(postupuřešení)
• Programování≠algoritmizace
54
Programovacíjazyk
• Počítač(CPU)rozumíelektrickýmsignálům(bity)– jazyk strojovéhokódu
• Přílišdlouhéasložité• Programovacíjazyk– zápisinstrukcívezkrácenépodoběsrozumitelnéčlověku
• Speciálníprogram– překladač – převádíinstrukceprogramovacíhojazykadostrojovéhokódu
55
• 10PRINT“HELLO”• 20END
56
Překladzdrojovéhokóduprogramu
Procespřekládání
zdrojovéhokódu
Zdrojovýkódprogramu
Programve
strojovémkódu
ZapsánovBASIC,C, aj.
Překladačprogramovacího
jazyka
10PRINT„HELLO“ 1001101
11101010010110
Obr: quantifactus.wcupa.edu/lab/mis/software.ppt
57
Souhrnnéotázky
1. Vysvětleterozdílmezi„algoritmizací“a„algoritmem“.2. Můžealgoritmusvzniknoutafungovatibezpoužitípočítače?Vysvětlete.3. Uveďtealespoň3základnípožadavkynaalgoritmus.4. Vysvětleterozdílmezipožadavkyna„mechanický“a„hromadný“
algoritmus.5. Včemselišínákresalgoritmupomocívývojovéhodiagramuapomocí
plošnéhostrukturogramu?6. Cojetoproměnná?7. Vyjmenujtezákladníprvkyalgoritmu.8. Uveďtepříkladsekvence.Jakýjerozdílmezisekvencíaselekcí?9. Vysvětleterozdílymeziselekcíaiterací?10. Kčemusloužípodmínkaviteraci?Kdesemůženacházet?11. Zajakýchokolnostídojdekopakováníblokučinnostíviteraci?Uveďte
příklad.12. Algoritmizujteúlohunaplnění5lahvívodou.Znázornětepomocí
plošnéhostrukturogramu.
58
Souhrnnéotázky13. Zjakýchdůvodůdocházíkvývojisoftware?Uveďte
příklady.14. Uveďtealespoňtřirůznénástroje,kterépomáhají
efektivnějšímuvývojisoftware.15. Cojetometodikavývojesoftware?Vysvětleteauveďte
příklad.16. Coobnášífázeživotníhocyklusoftware„analýzaa
návrh“?17. Vysvětlete.Vysvětleterozdílmezialgoritmizacía
programováním.18. Kčemusloužíprogramovacíjazyk?19. Jakájeúlohapřekladačezdrojovéhokódupřitvorbě
programu?
Recommended