Vývoj aplikací: Co se nevyplácí podcenit

20. 4. 2009

Sdílet

Vývoj softwaru byl historicky úzce vázaný na podporu jednotlivých projektových činností pomocí nástrojů, které umožňovaly vykonávat každodenní práci vývojových týmů (vizuální modelování na konceptu UML apod.). S úspěchem softwarových projektů u zákazníků však rostly i vývojové týmy a jejich potřeby.

Potřebný expertní přístup k vývoji softwarových aplikací byl proto podpořen vznikem metodik softwarového vývoje – mezi ty nejznámější patří Rational Unified Process, který se stal základem pro obecnou koncepci Unified Software Development Process (resp. Unified Process). Propojením a automatizací vazeb, které v projektech vznikaly, tak došlo k posunu příčky týmového vývoje na mnohem vyšší úroveň a mnoha zákazníkům byl díky tomu usnadněn přechod k modernímu týmovému způsobu vývoje.

Řízení softwarových projektů zapadá do oblasti tzv. „IT Governance”. IT Governance není jen moderní marketingový pojem, ale jde i o chápání IT jako klíčového partnera obchodu, poskytujícího důležitou oporu pro naplnění obchodních cílů.

IT Governance se v rámci informačních technologií realizuje jako řešení typu end-to-end, které kombinuje různé úrovně IT strategií, odvozených od obchodní strategie společnosti, s denní prací každého řadového člena vývojových týmů. IT Governance navíc propojuje investice do IT s jejich konkrétními přínosy a tím zajišťuje vysokou míru jejich návratnosti.

Softwarové produkty pro řízení softwarových projektů pomáhají pokrýt tyto oblasti:
■  Sladit obchodní priority s IT strategií. Nástroje pro softwarové řízení projektů umožňují pohled na IT projekty podle jejich skutečné obchodní priority. Dovolují soustředit se na opravdu důležité projekty, které pomohou rozvoji společnosti.
■  Poznat reálnou hodnotu projektů i jejich přínosy. IT projekty by se měly plánovat a vyhodnocovat na základě jejich skutečných nákladů, ale i přínosů tak, aby bylo možné vyhodnotit jejich reálnou úspěšnost a případně zvýšit jejich efektivitu.
■  Včas identifikovat klíčová rizika a eliminovat je. Projektová rizika ohrožují úspěšnost projektů. Nastavte své IT tak, aby bylo možné rizika co nejdříve odhalit a pomocí vhodné strategie i odstranit.
■  Opřít svá manažerská rozhodnutí o reálné informace. Projektový i vyšší management včetně projektové kanceláře provádějí důležitá rozhodnutí ovlivňující celé IT.
■  Kontrolovat a doložit kvalitu svých projektů. O úspěchu IT rozhoduje také kvalita výstupů.
■  Znát alokaci klíčových zdrojů a zvýšit jejich flexibilitu. Úspěch IT je rovněž závislý na efektivním využívání lidských zdrojů. Produkty pro softwarové řízení projektů pomohou identifikovat jejich jedinečné znalosti a podle nich je flexibilně využívat tam, kde jsou právě potřeba.

V souvislosti se softwarovými projekty je nutné zmínit ještě problematiku tzv. „Regulatory Compliance“. Regulatory Compliance umožňuje plnit určitá pravidla, která jsou definována zákonem, vnitrofiremní kulturou nebo nezávislými standardy v odvětví. Asi poprvé se tento pojem začal objevovat v USA v souvislosti se Sarbanes-Oxleyovým zákonem. V Evropě se tato metodika začala postupně apliko-vat na společnosti vlastněné americkým kapitálem. Vzhledem k tomu, že i v Evropě vzniká celá řada pravidel (ISO, Basel II, zákonné normy např. při vývoji systémů pro armádu, letectví, zdravotnictví apod.), nabývá tato oblast na významu i v České republice.

Řada dodavatelů poskytuje řešení i v této oblasti, které na různých úrovních (projektové činnosti, projektové řízení, multiprojektové řízení v projektové kance-láři či řízení celého IT) umožňuje nastavit vhodný proces, automatizovat jej (dokáže jej vynutit), dokumentovat a v případě potřeby i demonstrovat, že společnost podle stanoveného procesu postupuje. To umožní firmě nejen úspěšně projít auditem bez větších problémů, ale i podstatnou měrou zefek-tivnit fungování celého IT.

