Vývoj pomocí Visual FoxPro

Jak technicky a obchodně argumentovat ve prospěch Visual FoxPro Visual FoxPro DevCon, Praha

Copyright © Steven Black – http://stevenblack.com

Steven Black se specializuje na vývoj vícejazyčných aplikací, programů pro souběžný provoz na více místech a na další náročné softwarové úkoly, včetně přepracování a vyčištění projektů. Vytvořil INTL Toolkit, vícejazyčný framework pro FoxPro a Visual FoxPro. Pravidelně přednáší na konferencích o Visual FoxPro a jeho příspěvky občas zaplňují stránky knih a časopisů. Je zakladatelem a správcem webu FoxPro Wiki na adrese http://fox.wikis.com.

Úvod

Tato přednáška pojednává o budování prodejních a technických odůvodnění Visual FoxPro (VFP) jakožto vývojové platformy pro nový projekt nebo dalšího použití VFP v existující infrastruktuře a provozních činnostech IT. Vytváření správných prodejních odůvodnění je umění i věda. Je předmětem řádného i postgraduálního studia na významných vysokých školách. Proto je tato přednáška (i tento dokument) velmi důležitá. Jejím cílem je nastínit témata, o nichž byste měli přemýšlet, když máte předložit přesvědčivé argumenty, proč pro budoucí vývoj použít VFP.

Část I – Prodejní odůvodnění obecně

V této sekci stručně probereme základní prvky prodejních odůvodnění. Berte prosím na vědomí, že prodejní odůvodnění by vždy měla být budována s náležitým uvážením všech faktorů specifických pro danou situaci, které mohou významně ovlivnit typ, vyznění a obsah (smysl) prodejního odůvodnění. Každé podnikání je do jisté míry odlišné a totéž platí i pro každý projekt. Proto jsou následující řádky jen obecným vodítkem.

Co to je „prodejní odůvodnění“?

Prodejní odůvodnění je strukturovaná prezentace vyrobená pro management na podporu určitého postupu nebo způsobu jednání. Obvykle je nutné, když je navrhována nějaká významnější změna směru. Může to být dokument nebo sbírka dokumentů, a většinou zahrnuje nějaký druh prezentace, i když je představováno neformálně na jedné nebo několika schůzkách.

Prodejní odůvodnění sestává z identifikace a analýzy (kvalitativní i kvantitativní) následujících záležitostí:

potřeby podniku s souladu s cíli podnikání,  identifikace příležitostí a hrozeb, možnosti a dosažitelné výsledky, náklady, přínosy a rizika, odhady investic, času potřebného na vývoj a termíny dodávek, výpočty návratnosti investic (ROI).

Z pohledu informačních technologií (IT) by mělo dobré prodejní odůvodnění přesně zapadat do celkové koncepce informační technologií organizace. Technické odůvodnění je ve skutečnosti podmnožina širšího pojetí prodejního odůvodnění.

Dobré prodejní odůvodnění převádí technickou problematiku do podnikatelských pojmů, aby ji vedoucí pracovníci lépe pochopili, a identifikuje důsledky chystaného podnikatelského rozhodnutí. Představuje důležité skutečnosti, které je nutno brát v úvahu, když má vedení učinit kvalifikované rozhodnutí. Jednoduše řečeno, prodejní odůvodnění je na faktech založené odůvodnění změny a je podepřeno technickým odůvodněním.

Prvky správného prodejního odůvodnění

  • Správné prodejní odůvodnění usiluje o dosažení všech těchto cílů:
  • Má jasně a přesvědčivě prezentovat fakta, analýzu a doporučení.
  • Má patřičně formulovat podnikatelský problém, jehož řešení navrhuje.
  • Má rozpoznat a ukázat, co od změny očekávají vlastníci.
  • Má projevit „náležitou přičinlivost“, prozkoumat různé alternativy a představit jejich „pro“ a „proti“.
  • Má jasně ukázat, proč je doporučovaná volba nejlepší.

 

Obecné tipy pro vytvoření přesvědčivého prodejního odůvodnění

