290 likes | 512 Views
Nové pracovní postupy I. Představení nástrojů zvyšujících efektivitu práce na softwarových projektech. Petr Stodulka. Kofrlab, 30.3.2007. Nové pracovní postupy I. 6 nástrojů pro úspěšně fungující vývoj 12 Steps to Better Code Představení nástrojů Subversion Bugzilla Wiki
E N D
Nové pracovní postupy I. Představení nástrojů zvyšujících efektivitu práce na softwarových projektech Petr Stodulka Kofrlab, 30.3.2007
Nové pracovní postupy I. • 6 nástrojů pro úspěšně fungující vývoj • 12 Steps to Better Code • Představení nástrojů • Subversion • Bugzilla • Wiki • Založení uživatelských účtů na SVN
6 nástrojů pro úspěšně fungující vývoj 2. Checkout kódu a knihoven, Kompilace, Deployment, Dokumentace 1. Verzování kódu Centrální úložiště 5. Snadné, otevřené, verzované 3. QBuild test report 5. Code coverage, Code convention, Coding style 4. Správa bugů
12 Steps to Better Code A score of 12 is perfect, 11 is tolerable, but 10 or lower and you've got serious problems. The truth is that most software organizations are running with a score of 2 or 3, and they need serious help, because companies like Microsoft run at 12 full-time. • Do you use source control? • Can you make a build in one step? • Do you make daily builds? • Do you have a bug database? • Do you fix bugs before writing new code? • Do you have an up-to-date schedule? • Do you have a spec? • Do programmers have quiet working conditions? • Do you use the best tools money can buy? • Do you have testers? • Do new candidates write code during their interview? • Do you do hallway usability testing?
Kofrlab • Chlubíme se interdisciplinárním týmem • Každý pracuje sám • Komunikace vázne • Požadavky, specifikace, dokumentace, bugy • Sdílení výsledků práce mezi členy týmu ≈ CHAOS
Verzování kódu - motivace 1 • Stáhnu si zdrojáky Wizarda, používám je, najdu chybu • Chybu opravím a chci ji nahrát na server • Nezměnil mezitím Palo něco? (diff) • Potom taky ne? Musím mu to oznámit, jinak ho dostanu do stejné situace. • Dříve nebo později KONFLIKT!
Verzování kódu - motivace 2 • Používám počítač v práci, doma a ještě notebook • Práci průběžně nahrávám na FTP • Zapomínám • Existují 4 kopie kódu – která je aktuální?! • Dříve nebo později BORDEL!
Verzování kódu - motivace 3 • Dělám na větším projektu • Kód, dokumentace, knihovny, resourcy • Průběžně kopíruju zálohy • ZALOHA\WIZARD_30.3.2007 apod. • Válí se všude po disku a jsou obludně velké • Nikdy se k nim nevrátím • Jedním slovem DĚS BĚS
SVN – principy 1 • Aktuální verze kódu je na serveru (repository) • K práci si kód vždy „půjčuju“, potom ho vrátím • Kód si může stáhnout každý (working copy) • Problémy se řeší před uploadem změn
Checkout Založí working copy Update Aktualizuje w.c. Nezničí práci! Konflikty Commit Uploaduje práci do repository SVN – principy 2 Kód stojí update Práce commit update Konflikty
Prevence konfliktů Zámek = vzkaz Nekomfortní Před prací nutné zamknout Problémy když zapomene odemknout Jak vlastně poznám, že je soubor zamčený? read-only záleží na aplikaci SVN – zamykání
Merging na úrovni řádků tedy pouze textové soubory Nemusí dojít ke konfliktu Změny na různých řádcích Nelze zaručit, že kód půjde přeložit! SVN – merging
SVN – resolve • Při konfliktu vzniknou 4 soubory • nástroj diff3 3. Moje práce 1. Podoba při mém posledním update (poslední společný moment) 4. Vznikne z předchozích – konfliktní oblasti jsou označeny. Binárky se nemergují. 2. Aktuální podoba v repozitáři 5. „Merged file“ je potřeba upravit a označit jako Resolved
SVN - revize • Revize = podoba repository v konkrétní časový okamžik • Každý commit zvýší číslo revize celého repozitáře (global revision numbers) Mixed revisions ve working copy : • Commit nastaví číslo poslední revize pouze commitovaným souborům • Až update nastaví všem souborům ve working copy číslo poslední revize • update a commit jsou oddělené; „push“ nezpůsobí „pull“
SVN – co to ještě umí? • Historie – lze si vycheckoutovat podobu projektu k libovolnému datu a dělat diff mezi libovolnými revizemi • Metadata (properties) – rozšíření funkcí SVN • Vývojové větve – vývoj se rozdělí na dvě nezávislé větve • lze mezi nimi přenášet změny nebo je později zase spojit Wizard Wizard .NET 2.0 opravy bugů Wizard .NET 1.1
SVN @ Kofrlab • TortoiseSVN - http://tortoisesvn.tigris.org/ • klient integrovaný do shellu windows, ovládaný kompletně z kontextové nabídky • repository browsing, revision graph, pěkný editor mergovaných souborů • samozřejmě je možné používat libovolného klienta • Kofrlab repository • http://patf-biokyb.lf1.cuni.cz/repos/ • anon/anon pro čtení, vlastní účet pro zápis
Bug Tracking System - motivace Uživatel: • Najdu chybu nebo chci navrhnout vylepšení napíšu mail autorovi • nic ho nenutí se tím zabývat • i když chybu opraví, nemusí mi o tom vůbec dát vědět • Všechno je to o komunikaci Programátor: • Stoly se plní počmáranými papíry s poznámkami. • Po víkendu si nikdo nepamatuje, kde má „ty aktuální“ • Bugy zůstávají, nikdo je není schopen sledovat.
Bugzilla - principy • Bugzilla – webová aplikace • Submit bugu • uložení do DB • pošle se mail adresátovi bugu • Údaje u bugu: • produkt, jeho komponenta, verze, hardware, OS • závažnost, priorita • popis • stav bugu • komentáře uživatelů • Databáze je typicky otevřená • bugy mohou reportovat i uživatelé
Bugzilla – stavy bugu NEW • Bug je možné kdykoliv delegovat na někoho jiného (reassign) • Resolvovaný bug je možné znovuotevřít (reopen) • Závislosti bugů ASSIGNED RESOLVED FIXED INVALID WONTFIX WORKSFORME Duplicate of bug #
Bugzilla – jak reportovat bug • Vhodný nadpis (pro vyhledávání) • „PCMCIA install fails on Tosh Tecra 780DVD w/ 3c589C “ vs. „install problem“ • Jak zopakovat bug • Co jsem očekával • Co se stalo • Závažnost a prioritu už si určí kompetentní osoby
Bugzilla @ Kofrlab • Kofrlab Bugzilla • http://patf-biokyb.lf1.cuni.cz/bugzilla/ • Uživatelský účet si zakládá každý sám • Bugy nelze mazat • Na vyzkoušení je založený TestProduct
wiki - správa dokumentů • Specifikace, dokumentace, návody, tutorialy – Knowledge base • Sdílení, verzování • Přístup veřejnosti • kontrola pomocí ACL • Jednoduchá syntaxe (i oproti HTML)
wiki – syntaxe 1 • //kurzíva// kurzíva • **tučné** tučné • __podtržené__ podtržené • ‘monospaced’ monospaced • <del>smazané</del> (přeškrtnuté) • [[www.google.com|Google]], [[wiki:syntax]] • {{ obrazek.jpg}} obrázek zarovnaný vpravo • ====== Nadpis 1 ====== • ===== Nadpis 2 ===== • ==== Nadpis 3 ====
wiki – syntaxe 2 • není potřeba používat <p> odstavce odděleny prázdným řádkem • automaticky se generuje obsah (TOC) • seznamy pomocí odrážek ‘*’ <ul>,‘-’ <ol> • tabulky • smajlíci • Syntax Highlighting – C#, ActionScript, HTML, XML, Java, … <code java> public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() {createAndShowGUI();} }); } </code>
wiki @ Kofrlab • Kofrlab Wiki • http://patf-biokyb.lf1.cuni.cz/wiki/ • veřejně pro čtení, pro zápis je potřeba registrace • DokuWiki • zvýrazňování syntaxe
Nakonec • Založíme SVN účty na serveru • Příště: metody práce na SW projektech • SW testing(unit, integration) • Další nástroje • Build system, continuous integration, code analysis
Odkazy • http://www.joelonsoftware.com/articles/fog0000000043.html – Joel Spolsky • http://www.sweb.cz/pichlik/archive/2007_02_04_archive.html - Roman Pichlík • http://svnbook.red-bean.com - SVN manuál • http://tortoisesvn.tigris.org/ - TortoiseSVN • http://www.bugzilla.org/ - Bugzilla • http://wiki.splitbrain.org/wiki:dokuwiki - DokuWiki • http://patf-biokyb.lf1.cuni.cz/repos/ - Kofrlab SVN repository • http://patf-biokyb.lf1.cuni.cz/bugzilla/ - Kofrlab Bugzilla • http://patf-biokyb.lf1.cuni.cz/wiki/ - Kofrlab Wiki
Děkuji za pozornost Petr Stodulka petr.stodulka@gmail.com