Tvorba software a algoritmizace · standardní (ITIL, COBIT) nebo univerzitní metodiky. 8...

Post on 26-Aug-2020

3 views 0 download

transcript

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?