TIP: Ujistěte se, že znáte strategii a priority dané organizace. Řada organizací tyto informace zveřejňuje, například ve výroční zprávě. Někdy jsou uvedeny v propozicích projektu, a občas musíte být vynalézaví a odněkud je vydolovat. Buďte však obezřetní! To, že jste třeba našli větu o strategii a prioritách, ještě neznamená, že máte přestat hledat „skryté agendy“ a „nevyřčené cíle“ v oblastech, kam směřuje vaše prodejní odůvodnění.

TIP: Pokud možno byste měli brzy dosáhnout závazku. Závazek neznamená schválení; znamená to, že vedoucí IT a obchodníci souhlasí s tím, že váš námět dává smysl a stojí za to ho rozvinout do návrhu k posouzení. Není nic horšího než spřádat grandiózní plány, které po odhalení každého ohromí. Naopak, nejlepší taktický závěr je ten, že prezentace plánu je spíše povinná formalita, jakési „orazítkování“. To je vždycky lepší než „odhalení“.

TIP: Držte se písemných pokynů, pokud existují. Ty vám řeknou, co od vás vedoucí pracovníci chtějí slyšet a v jaké podobě. Využijte pokynů při sestavování a utřídění svého návrhu; pomohou vám zajistit, že v něm bude všechno, a ušetří vám spoustu rozhodování, o čem psát.

TIP: Poctivě vyčíslete všechny náklady. Důvěryhodnost prodejního odůvodnění spočívá do značné míry v jeho odhadu výhod i nevýhod. Mezi zdroje nákladů patří:

  • shromáždění požadavků
  • řízení projektu
  • testování
  • správa systému, zahrnující vývoj, testování a nasazení systémů
  • pořízení vstupního hardwaru a softwaru pro vývoj, testování a nasazení systémů
  • podpora výroby
  • objemy dat nebo transakcí, které si vynutí vyšší investice do hardwarového vybavení
  • počáteční náklady na implementaci (hardware a software, náklady na instalaci, náklady na vývoj testování, náklady na zkušební provoz, náklady na nasazení)
  • trvalé provozní náklady (personální náklady na obsluhu i technickou podporu, náklady na údržbu systému, na údržbu hardwaru a softwaru, komunikace, softwarové licence, ekologické náklady)
  • náklady na rozvoj a růst (hardware, přepracování a vylepšení softwaru).

Část II – hlediska VFP v prodejních odůvodněních

V této sekci probereme některé přístupy k prodejním odůvodněním spjaté s VFP. Rozhodl jsem se je rozdělit do čtyř „kategorií“ podle svévolně přiřazeného stupně důležitosti a obtížnosti. Berte to tak, že každá situace je odlišná, a proto jsou tyto kategorie nastaveny jen pro účely tohoto pojednání a můžete si je upravit podle své potřeby.

Zde jsou čtyři kategorie, definující strukturu zbytku tohoto dokumentu.

Základní body, v nichž musíte vyhrát. Tyto prvky jsou nezbytné už jen kvůli naději na úspěch. Vynecháte-li kterýkoliv z nich, nejspíš nebudete mít žádnou šanci.

Body, které pravděpodobně vyhrajete, vzhledem k relativním přednostem VFP a, předpokládejme, vašim nabytým programátorským zkušenostem a schopnostem.

Najdou se i těžké bitvy, které se však dají vyhrát, známe-li předem obavy těch, kdo ve firmách rozhodují.

A pak jsou samozřejmě i bitvy, které nejspíš prohrajete, tak s tím počítejte a hlavně mějte připraveny solidní alternativy.

Základní body, v nichž musíte vyhrát

Toto jsou body, které musíte získat, má-li být vaše prodejní odůvodnění úspěšné.

Vaše „historie“ a vaše kvality partnera – vývojáře

  • Když vytváříte prodejní odůvodnění, které zahrnuje využití určité konkrétní technologie pro vývoj, pak to, co opravdu nabízíte, bez ohledu na projekt, je blízký obchodní i vývojářský vztah mezi vámi a vaším zákazníkem.
  • V tomto kontextu to, jak jste v minulosti plnili své sliby, znamená hodně. „Historie“ je přehled prokazatelných výsledků; je to seznam vynikajících minulých výkonů.
  • Vedle toho je důležité si uvědomit, že výběr určité technologie je jen zřídka čistě technickým rozhodnutím. Když něco zahrnuje vysoký stupeň osobní služby, a to pro vývoj softwaru platí vždy, soulad mezi jednotlivci hraje důležitou a někdy i určující roli v procesu rozhodování.

