bugie.cz

Sniperův blog o věcech webových i newebových

15 února

Malý vývojář s velkými hračkami

Na světě existují 2 skupiny webových vývojářů. Na jedné straně tu jsou freelanceři – česky bychom řekli lidi na volné noze. Obvykle studenti, co krom studia dělají weby. Obvykle mají minimální softwarové prostředky, ale zase je jejich motivací i něco jiného než jenom peníze za zakázky. Na druhé straně stojí velké vývojové firmy, které mají k dispozici drahý a kvalitní software, na každou část vývoje si mohou dovolit najmout profesionála se zkušenostmi v oboru. Dnes bych se chtěl zaměřit na jednotlivé části vývoje webu a poradit těm malým vývojářům, jak získat alespoň trochu lepší systém vývoje.

Analýza

Prvním krokem projektu by měla být analýza, neboli zhodnocení požadavků, možností a rozsahu. Nutno přiznat, že podcenit tuto fázi není dobrý nápad. Jednak z ní vypadne co je třeba udělat a hlavně co klient zaplatí. Důsledným dodržením analytických podkladů se člověk vyhne opomenutím některé části projektu a nebo naopak programování něčeho, co klient nepožaduje. Dobrým nástrojem na analýzu je jazyk UML v kombinaci s nějakým modelačním nástrojem. Já pro tyto účely používám program Umbrello. Nástroj je poskytován zdarma, umí pracovat s případy užití, návrhem tříd a databáze a komponentovým modelem. Z vytvořených diagramů umí generovat kód v několika jazycích, mezi nimiž nechybí ani PHP5. To jej činí velmi užitečným. Tento nástroj je spjat s grafickým prostředím KDE, takže díky portu KDE4 na Windows jej můžete používat i na svém nelinuxovém počítači.

Grafický návrh

Ano, Photoshop pro Linux není. Ostatně není ani zdarma, nebo za nějakou příznivou cenu. Já pro grafiku používám (krom externího grafika :) ) program Gimp. V současné době je ve verzi 2.4.4 a musím říct, že je pro účely webdesignu velmi slušně použitelný. Ano, neumí různé photoshopácké filtry, ale aspoň nutí grafika používat jednoduché a jasné symboly, které budou návštěvníkům webu srozumitelné. Co se týče kreslení vektorů, kvalitním nástrojem je Inkscape. Oba tyto programy jsou distribuovány zdarma a ve verzích pro Windows, Linux i MacOS.

Vývoj

Co si budeme nalhávat, nejlepším editorem na vývoj webů na platformě PHP je Zend Studio. Pokud máte oněch $300 a myslíte to s PHP vážně, určitě do něj zainvestujte. Pokud ale sháníte něco levnějšího, je velmi vhodné se podívat na opět zdarma šířený editor Eclipse. Po vybavení několika málo pluginy se z něj stane kvalitní IDE pro psaní PHP skriptů, jako i pro vývoj HTML.

Další užitečnou věcí pro vývoj webů je kvalitní framework. Pro PHP jich existuje několik, například cakePHP nebo Zend Framework. Oba tyto frameworky vám umožní rychle a kvalitně vyvíjet webové aplikace.

Testování hotového projektu

V této části bych se rád zmínil o použití verzovacích systémů, o modelu „tří serverů" a o uživatelských testech. Nejdříve k verzování. Pokud pracuje na jednom projektu více lidí, dříve nebo později si začnou navzájem přepisovat kód. Verzovací systémy se používají k tomu, aby se změny, které jeden programátor ve skriptu udělá, sice promítly, ale nenarušily jiné změny vytvořené během stažení souboru a uploadu nové verze. Jako v současné době nejlepší verzovací systém se nabízí patrně subversion (SVN). Bohužel, na českém internetu vím pouze o jediném hostingu, který by SVN podporoval. Nicméně to zas až tak nevadí, protože další z užitečných věcí je tzv. model „tří serverů". Jde o to, že kromě ostrého serveru, který je přístupný z internetu, existuje ještě tzv. vývojový a testovací server. Určite se vám již stalo, že jste napsali kód, ale ten z nějakého podivného důvodu na hostingu nefungoval. Tohle nevadí u nějakých malých projektů, ale v případě větší práce to může být docela nepříjemné. V případě použití modelu tří serverů se postupuje takto: nejprve se kód vyvíjí a ladí na vývojovém serveru. Tento server je obvykle umístěn přímo ve firmě, podporuje verzovací systém, má zapnuto hlášení všech chyb, nainstalovaný debuggovací nástroj a vůbec se snaží být co nejvíc přívětivý pro vývojáře a poskytovat co nejpodrobnější údaje, k čemu při běhu nového skriptu dochází. Jakmile skript funguje, je přesunut na tzv. testovací server. Testovací server by měl být konfiguračně shodný s ostrým serverem, měl by obsahovat stejné (nebo alespoň datově velmi podobné) databáze a měl by se chovat shodně s produkčním. Tento server může být přístupný z internetu, aby se klient mohl na nejnovější verzi projektu podívat a vyjádřit případné připomínky. Jakmile je projekt schválen, je z testovacího serveru přesunut na ostrý, na kterém se poté prezentuje svým návštěvníkům.

Možná si teď řeknete, že tři servery si freelancer nemůže dovolit. To je patrně pravda, jenže to nemusí být servery jako servery. Já například používám následující techniku. Jako vývojový server mám nakonfigurovaný svůj počítač. Jakmile jsem s projektem hotov, na hostingu vytvořím pro projekt subdoménu a vytvořím tak testovací server. Jakmile je vše hotové, přesunu projekt z testovací subdomény do ostrého provozu. Tím mám také zajištěno, že se klient může kdykoli podívat na aktuální verzi na testovacím serveru a reagovat tak na vznikající projekt. Zároveň mohu provádět uživatelské testy bez nutnosti vlastnit supermoderní testovací místnost. Stačí mi posadit vybraného testera za počítač připojený k internetu a nechat ho testovat systém. U tohoto postupu jsou jedinými náklady na test aplikace poplatek za internet a případně nějaký menší plat testující osobě.

Klient a jejich „správa"

Jakmile začnete mít více zakázek, přestanete se v nich orientovat. Začnete zapomínat věci o klientech, se kterými právě nespolupracujete a pokud vás některý ze starších klientů znovu kontaktuje, budete si o něm muset znovu hledat poznámky, co jste pro něj udělali apod. Tomuto problému můžete celkem slušně čelit s použitím nějakého CRM systému. Většinou se sice jedná o složité a drahé aplikace, nicméně nalezne se i pár výjimek, třeba sugarCRM. Aplikace napsaná v PHP, která nabízí prakticky vše, co člověk na volné noze pro správu klientů potřebuje. Umožňuje archivovat komunikaci, zakázky apod. Jakmile si vyberete nějakého klienta, vidíte k němu co všechno jste pro něj dělali a za kolik, můžete si jednoduše projít vaší mailovou komunikaci, seznam hovorů apod. Docela užitečná věcička. Další užitečnou věcí je vytvoření nějakého extranetu pro klienty. Nějaký jednoduchý systém, pomocí kterého by klienti mohli sledovat stav svých rozdělaných projektů, informace o dokončených projektech, přes který by jste s nimi mohli komunikovat. V současné době jednu takovou věcičku píšu, až budu trochu dál, patrně vložím nějaké útržky z vývoje sem na blog.


Sdílet