<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Kubánek.org &#187; model</title>
	<atom:link href="http://kubanek.org/blog/stitky/model/feed/" rel="self" type="application/rss+xml" />
	<link>http://kubanek.org</link>
	<description>Blog o programování, volejbale a zážitcích ze života</description>
	<lastBuildDate>Mon, 10 May 2010 20:50:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Abstrakce použití webové aplikace</title>
		<link>http://kubanek.org/blog/abstrakce-pouziti-webove-aplikace/</link>
		<comments>http://kubanek.org/blog/abstrakce-pouziti-webove-aplikace/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 22:16:56 +0000</pubDate>
		<dc:creator>Lukáš Kubánek</dc:creator>
				<category><![CDATA[Informační technologie]]></category>
		<category><![CDATA[model]]></category>
		<category><![CDATA[UML]]></category>
		<category><![CDATA[use case]]></category>

		<guid isPermaLink="false">http://localhost/kubanek.org/?p=117</guid>
		<description><![CDATA[Jak se používají dnešní webové aplikace? Mnozí uživatelé asi odpoví, že se do aplikace nejprve registrují, přihlásí se a pak v aplikaci naleznou příslušnou stránku, na které vyplní formulář a odešlou ho na webový server. Tuto činnost provádějí tak dlouho, dokud neukojí svých potřeb. Samozřejmě, každý vývojář se s podobnou výpovědí setkal a zná ji [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Jak se používají dnešní webové aplikace? Mnozí uživatelé asi odpoví, že se do aplikace nejprve registrují, přihlásí se a pak v aplikaci naleznou příslušnou stránku, na které vyplní formulář a odešlou ho na webový server. Tuto činnost provádějí tak dlouho, dokud neukojí svých potřeb. Samozřejmě, každý vývojář se s podobnou výpovědí setkal a zná ji ze své praxe. Představí si ji asi tak, že aplikace bude disponovat</p>
<ul style="text-align: justify;">
<li>registračním formulářem na stránce s registrací,</li>
<li>přihlašovacím formulářem na hlavní stránce,</li>
<li>a stránkami s <em>jinými </em>formuláři na <em>jiných </em>stránkách.</li>
</ul>
<p style="text-align: justify;">Taková představa je ovšem trochu urychlená, protože se váže na implementační detaily a především na návrh uživatelského rozhraní. V takovém znění by měla zajímat spíše koncového uživatele. V základních fázích vývoje webové aplikace nás vývojáře nebude zajímat rozvržení jednotlivých stránek ani jaké zvolit prvky do formulářů. Takové rozhodovaní odložíme na později. Zkusme se na to podívat z jiného úhlu a pojďme se nyní zamyslet nad vhodnou <em>abstrakcí použití naší aplikace</em> koncovým uživatelem.</p>
<p style="text-align: justify;">Uživatel přistupuje k aplikaci vždy s nějakým záměrem, tzn. že chce, aby vykonala něco v jeho zájmu. Interakci uživatele s webovou aplikací za určitým cílem budeme označovat jako <em>případ užití</em> (anglicky use case).  Případy užití můžou být podmíněny rolí uživatele (např. jen administrátor může měnit zásadní nastavení) nebo jinou výchozí podmínkou (např. zákazník musí mít v košíku nějaké zboží, aby mohl potvrdit objednávku) a často jsou variabilní (např. aby mohl uživatel změnit počet konkrétního zboží v košíku, musí být zboží dostupné na skladě). Důležitým faktem je, že webová aplikace disponuje konečným počtem případů užití.</p>
<blockquote>
<p style="text-align: justify;"><em>„Referenční příručka jazyka UML definuje případ užití jako specifikaci posloupností činností, včetně proměnných posloupností a chybových posloupností, které systém, podsystém nebo třída může vykonat prostřednictvím interakce s vnějšími aktéry.“</em> [USDP, strana 95]</p>
</blockquote>
<p style="text-align: justify;">Metodika Unified Software Development Process zaznamenává případy užití pomocí diagramů případu užití notačního jazyka UML. Ačkoli jazyk UML nepředepisuje konkrétní způsob textové specifikace, je ustálen zápis pomocí šablony [USDP, strana 99]. Na úrovni lidské řeči (pseudokódu, chcete-li) jsou zaznamenány veškeré možné použití aplikace koncovým uživatelem. Ptáte se k čemu to je dobré? Stačí prý naházet do šablon několik formulářů, provázat je controllery a nějak to napojit na databázi? Ten pravý důvod na nás stále čeká!</p>
<p style="text-align: justify;">Webovou aplikaci lze zjednodušeně definovat jako <a href="http://www.phpguru.cz/clanky/model-neni-pouze-databaze">model</a> a uživatelské rozhraní postavené nad modelem, které koncovému uživateli umožňuje s modelem komunikovat a manipulovat a tím realizovat případy užití. Velmi často je ve webových aplikacích externí uživatel v rámci modelu reprezentován a jako interní entita komunikuje se zbylou částí modelu.</p>
<p style="text-align: justify;">Návrh případů užití spočívá v transformaci modelu na úrovni lidské řeči (požadavků na webovou aplikaci) do modelu na úrovni komunikace objektů našeho modelu z MVC. V UML lze tuto komunikaci zachytit pomocí sekvenčních diagramů (je možné využít i další diagramy). Tím docílíme popsání úplné funkčnosti modelu.</p>
<p style="text-align: justify;">V rámci otázky implementace nás bude držet při zemi databáze jakožto úložiště dat. Naštěstí je možné postavit model na nějakém ORM a částečně se s nástrahami vypořádat. Teď, když už máme <em>čistě objektový perzistentní funkční základ</em> webové aplikace, který je schopný obstarat všechny případy užití externích uživatelů, je  teprve čas na natlačení uživatelského rozhraní do controllerů, šablon a formulářů!</p>
<p>[USDP]Jim Arlow, Ila Neustat: <em>UML 2 a unifikovaný proces vývoje aplikací</em>, Computer Press, 2007</p>
]]></content:encoded>
			<wfw:commentRss>http://kubanek.org/blog/abstrakce-pouziti-webove-aplikace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