„Technické odůvodnění“ VFP

Váš návrh, proč použít pro vývoj právě VFP, musí samozřejmě splnit všechny nezbytné technické předpoklady. Když se budete zabývat technickými stránkami prodejního odůvodnění, měli byste vzít v úvahu následující okolnosti.

Vhodnost k danému úkolu

Musíte ukázat, že VFP dokáže splnit předvídatelné požadavky navrhovaného systému s ohledem na funkčnost i okolnosti s funkčností nesouvisející. Patří sem například:

  • Doba odezvy. Jak dobře splní aplikace ve VFP očekávání koncových uživatelů týkající se odezvy?
  • Průchodnost. Musíte ukázat, že aplikace ve VFP zvládne očekávané zatížení transakcemi a výběry dat.
  • Prostředí. Mám na mysli operační systémy (OS) a hardware. Pochopitelně budete muset do značné míry vyhovět všem omezením, která v dané organizaci platí pro verze OS a pro hardware. Tato oblast je pro zastánce VFP obvykle velmi příznivá, protože VFP běží na mnoha starších platformách Windows. Viz http://fox.wikis.com/wc.dll?Wiki~VFPSupportedOS.
  • Přizpůsobivost a udržovatelnost. Významný podíl z celkových nákladů na životní cyklus všech úspěšných systémů obvykle ukousnou činnosti, které následují po vývoji, jako údržba, adaptace systému a jeho rozšiřování. Musíte ukázat, že navrhovaný systém bude mít takové provozní vlastnosti, že bude fungovat ještě dlouho po počátečním nasazení.
  • Spolehlivost a odolnost vůči chybám. Musíte ukázat, že navrhovaný systém s vysokou pravděpodobností splní očekávání týkající se provozuschopnosti, robustnosti a předvídatelných událostí, jako jsou výpadky proudu, havárie systému, běžné chyby uživatelů a podobně.
  • Bezpečnost. Možná budete muset zaručit, že systém vyhoví všem požadavkům na bezpečnost.
  • Škálovatelnost. Existují různé aspekty škálovatelnosti a důraz na některé z nich lze do jisté míry očekávat u všech úspěšných systémů.

 

Když se mluví o „škálovatelnosti“ obecně, obyčejně se tím rozumí tyto klasické aspekty škálovatelnosti.

  • Objem dat. Někdy se používá termín „size up“ – schopnost přizpůsobit se narůstajícímu objemu dat.
  • Rychlost. Někdy se používá termín „speed up“ – schopnost navýšit rychlost odezvy.
  • Pracovní zatížení. Někdy se používá termín „scale up“ – schopnost zvládnout nárůst zátěže.
  • Cena transakce, která je v softwarových systémech skoro vždy těsně spjata s dobou trvání transakce. Proč?Protože délka transakce určuje horní hranici počtu transakcí, které určitý server nebo skupina serverů dokáže zpracovat, aniž by bylo nutné přidávat nové servery, jejichž celkový počet může být omezen v závislosti na infrastruktuře sítě.

Méně běžné aspekty škálovatelnosti jsou:

  • Hardwarové platformy. Zákazník může očekávat, že aplikace bude fungovat na obřích serverových farmách nebo naopak na příručních zařízeních.
  • Sdílení důvěry. Systémy mají tu a tam těsně spolupracovat s jinými systémy a sdílení důvěry se vztahuje k obsloužení uživatelů, kteří už byli ověřeni jinými systémy.
  • Šířka pásma. Jak se projeví zvýšený provoz po síti v praxi.
  • Dostupnost služby. Jak se bude měnit dostupnost služby s rostoucími hodnotami ostatních aspektů škálovatelnosti.
  • Zobrazování informací koncovým uživatelům. Jak se systém vypořádá s novými službami, produkty a kategoriemi, které budou časem dostupné online?

TIP: Kdykoliv přijde téma škálovatelnosti na přetřes, ať už o ní začnete mluvit vy nebo někdo jiný, vždycky zaměřte diskusi na konkrétní typ škálovatelnosti a jednejte výhradně o něm, a to v kontextu navrhovaného systému. Nesmíte zabřednout do debaty o škálovatelnosti obecně, protože ta vždycky nastolí více otázek, než kolik jich přesvědčivě zodpoví, a to nikdy není dobrá pozice pro prodejní odůvodnění. Proto si uvědomte, že škálovatelnost má specifické aspekty, jejichž hranice a možnosti je nutno probírat jednotlivě.

