Bankovní institut vysoká škola Praha Informační technologie a elektronického obchodování
Návrh a realizace internetového obchodu v ASP.NET
Diplomová práce
Autor:
Bc. František Mencl Informační technologie a management
Vedoucí práce:
Praha
Ing.,Vít Fábera, Ph.D.
Duben, 2009
Prohlášení Prohlašuji, že jsem diplomovou práci zpracoval samostatně a s použitím uvedené literatury.
V Praze, dne 12.4.2009
František Mencl
Poděkování Chtěl bych touto cestou poděkovat panu doktorovi Vítu Fáberovi za odborné vedení diplomové práce, poskytování rad a informačních podkladů.
Anotace V současné době je velmi důležité využívat informační systém pro podporu komunikace se zákazníkem a firmou, tedy využívat i takové možnosti internetu, jako jsou například nabídky výrobků. Tato práce se zabývá návrhem a implementací univerzálního internetového obchodu. V první části jsou popsány možnosti výběru platforem, volba použitých technologii a datových úložišť. Ve druhé části je popsán samotný návrh internetového obchodu. V práci byly využity moderní technologie od firmy Microsoft. Výstupem této práce je aplikace, kterou již může využít kterýkoli podnikatel, činný v některé z oblastí zabývajících se nabídkou zboží, který by chtěl nabízet své zboží pomocí internetového obchodu.
Annotation Nowadays it is very important to use the information system to support the communication between the consumer and the company, among others to use even such internet alternatives as the offering of products. This thesis deals with the design and implementation of a universal internet shop. The first part describes the possibilities of the platform selection, the selection of applied technologies and data storages. The second part describes the design of the internet shop itself. Modern technologies, produced by Microsoft, have been used in this thesis. The output of this thesis is an application, which can be used by any enterpriser, who is dealing with the offering of products and who would like to offer his products by means of an internet shop.
Obsah Obsah ..................................................................................................................................... 5 1.
Úvod ............................................................................................................................... 7
2.
Základní principy informačních systémů ....................................................................... 8
3.
Výběr vývojových platforem ....................................................................................... 12 3.1.
Základní charakteristiky nejpoužívanějších platforem ......................................... 12
3.1.1.
3.1.1.1.
Výhody technologie .NET ..................................................................... 12
3.1.1.2.
Architektura . NET ................................................................................. 13
3.1.1.3.
Jazyk C# ................................................................................................. 15
3.1.1.4.
ASP.NET ................................................................................................ 16
3.1.1.5.
ADO.NET .............................................................................................. 18
3.1.2.
3.2.
Vývojová platforma Java ............................................................................... 19
3.1.2.1.
Architektura jazyka Java ........................................................................ 19
3.1.2.2.
Virtuální stroj jazyka Java ...................................................................... 20
Volba databázového serveru ................................................................................. 21
3.2.1.
Databáze SQL Server .................................................................................... 21
3.2.2.
Databáze Oracle............................................................................................. 22
3.2.3.
Výběr databázového serveru ......................................................................... 24
3.3.
Modelovací jazyk UML a CASE nástroje ............................................................ 24
3.3.1.
Struktura jazyka UML ................................................................................... 25
3.3.2.
Jazyk OCL ..................................................................................................... 25
3.3.3.
Diagramy UML ............................................................................................. 25
3.3.3.1.
Diagramy pro popis struktur .................................................................. 25
3.3.3.2.
Diagramy pro popis chování .................................................................. 27
3.3.4. 4.
Vývojová platforma .NET Framework.......................................................... 12
CASE nástroje ............................................................................................... 30
Použité technologie při vývoji aplikace ....................................................................... 33 4.1.
Vývoj v prostředí ASP.NET ................................................................................. 33
4.1.1.
Serverové ovládací prvky .............................................................................. 33
4.1.2.
Vzorové stránky............................................................................................. 34
4.2.
Analýza rizik ......................................................................................................... 35
4.3.
Vývoj v prostředí ADO.NET ................................................................................ 37
5
5.
4.3.1.
Normalizace databázového modelu ............................................................... 37
4.3.2.
Přístup k datům z databáze ............................................................................ 40
4.3.2.1.
Volání uložených procedur .................................................................... 42
4.3.2.2.
Třída DataReader ................................................................................... 42
4.3.2.3.
Třída DataSet ......................................................................................... 42
Návrh a realizace internetového obchodu .................................................................... 44 5.1.
Základní požadavky na aplikaci............................................................................ 44
5.1.1.
Pohled z hlediska zákazníka .......................................................................... 45
5.1.2.
Pohled z hlediska skladníka........................................................................... 48
5.2.
Návrh datového modelu v MS SQL ..................................................................... 49
5.2.1.
Tabulky .......................................................................................................... 49
5.2.2.
Uložené procedury......................................................................................... 50
5.3.
Datový model v prostředí .NET ............................................................................ 52
5.4.
Návrh webové aplikace ......................................................................................... 53
5.4.1.
Registrování zákazníka a přihlášení do internetového obchodu ................... 54
5.4.2.
Přehled zboží ................................................................................................. 57
5.4.3.
Detail o zboží ................................................................................................. 58
5.4.4.
Nákupní košík ................................................................................................ 59
5.4.5.
Objednávka .................................................................................................... 60
5.4.6.
Seznam objednávek – moje objednávky ....................................................... 62
5.5.
Návrh skladové evidence ...................................................................................... 64
5.5.1.
Přihlášení do aplikace Skladová evidence ..................................................... 64
5.5.2.
Agenda Zboží ................................................................................................ 66
5.5.3.
Agenda Objednávky ...................................................................................... 67
5.5.4.
Agenda Zákazníci .......................................................................................... 69
5.5.5.
Agenda Export dat ......................................................................................... 71
6.
Závěr ............................................................................................................................ 73
7.
Seznam použité literatury ............................................................................................. 74
6
1. Úvod Cílem práce je seznámení se s architekturou moderních informačních systémů a dále návrh a implementace univerzálního objednávkového systému internetového obchodu. Obchod bude určen pro podnikatele, kteří mají v současnosti buď výhradně kamenný obchod a chtějí s nabídkou svého zboží proniknout do internetového světa, nebo pro ty, kteří chtějí své zboží nabízet výhradně prostřednictvím internetového obchodu. Cíle z hlediska uživatelské aplikace: Zákazníci si budou moci v internetovém obchodě vybírat nabízené zboží dle kategorie a zobrazit si detailní informace o vybraném zboží. V případě zájmu budou následovně mít možnost dané zboží vložit do nákupního košíku a konečně poslat objednávku majiteli internetového obchodu. Zákazníci rovněž budou schopni sledovat aktuální stav jejich zakázky. Majitel internetového obchodu bude moci vkládat zboží do internetového obchodu a následně sledovat aktuální stav zásob. Rovněž bude schopen sledovat objednávky zákazníků a potvrzovat aktuální stav objednávek. Tento obchod by měl splňovat všechny funkce, jež lze od internetového obchodu očekávat. K tomu patří i možnost vložit nejen pravidla nákupu pro konkrétní internetový obchod, ale i kontaktní údaje o majiteli internetového obchodu.
7
2. Základní principy informačních systémů Přesná definice pojmu Informační systém neexistuje a ani ji nelze jednoduše vytvořit, neboť každý uživatel či tvůrce Informačního systému používá různé terminologie a zdůrazňuje jiné aspekty. Můžeme však říci, že Informační systém (IS) lze chápat jako systém vzájemně propojených informací a procesů, které s těmito informacemi pracují. Pod pojmem procesy rozumíme funkce, které zpracovávají informace do systému vstupující a transformují je na informace ze systému vystupující. Zjednodušeně můžeme říci, že procesy jsou funkce zabezpečující sběr, přenos, uložení, zpracování a distribuci informací.
Pod pojmem informace pak rozumíme data, která slouží
zejména pro rozhodování a řízení v rozsáhlejším systému. Dalším důležitým pojmem v souvislosti s IS je tzv. architektura informačního systému. Tou označujeme rozložení komponent výpočetního systému podniku, jak z fyzického (typ počítačů, operačních systémů, programového vybavení a dalšího zařízení a jeho umístění) tak z logického hlediska (distribuce požadovaného zpracování či jeho dělení na uzly informačního systému). Je možné rozlišovat architekturu funkční, procesní, datovou, hardwarovou, softwarovou nebo technologickou. V konkrétních případech může mít architektura informačního systému velké množství podob, které můžeme rozlišit na centralizované (např. System Network Architecture) nebo distribuované. Hranice mezi nimi nejsou jasně ustanoveny, neboť velké množství firem provozuje servery na větším počtu menších počítačů, jež jsou umístěny v jednom centrálně spravovaném počítačovém sále. Z fyzického hlediska se jedná o centralizovanou architekturu (zpracování probíhá na jednom místě), z logického o distribuovanou architekturu (zpracování probíhá na různých strojích). Do celkové funkce IS se také promítá nezanedbatelná položka okolí. Okolí informačního systému tvoří veškeré objekty, které změnou svých vlastností ovlivňují samotný systém, a také objekty, které naopak mění své vlastnosti v závislosti na systému. Celkově tedy můžeme říci, že IS je softwarové vybavení firmy, které je schopné na základě zpracovávaných informací řídit procesy podniku nebo poskytovat tyto informace řídícím pracovníkům tak, aby byli schopni vykonávat řídící funkce, mezi které patří zejména plánování, koordinace a kontrola veškerých procesů firmy. 8
Kvalitní IS je v současnosti nutnou podmínkou úspěšnosti firem ve všech oblastech podnikání. Hlavním důvodem nutnosti vlastnit kvalitní IS je to, že Informační systém je jedním z hlavních faktorů efektivnosti řízení a konkurenceschopnosti firmy. Potřeba kvalitního IS roste s významem informace a dnešní firmy jsou závislé na kvalitních a včasných informacích. Tato situace je způsobena především prudkým růstem informatizace společnosti a právě proto se v posledních letech výrazně, a to až několikanásobně, zvyšují objemy finančních prostředků investovaných do inovace Informačních systémů a Informační technologie (IS/IT). Zrychlující se dynamika trhů a výrobních technik se odráží v trhu s výpočetní technikou, kde výrobek je schopen obstát na trhu maximálně 12 měsíců a poté je nahrazen novým výrobkem. Bez veškerých informací o situaci na trhu, bez vysoké technologické úrovně výroby a bez rychlé inovace vlastních výrobků a služeb by firma nebyla schopná se v současné době udržet na trhu a konkurovat ostatním firmám. IS velikou měrou ovlivňuje technologickou úroveň výroby a služeb. V dnešní době v mnoha firmách slouží IS od návrhu výrobku, technologické přípravy výroby, přes řízení výroby až po uzavření smlouvy se zákazníkem a dodání výrobku. IS umožňuje výrazné zlepšení služeb zákazníkům, neboť veškeré informace o nových požadavcích jsou evidovány, vyhodnocovány a poskytovány přímo zodpovědným osobám, čímž se podstatně urychlí inovace výrobků. IS také umožní lepší zpracování a vyhodnocení informací o vlastní činnosti firmy a tím efektivnější specifikaci cílů a činností firmy, které povedou ke zlepšení výroby a vyšším ziskům. Také umožňuje rychle a efektivně vyhodnocovat informace o ostatních konkurentech a využít těchto informací ke včasné reakci na jejich nové výrobky. Globalizace trhů a volný přístup k informacím znamená celosvětové propojení počítačovou sítí, tedy volný a rychlý přístup veškerých subjektů vyskytujících se v obchodním cyklu k informacím. Důsledkem volného přístupu k informacím je pro výrobce možnost získávat stále rychleji informace o požadavcích zákazníků, o nových technologiích výroby, o stavu konkurentů a možnostech dodavatelů. Oproti tomu jsou zákazníci lépe a rychleji informováni o výrobcích, cenách a službách poskytovaných firmami a tím rostou jejich možnosti výběru. Tyto skutečnosti vedou k rozšíření podnikání na celosvětovou úroveň a tím i k nutnosti sledovat situaci na jiných než lokálních trzích. Úloha IS plyne z důsledků globalizace a přístupu k informacím. IS zajišťují koordinaci 9
všech procesů tak, aby jejich spolupráce byla rychlá a vycházela z aktuálních údajů, například z aktuální situace a platných legislativ na daném území. Dále IS zajišťuje rychlou komunikaci zejména mezi firmou a zákazníky na celém světě. Rostoucí složitost rozhodování plyne zejména z vyšší oblasti působnosti, velkého množství nových technologií, konkurence a potřebných dat, z účasti na globálním trhu nebo zavádění ISO norem do výroby. IS umožňuje zpracovávat informace mnohem rychleji a efektivněji, členit je a poskytovat v ucelené struktuře tak, aby byly k dispozici ve chvíli, kdy jsou nutné pro včasné a správné rozhodnutí firmy. Nutnost reagovat na aktuální stav trhu a tedy nutnost mít aktuální informace o stavu a vývoji vlastních zdrojů, čímž jsou myšleny finanční zdroje, pracovní síly, zásoby materiálu a investice. Tato potřeba ústí v nutnost znalosti informací o vnitropodnikových procesech a aktivitách A samozřejmě je nutné také mít možnost tyto informace okamžitě změnit podle měnících se podmínek. Úlohou IS je zde poskytovat veškeré uložené informace v různých časových a věcných řezech, např. podle oblasti výroby, období, zákazníků a možnost získat statistické tabulky. Volný konkurenční trh, kde zaměstnanci mají možnost většího výběru zaměstnání podle platových podmínek, náplně práce, požadavků na kvalifikaci zaměstnanců a dalších parametrů vede k vysoké míře migrace pracovních sil. Je třeba uchovávat veškeré informace získané jednotlivými zaměstnanci tak, aby s jejich odchodem nebyly tyto informace ztraceny. Nutnost pružného a rychlého chování firmy v současném hospodářském prostředí vede k tendenci přecházet od hierarchických organizačních struktur k plochým strukturám. Přizpůsobení se novým podmínkám je mnohem snazší pro firmy s plochou organizační strukturou, než pro firmy se složitou hierarchickou strukturou s několika úrovněmi. IS v tomto procesu umožňuje koordinovat činnosti jednotlivých úseků firmy, která svou plochou strukturou je složitější než hierarchická a vyžaduje vyšší četnost a objem vyměňovaných informací. Tyto informace musí být distribuovány tak, aby v jednotlivých úsecích firmy byly tytéž aktuální informace a aby nedocházelo k jejich duplicitě. Vysoká konkurence trhu, kde firma neudrží svou pozici jen nabízením nových výrobků, ale i nabízením služeb a výhod zákazníkům vede firmy k nutnosti poskytovat nové služby. IS umožňuje propojení firemního systému a počítačové sítě a to zejména v 10
oblastech počítačové komunikace mezi zákazníkem a firmou, čímž je myšlena hlavně nabídka výrobků přes webovské stránky, dále propojením přes síť zkrátit doby standardních služeb, neboť vyřizování veškerých formalit by se využitím počítačové sítě mělo podstatně urychlit a v neposlední řadě zjednodušení celkové komunikace.
11
3. Výběr vývojových platforem V dnešní době jsou hlavními hráči vývojových platforem Microsoft, Sun Microsystems. Základní rozdíl by se dal charakterizovat tak, že Sun Microsystems je na rozdíl od Microsoftu volně dostupný. I přesto Microsoft nabízí volně dostupnou verzi pro vyzkoušení programování v jejich vývojovém prostředí. Tato platforma se nazývá Visual Studio Express. Každá z těchto platforem má svůj programovací jazyk. U Sun Microsystemu je to JAVA a Microsoftu buď klasické C++ či technologie .NET. JAVA má tu výhodu, že je možné ji použít pro více operačních systémů. Na rozdíl od toho lze technologii .NET použít pouze v systému Windows. Vzhledem k tomu, že aplikace poběží pouze v operačním systému Windows, zvolil jsem platformu Microsoft.
3.1.
Základní charakteristiky nejpoužívanějších
platforem 3.1.1.
Vývojová platforma .NET Framework
Platforma Framework od Microsoftu je vývojový systém, který slouží pro podporu programování jak webových aplikacích, tak i klasických aplikací pro MSWindows ale i pro Pocket PC.
3.1.1.1. Výhody technologie .NET Platforma .NET Framework je od počátku kompletně založena na objektově orientovaných principech. Použité jazyky v technologii .NET, tj. Visual Basic .NET, C#, J#, a spravované C++, kompilují do společného zprostředkujícího jazyka (Intermediate Language). Oproti prostředí ASP je lepší podpora dynamických webových stránek. .NET nabízí integrovanou podporu webových stránek pomocí nové technologie ASP.NET, v rámci níž je kód stránek kompilován a lze jej psát v jazyku vysoké úrovně, kompatibilním s technologií .NET. Sada komponent. NET souhrnně označovaná jako ADO.NET zajišťuje efektivní přistup k relačním databázím a různým zdrojům dat. Navíc jsou k dispozici komponenty, které poskytují přístup k souborům a k adresářům. Zejména je do technologie .NET integrována podpora jazyka XML, což umožňuje manipulaci s daty, která lze importovat nebo exportovat na jiné platformy než Windows. Zásadním 12
způsobem mění technologie .NET sdílení kódu mezi aplikacemi, kde zavadí koncepci sestavení (assembly), která nahrazují tradiční knihovny DLL. Zjednodušeně můžeme říci, že technologie .NET je snadná na vývoj – ten je zcela objektově orientován, umožňuje automatické řízení životnosti objektů, je zaměřen na aplikační logiku nikoli na kontrolu aplikační infrastruktury. .NET odstraňuje komunikační bariéru mezi komponentami a aplikacemi – zjednodušuje integraci, usnadňuje znovupoužitelnost kódu a dílčích nebo i celých komplexů řešení. Bezpečnost je zajištěna identifikací
kódu,
dále
je
přítomna
typová
bezpečnost.
Odstraňuje
problémy
s komponentami COM. Umožňuje vyvíjet aplikace i pro mobilní zařízení.
3.1.1.2. Architektura . NET
Zdroj: interní materiály firmy Cleverlance a.s. Obrázek 1. Schéma architektury .NET.
Základním stavebním kamenem .NET Frameworku je modul Common Language Runtime (CLR) nebo-li běhový systém .NET. Jakýkoli zdrojový kód vyžaduje před spuštěním v modulu CLR kompilaci, která musí v prostředí .NET probíhat dvoufázově: 1) Kompilace zdrojového kódu do jazyka IL 2) Kompilace jazyka IL do kódu specifického pro cílovou platformu pomocí modulu CLR
13
Jak jsem již zmínil výše, existence jazyka IL je jednou ze zásadních výhod platformy .NET. Jedná se o nízkoúrovňový jazyk s jednoduchou syntaxí, která nepracuje s textem, ale s číselnými kódy. Jeho prioritou je nezávislost, která se projevuje především tím, že stejný soubor s instrukcemi v bajtovém kódu lze přenést na libovolnou platformu. V době spuštění je možno snadno provést závěrečnou fázi kompilace, která zajistí spuštění kódu na příslušné platformě. Jazyk IL se vždy kompiluje metodou Just-In-Time (JIT), což znamená, že místo kompilace celé aplikace v jednom průchodu JIT zjednodušeně kompiluje každou z částí kódu v okamžiku jejího volání. Po první kompilaci kódu je výsledný nativní spustitelný soubor uložen, dokud není aplikace ukončena. Proto jej není nutné při opakovaném spuštění stejné části kódu kompilovat znovu. Nejméně stejně důležitá jako nezávislost na platformě je výhoda možnosti spolupráce mezi jazyky. Můžeme kompilovat do jazyka IL z jednoho programovacího jazyka a výsledný kód by měl spolupracovat s kódem, který byl do IL kompilován z jiného vyššího jazyka.
14
Zdroj: NAGEL, Ch., EVJEN, B., GLYNN, J., SKINNER, M., WATSON, K., JONES, A.. C# 2005 : Programujeme profesionálně. Brno : Computer Press, 2006. 1398 s. ISBN 80-251-1181-4 Obrázek 2. Schéma funkcí podílejících se na kompilaci a spuštění aplikace.
3.1.1.3. Jazyk C# Jazyk C# nelze pojímat izolovaně, ale je nutné o něm uvažovat souběžně s platformou .NET Framework, neboť jeho kompilátor je speciálně zaměřen na platformu .NET. To v podstatě znamená, že architektura a metodika jazyka C# jsou odrazem základních metodik platformy .NET. Jedná se o jazyk založený na metodice objektově orientovaného návrhu. Podstatné je, že jazyk C# je samostatným jazykem. Generuje sice kód určený pro prostředí .NET, ale sám o sobě není součástí platformy.
Jazyk C#
umožňuje vytvářet i konzolové aplikace – textové programy, které se spouštějí v okně systému DOS. Ty můžeme použít například při jednotkovém testování knihoven tříd a při
15
vytváření démonů pro systémy Unix či Linux. Nejčastěji se však v jazyku C# vyvíjejí aplikace, které pracují s mnoha technologiemi souvisejícími s platformou .NET.
3.1.1.4. ASP.NET Technologie ASP (Active Server Pages) společnosti Microsoft umožňuje vytvářet webové stránky s dynamickým obsahem. Stránka ASP je v podstatě soubor HTML s vloženými úseky VBScript nebo JavaScript, které se provádějí na straně serveru. ASP umožňuje snadné vytváření klientských aplikací založených na prohlížeči. Má však i své nedostatky, např., že stránky ASP se někdy zobrazují pomalu, protože kód na straně serveru je interpretován a nikoli kompilován. Navíc se někdy stává, že se soubory ASP obtížně udržují, protože nejsou strukturovány (části kódu ASP na straně serveru a prostého kódu HTML jsou vzájemně promíchány). Další nevýhodou technologie ASP je omezená podpora ošetření chyb a typové kontroly, což občas komplikuje vývoj. ASP.NET je přepracovaná verze technologie ASP, která řeší mnoho původních problémů. Jejím účelem není technologii ASP nahradit, obě technologie mohou koexistovat na stejném serveru. V některých ohledech se ASP.NET podobá jiným technologiím, jako jsou PHP, ASP nebo ColdFusion. Je zde však zásadní rozdíl – technologie ASP.NET je založena na plné integraci do systému .NET Framework, což zaručuje podporu jazyka C#. Největším benefitem stránek ASP.NET je jejich strukturovanost. To znamená, že každá stránka je v podstatě třídou, která je potomkem od třídy System.Web.UI.Page a může přepsat sadu metod, které jsou vyvolány v průběhu životnosti objektu Page. Díky tomu, že lze funkci stránek zahrnout do obsluh událostí s explicitními významy, jsou stránky ASP.NET srozumitelnější. Aby se dosáhlo maximální srozumitelnosti dovoluje kód v pozadí (code behind) v technologii ASP.NET dovést strukturovaný přístup ještě dále. ASP.NET umožňuje izolovat funkčnost stránky na straně serveru do třídy, zkompilovat třídu jako knihovnu DLL a příslušnou knihovnu umístit do adresáře pod částí ve formátu HTML. Kód na začátku stránky zajistí přidružení souboru s příslušnou knihovnou DLL. Když prohlížeč požádá o stránku, webový server odešle události ve třídě knihovně DLL s kódem pozadí dané stránky. Důležitým faktem je skutečnost, že se technologie ASP.NET vyznačuje vyšším výkonem, což je markantní ve srovnání se stránkami ASP, které jsou při každém požadavku na stránku interpretovány. Ve stejném případě si webový server uloží 16
zkompilované stránky ASP.NET do mezipaměti a tím pádem jsou následné požadavky na stránku ASP.NET vyřízeny rychleji než první požadavek. Technologie ASP.NET usnadňuje psaní stránek, které zajišťují zobrazení formulářů v prohlížeči, což je výhodné pro využití v prostředí sítě intranet. Formulářové aplikace sice poskytují bohatší uživatelské rozhraní, ale obtížněji se udržují, protože jsou spouštěny v mnoha různých počítačích. Proto se jim dávala přednost v případech, kdy bylo nutné zajistit bohaté uživatelské rozhraní a byla k dispozici účinná odborná pomoc. ASP.NET spolupracuje při doručování obsahu jako odpovědi na požadavky zaslané prostřednictvím protokolu http s IIS (Internet Information Server). Stránky ASP.NET jsou uloženy v souborech s příponou .aspx.
Zdroj: NAGEL, Ch., EVJEN, B., GLYNN, J., SKINNER, M., WATSON, K., JONES, A.. C# 2005 : Programujeme profesionálně. Brno : Computer Press, 2006. 1398 s. ISBN 80-251-1181-4 Obrázek 3. Schéma architektury technologie ASP.NET.
V průběhu zpracování ASP.NET je umožněn přístup ke všem třídám platformy .NET, zákaznickým komponentám vytvořeným v C# nebo jiných jazycích, databázím atd.. Soubor ASP.NET může obsahovat příkazy zpracování na serveru, kód v jazycích (C#, Visual Basic.NET, JScript.NET nebo v jiným jazyce podporovaném .NET Frameworkem),
17
obsah vhodný pro generování zdroje (např. HTML), kód skriptu klientské strany, vložené serverové řídící prvky ASP.NET apod.
3.1.1.5. ADO.NET ADO.NET je podobná technologii ADO pouze částečně, třídy a metody pro přístup k datům se zcela liší. ADO (ActiveX Data Objects) je knihovna komponent COM, pomocí které lze otevřít připojení k databázi, vybrat data do sady záznamů složené z polí, následně s těmito daty manipulovat, aktualizovat je na serveru a ukončit připojení. Tato technologie též poskytla tzv. odpojenou sadu záznamů, která se používá v případech, kdy není žádoucí udržovat připojení dlouhodobě aktivní. ADO však neřešila uspokojivě mnohé problémy, zvláště pak neskladnost odpojené sady záznamů – z hlediska fyzické velikosti. S rozvojem webových počítačových technologií se význam podpory této funkce ještě zvýšil, a proto bylo nutno změnit přístup. Programování v ADO.NET a ADO má mnohé společné prvky, takže přechod z technologie ADO není příliš obtížný. Navíc je při použití SQL Serveru k dispozici nová sada řízených tříd, které jsou optimalizovány tak, aby při práci s databází poskytly maximální výkon. Technologie ADO.NET se dodává se čtyřmi jmennými prostory klientských databází – jeden je určen pro SQL Server, další pro Oracle, třetí pro databáze ODBC a poslední lze použít s libovolnými databázemi, které jsou dostupné pomocí rozhraní OLEDB.
Zdroj: NAGEL, Ch., EVJEN, B., GLYNN, J., SKINNER, M., WATSON, K., JONES, A.. C# 2005 : Programujeme profesionálně. Brno : Computer Press, 2006. 1398 s. ISBN 80-251-1181-4 Obrázek 4. Schéma znázorňující třídy pro připojení a jejich polohu v hierarchii tříd.
18
3.1.2.
Vývojová platforma Java
Java je dnes jedno z nejrozšířenějších programovacích prostředí. Je využívána širokým spektrem odběratelů, jak v jednoduchých aplikacích, tak v ohromných sálových počítačích. Čím je tak zajímavá? Java je dle svých tvůrců „jednoduché, robustní, objektově orientované na platformě nezávislé, vícevláknové, dynamické univerzální programovací prostředí“. Její univerzálnost je založena na obrovském množství aplikačních rozhraní, která jsou vystavěna na základech společné sady hlavních tříd. Hlavním znakem, který Javě umožňuje nadstandardní přizpůsobivost a získává jí obrovskou popularity, je její nezávislost na platformě. Tato vlastnost je implementována do systému, ve kterém jsou v Javě spouštěny všechny programy (applety). Jedná se o speciální virtuální prostředí, umožňující důsledné oddělení kódu od podkladového (hostitelského) systému.
3.1.2.1. Architektura jazyka Java Zjednodušeně lze říci, že Java je programovací jazyk, prostřednictvím kterého můžeme vyvíjet vlastní aplikace – psát zdrojové soubory a překládat jejich obsah do bajtového kódu. Jazyk Java je však jen jednou z mnoha součástí prostředí Javy, je to v podstatě podkladová architektura poskytující Javě mnoho výhod, především nezávislost na použité platformě. Architekturu prostředí Javy tvoří ve skutečnosti kombinace čtyř komponent – programovacího jazyka Java, formátu souboru .class, aplikačního programového rozhraní Java (API) a virtuálního stroje jazyka Java.
Zdroj: JAVA. About the Java Technology [online]. [cit. 25.2.2009]. Dostupný z www: < http://circe.univ-fcomte.fr/Docs/Java/Tutorial.20060804/getStarted/intro/definition.html> Obrázek 5. Schéma znázorňující proces vývoje software v Java.
API – aplikační programové rozhraní Javy tvoří základní rozhranní pro psaní programů, který je uspořádáno do tématicky jednotných balíčků. Rozhraní API Javy se dělí na následující tři platformy: • Standard Edition (J2SE) – obsahuje základní sadu tříd jazyku Java a třídy potřebné pro tvorbu grafického uživatelského rozhraní (GUI). 19
• Enterprise Edition (J2EE) – obsahuje třídy a rozhraní určené především pro vývoj webových aplikací, mimo jiné třídy potřebné pro tvorbu servletů, stránek JSP (Java Server Pages) a objektů EJB (Enterprise JavaBeans). • Micro Edition (J2ME) – tato sada poskytuje optimalizované prostředí zpracování, určené pro spotřebitelé produktů jako jsou pagery, mobilní telefony nebo navigační systémy pro automobily.
3.1.2.2. Virtuální stroj jazyka Java Virtuální stroj jazyka Java (JVM = Java Virtual Machine) je ve své podstatě software vystupující jako hardwarové zařízení a umožňující spouštění appletů v jazyce Java, tzn., že převádí jejich kód do nativních instrukcí pro hostitelský počítač. Ostatní programovací jazyky využívají překladač (compiler), který překládá zdrojový kód na kód spustitelný. Tento překladač je však závislý na typu procesorů často i na operačním systému. S nástupem internetu nastala nutnost vytvořit jazyk, který by byl nezávislý na jakékoli platformě. A to jazyk Java je, neboť výstupem překladače není standardní spustitelný kód. Překladač jazyka Java generuje optimalizovanou sadu instrukcí – bajtový kód (též interpretovaný kód, pseudokód nebo p-kód). Jde o posloupnost formátovaných bajtů a program obsahující tento kód je interpretován systémem JVM. Typickou charakteristikou bajtového kódu je skutečnost, že tento kód není vykonáván přímo procesorem cílového počítače. Je spouštěn v prostředí virtuálního stroje, který jej teprve interpretuje a převádí na příslušná nativní volání. Proto je Java označována za interpretovaný jazyk, což je vlastnost, která jí umožňuje být nezávislou na cílové platformě. Druhou stranou mince je, že ve srovnání se standardním kódem spustitelných aplikací je vykonání kódu v Javě podstatně pomalejší, ale rychlejší než klasické interpretované jazyky. Všechny programy vytvořené v jazyce Java jsou spouštěny uvnitř instance virtuálního stroje, přičemž každá samostatná aplikace je spuštěna ve vlastní instanci virtuálního stroje. Kompilované soubory s kódem v Javě (soubory .class – bajtové kódy) jsou načítány do virtuálního stroje, kde jsou zpracovávány řídícím strojem (execution engine). V průběhu zpracovávání bajtového kódu komunikuje virtuální stroj s hostitelským operačním systémem prostřednictvím tzv. nativních metod.
20
3.2.
Volba databázového serveru
3.2.1.
Databáze SQL Server
Firmy musí řešit mnoho úkolů týkajících se dat, k čemuž je například vede nutnost přijímat rychlejší rozhodnutí orientovaná na data a potřeba zvyšovat produktivitu a flexibilitu vývojářů, dále musí čelit tlakům na snížení celkové výše rozpočtů na informační technologie (IT) a současně škálovat infrastrukturu tak, aby vyhovovala stále náročnějším požadavkům. SQL Server je navržen tak, aby podnikům pomohl tyto úkoly vyřešit. Nové řešení pro správu a analýzu dat poskytuje zvýšené zabezpečení, škálovatelnost a dostupnost podnikových dat a analytických aplikací a současně usnadňuje jejich vytváření, nasazení a správu. SQL Server představuje integrované řešení pro správu a analýzu dat a usnadňuje organizacím všech velikostí provádět následující operace: • vytvářet,
nasazovat
a
spravovat
podnikové
aplikace,
které
jsou
zabezpečenější, škálovatelnější a spolehlivější, • maximalizovat produktivitu informačních technologií zjednodušením vývoje a podpory databázových aplikací, • sdílet data mezi více platformami, aplikacemi a zařízeními, a usnadnit tak propojení interních i externích systémů, • řídit náklady, aniž by došlo ke snížení výkonu, dostupnosti, škálovatelnosti či zabezpečení. SQL Server zdokonaluje infrastrukturu dat ve třech klíčových oblastech - správa podnikových dat, produktivita vývojářů a business intelligence (BI). Společnost Microsoft přišla s rozdělením produktové řady SQL Server 2005 do čtyř edicí, které mají lépe pokrývat možnosti a potřeby všech zákaznických segmentů Express, Workgroup, Standard a Enterprise. Tyto edice nabízejí širokou škálu funkcionalit, počínaje vysokou dostupností a robustní škálovatelností, přes rozšířené nástroje pro business intelligence, až po vyšší bezpečnost, spolehlivost a snadnou správu této databázové platformy.
21
Škálovatelnost a výkon Funkce
Express
Workgroup Standard Enterprise Poznámky
Počet CPU
1
2
4
bez limitu
RAM
1 GB
3 GB
bez limitu
bez limitu
bez limitu
bez limitu
64-bit podpora Windows on Windows (WOW) Velikost databáze
4 GB
Obsahuje podporu vícejádrových (multicore) procesorů
WOW
bez limitu
Partitioning
Podpora pro rozsáhlé databáze
Indexované pohledy
Vytváření indexovaných pohledů je podporováno ve všech edicích, pouze edice Enterprise podporuje vytváření pomocí Query procesoru.
Parallel Index Operations
Paralelní
Zdroj: MICROSOFT. Microsoft SQL Server: Porovnání funkcí jednotlivých edicí SQL Serveru 2005 [online]. [cit. 15.2.2009]. Dostupný z www: < http://www.microsoft.com/cze/windowsserversystem/sql/prodinfo/sql2005features.mspx> Tabulka 1. Porovnání edicí SQL Serveru.
3.2.2.
Databáze Oracle
Před několika lety představil Oracle v rámci uvedení Oracle Database 10 koncept Enterprise Grid, který zásadně mění způsob, jakým je možné plánovat a provozovat datová centra. Dovoluje totiž transformovat ostrůvky samostatných IT prostředků do sad serverů a úložných zařízení sdílených různými aplikacemi. Sdružováním levných komoditních serverů a modulárních úložných zařízení do gridu (mříže) a sdílením jejich výkonu mezi aplikacemi mohou organizace efektivněji provozovat IT systémy s nejvyšším výkonem a dostupností. 22
Oracle Database 11 dále rozšiřuje tyto unikátní schopnosti. Uživatelé požadují rychlý a bezpečný přístup k aplikacím v nepřetržitém režimu a IT manageři musí tato jejich očekávání plnit bez zvyšování nákladů. Nové mechanismy v oblasti správy Oracle Database 11 byly navrženy tak, aby zjednodušily správu IT infrastruktury a umožnily úspěšně dosahovat uživateli požadované úrovně služeb. Tyto nové mechanismy a rozšíření dovolují zákazníkovi zvýšit produktivitu databázových administrátorů a snížit náklady na správu při současném zvýšení výkonu, škálovatelnosti a zabezpečení podnikových aplikací. Oracle Database 11g přináší výhody koncepce grid computing s důrazem na zjednodušení a automatizaci správy. To vše zákazníkovi bez nesnází dovoluje: • inovovat rychle a bez rizika za pomocí Real Application Testing, • spravovat větší množství dat s nižšími náklady pomocí pokročilého partitioningu a komprese, • bezpečně chránit a auditovat data, a díky technologii Total Recall umožnit obnovu dat k libovolnému časovému bodu, • integrovat a spravovat životní cyklus všech podnikových dat, • zajistit nepřetržitý provoz díky unikátní architektuře pro vysokou dostupnost. Oracle Database 11g existuje ve třech základních edicích. Zatímco rozdílná úroveň mechanismů pro zajištění vysoké dostupnosti, výkonu a bezpečnosti umožňuje minimalizaci nákladů na pořízení a provoz systému při současném splnění provozních požadavků, společný základ a jednotné aplikační i administrátorské rozhraní umožňují snadný přechod na vyšší edice v případě zvýšení požadavků zákazníka. Doplňkové komponenty
pro
zvýšení
výkonu,
rozšiřitelnosti,
dostupnosti,
bezpečnosti
a
spravovatelnosti jsou k dispozici pro Oracle Database 11g Enterprise Edition. Express Edition 10g
Standard Edition One
Standard Edition
Enterprise Edition
1 CPU
2 Patice
4 Patice
Bez omezení
RAM
1GB
OS Max
OS Max
OS Max
Velikost databáze
4GB
Bez
Bez
Bez
Základní vlastnosti
Maximum CPU
23
omezení
omezení
omezení
Windows Linux Unix 64 Bit Support Zdroj:ORACLE. Edice Databáze Oracle | Oracle Database 11g [online]. [cit. 15.2.2009]. Dostupný z www: < http://www.oracle.com/global/cz/database/edice.html > Tabulka 2. Porovnání edicí Oracle Serveru.
3.2.3.
Výběr databázového serveru
Po provedení analýzy obou výše uvedených databázových serverů jsem zvolil MS SQL Server. Největší vliv na mé rozhodnutí měla skutečnost, že jsem chtěl mít celou aplikaci založenou na technologii od firmy Microsoft. MS SQL Server jsem zvolil rovněž proto, že jsem očekával větší vzájemné podpory vývojové platformy MS Visual Studia a MS SQL Serveru. Jsem toho názoru, a moje zkušenosti to jen potvrzují, že kombinování produktů od stejného výrobce je v každém případě uživatelsky výhodnější něž je implementace různých technologií.
3.3.
Modelovací jazyk UML a CASE nástroje
Modelovací jazyk UML (Unified Modeling Language) byl vytvořen ve snaze popsat objektově orientovanou analýzu a návrh. Používá se k vizualizaci, specifikaci, navrhování a dokumentaci programovaných systémů. Je v podstatě souhrnem grafických notací k vyjádření analytických a návrhových modelů. Tento jedinečný modelovací jazyk umožňuje modelovat jednoduché i složité aplikace pomocí stejné formální syntaxe. UML spadá do množiny CASE (Computer Aided Software Engineering) nástrojů, což jsou nástroje pro podporu analýzy a návrh aplikací. Cílem autorů UML bylo poskytnout uživatelům použitelný vizuální modelovací jazyk pro vytváření a výměnu smysluplných modelů. V rámci toho je třeba nabídnout mechanismy rozšiřitelnosti a specializace pro vyšší nabídku základních konceptů. Bylo nutné vytvořit specifikaci nezávislou na konkrétních programovacích jazycích a procesech vývoje a analýzy. Autoři poskytli uživatelům formální základ pro pochopení modelovacího jazyka. Zajistili podporu rozvoje objektových nástrojů a vývojových konceptů, jako jsou 24
komponenty (components), spolupráce (collaborations), pracovní rámce (frameworks) a vzory (patterns).
3.3.1.
Struktura jazyka UML
Struktura jazyka UML je čtyřvrstevná. Na nejnižším stupni je vrstva uživatelských objektů, která obsahuje konkrétní instance (výskyty) jednotlivých specifických prvků zachycených v další vrstvě. V druhé – modelové - vrstvě jsou konkrétní prvky modelované oblasti (např. třídy). Další vrstva, tzv. metamodelová, definuje, co patří do metamodelu. Nejvyšší vrstvou je vrstva metametamodelová, která definuje vlastnosti metamodelu, např. jak lze korektně vytvářet nové prvky modelu.
3.3.2.
Jazyk OCL
OCL (Object Constraint Language) je specifikační jazyk, který pomáhá např. s vyjádřením komplikovanějších integritních omezení a popisem vlastností operací. Takže jej potřebujeme všude tam, kde diagramy nestačí. OCL tedy v podstatě rozšiřuje UML o vyjádření podmínky – např. předchozího či následného stavu objektu. OCL však, na rozdíl od UML, není založen na konkrétním metamodelu. To může být příčinou problémů s interpretací výrazů jazyka. 3.3.3.
Diagramy UML
UML lze rozdělit do dvou skupin. První skupina diagramů popisuje statickou strukturu aplikace. Druhá skupina popisuje různé aspekty dynamického chování.
3.3.3.1. Diagramy pro popis struktur Digram tříd (class diagram) – třída je kategorie nebo skupina věcí, které mají podobné vlastnosti a stejné nepodobné chování. Kterýkoli prvek třídy (například ledniček) má určité vlastnosti, například značku, model, sériové číslo. Chování věcí v této třídě popisuje operace jako „vložit jídlo“, „chladit“, „vyjmout jídlo“.
25
Zdroj: vlastní zpracování. Obrázek 6. Ikona třídy v jazyku UML
Na obrázku vidíme příklad notace jazyka UML, která zachycuje vlastnosti a chování ledničky. Obdélník je ikona, která představuje třídu. Je rozdělena do tří částí. Horní část obsahuje jméno, prostřední část obsahuje vlastnosti a dolní část označuje operace. Diagram tříd se skládá z více takových obdélníků, spojených čarami, které naznačují vzájemný vztah tříd. Diagramy tříd jsou užitečné při analýzách. Diagram objektů (object diagram) – objekt je instance třídy, tedy určitá věc, která má specifické hodnoty vlastností a chování. Například naše lednička může mít značku Electrolux, název modelu ELX 350, sériové číslo EL350XA25.
Zdroj: vlastní zpracování. Obrázek 7. Ikona objektu v jazyku UML
Ikonou je obdélník, stejně jako u ikony tříd, pouze jméno je podtržené. Jméno konkrétní instance je vlevo od dvojtečky, jméno třídy je vpravo. Diagram komponent (component diagram) - představuje znázornění komponent budoucího počítačového systému. Komponenta může být jakákoliv implementace třídy (nebo více tříd). Diagram komponent tedy zachycuje strukturu budoucího systému. Komponenty mají tu výhodu, že, jsou-li dobře navržené, mohou být opakovaně používány v různých projektech. Komponenty se v diagramu komponent znázorňují obdélníkem se dvěma malými obdélníky položenými přes jeho levou stranu.
26
Zdroj: vlastní zpracování. Obrázek 8. Ikona komponent v jazyku UML
Komponenty komunikují s okolím přes rozhraní. Jedná se o sadu operací vypovídajících o chování komponenty. Vztah mezi komponentou a jejím rozhraním se nazývá realizace. Diagram nasazení (deployment diagram) – ukazuje fyzickou architekturu počítačového systému. Pomocí něho je možné zobrazit počítače a zařízení, znázornit jejich vzájemná připojení a také software, který je na určitém zařízení nainstalován. Každý počítač je zde nakreslen jako kvádr a vzájemná připojení k jiným počítačům jsou čáry, které kvádry spojují.
Zdroj: vlastní zpracování. Obrázek 9. Ikona nasazení v jazyku UML
3.3.3.2. Diagramy pro popis chování Diagram případů užití (use case) – popis chování systému z pohledu uživatele. Pro vývojáře systému je to cenný nástroj. Osvědčený způsob shromáždění údajů o požadavcích systému z hlediska uživatele. Obzvláště důležité je to v případě, kdy je nutné vytvořit systém, který by mohli používat normální lidé nejen z oboru informačních technologií.
Zdroj: vlastní zpracování. Obrázek 10. Diagram případů užití v jazyku UML
27
Figura člověka představuje uživatele, který se nazývá participant (účastník). Elipsa znázorňuje případ užití. Účastníkem či entitou, která zahajuje případ užití, může být jak osoba, tak i jiný systém. Diagram sekvencí (sequence diagram) – diagram tříd a diagram objektů představují statickou informaci. Ve funkčním systému však objekty vzájemně reagují a působí na sebe. Tyto interakce se objevují průběžně. Diagram sekvencí jazyka UML ukazuje časovou dynamiku interakcí.
Zdroj: vlastní zpracování. Obrázek 11. Diagram sekvencí v jazyku UML
Stavový diagram (statechart diagram) – v každém daném časovém okamžiku je objekt v určitém stavu v průběhu svého životního cyklu. Ke změně stavu může dojít konkrétní událostí nebo i pouhým plynutím času. Každý objekt má svůj počáteční stav a může mít konečný stav. Stav se znázorňuje obdélníkem se zaoblenými rohy. Podobně jako o znázornění tříd je možné obdélník rozdělit na tři části, a to na název, stavové proměnné a činnosti stavu. 28
Zdroj: vlastní zpracování. Obrázek 12. Stavový diagram v jazyku UML
Diagram činností (activity diagram) – představuje sekvenční popis činností tak, jak postupně probíhají v systému. Vzniká rozšířením stavového diagramu. Diagram činností zachycuje především činnosti znázorněné ve stavovém diagramu. Činnosti se znázorňují jako obdélníky se zaoblenými rohy. Po dokončení každé činnosti následuje automatický přechod na další činnost, což se zachytí šipkou. Začátek a konec diagramu činností se, podobně jako ve stavovém diagramu, znázorňuje pomocí kroužků. Mnohdy je nutné rozhodnout, jaká činnost se bude vykonávat na základě určitých podmínek. Dochází tedy k větvení diagramu. Znázornit se to dá dvěma způsoby. Buď vychází možné cesty přímo z některé činnosti, nebo se větvení znázorní pomocí malého kosočtverce, ze kterého pak větvené šipky vychází. Podmínky se uvádějí u větví (šipek) v hranatých závorkách.
Zdroj: vlastní zpracování. Obrázek 13. Diagram činností v jazyku UML
Diagram spolupráce (collaboration diagram) – prvky vzájemně spolupracují, aby splnily úkol systému a v jazyce pro modelování musí existovat způsob, jak tuto skutečnost vyjádřit. Je podobný sekvenčnímu diagramu, ale interakci mezi objekty zachycuje odlišným způsobem. Oba typy diagramů obsahují stejné informace a je možné převést sekvenční diagram na diagram spolupráce a naopak. Odlišnost tkví v tom, že sekvenční 29
diagram klade důraz na pořadí jednotlivých událostí, diagram spolupráce spíše zdůrazňuje uspořádání spolupracujících objektů.
Zdroj: SCHMULLER, Josef. Myslíme v jazyku UML: Knihovna programátora. Praha
: Grada, 2001. 359 s. ISBN 80-247-0029-8 Obrázek 14. Diagram spolupráce v jazyku UML
Diagram spolupráce je rozšíření diagramu objektů. Kromě vztahů mezi jednotlivými objekty zachycuje také zprávy, které si objekty zasílají. Zpráva se znázorňuje jako šipka vedle asociační čáry. Zpráva může obsahovat parametry, ty se zapisují do závorek. U zpráv je možné vyjádřit, v jakém pořadí se zasílají. Zachytí se to číslem před názvem zprávy odděleném dvojtečkou.
3.3.4.
CASE nástroje
Zkratka CASE je označením pro Computer Aided Software Engineering nebo také Computer Aided Systems Engineering, což v překladu znamená počítačem podporované softwarové (systémové) inženýrství nebo-li vývoj software s využitím počítačové podpory. CASE nástroje jsou nástroje, které primárně umožňují: modelování IT systému pomocí diagramů (člověk lépe chápe obrázek než složitě psané slovo), generování zdrojového kódu z modelu (usnadňuje práci programátorům), zpětné vytvoření modelu podle existujícího zdrojového kódu (reverse engeneering), synchronizaci modelu a zdrojového kódu, vytvoření dokumentace z modelu. CASE nástroje jsou postaveny tak, aby podporovaly týmovou práci při vývoji systému, zajišťují sdílení rozpracovaných fragmentů, správu vývoje, sledují konzistenci modelu systému, automatizují některé 30
procesy, hlídají dodržování zvolené metodiky, některé umožňují řízení celého životního cyklu aplikací. Úspěch využití CASE nástrojů záleží mimo jiné na vybrané metodice. V současné době existuje nespočet CASE nástrojů, které plní různé funkce, nepomáhají již pouze vývojářům, ale také např. v procesu řízení firmy, kdy se zanalyzují stávající firemní procesy a pomocí CASE nástrojů se potom na základě analýzy vymodelují tak, jak by tyto procesy měly správně fungovat. Dnes většina CASE nástrojů představuje velké aplikace, které je možno využít ve všech fázích procesu vývoje software. U většiny nástrojů je jádrem univerzální modelovací jazyk UML (Unified Modeling Language). Pokud se podíváme na CASE nástroj, první co uvidíme, je grafické rozhraní. Zde je možno modelovat nejrůznější typy diagramu. Uveďme alespoň ty nejběžnější: DFD diagramy, které dovolují provádět funkční analýzu; Class diagramy – pro modelování tříd; STD diagramy; procesní diagramy a další. Podpora používání těchto nástrojů byla jedním z podnětů pro vznik CASE nástrojů. Hlavním důvodem byla častá aktualizace diagramu, kterou, při vyšší složitosti diagramu, nebylo možné provádět jen tak v ruce. Při používání CASE nástrojů, při podpoře návrhu a vývoje softwarové aplikace či informačního systému je potřeba dodržovat určitá pravidla a postupy, které zaručí smysluplnost a efektivitu. Jedná se o metodiky, jakožto souhrny postupů a metod, které určují co, kdo a kdy se má řešit. Podpora metodiky prostředkem CASE vyžaduje především, aby tento prostředek pokrýval všechny fáze životního cyklu projektu. Tyto prostředky se nazývají integrovaná prostředí pro vývoj aplikací. Jejichž hlavní charakteristikou je pevná svázanost s konkrétní metodikou. Takovéto nástroje mají pak výhodu integrity všech metod, technik a nástrojů v kontextu celého životního cyklu projektu. Další skupinou jsou prostředky označované jako běžné nástroje (tools), které podporují pouze některé metody a techniky z životního cyklu projektu. Od integrovaných prostředí se pak liší nezávislostí na konkrétní metodice. Z toho, jaké jsou obecné funkce, vlastnosti CASE nástrojů a požadavky na ně vyplývá, z jakých komponent se tyto systémy skládají. Mezi důležité funkce a vlastnosti CASE patří:
31
•
Konzistentní grafické ovládací prostředí (podle zásad tvorby GUI) – jednotný vzhled obrazovek, popisků, tlačítek, jednotné ovládání, použití symbolických ikon apod.
•
Centrální databáze (repository) pro uchování informací o všech objektech IS (tímto způsobem se zaručí, že informace je použitelná v libovolném dalším kroku projektování).
•
Prostředky verifikace konzistentnosti dat a podpora normalizace dat.
•
Textový editor pro popis jednotlivých objektů – pro účely technické a uživatelské dokumentace systému, možnost jejího přímého generování ze systému.
•
Možnost rychlého návrhu uživatelských obrazovek včetně simulace vstupů a výstupů (je vyžadováno pro prototyping).
•
Generátor zdrojových programů (pro případy častého znovupoužití daného kódu).
•
Export / import dat – pro práci s modely a dokumentací, které byly vytvořeny v jiných programech nebo jsou v jiných programech dále využívány a zpracovávány. Nejznámější používané CASE nástroje:
•
Powerdesigner (Sybase)
•
Oracle Designer (Oracle)
•
Case Studio
•
Rational Rose
•
MS Visio
32
4. Použité technologie při vývoji aplikace 4.1.
Vývoj v prostředí ASP.NET
V této kapitole se budu zabývat sestavováním webových stránek na základě objektů v kompilovaném prostředí. Důležitým rozdílem je skutečnost, že při užití serverových ovládacích prvků ASP.NET nezadáváme kód HTML. Na místo toho musíme specifikovat funkčnost, kterou požadujeme, a ASP.NET se „sám rozhodne“, jak se výstup prohlížeči odešle. ASP.NET každý požadavek prozkoumá a zjistí, od jakého typu prohlížeče prochází, aby následně vyprodukoval kód HTML, specifický pro daný prohlížeč. To vše je možné díky údaji User Agent přejímanému z hlavičky požadavku http, který obsahuje informace o prohlížeči.
4.1.1.
Serverové ovládací prvky
ASP.NET nabízí dva různé typy serverových ovládacích prvků – serverové ovládací prvky jazyka HTML a webové serverové ovládací prvky. Tyto typy se výrazně liší, ale v praxi mají větší využití webové ovládací prvky. Serverové ovládací prvky jazyka HTML použijeme při převádění webových stránek ASP na ASP.NET, pokud je pro nás důležitá rychlost dokončení převodu. Dále jsou serverové ovládací prvky HTML výhodné tehdy, pokud upřednostňujeme programovací model bližší stylu HTML nebo chceme explicitně řídit kód generovaný pro prohlížeč. Do stránek můžeme vložit libovolný kód HTML nebo použít kód HTML umístěný na stránku jako určitý serverový ovládací prvek. Kód HTML přeměníme na serverový ovládací prvek rozšířením o runat=“server“. Poté s ním můžeme pracovat jako s každým jiným webovým serverovým ovládacím prvek Naproti tomu webovým serverovým ovládacím prvkům dáme přednost v případě, že požadujeme bohatší funkčnost za účelem naplnění komplikovaných požadavků na stránku. K jejich použití sáhneme i při vývoji webových stránek, které budou zobrazovány v různých typech prohlížečů, a potřebujeme tedy generování odlišného kódu. Webové ovládací prvky mají výhodu v tom, že nejsou explicitně navázány na specifické elementy HTML, ale úzce souvisí s určitou funkčností, o kterou usilujeme. Jsou vůbec nejpoužívanějšími komponentami a nabízejí větší úroveň funkčnosti než elementy HTML, na rozdíl od nich mohou na webové stránky přinést pokročilé schopnosti a funkčnost. 33
Kupříkladu vložit na webové stránky kalendář bylo dříve velmi složité, až webové serverové ovládací prvky ASP.NET tento úkol bez problémů zvládnou, a to pomocí jediného řádku kódu
4.1.2.
Vzorové stránky
Vzory stránek (master pages) jsou vlastně šablony, které lze použít jako základ libovolného počtu dalších obsahových stránek ASP.NET v aplikaci. Využívají tzv. vizuální dědičnost, což je výrazné vylepšení webových stránek, zvyšující produktivitu. V praxi to znamená, že pomocí těchto šablon můžeme sestavovat webové stránky zahrnující oblasti záhlaví, navigace a zápatí – tedy společné položky stránek.
Zdroj: vlastní zpracování. Obrázek 15. Ukázka rozvržení stránek využitím vzorových stránek v ASP.NET (master page).
Při práci se vzory stránek vytváříme hlavní soubor, který je šablonou, na niž se odkazují podstránky (stránky obsahu). Vzory stránek používají jako příponu souboru .master, stránky obsahu využívají příponu .aspx a jsou deklarovány ve své direktivě Page. Stránky obsahu se programují v ContentPlaceHolder. Což je třída ze jmenného prostoru System.Web.UI.WebControls. 34
Stránka obsahu (kontent page) doplňuje obsah do master page, která je určena v direktivě Page, a to pomocí atributu MasterPageFile. Dále je do direktivy Page přidán atribut Title, protože samotný element title se nachází v master page, tudíž není možné titulek nastavovat přímo (z tohoto důvodu je také nutné, aby element head v master page obsahoval runat="server"). Jednotlivé fragmenty stránky se do master page vkládají pomocí ovládacího prvku asp:Content, kterému je potřeba předat ID ContetnPlaceHolderu z master page pomocí atributu ContetnPlaceHolderID.
4.2.
Analýza rizik
V současnosti je velmi „moderní“ vypracovávat analýzu rizik ať již komplexní (např. firemní kultura) nebo omezenou na konkrétní segment – např. jako aplikaci v mém případě. Existuje mnoho metod analýz rizik. Jejich úspěšnost závisí ne na metodě, ale na jejím aplikování do praxe a na validitě vložených údajů. Na počátku analýzy rizik je třeba identifikovat a ocenit aktiva. Já jsem použil hodnotící škálu 1-5 bodů, přičemž nejvyšší hodnota náleží nejdůležitějším aktivům. Identifikaci aktiv jsem zobrazil v tabulce. Typ aktiv
Identifikovaná aktiva
Informace
Databáze serveru
5
Hardware
Server
5
PC
2
Operační systém (WXP, Vista)
3
Databázový systém (SQL)
4
Připojení serveru
5
Intranet
2
Software
Služby
Hodnota aktiva
Zdroj: vlastní zpracování. Tabulka 3. Tabulka identifikace aktiv.
Když jsem si stanovil hodnotu aktiv, pokračoval jsem v analýze identifikací hrozeb a jejich pravděpodobnosti. Hodnotící škálu jsem použil obdobnou jako výše, s tím, že v tomto případě nejvyšší hodnota odpovídá nejvyšší pravděpodobnosti. Pro přehlednost jsem si vytvořil opět tabulku.
35
Identifikovaná hrozba
Pravděpodobnost hrozby
Selhání hardwaru
3
Selhání softwaru
3
Hacking
5
Selhání připojení k internetu
4
Zdroj: vlastní zpracování. Tabulka 4. Tabulka hrozeb.
Na základě výše uvedených dat jsem vypracoval analýzu rizik, která využívá matici zranitelnosti a rizik. V tabulce uvádím matici zranitelnosti – využívám data z předchozích dvou tabulek a přidávám další proměnnou – zranitelnost daného aktiva. Nejsou vyplněny všechny buňky, neboť některá aktiva a hrozby nemají přímou vazbu – hrozba nemá vliv na
5
5
2
3
2
3
4
3
2
3
Hacking
5
3
3
Selhání
4
Intranet
serveru
Připojení
systém
Databázový
systém
Operační
PC
Server
serveru
Popis aktiva
Databáze
aktivum.
5
2
5
4
Hodnota aktiva (A) Popis
Pravděpodobnost
hrozby
hrozby (T)
Selhání
3
hardwaru Selhání softwaru
internetu Zdroj: vlastní zpracování. Tabulka 5. Tabulka obsahující matici zranitelnosti a rizik.
V poslední řadě je třeba vypočítat míru rizika. K tomu se používá vzorec R = T * A * V, kde R je míra rizika, T je pravděpodobnost vzniku hrozby, A je hodnota aktiva a V je zranitelnost daného aktiva. Vypočtenou hodnotu míry rizika jsem pak doplnil do matice rizik. 36
5
5
2
45
12
3
4
3
18
36
Hacking
5
45
60
Selhání
4
Intranet
serveru
Připojení
systém
Databázový
systém
Operační
PC
Server
serveru
Databáze
Popis aktiva
5
2
100
32
Hodnota aktiva (A) Popis
Pravděpodobnost
hrozby
hrozby (T)
Selhání
3
hardwaru Selhání softwaru
internetu Zdroj: vlastní zpracování. Tabulka 6. Tabulka znázorňující míru rizik.
To však není poslední krok analýzy, je nutné ještě stanovit hranice pro míru rizika – nízká, střední a vysoká. Já jsem si stanovil hranice 80 pro vysoká rizika a 25 pro nízká. Výsledkem mé analýzy je tedy zjištění, že v mé aplikaci hrozí jedno vysoké riziko, pět středních a dvě nízká rizika.
4.3.
Vývoj v prostředí ADO.NET
4.3.1.
Normalizace databázového modelu
Proč normalizovat? Normalizace je odstranění redundantních (opakujících) se dat, omezení složitosti (rozložení složité relace na dvojrozměrné tabulky) a zabránění tzv. aktualizačním anomáliím (např. abychom smazáním všech knih autora nepřišli o data o autorovi). Toto by mělo vést k přehlednější, rozšiřitelnější a výkonnější databázi. Normalizace by měla vést k vzniku tabulek, které lze snadno udržovat a efektivně se na ně dotazovat. Normalizované schéma musí zachovat všechny závislosti původního schémat a relace musí zachovat původní data, což znamená, že se musíme pomocí přirozeného spojení dostat k původním datům. Obecně můžeme pro relační databáze
37
konstatovat, že čím jsou tabulky normalizovanější, tím lépe by se s nimi z hlediska aplikační logiky mělo pracovat. Normální formy: •
1.NF – První normální forma
•
2.NF – Druhá normální forma
•
3.NF – Třetí normální forma
•
4.NF – Čtvrtá normální forma
•
5.NF – Pátá normální forma První normální forma, hovoří o odstranění opakovaných skupin dat a zaručuje
tedy atomičnost neboli nedělitelnost dat, tzn. že data v tabulce jsou samostatná a nezávislá a hodnoty z pohledu databáze již dále nedělitelné. Hodnota sloupce také nesmí být relací. Pokud databázová tabulka tyto podmínky nesplňuje, je potřeba ji rozložit (tabulka je v takzvané nulté formě). Jmeno
Adresa
Karel Vonásek
Krátká 12, Praha
Adam Malý
Šikmá 3, Brno
Zdroj: vlastní zpracování. Tabulka 7. NFNF – non first normal form
Po úpravě dostaneme níže uvedenou tabulku. Jmeno
Prijmeni
Ulice
Mesto
Karel
Vonášek
Krátká 12
Praha
Adam
Malý
Šikmá 3
Brno
Zdroj: vlastní zpracování. Tabulka 8. Úprava NFNF a 1NF
Druhá normální forma je dodržena tehdy, pokud tabulka splňuje podmínku 1NF a každý atribut, kromě primárního klíče, musí být úplně závislý na celém primárním klíči. Druhá normální forma se proto týká jen tabulek, které mají více primárních klíčů. Když má tabulka jen jeden primární klíč, podmínka pro 2NF je splněna automaticky.
38
Nazev
Vyrobce
Cena
Kontakt
Lopata
Kafka s.r.o.
150
[email protected]
Sekera
M&M s.r.o.
134
[email protected]
Motyka
Kafka s.r.o.
70
[email protected]
Zdroj: vlastní zpracování. Tabulka 9. Tabulka s více primárními klíči
Pro daný případ musíme vytvořit dvě nové tabulky. Vyrobce_ID
Nazev
Cena
1
Lopata
150
2
Sekyra
134
1
Motyka
70
Zdroj: vlastní zpracování. Tabulka 10. Upravena tabulka na 2NF
Vyrobce_ID
Vyrobce
Kontakt
1
Kafka s.r.o.
[email protected]
2
M&M s.r.o.
[email protected]
Zdroj: vlastní zpracování. Tabulka 11. Upravena tabulka na 2NF
Tabulka je v třetí normální formě tehdy, když je v druhé normální formě a zároveň neexistuje závislost neklíčových sloupců tabulky. Tedy v této formě se nachází tabulka, splňuje-li předchozí dvě formy a žádný z jejich atributů není tranzitivně závislý na klíči. Tranzitivní závislost je taková závislost, mezi minimálně dvěma atributy a klíčem, kde jeden atribut je funkčně závislý na klíči a druhý atribut je funkčně závislý na prvním atributu. Zamestanec_ID
Jmeno
Prijmeni
Mesto
Funkce
1
Karel
Nový
Praha
Ředitel
2
Josef
Velký
Jihlava
programátor
3
Marie
Vysoká
Praha
programátor
Zdroj: vlastní zpracování. Tabulka 12. Tabulka nesplňující 3NF
39
Zamestanec_ID
Jmeno
Prijmeni
Mesto_ID
Funkce_ID
1
Karel
Nový
1
Ředitel
2
Josef
Velký
2
programátor
3
Marie
Vysoká
1
programátor
Zdroj: vlastní zpracování. Tabulka 13. Upravená tabulka na 3NF
Mesto_ID
Mesto
Funkce_ID
Funkce
1
Praha
1
ředitel
2
Jihlava
2
Programátor
Zdroj: vlastní zpracování. Tabulka 14. Upravená tabulka na 3NF
Zdroj: vlastní zpracování. Tabulka 15. Upravená tabulka na 3NF
Čtvrtá normální forma se zabývá vztahy uvnitř složeného primárního klíč. Pokud je v tabulce složený primární klíč, může se stát, že některé hodnoty tohoto klíče jsou na sobě nezávislé, ale tím, že spolu tvoří klíč, vzniká falešná souvislost mezi těmito hodnotami a nemohou existovat nezávisle na sobě, což není v souladu s modelovanou realitou. 4.NF proto vyžaduje, aby klíč tvořily jen ty hodnoty, které mají skutečnou vzájemnou souvislost. Další definice říká: Tabulka je ve čtvrté normální formě tehdy, když je v třetí normální formě a popisuje jen jeden fakt anebo souvislost. Tabulka se nachází v páté normální formě, když je ve čtvrté normální formě a není do ní možné přidat nový sloupec, případně skupinu sloupců bez toho, aby se rozpadla na několik dílčích tabulek.
4.3.2.
Přístup k datům z databáze
Technologie ADO.NET velmi usnadňuje práci ve vrstvách. Tento styl preferujeme při vývoji aplikace, která interaguje s daty – běžným modelem je rozdělení na aplikační vrstvu (uživatelské rozhraní), vrstvu datových služeb a vlastní databázi. K přístupu k datům z databáze musíme použít následující metody. − ExecuteNonQuery - se používá pro příkazy UPDATE, INSERT a DELETE jedinou vrácenou hodnotou je počet ovlivněných záznamů, to znamená, že tato metoda spustí příkaz, ale nevrátí výstup.
40
using (objConn) { objConn.Open(); SqlCommand command = objConn.CreateCommand(); command.CommandType = CommandType.StoredProcedure; command.CommandText = "ORDER_UPDATE"; command.Parameters.Add(new SqlParameter("@Customer_ID", SqlDbType.BigInt, 4, "ID_CUSTOMER")); command.Parameters["@Customer_ID"].Value = id_Customer; command.Parameters.Add(new SqlParameter("@Order_ID", SqlDbType.BigInt, 4, "ID_ORDER")); command.Parameters["@Order_ID"].Value = id_Order; command.Parameters.Add(new SqlParameter("@OrderState_ID", SqlDbType.BigInt, 4, "ID_ORDER_STATE")); command.Parameters["@OrderState_ID"].Value = id_OrderStatus; command.ExecuteNonQuery(); } objConn.Close(); − ExecuteReader - spustí příkaz a vrátí objekt typu <poskytovatel>DataReader, který lze použít v iteraci vrácených záznamů. objConn.Open(); SqlCommand cmd = new SqlCommand("LOGIN", objConn); cmd.CommandType = CommandType.StoredProcedure; using (SqlDataReader dr = cmd.ExecuteReader()) { while (dr.Read()) { If ((customer.LogOn == (string)dr["LOGIN"]) && (hash == string)dr["PASSWORD"])) { customerId = Convert.ToInt32(dr["ID_CUSTOMER"]); } } dr.Close(); } objConn.Close(); − ExecuteScalar - spustí příkaz a vrátí jedinou hodnotu – objekt, který můžeme konvertovat na příslušný typ string select = "SELECT COUNT(*) FROM CUSTOMER"; SqlConnection conn = new SqlConnection(source); Conn.Open(); SqlCommand cmd = new SqlCommand(select,conn); Object o = cmd.ExecuteScalar(); Console.WriteLine(o); 41
4.3.2.1. Volání uložených procedur Při volání uložené procedury s objekty Command stačí definovat název uložené procedury, poté přidat definici jednotlivých parametrů a spustit příkaz pomocí jedné z metod popsaných výše. Volání uložené procedury, která nic nevrací, je nejjednodušší možností. Jde například o aktualizaci či odstranění záznamu.
4.3.2.2. Třída DataReader Třída DataReader představuje nejjednodušší a nejrychlejší způsob výběru dat ze zdroje dat, ale zároveň poskytuje nejméně možností. Instanci typu DataReaderu nemůžeme vytvořit přímo. Instanci tohoto typu vrací metoda ExecuteReader() objektu typu Command příslušné databáze. Např.: SqlCommand cmd = new SqlCommand("LOGIN", objConn); cmd.CommandType = CommandType.StoredProcedure; using (SqlDataReader dr = cmd.ExecuteReader())
4.3.2.3. Třída DataSet Třída DataSet byla navržena jako odpojený datový kontejner. Nepracuje s informacemi o databázových připojeních. Ve skutečnosti nemusí data uchovávaná v objektu typu DataSet nutně pocházet z databáze. Může se stejně dobře jednat o záznamy ze souboru ve formátu CSV. Třída obsahuje sadu datových tabulek. Každá z tabulek má sadu datových sloupců a datových řádků. Když definujeme datové sady se všemi třídami DataTable, DataColumn a Constraint a dalšími požadovanými součástmi, je nutno zaplnit instanci typu DataSet. Čtení dat z externího zdroje a jejich vložení do datové sady lze zajistit dvěma hlavními způsoby. Konkrétně buď pomocí DataAdapteru, nebo pomocí načtení souboru XML. String select = ("SELECT ContactName, CompanyName FROM Customers"); SqlSonnection conn = new SqlConnection(source); SqlDataAdapter da = new SqlDataAdapter (select, conn); DataSet ds = new DataSet(); da.Fill(ds, "Customers"); foreach(DataRow row in ds.Tables["Customers"].Rows) 42
Console.WriteLine("‘{0}‘, {1}", row [0], row[1]); Třída SqlDataAdapter použije příkaz SQL a zaplní tabulku v instanci typu DataSet s názvem Customer. Dále je v kódu znázorněno použití indexeru DataRow pro přístup k hodnotám z příslušného řádku. Hodnoty daného sloupce lze načíst pomocí jednoho z několika přetížených indexerů. Tyto indexery umožňují načíst hodnotu na základě čísla sloupce, názvu nebo objektu DataColumn.
43
5. Návrh a realizace internetového obchodu 5.1.
Základní požadavky na aplikaci
Nejdříve je nejdůležitější specifikovat základní požadavky na danou aplikaci či předpoklady případně podmínky, ze kterých je třeba vycházet při jejich realizaci. Internetový obchod poběží na samostatném hostovaném serveru. Coby databázový server jsem využil MS SQL 2005 od firmy Microsoft. Tento server jsem nainstaloval na počítač, který splňuje běžné požadavky na databázový server. Minimální požadavky, které jsou kladeny na MS SQL Workgroup, tzn. dvoujádrový procesor s pamětí 3GB RAM, pevný disk je požadován minimálně 100GB, ale samozřejmě, že na kapacitě disku záleží podle objemnosti dat pro internetový obchod. Jelikož jsem si vybral platformu Microsoft, musí být na serveru nainstalován .NET Framework. Dalším požadavkem je, aby data byla dostupná, aby bylo zboží aktuální, to znamená odpovídat stavu zásob ve skladu. Toto je řešeno pomocí přídavné aplikace Skladová evidence. Skladová evidence je připojena na lokální sít uživatele. Sklad musí mít k dispozici aktuální stav zadaných objednávek. Podrobnou funkčnost popíši podrobněji v následujících kapitolách.
44
5.1.1.
Pohled z hlediska zákazníka
Nejprve bych znázornil zabezpečení funkcí internetového obchodu z pohledu zákazníka v Use Case diagramu.
Zdroj: vlastní zpracování. Obrázek 16. Diagram případů užití znázorňující zákazníkovi scénáře
Popis scénářů k jednotlivým případům použití. −
Registrace do systému: Slouží k zaregistrování nového zákazníka do systému. Zákazník otevře úvodní stránku internetového obchodu. Poté klikne na odkaz Registrace. Systém zobrazí stránku registrace a zákazník vyplní požadované údaje. Systém zobrazí informativní stránku o průběhu registrace. Výstupem je úspěšně registrován zákazník v systému.
45
−
Přihlášení do systému: Slouží k přihlášení registrovaného zákazníka do systému. Vstupní podmínkou je splnění požadavku předchozí registrace. Zákazník otevře úvodní stránku internetového obchodu, vyplní přihlašovací údaje, Přihlašovací jméno a Heslo, a stiskne tlačítko Přihlásit. Pokud jsou vyplněné údaje správně, systém zobrazí domovskou stránku obchodu. V opačném případě je nutno opakovat scénář. Výstupem je zobrazena domovská stránka obchodu a je správně zobrazeno jméno přihlášeného uživatele.
−
Úprava údajů:
Slouží k úpravě či doplnění údajů zákazníka. Vstupní podmínkou je přihlášení do systému. Zákazník klikne na odkaz Změna údajů. Systém zobrazí stránku „Úprava údajů zákazníka“. Zákazník provede příslušné změny a vyplní heslo v poli „Původní heslo“.
V případě byla-li součástí úprav
změna hesla, zde je nutno uvést původní heslo. Poté zákazník stiskne tlačítko Potvrdit změny. Systém zobrazí informativní stránku o výsledku úpravy. Výstupem je, že údaje jsou úspěšně změněny. −
Prohlížení zboží:
Slouží k prohlížení zboží v internetovém obchodě. Vstupní podmínkou je přihlášení do systému. Zákazník stiskne odkaz Zobrazit vše nebo odkaz na konkrétní kategorii zboží. Systém zobrazí stránku „Nabídka zboží“ (veškeré zboží nebo vybranou kategorii). Zákazník může zboží setřídit podle názvu (implicitně),
ceny
případně
kategorie
a
to
vzestupně
(implicitně) nebo sestupně. Mezi stránkami seznamu je možno se pohybovat pomocí navigačních šipek v dolní části stránky. Stisknutím obrázku zboží nebo odkazu Podrobnosti se zobrazí stránka s detailním popisem zboží. −
Nákup zboží:
Slouží k objednání zboží v internetovém obchodě. Vstupní podmínkou je přihlášení do systému. Na stránce „Detailní informace o zboží“ zákazník stiskne odkaz Přidat do košíku. Systém zobrazí stránku „Nákupní košík“ a zboží je přidáno do košíku. Pokud chce zákazník vybírat další zboží, stiskne
46
tlačítko „Pokračovat v nákupu“ a vrátí se do seznamu zboží. Pokud má zákazník vybráno všechno zboží, přepne se na stránku „Nákupní košík“ (odkaz Nákupní košík nebo přidáním posledního zboží). V „Nákupním košíku“ může zákazník provést další operace jako, vyprázdnit košík příslušným tlačítkem, upravit množství jednotlivých položek v košíku a tlačítkem Přepočítat vypočítat výslednou cenu, objednat zboží stiskem tlačítka „Objednat“. Stiskem tlačítka objednat se zákazník přesune na stránku „Objednávka“. Pokud zákazník stiskne tlačítko „Zrušit objednávku“, je objednávka zrušena, nákupní košík smazán a je zobrazena informativní stránka o zrušení objednávky. Pokud zákazník stiskne tlačítko „Potvrdit objednávku“, je objednávka odeslána a systém zobrazí potvrzení objednávky. Výstupem je, že systém potvrdí objednávku nebo její zrušení. −
Sledování zboží:
Slouží ke sledování stavu vlastních objednávek zákazníka. Vstupní podmínkou je přihlášení do systému. Zákazník klikne na odkaz Moje objednávky, systém zobrazí stránku „Moje objednávky“, která zobrazuje přehled všech objednávek zákazníka.
−
Odhlášení ze systému: Slouží k odhlášení zákazníka. Vstupní podmínkou je přihlášení do systému. Zákazník klikne na odkaz Odhlásit. Systém odhlásí zákazníka a zobrazí úvodní stránku internetového obchodu. Výstupem je, že zákazník je odhlášen.
47
5.1.2.
Pohled z hlediska skladníka
Funkčnost z hlediska provozovatel zajišťuje Skladová evidence. Use Case diagramu je zobrazen na následujícím obrázku.
Zdroj: vlastní zpracování. Obrázek 17. Diagram případů užití znázorňující skladníkovi scénáře
Popis scénářů k jednotlivým případům použití. −
Přihlášení do systému: Slouží k přihlášení do Skladové evidence. Uživatel spustí aplikaci, vyplní uživatelské jméno a heslo. Tlačítkem Login se přihlásí. Systém zkontroluje správnost údajů a v kladném případě otevře hlavní okno aplikace. Pokud nejsou údaje správné, vyzve systém k opravě a scénář se opakuje. Výstupem je přihlášení uživatele do aplikace.
−
Vyskladnění objednávky: Slouží k vyskladnění objednávky. Vstupní podmínkou je přihlášení do systému. Skladník otevře přehled objednávek a vybere si příslušnou objednávku. Připraví veškeré zboží pro vybranou objednávku. Tlačítkem „Vyskladnit/ Odeslat“ potvrdí, že zboží je připraveno. Systém změní stav objednávek na „Vyskladněno“ a definitivně odečte příslušné množství jednotlivých položek ze stavu skladu. Výstupem je objednávka ve stavu „Vyskladněno“. 48
−
Odeslání objednávky:
Slouží k odeslání objednávky. Vstupní podmínkou je, přihlášení do systému a objednávka je vyskladněna. Skladník otevře přehled objednávek. Vybere příslušnou vyskladněnou objednávku předanou k odeslání. Tlačítkem „Vyskladnit/ Odeslat“ potvrdí, že zboží je odesláno. Systém změní stav objednávek na „Odesláno“. Výstupem je objednávka ve stavu „Odesláno“.
−
Export dat:
Slouží k manuálnímu exportu dat. Vstupní podmínkou je, přihlášení do systému. Skladník otevře agendu „Export dat“. Nastaví období, za které chce data exportovat a následně spustí export. Výstupem jsou exportovaná data do formátu XML.
5.2.
Návrh datového modelu v MS SQL
5.2.1.
Tabulky
Úplně nejdříve jsem si tedy navrhl databázovou strukturu. Jednotlivé tabulky z níže uvedeného diagramu popíši podrobněji.
Zdroj: vlastní zpracování. Obrázek 18. Pohled na navrženou datové strukturu databáze.
V této
aplikaci
jsou
nejdůležitější
čtyři
tabulky
CUSTOMER,
ORDERS
ORDER_ITEM, GOODS. Tabulka ORDER_ITEM tvoří jádro internetového obchodu, v běžné představě si lze tuto tabulku představit jako nákupní košík, ve kterém je číslo 49
objednávky a k ní veškeré objednané zboží a jeho počet. Tabulka GOODS obsahuje všechny položky zboží, které lze objednat pře internetový obchod. U zboží lze jednoduše přes spojenou tabulku rozlišovat kategorii zboží (CATEGORY), případně měrnou jednotku (CURRENCY_UNIT), např.: kus, baleni, litry. Tabulka ORDERS zase obsahuje všechny objednávky, které byly provedeny zákazníkem. Ke každé objednávce je přiřazen aktuální stav objednávky a zákazník. Tabulka CUSTOMER obsahuje seznam všech zaregistrovaných zákazníků, případně také uživatelů s rolí „skladník“, k této tabulce jsou připojeny další tabulky ADDRESS a ROLES. V tabulce ROLES jsou definovány role jako „zákazník“ a „skladník“.
5.2.2.
Uložené procedury
Uložené procedury plní v této aplikaci velmi důležitou funkci. Jsou zde využívány ke každému spojení z jednotlivé aplikace, přes datovou vrstvu DAO (DataAccessObject. Velká výhoda uložených procedur je, že se nemusí měnit kód ve vývojovém prostředí C#, ale pouze nad databázovým serverem. Pouze musíme splňovat vstupní podmínky (počet vstupních parametrů). Uvedu zde jednoduché příklad uložené procedury použité pro vytvoření „Nákupního košíku“ set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[SHOPBASKET_CREATE] @Customer_ID bigint, @Goods_ID bigint AS BEGIN DECLARE @IdOrder bigint DECLARE @Amount bigint --Vybere mi ID objednavky pokud zakaznik ma otevrenou objednavku SELECT @IdOrder = ID_ORDER FROM dbo.ORDERS WHERE ID_CUSTOMER = @Customer_ID AND ID_ORDER_STATE = 1 IF (@IdOrder IS NULL) --Pokud zakaznik nema otevrenou objednavku zalozi novou! BEGIN INSERT INTO dbo.ORDERS (ID_CUSTOMER, DATE, ID_ORDER_STATE) VALUES(@Customer_ID, getdate(), 1) SELECT @IdOrder = SCOPE_IDENTITY() END --Vlozi zbozi do nakupniho kose SELECT @Amount = AMOUNT FROM dbo.ORDER_ITEM WHERE ID_GOODS=@Goods_ID AND ID_ORDER=@IdOrder IF (@Amount IS NULL)
50
BEGIN INSERT INTO dbo.ORDER_ITEM (ID_ORDER, ID_GOODS,AMOUNT) VALUES(@IdOrder,@Goods_ID, 1) END ELSE BEGIN UPDATE dbo.ORDER_ITEM SET ID_ORDER=@IdOrder, ID_GOODS=@Goods_ID, AMOUNT=@Amount+1 WHERE ID_GOODS=@Goods_ID AND ID_ORDER=@IdOrder END END
Ve zdrojovém kódu STORED PROCEDURES v naší databázi je nejprve vidět jméno uložené procedury: SHOPBASKET_CREATE, dále tam jsou uvedeny vstupní dva parametry @Customer_ID a @Goods_ID. Nejprve před vytvořením nového nákupního košíku je proveden test, zda konkrétní uživatel již nemá otevřenou (nedokončenou objednávku). Pokud zákazník dosud nemá otevřenou objednávku (tabulka ORDER), vytvoří se mu nová objednávka (tabulka ORDERS). Poté se otestuje, zda je zboží již evidováno, zjišťuje se počet konkrétního zboží v konkrétní „nákupním košíku“ (tabulka ORDER_ITEM). Pokud v tabulce ORDER_ITEM není zboží evidováno, přiřadí se do sloupce AMOUNT jednička, v případě, že v tabulce ORDER_ITEM je již konkrétní zboží evidováno připočte se k aktuálnímu počtu jednička. Toto zaručuje, že jednotlivé zboží bude mít v dané objednávce pouze jeden záznam, ale vždy aktuální počet množství. Volání této procedury v prostředí C# probíhá přes datovou vrstvu DAO a vypadá následovně: public void ShopBasketCreate(int customerId, int goodsId) { string conn = ConfigurationManager.ConnectionStrings["AdProjConnectionString"].Connection String; SqlConnection objConn = new SqlConnection(conn);
try { using (objConn) { objConn.Open(); SqlCommand command = objConn.CreateCommand(); command.CommandType = CommandType.StoredProcedure; command.CommandText = "SHOPBASKET_CREATE"; command.Parameters.Add(new SqlParameter("@Customer_ID", SqlDbType.BigInt, 4, "ID_CUSTOMER")); command.Parameters["@Customer_ID"].Value = customerId; command.Parameters.Add(new SqlParameter("@Goods_ID", SqlDbType.BigInt, 4, "ID_GOODS")); command.Parameters["@Goods_ID"].Value = goodsId;
51
command.ExecuteNonQuery(); } objConn.Close(); } catch (Exception exc) { Console.WriteLine("Došlo k vyjímce. Zpráva: " + exc.Message); } }
Zde je zobrazena procedura z vrstvy DAO, která slouží k vytvoření Nákupního košíku v databázi. V příkazu command je vlastnost CommanText, obsahující název uložené procedury v databázovém serveru. Tento název musí být shodně vyplněn. Jako vstupní parametry jsou zde uvedeny @Customer_ID a @Goods_ID. Tyto parametry musí mít rovněž stejné názvy jako ty, které jsou uvedeny v Stored Procedures v databázovém serveru (viz výše znázorněné). Výstupem této procedury je vytvoření nového záznamu v tabulce ORDER_ITEM případně přepočet množství konkrétního zboží (navýšení množství o jeden kus).
5.3.
Datový model v prostředí .NET
V aplikaci jsou vytvořeny třídy které převážně odpovídají tabulkám v databázovém serveru. Vytvořil jsem následující třídy: Address – slouží při vytvoření objektu obsahující informace o adrese zákazníka Category – slouží při vytvoření objektu obsahující název kategorie CurrencyUnit - slouží při vytvoření objektu obsahující název měnové jednotky Customer - slouží při vytvoření objektu obsahující informace o zákazníkovi CustomerLogin - slouží při vytvoření objektu obsahující uživatelské jméno a heslo
zákazníka Goods - slouží při vytvoření objektu obsahující informace o zboží GoodsDetail - slouží při vytvoření objektu obsahující informace o detailu zboží Order - slouží při vytvoření objektu obsahující informace o objednávkách OrderItem - slouží při vytvoření objektu obsahující „nákupní košík“ Roles - slouží při vytvoření objektu obsahující role uživatele
52
5.4.
Návrh webové aplikace
Zdroj: vlastní zpracování. Obrázek 19. Znázornění členění internetového obchodu do jednotlivých částí - frame.
Výše je zobrazena úvodní obrazovka internetového obchodu. Pro lepší znázornění je do internetového obchodu vložen menší počet zboží prostřednictvím Skladové evidence. Způsobem jakým se vkládá nové zboží, bude popsán v kapitole Návrh skladové evidence. Okno internetového obchodu je členěno na pět částí. První částí je záhlaví internetového obchodu (na obrázku oblast číslo 1). V této části může být Logo firmy, tuto část lze případně doplnit jak obrázkem na pozadí tak pouhým textem. Další část tvoří odkazy, které se převážně týkají celého internetového obchodu. (na obrázku je oblast označena číslem 2). Tato oblast obsahuje odkazy Home, O nás, Vše o nákupu, Obchodní podmínky, Nákupní košík a Kontakt. Odkaz Home, slouží k návratu na úvodní stránku. Odkaz O nás obsahuje základní informace o provozovateli internetového obchodu. Odkaz Vše o nákupu obsahuje základní informace, popisující postup při nakupování v tomto internetovém obchodě, jaké zboží je v internetovém obchodě nabízeno a další informace dle uvážení provozovatele internetového obchodu. Odkaz Obchodní podmínky obsahuje informace týkající se práv zákazníka při nakupování prostřednictvím internetového obchodu, včetně popisu reklamace nebo způsobu doručení zboží. Odkaz Nákupní košík slouží pro rychlou informaci zákazníkovi o jeho rozpracované objednávce. Odkaz Kontakt obsahuje kontaktní adresu provozovatele internetového obchodu. Další oblast „navigace“ obsahuje textové pole k přihlášení uživatele, 53
případně k informaci o aktuálním přihlášeném uživateli, možnost registrace nového uživatele, a zobrazení zboží - buď vše najednou či tříděné dle kategorie (na obrázku je tato oblast označena jako 3). Kategorie jednotlivého zboží se definuji ve Skladové evidenci. Předposlední oblast (na obrázku označena číslem 4) je nejvíce dynamická, v této oblasti se zákazníkovi zobrazují všechny konkrétní stránky týkající se výběru daného zboží, nákupu zboží, či kontroly stavu objednávky. Poslední oblast (na obrázku označena číslem 5) obsahuje zápatí internetového obchodu. Programově je tato stránka tvořena pomocí techniky Vzorových stránek (tato technika popsána výše).
5.4.1. Registrování zákazníka a přihlášení do internetového obchodu Aby zákazník mohl využívat plně funkce internetového obchodu včetně objednávání zboží, musí být zaregistrován resp. přihlášen do internetového obchodu aplikace.
Zdroj: vlastní zpracování. Obrázek 20. Stránka pro registraci nového zákazníka v internetovém obchodě.
Výše uvedený obrázek znázorňuje formulář pro registrování nového uživatele. Zákazník zde vyplní jméno a příjmení, případně název firmy. Poté zadá přihlašovací jméno, které následovně slouží jako první ze dvou zadávaných údajů pro přihlášení se do internetového obchodu. Následující dvě kolonky ve formuláři slouží k vyplnění hesla a jeho potvrzení. Heslo je druhý údaj, který slouží k přihlášení do internetového obchodu. Do další kolonky se zadává v případě fyzické osoby rodné číslo, v opačném případě, tedy jedná-li se o právnickou osobu IČO a DIČ. Následují adresy - adresa fakturační a adresa dodací. Pokud se 54
adresy shodují, zaškrtne se pouze čtvereček (checkbox) Totožná s fakturační. Je-li každá z adres odlišná, je třeba vyplnit obě adresy. Nakonec se stiskne tlačítko Uložit. Pokud zákazník například nevyplní adresu, zobrazí se mu u dané kolonky červená hvězdička, značící povinnost vyplnit požadovaný údaj.
Zdroj: vlastní zpracování. Obrázek 21. Okno zobrazující jak je zákazník informován o nevyplněném textboxu – uživatel nezadal název ulice.
Tlačítkem Uložit se vyvolá proces, který překontroluje správně zadaná vstupní data. Po překontrolování údajů dojde k uložení zákazníka do databáze. Přihlášení zákazníka je podmíněno tím, že je zákazník již zaregistrovaný. Pokud je zákazník zaregistrován, může se po vyplnění přihlašovacích údajů a potvrzením tlačítka Přihlásit přihlásit do internetového obchodu. Systém ověří vstupní data o zákazníkovi a v případě, že zákazník vyplnil správně údaje, zobrazí se informace jméno zákazníka v navigační části internetového obchodu.
Zdroj: vlastní zpracování. Obrázek 22. Ukázka zobrazení informace, že zákazník je přihlášen k internetovému obchodu.
Programově je přihlášení uživatele zpracováno v kódu na pozadí následujícím způsobem. CustomerLogOn customer = new CustomerLogOn(); int customerID = 0; customer.LogOn = tbx_User.Text; customer.Psw = tbx_Psw.Text; DAL.CustomerProvider cp = new DAL.CustomerProvider(); customerID = cp.CheckLoginCustomer(customer); if (customerID != 0) { Model.Customer zak = cp.GetCustomer(customerID); lbl_LogCustomer.Text = zak.Name; Session["CustomerName"] = zak.Name;
55
userID = customerID; Session["CustomerID"] = customerID; MultiView1.ActiveViewIndex = 2; }
Nejprve je vytvořen objekt customer třídy CustomerLogOn. Poté jsou načteny údaje zadané zákazníkem do vstupních polí (Přihlašovací jméno a Heslo). Následuje vytvoření objektu cp třídy CustomerProvider, tato třída slouží jako interface mezi datovou vrstvou a vrstvou aplikační. Na
objektu cp je
zavolána metoda
pro ověření zákazníka,
CheckLoginCustomer(customer). Pokud metoda vrátí číslo, které se nerovná nule, znamená to, že zákazník je zaregistrován a vstupní parametry se shodují s údaji při registraci zákazníka. Následuje uložení jména zákazníka a jeho id do Session. Tato proměnná je uložena na serveru do „souboru“. Každý prohlížeč si na serveru vytvoří svoji SessionID do které jsou v kódu přiřazeny proměnné CustomerName a CustomerID. Tyto proměnné jsou pak programátorovi k dispozici po celou dobu otevřeného internetového prohlížeče. Chce-li zákazník změnit osobní údaje, má možnost po kliknutí na odkaz Změna údajů změnit všechny zadané parametry, které zadal při registraci. Důležité je při uložení změny zadat aktuální stávající heslo. V případě, že zákazník nezadá stávající heslo, neprovede se změna údajů.
Zdroj: vlastní zpracování. Obrázek 23. Stránka pro úpravu údajů o zákazníkovi.
Po stisknutí tlačítka Potvrdit změny se provedou všechny požadované změny.
56
Odhlášení uživatele se provede po stisknutí odkazu Odhlásit. Potvrzením tohoto odkazu systém provede odhlášení zákazníka z internetového obchodu.
5.4.2.
Přehled zboží
Na tuto obrazovku se dostane každý zákazník včetně těch dosud neregistrovaných po kliknutí na odkaz Přehled zboží, případně na jednotlivé kategorie zboží.
Zdroj: vlastní zpracování. Obrázek 24. Stránka zobrazující přehled zboží v internetovém obchodě.
Na obrazovce je přehled nabízeného zboží, konkrétně (jako na výše uvedeném obrázku), zboží jedné určité kategorie. Zboží lze třídit podle názvu nebo ceny a to jak vzestupně tak sestupně. U každého zboží je zobrazen název zboží a jeho cena. Pokud zákazník projeví zájem o konkrétní zboží, může si zobrazit podrobnosti. Z programového pohledu je na této obrazovce využita komponenta GridView umožňující snadné připojení dat k databázi. Naplnění GridView daty se provede v kódu na „pozadí“, a to následovně: GoodsProvider gp = new GoodsProvider(); if (Request.QueryString["CategoryId"] != null && Int32.TryParse(Request.QueryString["CategoryId"], out categoryId)) { GridView1.DataSource = gp.GetGoods(categoryId, filtrPoradi,filtrVyberu); } else { GridView1.DataSource = gp.GetGoods(filtrPoradi, filtrVyberu); } GridView1.DataBind();
57
Nejdříve je vytvořen nový objekt GoodsProvider, který slouží k propojení mezi aplikační vrstvou a datovou vrstvou. Poté je položen dotaz, zda bylo kliknuto na konkrétní kategorii zboží. Pokud ano, načte se pomocí přetížené metody GetGoods a jejími vstupními parametry datový zdroj (tabulka z databáze). Pokud nebyla vybrána kategorie, načte se totožnou metodou GetGoods, ale s jinými parametry, datový zdroj, obsahující tabulku pro všechny kategorie zboží. Nakonec se pomocí metody DataBind třídy GridView naplní daný objekt konkrétními daty z databáze pro danou kategorii.
5.4.3.
Detail o zboží
Na obrazovce Přehled zboží může zákazník kliknout na odkaz Podrobnosti, následně se zobrazí stránka s detailními informacemi o zvoleném zboží. Tyto informace jsou uloženy v databázi a může je změnit pouze skladník ve Skladové evidenci.
Zdroj: vlastní zpracování. Obrázek 25. Stránka zobrazující detailní informaci o konkrétním zboží v internetovém obchodě.
Na této obrazovce může tedy zákazník zjistit podobné informace o produktu. Dále jsou zde dvě tlačítka: Zpět a Přidat do košíku. Tlačítko zpět slouží k návratu na stránku s Přehledem zboží a tlačítko Přidat do košíku slouží k přidání vybraného zboží do nákupního košíku. Aby zákazník mohl vybrané zboží vložit do nákupního košíku, musí být zaregistrován. V opačném případě mu nebude umožněno vložit zvolené zboží do nákupního košíku. 58
Programově
je
tato
stránka
tvořena
pomocí
MasterPage
a
následně
ContentPlaceHolder. Kde ContentPlaceHolder je třída z System.Web.UI.WebControls. V této třídě je už standardně vytvořena tabulka. V kódu na pozadí je při načítání stránky zavolán nejprve Provider, který slouží k propojení mezi jednotlivými vrstvami (aplikační a datovou). Posléze je vytvořen objekt goodsDetail, do kterého se načtou detailní informace o konkrétním zboží z databáze přes metodu GetGoodsDetail(). Tyto informace se poté zobrazí v konkrétních polích použitých v kódu webové stránky na popředí. Níže je uvedena část kódu. GoodsProvider gp = new GoodsProvider(); Model.Goods goodsDetail = gp.GetGoodsDetail(goodsID); if (goodsDetail != null) { lbl_Nazev.Text = goodsDetail.Name; lbl_Popis.Text = goodsDetail.Note; tbx_Cena.Text = string.Format("{0:c}", goodsDetail.Price); Image.ImageUrl = "Image.ashx?ImageId=" + goodsID; } else { ok = false; }
5.4.4.
Nákupní košík
Stránka s nákupním košíkem se zobrazí pouze, pokud je uživatel přihlášen. Košík obsahuje dosud vybrané zboží. Dále je zde možno u každého zboží změnit hodnotu počtu kusů (množství), a následně vše přepočítat.
Zdroj: vlastní zpracování. Obrázek 26. Stránka zobrazující nákupní košík v internetovém obchodě.
59
Tato stránka obsahuje tabulku, ve které jsou uvedeny následující údaje: název zboží „Název“, jednotková cena „ Cena“, počet kusů vybraného zboží „Množství“, a celková cena „Celkem“. Dále jsou zde tři tlačítka. Tlačítko Vyprázdnit slouží k vymazání nákupního košíku přihlášeného zákazníka. Tlačítko Přepočítat, slouží k přepočítání celkové ceny, pokud zákazník změní množství konkrétního zboží. Zákazník zde má tedy možnost uvedení požadovaného počtu zboží. Pokud zákazník bude mít dané zboží v nákupním košíku a přesto v přehledu zboží vybere do nákupního košíku stejné zboží, bude automaticky navýšeno pouze množství a přepočítaná celková cena. Každý druh zboží v nákupním košíku tvoří tudíž pouze jeden řádek. Posledním tlačítkem je tlačítko Objednat, které slouží k dalšímu kroku při objednávce zboží.
5.4.5.
Objednávka
Stránka s objednávkou se zobrazí, pokud zákazník v nákupním košíku klikne na tlačítko Objednávka. Tato stránka obsahuje informace o zákazníkovi, jeho doručovací adrese a o zbožím převzatém z nákupního košíku. Pokud je zákazník s uvedenými údaji spokojený, potvrdí následně objednávku pomocí tlačítka Potvrdit objednávku. V případě, že danou objednávku provést nechce, stiskne tlačítko Zrušit objednávku.
Zdroj: vlastní zpracování. Obrázek 27. Stránka zobrazující objednávku obsahující vybrané zboží z internetového obchodu.
Programově je tato stránka tvořena pomocí formuláře a tabulky. Tabulka je tvořena pomocí třídy GridView. V kódu na popředí je každý řádek tvořen následujícím záznamem ve třídě GridView.
60
V kódu na pozadí je při načítání této stránky vytvořen objekt provider jak pro objednávku (op), tak pro nákupní košík (sp). Následně je naplněn objekt objednávka (order) pro konkrétního zákazníka. Do proměnné orderStatedId je přiřazena hodnota jedna, která značí nákupní košík neboli rozpracovanou objednávku. Následně je naplněn objekt seznam (list), obsahující všechno zboží pro konkrétní nákupní košík pro konkrétního přihlášeného zákazníka. Poté je už pouze naplněn objekt GridView1 naplněným seznamem zboží. OrderProvider op = new OrderProvider(); ShopBasketProvider sp = new ShopBasketProvider(); Order order = new Order(); order = op.GetOrder(customerId); lbl_CisloObjednavky.Text = Convert.ToString(order.IdOrder); lbl_Jmeno.Text = order.Customer.Name; lbl_Ulice.Text = order.Address.Street; lbl_CisloPopisne.Text = order.Address.Number; lbl_Mesto.Text = order.Address.City; lbl_PSC.Text = order.Address.Zip; int orderStateId = 1; list = sp.ShopBasketList(customerId, orderStateId); decimal summary = 0; foreach (DataRow row in list.Rows) { summary += Convert.ToDecimal(row["SUMA"]); } GridView1.DataSource = list; GridView1.DataBind();
61
Zdroj: vlastní zpracování. Obrázek 28. Okno znázorňující třídu GridView na stránce obsahující objednávku.
5.4.6.
Seznam objednávek – moje objednávky
Na seznam objednávek se zákazník dostane dvojím způsobem. První možnost je přes odkaz Moje objednávky v navigačním okně, druhá možnost je stisknutím tlačítka Potvrdit objednávku ze stránky Objednávka. Stránka Moje objednávky tedy obsahuje seznam objednávek, umožňující sledovat a prohlížet aktivní i minulé objednávky. Stránka tvoří tabulku se sloupci, obsahujícími číslo objednávky, datum, a aktuální stav konkrétní objednávky. Stavy objednávek mohou být následující: Rozpracovaná – tento stav signalizuje, že je pouze naplněn nákupní košík a objednávka ještě není potvrzena zákazníkem. Přijatá – tento stav signalizuje, že objednávka je již potvrzena zákazníkem a byla odeslána provozovateli internetového obchodu. Zrušení – tento stav signalizuje, že objednávka byla zrušena ještě před odesláním zboží k zákazníkovi. Odeslána – tento stav signalizuje, že zboží v dané objednávce bylo odesláno k zákazníkovi.
62
Zdroj: vlastní zpracování. Obrázek 29. Stránka zobrazující všechny zákazníkovi objednávky a jejich stav.
Hlavním prvkem na této stránce je třída GridView, jež se naplní v kódu na pozadí následujícím způsobem: Objekt list je typu DataTable. Tento objekt je naplněn daty přes objekt op třídy OrderProvider. OrderProvider je interface mezi datovou vrstvou a aplikační vrstvou. Na objekt op je volaná metoda GetOrders s parametrem customerId, tato metoda vrátí všechny objednávky pro konkrétního zákazníka. Proměnná customerId je načítá pomocí session. Následně se objekt list přiřadí k objektu GridView1 a posléze vykoná samotné naplnění objektu GridView1 daty z databáze. private DataTable list; int customerId = Convert.ToInt32(Session["CustomerID"]); OrderProvider op = new OrderProvider(); list = op.GetOrders(customerId); GridView1.DataSource = list; GridView1.DataBind();
Pokud zákazník klikne na číslo u konkrétní objednávky, zobrazí se mu detail ke konkrétní objednávce, kde je navíc údaj o aktuálním stavu objednávky.
63
Zdroj: vlastní zpracování. Obrázek 30. Stránka zobrazující detail objednávky.
5.5.
Návrh skladové evidence
Pro vkládání dat do databáze a sledování objednávek zákazníku jsem pro majitele internetových stránek vytvořil i „winformovou“ aplikaci Skladová evidence. Tato aplikace se spustí ve standardním „windows“ okně pomocí souboru StoreApp.exe. V této aplikaci může skladník sledovat stav zboží ve skladu, monitorovat objednávky a následně je vyskladňovat, dále má skladník k dispozici seznam zákazníků. Poslední funkcí skladové evidence je export dat do XML.
5.5.1.
Přihlášení do aplikace Skladová evidence
Po spuštění aplikace StoreApp.exe se otevře okno s přihlašovacím dialogovým oknem. Po vyplnění přihlašovacích údajů se otevře nové okno s několika agendami. Pokud zadané přihlašovací parametry nejsou správně zadané, bude uživatel (dále jen skladník) informován o opravě zadání správných údajů.
64
Zdroj: vlastní zpracování. Obrázek 31. Přihlašovací okno do aplikace Skladové evidence.
Zdroj: vlastní zpracování. Obrázek 32. Hlavní okno aplikace Skladové evidence tvořící rozcestník.
Po přihlášení se zobrazí skladníkovi rozcestník, ve kterém si může vybrat mezi čtyřmi následujícími agendami Zboží, Zákazníci, Objednávky, Export dat. Tyto agendy jsou popsány níže.
65
5.5.2.
Agenda Zboží
Stiskne-li skladník tlačítko Zboží v rozcestníku Skladové evidence, zobrazí se nové okno s přehledem zboží, které je na skladě či které je nabízeno v internetovém obchodě. V tomto okně se zobrazí tabulka s názvem zboží, jeho popisem, měrnou jednotkou, cenou za jednotkový kus, kategorií, posledním údajem je počet kusů na skladě. Informace v tabulce lze snadno řadit dle sloupců. Klikne-li skladník například na sloupec Kategorie, seřadí se zboží abecedně dle názvu kategorie.
Zdroj: vlastní zpracování. Obrázek 33. Okno s přehledem zboží v aplikaci Skladová evidence.
V daném okně jsou ještě další čtyři tlačítka: Detail, Nový, Smazat, Zavřít. Jednotlivá tlačítka popíšu níže. Po stisknutí tlačítka Detail se zobrazí následující okno s formulářem, obsahujícím detaily o vybraném zboží.
66
Zdroj: vlastní zpracování. Obrázek 34. Okno s detailem konkrétního zboží v aplikaci Skladová evidence.
Skladník v okně o detailu zboží může nejen sledovat informace o vybraném zboží, ale může tyto informace změnit a následně vše uložit pomocí tlačítka Uložit. V okně je zobrazen název zboží, popis zboží, kategorie, počet kusů na skladě, měnová jednotka, cena za měnovou jednotku a počet blokovaných kusů. Blokované kusy jsou kusy, které byly vybrány uživateli přes internetový obchod, jejichž objednávka ale dosud nebyla dokončena. Dále je zde umístěn obrázek zboží, který se dá přes tlačítko Načíst změnit. Posledním tlačítkem je tlačítko Zavřít, jež slouží k zavření tohoto okna. Stiskne-li skladník v agendě Zboží tlačítko Nový, zobrazí se stejný formulář, tentokrát ale s prázdným obsahem. Slouží k zadávání parametru nového zboží do databáze. Všechno zboží, které je umístěno v internetovém obchodě, musí být vloženo přes tento formulář. Stiskne-li skladník v agendě Zboží tlačítko Smazat, dojde k vymazání vybraného zboží z databáze. K výmazu zboží ale dojde pouze tehdy, není-li zboží obsaženo v nějaké objednávce. Tato kontrola je zabezpečena v uložené proceduře SQL.
5.5.3.
Agenda Objednávky
Stiskne-li skladník tlačítko Objednávky v rozcestníku Skladové evidence, zobrazí se nové okno s přehledem všech objednávek, které byly vytvořeny v internetovém obchodě.
67
V daném okně může skladník procházet objednávky, řadit je podle jednotlivých sloupců a zobrazit si detailní informace o objednávce.
Zdroj: vlastní zpracování. Obrázek 35. Okno s přehledem objednávek v aplikaci Skladová evidence.
V tomto okně má skladník k dispozici následující informace o objednávkách: číslo objednávky, jméno zákazníka, adresu zákazníka, datum poslední změny v objednávce a celkovou cenu objednávky (cenový součet všech položek). Po stisku tlačítka Detail se zobrazí okno s detailem konkrétní objednávky. Tlačítko zavřít zavře okno s agendou Objednávky.
68
Zdroj: vlastní zpracování. Obrázek 36. Okno s detailem konkrétní objednávky v aplikaci Skladová evidence.
V okně s detailem objednávky má skladník přehled o vytvořené objednávce, kterou zákazník vytvořil přes internetový obchod. Okno je vytvořeno pomocí formuláře a tabulky. Ve formuláři je zobrazeno číslo objednávky, název zákazníka, jeho adresa doručení, datum vytvořené objednávky, celková cena objednávky a stav objednávky. V tabulce jsou rozepsány všechny položky k dané objednávce. Skladník zde tedy podle uvedených údajů může provést vyskladnění a odeslání objednávky k zákazníkovi. Po odeslání zboží skladník potvrdí vyskladnění objednávky, zákazník má poté možnost ve svém profilu v internetovém obchodě vidět aktuální stav své objednávky včetně data vyskladnění či odeslání zboží.
5.5.4.
Agenda Zákazníci
Stiskne-li skladník tlačítko Zákazníci v rozcestníku Skladové evidence, zobrazí se nové okno s přehledem všech zákazníků, kteří jsou zaregistrováni v internetovém obchodě. Umožňuje procházet seznam zákazníků, řadit podle jednotlivých sloupců a zobrazovat detail zákazníka, případně je mazat.
69
Zdroj: vlastní zpracování. Obrázek 37. Okno s přehledem zákazníků v aplikaci Skladová evidence.
Okno s přehledem zákazníků tvoří tabulka, z které skladník snadno zjistí informace o každém zákazníkovi. Zjistí jméno, přihlašovací jméno (Login) a adresu. Pokud skladník bude chtít daného uživatele smazat, může to provést jednoduše jedním tlačítkem - Smazat. Tlačítkem Detail zjistí detailní informace o zákazníkovi včetně jeho objednávek. Poslední tlačítko, nacházející se v tomto okně, je Zavřít, sloužící k uzavření daného okna.
70
Zdroj: vlastní zpracování. Obrázek 38. Okno s detailními informacemi o zákazníkovi v aplikaci Skladová evidence.
V okně detailu zákazníka může skladník vidět obě zákazníkovy adresy, jak dodací, tak fakturační. Skladník v tomto okně může tyto údaje i pozměnit, potvrzení změn provede přes tlačítko Upravit. Dále si skladník může zobrazit všechny objednávky od konkrétního uživatele, a to přes tlačítko Objednávky. Po stisku tlačítka Objednávky se zobrazí okno Přehled objednávek od konkrétního zákazníka. Viz obrázek u agendy Objednávky. Posledním tlačítkem je tlačítko Zavřít, sloužící k uzavření daného okna.
5.5.5.
Agenda Export dat
Stiskne-li skladník tlačítko agendy Export dat, zobrazí se okno s dvěma vstupními parametry pro zadání počátečního data a koncového data (Od-Do). Po nastavení těchto dvou údajů a stisknutí tlačítka Export dat do XML se provede export všech objednávek v daném časovém horizontu na diskový prostor.
Zdroj: vlastní zpracování. Obrázek 39. Okno s možností volby časového úseku pro export objednávek v aplikaci Skladová evidence.
71
Zdroj: vlastní zpracování. Obrázek 40. Ukázka vyexportovaných dat do formátu XML z aplikace Skladová evidence.
72
6. Závěr Diplomovou práci jsem pojal následujícím způsobem: nejprve jsem provedl analýzu současných možností prodeje zboží a výhodnost podpory prodeje nabízeného zboží prostřednictvím internetového obchodu. Dále jsem provedl analýzu vývojových platforem, analýzu volby datového skladu a konečně analýzu rizik. Poté jsem provedl vlastní návrh a vývoj internetového obchodu. Největší výhodou řešení mého internetového obchodu je jeho univerzálnost, je možné jej využít pro inzerci jakéhokoli zboží. Internetový obchod umožňuje zákazníkovi objednání zboží; mimoto je zákazníkovi umožněno sledovat aktuální stav jeho objednávky, tedy i její rozpracovanost. Za účelem jednoduchého vkládání zboží do internetového obchodu jsem dále naprogramoval doplňkovou aplikaci, sloužící ke spravování internetového obchodu. Tato aplikace je naprogramována technologií .NET v jazyce C# jako okenní (windows Form) aplikace pod MS Windows. Administrátor či skladník této aplikace může pomocí této aplikace jednoduchým způsobem vkládat nové zboží, případně modifikovat detaily o konkrétním zboží. Skladník v této aplikaci dále může sledovat stav objednávek, aktuální stav zásob nabízeného zboží a vytvářet export jednotlivých objednávek do souboru ve formátu XML. Zhodnocení cílů: Výstupem této práce je funkční aplikace univerzálního internetového obchodu, kterou jsem vytvořil v ASP.NET. Je zde popsán návrh a implementace systému. Dále jsou v této práci popsány základní principy nejpoužívanějších platforem informačních systému.
73
7. Seznam použité literatury [1]
BAYER, J.. C# 2005 : Velká kniha řešení. Brno : Computer Press, 2007. 816 s. ISBN 978-80-251-1620-3
[2]
EVJEN, B., HANSELMAN, S., MUHAMMAD, F., SIVAKUMAR, S., RADER, D.. ASP.NET 2.0 : Programujeme profesionálně. Brno : Computer Press, 2006. 1224 s. ISBN 978-80-251-1473-5
[3]
LONEY, K., BRYLA, B.. Mistrovství v Oracle Database 10g. Brno : Computer Press, 2006. 700 s. ISBN 80-251-1277-2
[4]
NAGEL, Ch., EVJEN, B., GLYNN, J., SKINNER, M., WATSON, K., JONES, A.. C# 2005 : Programujeme profesionálně. Brno : Computer Press, 2006. 1398 s. ISBN 80-251-1181-4
[5]
SCHMULLER, Josef. Myslíme v jazyku UML: Knihovna programátora. Praha : Grada, 2001. 359 s. ISBN 80-247-0029-8
[6]
VIEIRA, Robert. SQL Server 2000 : Programujeme profesionálně. Praha : Computer Press, 2001. 1170 s. ISBN 80-7226-506-7
[7]
VIRIUS, Miroslav. C# : Hotová řešení. Brno : Computer Press, 2006. 341 s. ISBN 80-251-1084-2
[8]
LACKO, Luboslav. ASP.NET a ADO.NET 2.0 : Hotová řešení. Brno : Computer Press, 2006. 385 s. ISBN 80-251-1028-1
[9]
CLEVERLANCE a.s., Vnitropodnikové materiály společnosti. Praha 2008
[10] HUSPENINA, Zdeněk. Návrh a implementace informačního systému pro restaurační zařízení s využitím Java technologií [online]. [cit. 15.1.2009]. Dostupný z www: < https://www.stag.utb.cz/apps/stag/dipfile/index.php?download_this_unauthorize d=8830> [11] JAVA. About the Java Technology [online]. [cit. 25.2.2009]. Dostupný z www: < http://circe.univfcomte.fr/Docs/Java/Tutorial.20060804/getStarted/intro/definition.html> [12] MANUALY.NET. Teorie relačních databází:Normalizace [online]. [cit. 25.2.2009]. Dostupný z www:
74
[13] MICROSOFT. Microsoft SQL Server: Porovnání funkcí jednotlivých edicí SQL Serveru 2005 [online]. [cit. 15.2.2009]. Dostupný z www: < http://www.microsoft.com/cze/windowsserversystem/sql/prodinfo/sql2005featur es.mspx> [14] ORACLE. Edice Databáze Oracle | Oracle Database 11g [online]. [cit. 15.2.2009]. Dostupný z www: < http://www.oracle.com/global/cz/database/edice.html > [15] ORACLE. Spolehlivé zpracování operací Oracle Database 11g [online]. [cit. 15.2.2009]. Dostupný z www: < http://www.oracle.com/global/cz/database/2007_08_28_11g_new_features_021. pdf > [16] PAVLÍČEK, Luboš. Objekty – Metodiky a anotace - UML [online]. [cit. 5.3.2009]. Dostupný z www: < http://objekty.vse.cz/Objekty/MetodikyANotaceUML > [17] PAVLÍČEK, Luboš. Objekty – Přehled OO notací a metodik – Struktura UML, metamodel [online]. [cit. 5.3.2009]. Dostupný z www: < http://objekty.vse.cz/Objekty/MetodikyANotace-UMLStruktura > [18] STEINER, František. Případová studie analýzy rizik informační bezpečnosti [online]. [cit. 15.3.2009]. Dostupný z www: < http://bpmtema.blogspot.com/2007/11/ppadov-studie-analzy-rizik-informan.html > [19] ŠMÍD, Vladimír. Management informačního systému [online]. [cit. 7.2.2009]. Dostupný z www: < http://www.fi.muni.cz/~smid/mis-infsys.htm > [20] ZELENÝ, Jindřich. Architektura IS a její úloha v SI [online]. [cit. 8.2.2009]. Dostupný z www: < http://nb.vse.cz/~ZELENYJ/publik/si01/arch.htm> [21] WIKIPEDIE. CASE nástroje [online]. [cit. 10.3.2009]. Dostupný z www: < http://cs.wikipedia.org/wiki/CASE_n%C3%A1stroje >
75