Budovanie informačných systémov I. – Analýza nášho problému

Libor Bešenyi  /  20. 07. 2006, 00:00

Zasvätenie do nášho problému, na ktorom budeme pracovať počas seriálu. Taktiež si povieme, kde by mali smerovať naše otázky, pri spisovaní požiadaviek a niečo málo o tokoch v podniku.

Analýza...

Najlepším spôsobom ako niečo niekoho naučiť je pracovať s praktickým príkladom. Preto v prvej časti budeme pracovať na celom jednom konkrétnom probléme a ukážeme si sľubované základy.

No ale nedá mi neobhájiť tento seriál s ktorým sa spustila vlna kritiky. Je písaný v kategórii Delphi a teda som si vybral dopredu čitateľa. Autor má totiž na toto právo a keď sa necíti na iný programovací jazyk, tak o ňom nebude písať. Tým pádom, že som si vybral kategóriu, sa mi zdá minimálne čudné, ak niekto pod článok napíše, prečo si nevybrať ten a ten jazyk... Prečítal som komentáre k niekoľkým článok na Inet-e o Delphi a nikde som nevidel komentár typu: „Prečo učíš pracovať ľudí so súbormi v Delphi, ak existuje alternatíva free jazyka."

Ďalšia vec je v presných definíciách. Možno niektoré veci budú zavádzajúce, ale nie je mojim cieľom pripravovať na skúšku z predmetu IS. Tento seriál ma za úlohu objasniť základy a ak sa čitateľ rozhodne v budúcnosti študovať túto problematiku (čo by som bol len rád), vtedy pôjde s vedomosťami do hĺbky. Veď aj na základných školách sa učí niečo o pohybe „a lá Newton". Neskôr sa však dozvedáme, že sme boli „oklamaní" a dokonca, že aj pojem sila je niečo skôr filozofického charakteru, ako fyzikálneho...

Môj úspech bude, ak aspoň deviatim ľuďom pomôžem a aspoň jedného presvedčím, aby šiel študovať informatiku...

Náš problém

Stretneme sa s pánom X, ktorý vlastní DVD a VHS požičovňu Y v lokálnom mestečku Z. Požiada nás o vytvorenie informačného systému pre správu jeho podniku. Tak, pozrime sa na postup v závere prvej časti.

Pozn.: Musím upozorniť, že s tvorbou takéhoto systému som sa nikdy nestretol a preto procesy a všetko okolo toho vôbec nepoznám! Jedná sa čisto o demonštračnú ukážku.

Nasleduje niekoľko stretnutí s majiteľom, s ktorým odporúčam dopredu sa dohodnúť na podmienkach, načrtnúť mu autorský zákon atď. Bežne sa mi stávalo to, že majiteľ zakúpil licenciu na vývojové prostredie. Stále ho to vyšlo lacnejšie, ako IS v nie veľmi rozšírenej oblasti, ktorý bol na trhu a dokázal robiť pomerne obmedzujúce veci... Ale nielen zákon o legálnosti prostredia, ale sa treba dohodnúť, komu bude patriť licencia a zdrojové kódy. Je to veľmi dôležité, lebo neskôr môže nastať v tejto oblasti konflikt, hlavne ak druhá strana sa cíti byť zaangažovaná vo vývoji tým, že dáva požiadavky na jednotlivé moduly...

Potom je dobré, ak majiteľ (ďalej zákazník), má jasnú predstavu, čo jeho systém ma robiť. Dopredu sa musia stanoviť ciele, ktoré treba spísať. Systém má byť skladového charakteru? Má teda za úlohu zber dát a ich uchovávanie? Má sa jednať o štatistickú aplikáciu? Má zrýchliť a zautomatizovať nejaký proces vo firme?

Náš systém robí v podstate z každého niečo. Zákazník určite na začiatku povie, že chce spravovať a automatizovať dáta systému požičiavania. S týmito údajmi chce potom vykonávať nejaké štatistiky. Nepredstavuje si žiadneho „molocha" - hoci zo skúseností je isté, že počas budovania prídu nové a nové požiadavky. Preto treba brať ohľad na prípadné zmeny, ktoré treba tak trocha aj predvídať...