Další odkazy na témata, která by vám mohla pomoci při sestavování technických stránek prodejního odůvodnění:

http://fox.wikis.com/wc.dll?Wiki~WhyVFPIsTheToolOfYourChoice

http://fox.wikis.com/wc.dll?Wiki~VisualFoxProBulletPoints

„Slučování“ VFP s problematickými aplikacemi

Rick Schummer napsal velmi zajímavý článek o jednom ze svých zákazníků, kde uživatelé o jedné naprogramované aplikaci mluvili jako o „FoxPro“. Viz rickschummer.com/blog/2005_06_01_archive.html#111818196732633978

To je něco, s čím jsem se setkal už mnohokrát: VFP získala špatnou pověst, protože je nějak spojována se stárnoucí, tedy dávno naprogramovanou aplikací.

Když k tomu dojde, čeká vás tvrdý boj, protože dojmy těch lidí se nejspíš utvářely a dozrávaly docela dlouho.

Obvykle záleží na tom, aby si klíčoví vedoucí pracovníci uvědomili, že VFP a aplikace napsaná ve VFP jsou dvě různé věci a že nedostatky té aplikace jsou, s nejvyšší pravděpodobností, čistě záležitostí implementace a údržby.

Obviňujete snad z mizerně napsaných nebo zastaralých dokumentů Microsoft Word? Ne. Je za promeškané obchody a nedosažené zisky zodpovědný Microsoft Excel? Ne. Když to formulujete tímto způsobem, lidé obvykle pochopí rozdíl mezi „FoxPro“ a aplikací, kterou provozují, a obvykle přistoupí na tento úhel pohledu.

Možnou výjimkou jsou případy, kdy má „FoxPro“ spojitost také s dřívějšími programátory a konzultanty, kteří teď mají v dané organizaci mizernou pověst. To se dá zmírnit podobnou taktikou: oddělte od sebe „FoxPro“ a onen problém. Problémem není skoro nikdy FoxPro, nýbrž to, co bylo ve FoxPro vytvořeno, a také kým, a jak to potom bylo udržováno a dále rozvíjeno.

Dostupnost odborníků

Dostupnost kvalifikovaných foxařů se v různých oblastech výrazně liší. Měli byste být schopni předvést, že existuje dostatek dobrých programátorů, na něž se může tento potenciální zákazník v případě potřeby obrátit.

Informace vám poskytnou např. regionální sdružení foxařů. Nic vám nebrání založit si takové sdružení sami nebo oživit existující.

Body, které pravděpodobně vyhrajete

Vzhledem ke stěžejním silným stránkám VFP půjdete po správné cestě, budete-li se držet následujících argumentů:

Vysvětlení pozice VFP vedoucím pracovníkům

Když zdůvodňujete použití VFP, skončí to pokaždé stejně: vedoucí pracovníci nerozumí tomu, jaká je pozice VFP v marketingové směsici produktů Microsoft.

Nabízím pár odkazů na FoxPro Wiki, které se těmito otázkami podrobně zabývají.

http://fox.wikis.com/wc.dll?Wiki~VisualFoxProBulletPoints

http://fox.wikis.com/wc.dll?Wiki~VFPRevenueModelProblems

Zjistil jsem, že je obvykle možné, s použitím přímočaré, avšak předem naplánované řady argumentů, přivést většinu vedoucích pracovníků k mnohem pozitivnějšímu pohledu na VFP, než jaký měli předtím. Existují důvody, proč Microsoft VFP nevychvaluje, a mají jen málo společného se schopnostmi VFP nebo s její vhodností k vývoji aplikací.

Rizika vývoje softwaru

Jen málo věcí zní zákazníkům lépe než plánování s vědomím rizik a vyhlídky na vývoj a implementaci softwaru s averzí vůči rizikům.

Existují dva obecné typy rizik:

  • Neregulovatelné, známé jako exogenní (vnější) riziko.
  • Regulovatelné, známé jako endogenní (vnitřní) riziko.

Analýza rizik slouží k rozpoznání a posouzení faktorů, jež mohou ohrozit úspěch projektu nebo dosažení cíle.

