Na analýze systému náš tím pracoval počas doby dvoch mesiacov. Analýza bola zameraná na štruktúru systému, ktorú sme považovali za zdroj problémov.
V štruktúre systému sme zistili nedostatky:
Tieto nedostatky mali negatívny vplyv na realizovaný proces v organizácií. Vytvorenie nového grantového programu bolo spojené s troma zbytočnými procesmi:
Variabilita dát
Pre relačné databázy je povinná pevná a nemenná štruktúra dát a preto nie je jednoduché navrhnúť systém v ktorom by existovalo viacero variácií jednej tabuľky bez zbytočnej duplicity dát.
Nedostatok: Pôvodná aplikácia obsahovala len jednu tabuľku na ukladanie dát a dáta boli ukladané vo formáte XML v jednom stĺpci. Podľa zaužívaných štandardov takéto riešenie nie je vhodné. Formát XML nie je určený na uchovávanie dát.
Riešenie: Naším riešením je tvorba tabuliek, ktoré obsahujú metadáta, t.j. dáta o dátach. Pomocou metadát je možné meniť, vytvárať a upravovať štruktúru jednotlivých tabuliek a tým aj programov. Prínosom riešenia je:
Spracovanie XML
XML súbory, ktoré sa nachádzajú v databáze je potrebné spracovať. Spracovanie prebieha nasledovne – prijímanie dát z databázy, analýza štruktúry XML a uloženie dát z XML do štruktúr v zdrojovom kóde.
Nedostatok: Spracovanie XML prebiehalo prostredníctvom nástroja „serializéru“. Nevýhodu predstavovala pevná previazanosť medzi štruktúrou XML v databáze a štruktúrou zdrojového kódu. To znamená, že pre každú zmenu štruktúry dát v dabáze bolo potrebné upraviť zdrojové kódy a zákazník musel kontaktovať support.
Riešenie: Naším riešením bolo zaviesť automatické spracovanie dát z databázy a dynamické ukladanie dát do štruktúr v zdrojovom kóde. Vďaka riešeniu vznikla voľná zviazanosť medzi zdrojovým kódom a štruktúrou databázy. Dôsledkom voľnej štruktúry je možné vytvoriť nástroj na upravovanie štruktúry žiadostí bez zásahu supportu.
Dáta mimo databázy
Dáta (napr pri registrácií žiadateľa o grant) sa ukladali do XML súboru a nebolo možné s nimi efektívne pracovať. Preto sme navrhli ukladanie dát do databázy.
Žiadatelia v databáze
Nedostatok: V databáze chýbala tabuľka, ktorá by ukladala informácie o žiadateľovi. Následkom bola absencia prepojenia medzi žiadosťami a žiadateľmi, duplicitné informácie o jednom žiadateľovi pre viacero žiadostí, absencia kontroly toho či žiadateľ nepodal viac ako 1 žiadosť.
Riešenie: Navrhli sme vytvoriť tabuľku v databáze čo malo prínos automatizácie procesu kontroly duplicitných žiadostí a automatického vypĺňania údajov o žiadateľovi.
Zálohovanie
Nedostatok: V rámci aplikácie neexistovala aplikačná podpora zálohovania dát, pričom odstránenie alebo poškodenie dát mohlo mať katastrofálne následky na fungovanie celého systému a organizácie.
Riešenie: Naším riešením bolo vytvorenie nástroja, ktorý umožňuje automatické zálohovanie databázy a obnovovanie databázy zo zálohy.
Každá aplikácia má niekoľko používateľov, v našom prípade ich môžme rozdeliť do rolí ako napríklad: programová manažérka, žiadateľ grantu, hodnotiteľ žiadosti atď.
Jednou z foriem bezpečnosti v databáze je pre každú rolu definovať typ prístupu k jednotlivým tabuľkám databázy a prideliť práva pre vykonávanie jednotlivých operácií v aplikácií.
Nedostatok: Neexistovalo vymedzenie rolí a právomocí. Existovala jedna rola pre všetky operácie, čo znamená, že v prípade útoku na databázu má útočník plne právo vykonávať rôzne operácie.
Riešenie: Vytvorili sme jednotlivé role pre každý modul a pridelili právomoci k vytváraniu operácií čím sa zvýšila bezpečnosť a odolnosť systému pred neoprávneným prístupom do databázy.
Nedostatok: Pri vytváraní nového programu bola nevyhnutná práca externého dodávateľa vyplývajúca zo štruktúry databázy (XML súbory) a použitých technológií (serializér).
Riešenie: Tým, že sme vytvorili metadátové tabuľky a komponent na ukladanie dát z databázy do dynamických štruktúr zdrojových kódov sme umožnili zákazníkovi nezávislosť od externého dodávateľa v procese tvorby programu.
Prínos:
Nedostatok: Aplikácia neobsahovala prehľadne spracované reporty a chýbali obsahovo i dôležité informácie.
Riešenie: Naším riešením je sprehľadnenie reportov obohatených o dôležité informácie (napr. objem vyčerpaných peňazí pre konkrétny program, ad-hoc reporty – kto na čom pracuje, koľko finančných prostriedkov je aktuálne vyčerpaných na program atď.)
Nedostatok: V aplikácií existuje niekoľko subprocesov a operácií, ktoré nemali úplnu aplikačnú podporu. Na ich vykonávanie boli potrebné iné aplikácie (napr. Microsoft Office) a tým sa predlžoval čas vykonávania subprocesov a komplikovalo to ďalšie procesy. Týkalo sa to najmä tabuliek s platbami a reportov.
Riešenie: Naším riešením je zavedenie formulárov, ktoré majú viacero prínosov ako :
Vzhľadom na závažnosť zistení analýzy a následnú pracnosť pri systémovom odstraňovaní týchto nedostatkov bolo ekonomicky výhodnejšie nepokračovať vo vývoji starej aplikácie. Navrhli sme preto novú databázovú aplikáciu pre evidenciu a riadenie žiadostí o čerpanie grantov.
Naše riešenie zabezpečuje prípravu žiadateľských formulárov pre jednotlivé typy programov, správu jednotlivých prihlášok (vrátane automatizovaného riadenia vyplnenosti a kontroly). Podporuje vyhodnocovanie prihlášok žiadateľov a zabezpečuje dohľad nad realizáciou schválených žiadostí, ako aj priebežnú komunikáciu medzi zúčastnenými stranami.
Hlavným prínosom riešenia je nezávislosť zákazníka od externého dodávateľa v procese tvorby grantových programov, zvýšený komfort a efektivita práce so systémom, odstránenie nákladov spojených s prácou externého dodávateľa.
Technické detaily riešenia
Technológia: .NET, c#, JavaScript
Architektúra: trojvrstvová
Databáza: postgreSQL
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
Multilingual WordPress with WPML