Takže našim cieľom je automatizovať nejaký proces vo firme. Bolo taktiež naznačené, že tu bude záujem so získanými údajmi pracovať štatisticky. Toto bolo síce povedané len „okrem iného", ale práve tu môže nastať v budúcnosti problém. Aké údaje sa budú spracúvať a v prípade obrovského množstva ako efektívne? Nevhodne navrhnutá databázová Štruktúra sa môže stať peklom pre užívateľa programu! Potenciál ďalších problémov je aj ten, že údaje proste nedokážeme z databázy načítať pre potrebu ďalšieho spracovávania. Napríklad si pomôžeme zlúčením nejakých polí tabuliek, ktoré zrýchlia proces vývoja, ale zabrzdia ďalšie „ohýbanie" systému.

Štatistiky sú taktiež spojené s ďalším problémom, ktorý som už načrtol. Údaje treba vhodne ukladať (aj s vhodnými typmi). Ak náš zákazník bude mať obrovské množstvo svojich klientov a budeme si o každom pohybe viesť príliš rozsiahle záznamy, ľahko sa môžu zdroje databázového systému vyčerpať a jednoduchá operácia sa stane mučivým tichom pri pohľade na presýpacie hodiny. Ak sa majú uchovávať takéto obrovské údaje, je vhodné dopredu určiť podmienky ďalšieho spracovávania.

V prípade, že ukladáme pomerne veľké množstvo dát pri jednom pohybe, opýtame sa zákazníka, ktoré údaje sú dôležité pre štatistiku a niekedy je vhodnejšie paradoxne vytvárať redundantné záznamy v inej tabuľke. Potom sa treba opýtať na expiráciu robustných informácii a databáza (program) by mala v určitých časových intervaloch „riediť" staré dáta bez obavy, že prídeme o historické údaje pre štatistiky.

Takto vlastne vytvárame informácie o tom, ako systém má vyzerať a aj ako nie (čo nebude jeho úlohou). Teraz je čas prevetrať zamestnancov - koncových užívateľov.

Hovorí sa tu o akomsi procesnom audite, ktorý nás ale nemusí zaujímať, veď nie sme nijakí profesionáli. Teória procesov vo firmách je pomerne komplikovaná záležitosť a obvykle nespadá pod kompetenciu programátorov, ale ekonómov a manažérov, ktorí sa podnikovým veciam rozumejú predsa len lepšie.

Pre nás, nech je každá operácia vo firme procesom. Prídeme na prevádzku a začneme pozorovať, ako práca do teraz prebiehala. Príde si napríklad niekto vypožičať médium. To sa vyhľadá podľa obalu s číslom, ukáže sa členská karta a podľa identifikátoru sa nájdu údaje aj o klientovi. Viem, že takýto systém je nonsens, ale nech je to tak.

Do karty sa zapíšu údaje o pôžičke a klient cupitá domov šťastný, že si popozerá vytúžený film. Pri vrátení proces prebieha obdobne. Vyhľadá sa karta, médium sa založí do obalu s číslom, prázdny obal sa vráti na miesto, z ktorého si ho môžu ľudia prezerať.

Vytvorili sme si nejaký obraz o fungovaní podniku. V prípade väčšieho návalu, na prevádzke sú potrební dvaja ľudia, dozvedáme sa od pracovníka. Najčastejšie to bývajú brigádnici v silnom sezónnom období - v lete - ktoré sa stáva pre mladých symbolom nudy :)

Ďalšie informácie sa budú týkať príjmu v sklade. Teda aj človek, ktorý požičiava média, ich musí niekde nakupovať. Ako prebieha tento proces? Aká je doba „odpisu" média a čo sa vtedy deje? Staré médium sa predáva za zlacnenú cenu? Alebo sa len vymaže záznam z databázy? Alebo tento záznam ostáva pre štatistiku? Ak zostáva, tak zostáva celý záznam? Alebo len plní úlohu „sumy" v štatistike: „Koľko som mal DVDčiek v roku 2006..."

Keď máme tieto údaje, ešte si poprosíme prázdnu kartu s užívateľmi a aj kartu evidencie médií. Pozorne si ju prezrieme a v prípade, že niektorý pojem nám nie je známy, povyzvedáme sa. Taktiež je vhodné sa opýtať na rôzne stavové hodnoty - môže byť toto políčko prázdne? Aké iné hodnoty nadobúda v špecifických prípadoch? A dobré je už pozerať na údaje ako na „premenné", teda akého dátového typu sú. Jedná sa o číslo alebo reťazec? Môže sa nadobúdať záporná hodnota? Jedná sa o desatine číslo? S koľkými miestami sa pracuje? Ako sa zaokrúhľuje?