Dobrá analýza také pomáhá definovat preventivní opatření snižující pravděpodobnost, že se tyto faktory vyskytnou, a stanovuje, jak se s nimi úspěšně vypořádat, když už nastanou.

Díky své dlouhé životnosti, kvalitě a vyzrálosti komerčních frameworků a všeobecnému povědomí o jejích silných a slabých stránkách má VFP dobrou relativní pozici mezi mnoha dalšími vývojovými nástroji, když dojde na regulaci endogenních rizik vývoje softwaru. V přednášce si ukážeme několik příkladů.

Náklady na licence a další ekonomické aspekty

VFP má neomezený runtime zdarma, což je současně požehnáním i prokletím. Programátorům, kteří potřebují nasadit své aplikace na značný počet pracovních stanic, toto licenční schéma maximálně vyhovuje. S podstatně inovovanými možnostmi tvorby sestav uvedenými ve VFP 9 získává VFP další obrovskou výhodu: téměř neomezený reportovací potenciál s nulovými náklady na distribuci bez ohledu na počet uživatelů.

Nevýhodou je, že Microsoft nemá ze vzrůstající distribuce runtime VFP žádný další zisk, a to je hlavní důvod, proč nemá VFP v marketingu svou váhu.

Zde je odkaz na FoxPro wiki, kde jsou do hloubky probrány otázky týkající se neomezeného runtime zdarma: http://fox.wikis.com/wc.dll?Wiki~UnlimitedFreeRuntime. A vedle tohoto způsobu licencování runtime se dá plné vývojové prostředí VFP zakoupit a upgradovat relativně levně.

Aby toho nebylo málo, i ty nejstarší verze VFP poběží docela dobře na počítačích se staršími verzemi Windows.

Runtime je v tomto ohledu mnohem benevolentnější než vývojové prostředí VFP, ale zaslechl jsem, že IDE VFP funguje uspokojivě i ve starších operačních systémech, které oficiálně nejsou „podporovány“. V některých důležitých případech poskytuje komunita VFP záplaty a úpravy, které rozchodí VFP i pod staršími verzemi Windows.

Nezapomeňte se tedy podívat, jak vypadá „vozový park“ pracovních stanic a serverů, než začnete ve svém odůvodnění nového vývoje nebo dalšího používání existujících systémů naprogramovaných ve VFP vyčíslovat náklady. VFP nejspíš spokojeně poběží na hardwaru, který už máte, takže vás nečeká série upgradů vynucená Microsoftem, a to vždycky znamená hodně.

Více informací najdete na http://fox.wikis.com/wc.dll?Wiki~VFPSupportedOS.

Jisté je jedno: vývoj ve VFP skoro zaručuje, že se prakticky osvobodíte z pout rostoucí nenasytnosti Microsoftu.

Pro provoz aplikací VFP si pravděpodobně nebudete muset pořizovat nový hardware, ani instalovat spoustu novějších verzí Windows na starší počítače. Na pocitu, že nemusíte pořád něco upgradovat, je cosi neodolatelného a většině vedoucích pracovníků IT to zní jako rajská hudba.

Co vyplývá ze zralosti produktu

VFP se objevila ve verzi 3.0 v roce 1995, ale mnohé prvky jazyka i vývojového prostředí známe už podstatně delší dobu.

Stabilita

S věkem přichází zocelení a VFP rozhodně je ostřílený voják. S každou novou verzí a service packem získává vyšší stabilitu.

Zaměření na data

Některé oblíbené vývojové nástroje nezacházejí s daty zrovna skvěle nebo aspoň slušně. Například marketingové monstrum pro .NET začalo slibovat těsnější datovou integraci v přespříští verzi.

Těžko se dají zveličit výhody plynoucí ze schopnosti pracovat s daty nativně. Možnost pohodlně vybírat data a zpracovávat je ve stejném logickém prostoru patří pro zkušené foxaře k nejpřesvědčivějším přednostem VFP.

Produktivita vývoje

