Blog

Jak jsme zaváděli code-review (díl 1.)

11. 06. 2018

Představte si, že vedete vývojový tým na projektu, který se skládá z různě zkušených (a různě schopných) programátorů.

Někdo je soběstačný, někomu musíte občas poradit a nasměrovat ho a občas se najde někdo, komu byste vše nejraději nadiktovali (na což ale není čas). Samozřejmě, ani vy nemusíte mít vždycky svůj den a s odstupem času se zkrátka nevyhnete refaktoringu některých částí svého kódu. Pokud ovšem má být projekt úspěšný (a vy děláte vše proto, aby byl), je potřeba udržovat kvalitu zdrojového kódu neustále na vysoké úrovni. Jedním z nástrojů pro kontrolu kvality, je právě code-review.

            Do nedávna jsme code-review praktikovali nesystematicky a bez ustáleného procesu. V podstatě se ráno hlavní vývojář na projektu podíval do verzovacího systému, co za minulý den (někdy delší období) přibylo a pokud našel kód nevyhovující z hlediska interních standardů či mravů dobrého programátora, tak to buď autorovi vytkl, nebo ještě hůře - raději sám přepsal.

Tento způsob má celou řadu nevýhod. Zaprvé případný “ošklivý” kód už je ve verzovacím systému. Přes noc se vydala verze, projektoví manažeři (ale koneckonců i zákazník) jsou spokojení, protože „ono“ to nějak funguje a neuvědomují si, že je potřeba věnovat již plně funkční části aplikace ještě další čas, abychom v budoucnu hořce nezaplakali nad výdělkem. Často se pro popsaný jev používá termín technický dluh. Další nevýhodou dříve uplatňovaného systému revize kódu je to, že autor v den konání review nemusí být k dispozici (práce z domova, dovolená) a upozorňovat programátora na věci, co psal před týdnem, není příliš účinné. V neposlední řadě také neexistuje žádný proces, který by po vývojáři vyžadoval code-review provádět a může tak neomezeně narůstat nezrevidovaný kód.

Existuje však mnohem lepší metoda, jak se k této problematice postavit a ta spočívá v revidování kódu ještě před tím, než se dostane do hlavní verze (či větve, chcete-li). Programátor požádá kolegu o schválení a buď je vše v pořádku a kód se zařadí do připravované verze, anebo se objeví připomínky, jež původní autor zapracuje a poté požádá o schválení znovu. Takto lze iterovat i několikrát, dokud nejsou obě strany spokojené. Na první pohled může být tento proces zdánlivě časově náročnější, ale při hlubší úvaze zjišťujeme, že tím předcházíme budoucím konfliktům a přepisům mnohem časově náročnějším. Nemluvě o znalostním přínosu pro méně zkušené vývojáře.

 Zásadní problém při implementaci výše popsaného v naší společnosti byl však v tom, že tehdejší verzovací systém code-review v této podobě nepodporoval a musel tedy být změněn i ten. Samotná změna verzovacího systému je vcelku náročná věc, která logicky stojí čas (čtěte peníze) společnosti. V rámci pečlivých úvah a několika důkladných výměn názorů byl zřejmý všem zainteresovaným stranám nesporný přínos navrhovaného řešení a tak interní projekt pro zavedení code-review dostal zelenou.

 Po úvodním, mírně spontánním sestavení týmu pro implementaci code-review jsme se začali v nově vzniklém výběru pravidelně scházet a načrtávat procesy, které zaintegrují požadavky od zákazníka, jejich vývoj, automatickou kontrolu kvality kódu, code-review programátorem, ale i automatizované a lidské testování. Nutno podotknout, scházíme se dodnes, i když nám code-review už celkem jde. Ale věcí k řešení je stále mnoho.

Po navržení procesů jsme se začali poohlížet po vhodných nástrojích na jejich realizaci. Časem jsme dospěli ke dvěma kandidátům - Bitbucket a Gitlab. Oba umožňují správu požadavků, integraci s testovacími nástroji, ale hlavně tvorbu code-review, porovnávání změn od programátora řádek po řádku, možnost se k jednotlivým řádkům kódu vyjádřit a vést nad nimi diskuzi. Oba také (ne náhodou) pracují nad verzovacím systémem GIT.

Na základě interního testování a zjišťování informací z vnějšku naší společnosti jsme zvolili Gitlab. Co nás k tomu vedlo a udělali jsme správně? Jak vlastně vypadá náš současný vývojový proces se začleněním code-review? Dozvíte se příště.

Jan Švimberský, senior developer


zpět

Reference

Tvorba rozsáhlého rezervačního, objednávkového, výměnného a prodejního systému pro nové vozy určeného pro zahraniční prodejní sítě Škoda Auto a SEAT. Poskytování komplexních služeb v oblasti systémového návrhu, vývoje a dlouhodobé údržby a rozvoje systému....