Po zhrnutí zisťujeme, že o chode firmy sa viac dozvedáme od koncového užívateľa systému. Máme prázdne formuláre a papiere plné poznámok. Teraz sa môžeme pustiť do práce. Zistili sme, že celý ich doterajší systém funguje ako v dobe dinosaurov: každý zákazník má svoju evidenčnú kartu s určitými údajmi. V kartotéke sú usporiadané údaje podľa priezviska. Ak si zákazník niečo vypožičia, priloží sa ku karte aj kartička s evidenčným číslom požičaného média s dátumom vypožičania a vrátenia (prípad penalizácie omeškancov). Po vrátení média sa vyberie kartotéka dotyčného, nájdu priložené lístky, overí sa dátum vrátenia a lístok sa vráti. O tom, či je médium v požičovni alebo nie, hovorí existencia obalu. Obal je prázdny a vystavený na požičanie. Ak si chceme konkrétny produkt požičať, s prázdnym obalom prídeme k pultu a práve doň nám zabalia kazetu. Analogicky je príjem nových médií do skladu.

Týchto pár riadkov sa budeme snažiť zautomatizovať. Všetko je zhrnuté ako treba, teraz si to musíme prispôsobiť tak, aby sme to vedeli vtrieskať do tej bielej debničky. Ako som spomínal, dôležité sú akési firemné procesy. Tie nie sú najmenšími a jedinými entitami, ale mi sa toho budeme pridržiavať a v zmysle procesného auditu budeme skôr hovoriť o tokoch vo firmách.

Procesný audit

Z informácii ktoré máme získavame „toky procesov" vo firme. Náš systém by mal pracovať s nasledujúcimi operáciami:

Procesy

Teraz už vieme, čo vlastne budeme programovať. Ale každá takáto „kružnica" obsahuje iné podoperácie (teda konkrétne proces sa skladá z úloh - krokov, pre nás, to je však jedno). Uvedieme si hlbšiu analýzu, ale potrebujeme sa na ňu pripraviť. Keď začneme uvažovať nad jednotlivými procesmi, zistíme, že úplne všetko nám nebolo povedané. Napríklad síce vieme, ako nového zákazníka pridať do kartotéky, ale nebolo presne stanovené, čo je to evidenčné číslo. To môže byť jednoduchá autoinkrementácia (EČ posledného zákazníka + jedna), ale to môže byť aj omnoho komplikovanejší systém. Môže byť vyskladaný z dátumu a špecifických čísel, ktoré možno taktiež uľahčujú hľadanie v archíve. V našom systéme to nebudeme potrebovať, ale nie je dobré nášho klienta nútiť meniť jeho rutinnú prácu len preto, že nám sa javí jednoduchšie a logickejšie iné riešenie!

Tiež sa musíme pripraviť na rôzne situácie, ktoré môžu nastať v budúcnosti a mohli by nepekne skomplikovať budúcnosť našej aplikácie. Nikde nebolo spomínané, že zákazník napríklad dostane ku každej štvrtej VHS piatu zadarmo. Tento systém možno náš klient ešte nezaviedol, ale je to otázka času. Preto treba myslieť aj na takéto veci - ako som už písal, treba uvažovať ako „vizionár" (čo má niekedy na svedomí brutálne komplikované rozhranie nezrozumiteľné koncovému zákazníkovi - takže netreba to s tým preháňať). Taktiež znova obvoláme klienta a opýtame sa ho, ako to je s penalizáciu (omeškanie vrátenia) a ostatných vecí, čo nás napadne. Tiež nebolo spomenuté, čo sa stane s lístkami, keď zákazník vráti požičané médium - spracujú sa do nejakého „štatistického" fascikla, či len sa vyhodia do koša?

No a pre lepší prehľad získavame takéto toky procesov vo firme (netreba vypisovať všetky, je to triviálna záležitosť - v našom prípade - tak uvedieme len jeden príklad):

Tok procesov zákazníka pri vypožičaní média

Neprehliadnite: