Nové pracovní postupy I.
description
Transcript of Nové pracovní postupy I.
![Page 1: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/1.jpg)
Univerzita Karlova v Praze, 1. lékařská fakulta, Laboratoř biokybernetiky a počítačové podpory výuky
Nové pracovní postupy I.
Petr Stodulka
Představení nástrojů zvyšujících efektivitu práce na softwarových projektech
Kofrlab, 30.3.2007
![Page 2: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/2.jpg)
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
![Page 3: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/3.jpg)
6 nástrojů pro úspěšně fungující vývoj
1. Verzování kóduCentrální úložiště
2. Checkout kódu a knihoven,Kompilace,Deployment,Dokumentace
3. Build test report
4. Správa bugů
5. Code coverage,Code convention,Coding style
5. Snadné, otevřené, verzované
![Page 4: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/4.jpg)
12 Steps to Better Code
1. Do you use source control? 2. Can you make a build in one step? 3. Do you make daily builds? 4. Do you have a bug database? 5. Do you fix bugs before writing new code? 6. Do you have an up-to-date schedule? 7. Do you have a spec? 8. Do programmers have quiet working conditions? 9. Do you use the best tools money can buy? 10. Do you have testers? 11. Do new candidates write code during their interview? 12. Do you do hallway usability testing?
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.
![Page 5: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/5.jpg)
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
![Page 6: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/6.jpg)
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!
![Page 7: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/7.jpg)
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!
![Page 8: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/8.jpg)
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
![Page 9: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/9.jpg)
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
![Page 10: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/10.jpg)
SVN – principy 2
• Checkout– Založí working copy
• Update– Aktualizuje w.c.– Nezničí práci!– Konflikty
• Commit– Uploaduje práci do
repository
Práce
Kód stojí
Konflikty
update
update
commit
![Page 11: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/11.jpg)
SVN – konflikt
![Page 12: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/12.jpg)
SVN – zamykání• 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
![Page 13: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/13.jpg)
SVN – merging• 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!
![Page 14: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/14.jpg)
SVN – resolve• Při konfliktu vzniknou 4 soubory
– nástroj diff3
1. Podoba při mém posledním update (poslední společný moment)
3. Moje práce
2. Aktuální podoba v repozitáři
4. Vznikne z předchozích – konfliktní oblasti jsou označeny.Binárky se nemergují.
5. „Merged file“ je potřeba upravit a označit jako Resolved
![Page 15: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/15.jpg)
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“
![Page 16: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/16.jpg)
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 1.1
Wizard .NET 2.0
opravy bugů
![Page 17: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/17.jpg)
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
![Page 18: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/18.jpg)
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.
![Page 19: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/19.jpg)
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é
![Page 20: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/20.jpg)
Bugzilla – stavy bugu
• Bug je možné kdykoliv delegovat na někoho jiného (reassign)
• Resolvovaný bug je možné znovuotevřít (reopen)
• Závislosti bugů
NEW
RESOLVED
FIXEDINVALID
WONTFIXWORKSFORME
Duplicate of bug #
ASSIGNED
![Page 21: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/21.jpg)
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
![Page 22: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/22.jpg)
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
![Page 23: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/23.jpg)
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)
![Page 24: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/24.jpg)
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 ====
![Page 25: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/25.jpg)
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>
![Page 26: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/26.jpg)
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
![Page 27: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/27.jpg)
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
![Page 28: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/28.jpg)
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
![Page 29: Nové pracovní postupy I.](https://reader035.fdocument.pub/reader035/viewer/2022062305/56815201550346895dc0428b/html5/thumbnails/29.jpg)
Univerzita Karlova v Praze, 1. lékařská fakulta, Laboratoř biokybernetiky a počítačové podpory výuky
Děkuji za pozornost
Petr Stodulka [email protected]