Tvorba systému BMS (Business Management Škoda) pro evidenci a následné zpracování ekonomických informací obchodníků prodejní sítě Škoda Auto externí poradenskou firmou. Princip systému spočívá ve sběru ekonomických dat jednotlivých prodejců, jejich vyhodnocení a porovnání s...

Tvorba intranetového systému SQS (Škoda Quality System), který je určen pro sběr a vyhodnocení dat o kvalitě aktuálně vyráběných vozů v reálném čase. Poskytli jsme služby v oblasti systémové analýzy, návrhu, vývoje, údržby a rozvoje systému. produktový list v PDF

Vývoj aplikace zajišťující kalkulaci cen střešních krytin, přípravu objednávek a faktur pro zákazníky. Systém je určen především pro smluvní partnery společnosti Bramac, kterým usnadňuje přípravu stavebních zakázek. 

Cílem projektu bylo vytvořit informační systém pro cenotvorbu, nastavení procesu pro prodej nových bytů, rodinných domů a parcel a poskytnutí second-level hotline, technické podpory a komplexního outsourcingu provozu softwarové a hardwarové infrastruktury systému. Informační systém...

Součástí informačního systému pro on-line prezentaci nejen produktů společnosti (domy, byty a parcely) je redakční modul, který čerpá data přímo z databáze systému CMS CG a umožňuje snadné nastavení zobrazovaných informací, správu verzování publikovaných dat. Umožňuje vytvoření...

Společnost DEFINITY Systems se podílela na vývoji extranetového řešení pro evidenci, zpracování a analýzu dat protikorozní katodové ochrany produktovodů společnosti Čepro. Přínosy řešení: Řešení přispívá k včasnému odhalování potenciálních defektů potrubí, čímž...

Implementace extranetového řešení pro evidenci, zpracování a analýzu dat protikorozní katodové ochrany plynovodů pro distribuční společnosti E.On. Systém sdružuje data z celé této oblasti s cílem usnadnit kontrolu a řízení procesů katodové ochrany na úrovni celé sledované soustavy. ...

Tvorba distribuovaného účetního a ekonomického systému pro jídelny sítě Eurest. Prostřednictvím systému se provádí sběr a zpracování účetních dat a příprava fakturace poboček sítě Eurest.  Přínosy: Umožnění elektronického sběru dat z jednotlivých závodů Eurest...

Specializovaný obchodní (B2B) a konfigurační systém vyvinula společnost DEFINITY Systems pro potřeby prodejní sítě Hewlett-Packard. Systém vytváří on-line kanál pro distribuci serverů HP ProLiant a veškerého příslušenství. Přínosy: Systém realizuje přímou vazbu mezi výrobním...

Společnost DEFINITY Systems vytvořila pro Konica Minolta specializovaný kalkulační nástroj pro výpočet tiskových nákladů a následný návrh jejich optimalizace.   Vyjádření klienta:   "Služba KM eDOC, která výrazně pomáhá našim konzultantům a obchodníkům...

Tým DEFINITY Systems vyvinul extranetové řešení pro evidenci, zpracování a analýzu dat protikorozní katodové ochrany plynovodů pro distribuční společnosti RWE Energy Czech Republic. Přínosy: Systém přispívá k včasnému odhalování potenciálních defektů potrubí, čímž...

Tým DEFIINITY Systems vyvinul extranetové řešení pro evidenci, zpracování a analýzu dat protikorozní katodové ochrany produktovodů společnosti MERO. Přínosy Systém přispívá k včasnému odhalování potenciálních defektů potrubí, čímž předchází potenciálním ekologickým a...

Rozsah projektu: Tvorba podnikového informačního systému pro sledování a vyhodnocování produktivity a efektivity výroby (pro výrobní závod Zruč). Poskytování second-level hot-line a technické podpory. Průběžná údržba a rozvoj software.

Rozsah projektu: Tvorba on-line rezervačního a prodejního systému pro celostátní prodejní sítě vstupenek TICKET ART CZ, PL a SK. Poskytování komplexních služeb v oblasti systémové analýzy, návrhu, vývoje a dlouhodobé údržby a rozvoje systému.  Vývoj...

Tvorba rozsáhlého rezervačního, objednávkového, výměnného a prodejního systému pro nové vozy určeného pro zahraniční prodejní sítě Škoda Auto a SEAT. Poskytování komplexních služeb v oblasti systémového návrhu, vývoje a dlouhodobé údržby a rozvoje systému....

Tvorba systému SEFI, který eviduje a zpracovává poruchy a problémy nových automobilů. Přínos systému spočívá ve schopnosti sledovat poruchovost v globálním měřítku, čímž umožňuje rychle analyzovat, jakým způsobem upravit výrobní postupy, aby se zjištěná poruchovost snížila. Přínos...