Správa požadavků
Ač to mnohdy není na první pohled vidět, sprá-va požadavků je jedním z klíčových faktorů úspěšnosti projektů. Zabývá se získáváním, dokumentací (v rozumné míře) a násled-ným udržováním požadavků zadavatele. Požadavky jsou základním vstupem každého projektu vývoje softwaru a jako takové rozhodují o tom, co bude výstupem projektu. Vývojový tým by měl spolu se zadavatelem investovat přiměřené prostředky do jednoznačného a jasného popisu nově vznikajícího systému tak, aby vývojový tým měl dostatek srozumitelných podkladů pro svoji práci a aby při ukončení projektu došlo k bez-problémovému předání a akceptaci kvalitního softwaru.

Požadavky lze uchovávat ve formě textové specifikace podle potřeb projektu (aby byly zasazeny do správného kontextu), ale zároveň je třídit, vyhledávat, reportovat, definovat a sledovat jejich metriky. Požadavky je možné provázat mezi sebou i na jednotlivé elementy návrhu a tím do budoucna významně zjednodušit zapracovávání změn.

Proč tedy používat technologie pro správu požadavků?
■  Jednoznačně a kompletně definované požadavky minimalizují potřebu přepracování a snižují pozdější problémy s akceptací.
■  Prioritizací a jasným plánem v oblasti správy požadavků zefektivníte i navazující činnosti (návrh, vývoj, testování).
■  Provázanost požadavků odhalí skutečné dopady zamýšlených nebo realizovaných změn.
■  Všichni členové týmu mají jednoznačně stanovené společné zadání odsouhlasené zadavatelem.

Analýza a vývoj aplikací

Základním úkolem této oblasti je zajistit transformaci požadavků klienta na funkční, případně nefunkční části aplikace, jinými slovy jde o vytvoření provozuschopného kódu budoucí aplikace na základě vstupních požadavků. Aplikace je založena na systematickém přístupu k veškerým aktivitám, které vedou k jasnému provázání funkčních i mimofunkčních požadavků na jednotlivé elementy modelů, na využití tzv. „Impact“ analýz ke stanovení dopadů jednotlivých změn v aplikacích a k reálnějšímu odhadu ceny těchto změn, na zavedení standardizace v návrhu využitím prověřených návrhových vzorů, detekci chyb v návrhu díky zabudované databázi nevhodných designových praktik a na mnoha dalších principech.

bitcoin školení listopad 24

V oblasti vývoje aplikací existuje na trhu celá škála velmi kvalitních řešení s mož-nostmi danými zejména vývojovým prostředím a širokou podporou rozličných databází i aplikačních serverů, s pokročilými možnostmi vývoje nad technologiemi, jako je například HTML/XML, J2EE, .Net nebo SOA, automatizovaným nasazením na aplikační servery, editací kódu, úpravou automaticky vygenerovaných diagramů UML (automatická synchronizace modelu a kódu) nebo například generováním javovské dokumentace obsahují-cí modely UML.

Při vývoji se stále častěji klade důraz nejen na samotné psaní kódu, ale i na zajištění kvality aplikací. Tomu pomáhá nejen vestavěný framework pro jednotkové (unit) testy, který zjednoduší a urychlí ověření kvality nejmenších testovatelných částí kódu, ale i předdefinovaná a uživatelsky rozšiřitelná pravidla pro kontrolu standardů Java, J2EE apod.

Poměrně široké možnosti jsou také při run-timové analýze zdro-jového kódu, která by měla být jedním z úkolů vývojového od-dělení ještě před testováním aplikace. Je důležité včas odhalit nekvalitně napsaný kód, který by mohl způsobit problémy v provozu například při vyšší uživatelské zátěži. Oblast komerčních vývojových nástrojů se zaměřuje zejména na chyby, které lze velmi těžko odhalit pouhou vizuální kontrolou kódu, popřípadě funkčním nebo zátěžovým testováním aplikace.

Při výběru vývojové platformy je vhodné postupovat tak, aby standardní platforma umožňující vývoj softwaru byla integrovatelná jako celek s prostředky pro správu požadavků, jejich analýzu, řízení změn, správu verzí, automatizované buildování, projektové metodiky, řízení projektů a projektových portfolií apod.

Testování aplikací
Proces testování aplikací bývá v řadě případů omezován nebo zcela opomíjen. Na trhu však existuje  kompletní řešení různých dodavatelů pro plánování, správu a realizaci automatizovaných i manuálních testů v oblasti testování funkčnos-ti, ale i výkonu aplikací, zátěže, testů GUI apod. v návaznosti na implementované funkčnosti a změnové požadavky.

