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é inženýrství nebo vývoj software s využitím počítačové podpory. Jde o použití softwaru pří vývoji (resp. údržbě) počítačových programů, za účelem dosáhnutí vyšší kvality, bezchybnosti, udržovatelnosti apod. Podpora může probíhat v různých stádiích životního cyklu programu – při sběru požadavků, analýzách, návrhu, programování (s pomocí IDE) atd. Nástroje používané pro tento účel se obvykle nazývají CASE nástroje. Některé z nich slouží k automatizaci vývojového procesu.
CASE nástroje 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 (reverse engineering), zpětné vytvoření modelu podle existujícího zdrojového kódu (usnadňuje práci programátorům), synchronizaci modelu a zdrojového kódu, vytvoření dokumentace z modelu. Některé obvyklé funkce CASE nástrojů:
- generování zdrojového kódu
- datové modelování
- objektově orientovaná analýza a design v UML, BPMN, ArchiMate atd.
- refaktorování
- správa konfigurací (konfigurační řízení)
CASE nástroje jsou navrženy 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é 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.
Historie a současnost
Pokud se chceme zaměřit na historii CASE nástrojů, musíme vyjít z názvu CASE, konkrétně ze softwarového (systémového) inženýrství.
Podle definice IEEE 610.12 „softwarové inženýrství je aplikace systematického, disciplinovaného, kvantifikovatelného přístupu k vývoji, provozu a údržby softwaru, tj. aplikace inženýrství na software. Také je to studium přístupů dle výše uvedeného.“
Softwarové inženýrství se začalo formovat ke konci 60. let, kdy začala tzv. softwarová krize, kdy výkon hardware předčil vývoj software. Zcela zlomová byla konference NATO v r. 1968 ve středisku Garmisch Partenkirchen ve Spolkové republice Německo, která popularizovala softwarové inženýrství. Do té doby se počítače využívaly pro vědeckotechnické výpočty, kde záleželo spíše na preciznosti řešení, než na efektivitě vývoje. V 70. letech dochází k formulaci základních principů tohoto oboru. V dalších letech jsou vyvíjeny metodiky (strukturovaná, objektová) pro analýzu. Vzniká také první generace nástrojů pro podporu této disciplíny, což jsou právě CASE nástroje. Mezi první CASE nástroje patřily nástroje, které můžeme nazývat Lower Case. Tyto nástroje jsou dodnes určeny pro fázi implementace např. generování kódu. Původní myšlenka CASE nástrojů byla ta, že už nebude zapotřebí programátorů, tzn., že CASE nástroj vygeneruje již samotný kód, který nebude potřeba upravovat a bude se moci tak jak byl vygenerován použít. Tato myšlenka ovšem byla mylná.
Obrození zažívají CASE nástroje v 80. letech společně s grafickým uživatelským rozhraním. To byl prvopočátek CASE nadšenosti. Dosud byly dostupné pouze samostatné malé nástroje, nyní bylo možné vše integrovat na univerzální pracovní ploše. Strategická příležitost, kterou poskytovala CASE technologie, byla ta, že program může být případně udržován na návrhové úrovni spíše než na úrovni zdrojového kódu. Toto by bývalo jedním z východisek z boje programovacích jazyků. Naděje, že CASE nástroj zautomatizuje generování kódů, se však nenaplnila. Když byla investice do CASE prosazena za podmínky automatického generování kódů, úsilí se poté nevyplatilo. Výsledkem bylo, že dichotomie mezi návrhem a kódem přetrvávala, tzn. když se změnil návrh, musel být změněn i kód. Nebo naopak, když se změnil kód, musel se aktualizovat i návrh, což představovalo ještě větší problém. CASE nástroj, který by mohl být používán jako pouze návrhový nástroj nebo jako zdroj pro všechny druhy nesouvisejících materiálů, se stal brzy příliš drahý, tzn. náklady na učení a údržbu byly příliš vysoké.
Časem, v souvislosti s vývojem strukturovaných a hlavně objektových metod, se problémy a chyby postupně odstranily, tzn. nástroje začaly zajišťovat provázanost jednotlivých modelů, je poskytují možnost zpětného vytvoření modelu ze zdrojového kódu ad.
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 správně tyto procesy měly 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í. Přičemž 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.
Komponenty CASE nástrojů
Z toho, jaké jsou obecné funkce, vlastnosti CASE nástrojů a požadavky na ně vyplývá také z jakých komponent se tyto systémy skládají. Mezi důležité funkce a vlastnosti CASE patří:
- 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.
Způsoby klasifikace CASE nástrojů
Podle životního cyklu projektu
Nejčastější dělení CASE nástrojů vyplývá ze životního cyklu projektu, tzn. v jaké fázi cyklu vývoje se CASE nástroj využije. Toto dělení je následující:
- Pre CASE (podporuje činnosti předcházející vývoji IS – globální strategie)
- Upper CASE (podporuje tvorbu informační strategie a fázi analýzy)
- Middle CASE (podporuje tvorbu globálního a detailního návrhu IS)
- Lower CASE (podporuje fázi implementace)
- Post CASE (podporuje fázi uvedení IS do provozu, provoz, údržbu,reengineering)
Lze se i setkat s jednodušším členěním na:
- Upper CASE (nástroje podporující fáze analýzy a návrhu – např. nástroje pro tvorbu diagramu, generování reportu a formulářů a analytické nástroje)
- Lower CASE (nástroje podporující fáze implementace, testování a řízení konfigurací)
Podle interaktivity
- CASE nástroje, které jsou interaktivní ze své podstaty (např. nástroje podporující metodu návrhu)
- CASE nástroje, které nejsou interaktivní (tzv. vývojové nástroje, např. překladače)
Podle fáze projektu vývoje software, v níž jsou využívány
- front-end CASE nástroje (využívány v dřívějších fázích projektu – např. nástroje na podporu návrhu)
- back-end CASE nástroje (využívány v pozdějších fázích projektu – např. kompilátory a nástroje podporující testování)
Podle toho, zda jsou využívány během celého životního cyklu software
- vertikální CASE nástroje (nástroje podporující jen dílčí krok životního cyklu software či dílčí oblast – např. zjišťování uživatelských požadavku nebo kódování)
- horizontální CASE nástroje (nástroje podporující několik kroku životního cyklu software či více oblastí – např. nástroje pro tvorbu dokumentace či řízení konfigurace)
Podle stupně integrace
- CASE tools (nástroje zabezpečující automatizovanou podporu libovolné úlohy životního cyklu software)
- CASE toolkits (soubor integrovaných softwarových nástrojů, který poskytuje částečnou či komplexní podporu jen v rámci jedné fáze životního cyklu software)
- CASE workbenches (množina integrovaných CASE tools nebo CASE toolkits, která poskytuje částečnou či komplexní podporu v minimálně dvou fázích životního cyklu software)
- I – CASE (představuje nejvyšší stupeň integrace; představuje propojení několika CASE tools, CASE toolkits a CASE workbenches)
Přínosy využití CASE nástrojů
Využití CASE nástrojů s sebou přináší celou řadu výhod, nejpodstatnější z nich jsou:
- vyšší produktivita práce
- nižší chybovost
- snazší údržba a další vývoj výsledného produktu
- kvalitnější dokumentace
- umožnění větší participace uživatelů na vývoji produktu
- modelování chování budoucí aplikace
Příklady CASE nástrojů
- Visual Paradigm (Visual Paradigm)
- Enterprise Architect (Sparx Systems)
- MagicDraw (No Magic)
- Powerdesigner (Sybase)
- Oracle Designer (Oracle)
- Case Studio
- Rational Rose
- Select Architect
- MS Visio
- Moon Modeler - (Datensen)