K VFP se dodává široký výběr vynikajících a osvědčených vývojových frameworků a doplňků od jiných výrobců pro rozmanité oblasti použití, včetně zcela specifických balíčků pro účetnictví, online obchody na webu, komunikace, tvorbu sestav atd. U většiny z nich je k dispozici kompletní zdrojový kód, mimořádná podpora v rámci komunity, a často i pravidelná vylepšení a upgrady. Proto je nesmírně důležité zajistit, aby vedoucí pracovníci pochopili, že „prostor VFP“ je plný hospodárných produktů a nástrojů, díky nimž je vývoj rychlejší, robustnější a méně riskantní.

Jiný významný aspekt produktivity vývoje se týká samotných programátorů. Vývojářské zkušenosti se obvykle liší co do šířky i hloubky. Podle různých zdrojů – výzkumu i názorů – se zdá, že rozdíl v produktivitě mezi vynikajícím a průměrným tvůrcem softwaru může být až 20:1. Vzhledem k tomu, že VFP je tady už dlouhou dobu, narazíte dost pravděpodobně na programátory ve VFP, kteří mají letité zkušenosti.

Argumenty týkající se produktivity vývoje očividně mají značnou váhu. Můžete-li je uplatnit, rozhodně je zdůrazněte.

Horizont životního cyklu produktu

Podle toho, co oznámil Microsoft, má VFP verze 9 naplánovanou podporu do roku 2014. Viz http://support.microsoft.com/gp/lifeselectindex. V době vzniku tohoto článku je to podstatně pozdější termín než u většiny ostatních vývojových nástrojů Microsoft.

VFP není kriticky závislá na Windows

To je obrovské „plus“. Můžete najisto říci svému zákazníkovi, že řešení založené na VFP jen zřídka vyžaduje zásadní upgrade hardwaru případně Windows v celém systému. Fakt, že VFP nejspíš bude hladce fungovat  na dosavadních počítačích a operačních systémech, je velikou výhodou.

Další informace najdete na http://fox.wikis.com/wc.dll?Wiki~VFPSupportedOS.

Webové schopnosti

Díky řadě frameworků a toolkitů se FoxPro výborně hodí k vytváření webových aplikací. Vedle toho je Visual FoxPro opravdu dobrý nástroj k tvorbě komponent, které se pak používají ve specializovaných webových vývojových prostředích.

Interoperabilita

Dodnes je VFP vzorem interoperability: dokáže snadno číst, importovat a exportovat širokou paletu datových formátů. A pokud se něco nedá provést přímo (nativně), obyčejně se to dá snadno naprogramovat, protože jestli VFP něco dělá jasně a jednoduše, jsou to data a jejich zpracování.

Bonusové body za nadšení a kompetenci

Vzpomeňte si na některá velká rozhodnutí, která jste v životě učinili: kde budete bydlet, na kterou školu půjdete, na kterou školu půjdou vaše děti, jaké auto si koupíte (nebo nekoupíte), kam pojedete na dovolenou, jaký notebook si koupíte a tak podobně. Většinu těchto důležitých rozhodnutí asi spoluutvářela doporučení lidí, jimž důvěřujete, nebo lidí, kteří na dané téma mluvili s nadšením a přesvědčivě.

Dobré doporučení se dá charakterizovat pěti základními body:

  1. Osobní zkušenost.
  2. Nadšení.
  3. Konkrétnost.
  4. Upřímnost.
  5. Srozumitelnost.

Jak by vás v těchto pěti bodech ohodnotili vaši zákazníci?

Těžké boje, které se však dají vyhrát

Vysvětlení problémů s marketingem VFP

Microsoft nepochybně VFP zanedbává. Asi se vám to nelíbí, ale smiřte se s tím, protože se to hned tak nezmění.

K jádru věci: „marketingovou značku“ v myslích cílových zákazníků tvoří tři P – Produkt sám, jeho Povaha a jeho Příslib.

Protože to lidé rozhodující o daném projektu stěží slyšeli od Microsoftu, potřebují to slyšet od vás. Toto jsou prvky značky VFP v pojetí tří P.

  • Produkt VFP
  • Vývojové prostředí ve Windows.
  • Runtime bez licenčních poplatků.
  • Výjimečně ucelený a bohatý programovací jazyk.
  • Zcela otevřená metadata přímo ve formátu DBF.
  • Mimořádná konektivita k různým datovým formátům pro vstup i výstup.
  • Málo rozdílů mezi vývojovým a produkčním prostředím.
  • Minializuje na vývoj vícejazyčných aplikací, programů pro souběžný provoz na více místech.