Projekt Web CCS: Web CCS je specializovaný systém, který zajišťuje podporu procesu tvorby rozpočtů a prognóz v elektronické podobě a jejich následný oběh mezi odpovědnými osobami, včetně zajištění schvalovacího procesu. Systém automaticky vyhodnocuje odchylky v rozpočtech jednotlivých...

Vytvoření informačního systému  AIS (Asset Management Information System) Budget  pro podporu procesů tvorby rozpočtů komerčních budov a jejich schvalování. Výchozí situace: Rozpočet byl schvalován pomocí komplexního excelovského souboru. Časově náročné ruční...

Mobilní verze projektu Karta života ZP211 umožňuje pojištěncům  Zdravotní pojišťovny ministerstva vnitra České republiky získat okamžitý přístup k informacím o svém zdravotním stavu. Každý vlastník Karty života zde má uložené záznamy o alergiích, chronických onemocněních,...

Základní funkcí systému SPH je administrace elektronických hodnotících formulářů pracovníků úseku letového provozu a jejich následné vyhodnocení na základě přidělených kompetencí. Systém je vyvinut jako kombinace webové aplikace pro sběr formulářů a desktopové aplikace pro jejich...

Nahrazení a rozšíření informačního systému AIS (Asset Management Information System) Report pro reporting finančních a provozních údajů z komerčních budov v centrální a východní Evropě. Výchozí situace: Již existoval systém vyvinutý najatým samostatným vývojářem....

Rozpočtování, controlling a forecasting je díky tomu dnes v CZ LOKO bezpečnější, s menší chybovostí a bez závislosti na MS Excel souborech. Finanční řízení není v rámci holdingu jednoduchou záležitostí. Musí pojmout 25 nákladových středisek a 200 rozpočtových účtů,...

Eurest řešil problémy s rozpočtovými a reportingovými procesy . Firma se potýkala se složitostí a chybovostí procesů, spojených s budgety a reporty pomocí souborů MS Excel. Závody posílaly svoje rozpočty vyplněné v Excelu, které pak musely být pracně nahrávány do informačního systému...

Vyjádření klienta: "Našemu kontrolingovému oddělení Fimis plně vyhovuje svojí přizpůsobivostí a mírou detailu zároveň. Plánování a řízení desítek nákladových středisek se tak stalo efektivnější díky okamžité konsolidaci a porovnání hodnot plánů a účetní skutečnosti."...

Společnost DEFINITY Systems provedla implementaci zakázkového informačního systému Lab Management Software ve společnosti EMERSON Climate Technologies s.r.o. Výsledkem je usnadnění a zefektivnění spolupráce mezi oddělením inženýringu a testovací laboratoří a snížení nákladů na zařízení a...

CMI Fakturační systém sloužící ke zpracování faktur, evidenci faktur a pokladních dokladů na základě objednávek vytvořených v systému PS2 popř. faktur doručených od klientů a dodavatelů. PS2 Provozní systém pro evidenci objednávek na základě plánování a pro...

Systém HRA byl vyvinut pro HR oddělení za účelem přehledu o docházce a přítomnosti zaměstnanců, žádostí o dovolenou a plánování služebních cest. Na základě administrace lze vytvářet exporty pro další zpracování. Systém je vyvinut jako webová aplikace pro firemní intranet/extranet....

Systém MEC Smart Metering vyřešil společnosti HEC Services, s.r.o. problém povinnostmi hlášení údajů o spotřebě elektrické energie. Usnadnil fakturaci odběratelům, přehled o vytížení distribuční sítě a odhalení kritických míst v rámci distribuce elektrické energie. Kromě toho systém...

Společnost Lundegaard hledala nástroj, se kterým by bylo možné mít firemní plánování pod kontrolou i po chystaném organizačním rozdělení společnosti na střediska.  Nasazení FIMISu zabránilo očekávané neúměrné náročnosti v plánování v MS Excel a hrozícímu nárůstu...

Super Zoubek je aplikací na čištění zoubků pro děti od 3 do 5 let. Super Zoubek má dětem hlavně přinést zábavu při čištění zoubků! Super Zoubek motivuje děti k pravidelnému čištění zoubků. Naučí se formou hry čistit si zoubky metodou čištění kousací, vnější a vnitřní plochy...

Informační systém CEPSIS je specializovaný systém, který zajišťuje pokročilou podporu procesů napříč celou společností CEPS. Aplikace je tvořena z několika sekcí, které jsou vzájemně provázány.  Mezi velmi důležité sekce patří ekonomika, assets, výkazy a reporty....

Informační systém EVLID byl realizován jako webová aplikace s inovativním uživatelským rozhraním usnadňujícím uživatelům každodenní práci se systémem. Klíčová část produktu umožňuje detailní evidenci členů politické strany. V neposlední řadě je dodané řešení integrováno do...

Realizovali jsme desítky SW řešení
v mnoha oborech.

S čím tedy můžeme pomoci vám?

*