Pomocí tohoto řešení je možné využít projektové požadavky jako testovací vstupy, z nichž lze snadno vytvořit testovací případy. Ty se potom zařadí do testovacích plánů, jednoduše nahrají a přiřadí se jim automatická či manuální implementace – testovací skripty. Testy lze jednotně spouštět a případně i sledovat průběh testování, jednotně shromažďovat výsledky testů a následně chyby včetně veškerých automaticky zaznamenaných údajů o chybách reportovat přímo do řešení pro tzv. defect tracking. Samozřejmostí je možnost rozložit běh testů na různé stroje.

Základními rysy nástrojů pro softwarové testování jsou jednoduché a přehledné plánování testů s ohle-dem na plán projektu, jednotná správa testova-cích dat a intuitivní způsob nahrávání testovacích skriptů pro funkční i výkonnostní testování. Široké možnosti se nabízí také v oblasti úprav testovacích skriptů, které umožňují kompletní testování bez nutnosti zásahů uživatele, uživatel-sky definovatelná pravidla pro stanovení, co je považováno za chybu, jednotné reportování výsledků testování s ohledem na plány testů, resp. plán projektu, nebo reportování kompletních informací o od-halených chybách do nástroje pro defect tracking apod.

Funkcionalitu, kterou nelze nebo není v úmyslu testovat automatizovaně, lze otestovat manuálně podle předem naplánovaného scéná-ře. Samozřejmostí bývá také znovupoužitelnost testů a jejich verzování.

A proč by měly být vznikající aplikace testovány specializovanými řešeními?
■  Zevrubnějším otestováním vašich aplikací se sníží riziko problémů v běžném provozu.
■  Znovupoužitelnost testovacích skriptů zkrátí testování na minimum.
■  Tester, příp. pracovník testovacího oddělení se bude moci více soustředit na klíčové aspekty testování.
■  Simulací reálného provozu lze včas odhalit problémy, které by ji-nak mohly způsobit výpadek kriticky důležitých aplikací.
■  Díky automatizaci testů se eliminují lidské chyby a lze je spouštět dle potřeby (například v noci).

Řízení změn a konfigurací
Konfigurační a změnové řízení by se mělo stát základem pro zajiš-tění včasného a bezchybného zapracování relevantních změn do vyvíjených aplikací. Řešení v této oblasti pomáhá zavedením procesu změnového řízení, který provází vývojové projekty po celý jejich životní cyklus (a mnohdy i po jeho skončení) a zaměřuje se na veškeré změnové požadavky (různé druhy požadavků na změ-nu, požadavky na odstranění chyb apod.). Díky tomu lze přesně určit, na jaké funkčnosti se plánovaná změna vztahuje a jaký do-pad bude mít, v jakém stavu se řešení nachází, co vše bude třeba změnit v návrhu, v kódu, co je třeba otestovat. Současně lze také přesně určit, jaké požadavky jsou zapracovány do které verze, a to až na úroveň jednotlivých verzovaných komponent.

Základním principem je využití procesu konfiguračního a změnového řízení v celém životním cyklu projektu, priori-tizace změ-nových požadavků, návaznost požadavků na pracovní úkoly (pomáhá plánovat práci a rovnoměrné delegovat pracovní úkoly v rámci vývojového týmu) a paralelní vývoj. Důležitá je i dostupnost funkcí potřebných pro konfigurační a změnové řízení přímo z vývojového prostředí. Samozřejmostí je pak vysoká škálovatelnost systému včetně možnosti definovat procesní stránku tohoto řešení, popřípadě možnost replikace systémů na geograficky oddělená pracoviště.

Volitelným rozšířením řešení, případně součástí oblasti konfiguračního a změnového řízení, je vyspělý nástroj pro automatizo-vané buildování pro většinu obvyklých technologií (Java, .Net apod.). Je tak mož-né spouštět sestavovací proces pravidelně, v jednorázový napláno-vaný termín, nebo na základě volitelné události. Buildy se ukládají včetně logů do auditovatelného repozitáře nebo jsou automatizo-vaně nasazeny do cílového prostředí.

Závěrem
Řídit IT znamená i ovládat podnikový proces vývoje softwaru, resp. systémů. V praxi to znamená mít strategii pro mnoho různých oblastí (scope ma-nagement, risk management, financial manage-ment, exceptions management atd.). Každá hodina odpracovaná na projektu by měla mít předvídatelný a měřitelný přínos (pro vývojový tým i pro zákazníka), a to vše s nízkou mírou rizika. Mít jasnou vizi a realizovat ji je v IT klíčem k úspěchu.

Autor pracuje jako Certified IT Specialist ve firmě IBM ČR.