Řízení softwarových projektů – materiály k 1.lekci

V úterý 18.10. se za vysoké účasti uskutečnila první lekci kurzu. Bude se skládat ze 3. lekcí, více informací naleznete zde a stále se ještě můžete dodatečně přihlásit zde.

LiveMeeting

Odkaz na LiveMeeting jste měli dostat hned po registraci, navíc jsem ještě v pondělí ráno rozesílal upozorňovací e-mail všem zaregistrovaným. Pokud jste e-maily nedostali, na vině jsou zřejmě příliš striktní spamové filtry. Ať tak či onak, link je stejný pro všechy tři lekce, a to:
https://www.livemeeting.com/cc/microsoft/join?id=8KSFTN&role=attend

Materiály a záznam

Prezentace ke stažení

Záznam ke stažení nebo shlédnutí

Odpovědi na položené otázky

Otázky, stejně jako svoje odpovědi, jsem si dovolil jazykově a stylisticky upravit, případně spojit dohromady.

Organizace kurzu

Bude záznam k dispozici ke stažení?
Ano, odkaz najdete výše v textu.

Pošlete knihu i na Slovensko?
Ano, máme dohodu se slovenskými kolegy, že zajistí na Slovensku rozesílku za analogických podmínek.

Řízení projektů pomocí TFS

Dá se využít TFS pro timesheety?
Pokud chcete zjistit, co kdo přesně dělal a kolik to trvalo času, tak určitě. Pokud byste ale k tomu chtěl vědět přesná rozmezí (např. od 11:30-13:00), tak na to TFS není moc praktický nástroj.

Je možno změnit jednoduše typ work itemu? Např. z chyby na úkol.
Tento postup není podporován. Asi nejjednodušší alternativou je zkopírovat původní work item do nového typu a původní work item zavřít – přenesou se pouze shodná pole. Více zde.

Bugy se maji navazovat na souvisejici User Story?
Pokud je mezi nimi zřejmá souvislost (jedná se o specifický bug v určité funkčnosti), tak určitě doporučuji vazbu vytvořit. Nemůže tím nic zkazit a dává vám to možnost dělat reporty typu “kolik bugů a v jakém stavu je přiřazeno jednotlivým požadavkům?”.

Jaké verze Excelu podporujete? Je funkcionalita v Exceli rozsahem srovnatelná s VS/Team Explorer?
Podporován je Excel 2007 a 2010. Funkcionalita Excelu je jiná než Team Exploreru. Excel exceluje :-) v hromadné editaci – rychlé filtrování, třídění, statistiky, blokové kopírování apod. Naopak není vhodný na podrobnou editaci jednotlivých položek, např. editaci popisu  včetně plného formátování, odrážek apod.

Když přidám povinné pole, co bude nastaveno v existujících pracovních položkách? Je tam některá hodnota jako default?
Existující položky zůstanou nezměněné, tj. nově zadané pole bude prázdné. Nebudou podle nových pravidel validní. Půjdou normálně otevřít, pokud je ale změníte a budete chtít změny uložit, budete již muset nové pravidlo respektovat. Pokud byste chtěl doplnit nějakou hodnotu, doporučuji udělat si jednoduchý nástroj, který je ve smyčce upraví – cca 20 řádek kódu.

Je integrace TFS a PS již ve finální verzi, nebo je to zatím jen Beta?
Je ve finální verzi, více ve třetí lekci.

Mám problém s tím, že jsme si vytvořili vlastní typy work items, ty umí zpracovat pouze MS Excel, ale ne MS project, je toto nějak snadno řešitelné?
Pravděpodobně nemáte vytvořené mapování povinných vlastních TFS polí do polí MS Projectu. Více se tomu budeme věnovat ve třetí lekci.

Doporučil byste pro tým, který začíná s TFS a nastavováním vývojového procesu spíše šablonu Agile Nebo Scrum? Jde o tým cca 5 lidí.
Myslím, že je to téměř jedno. Moje mírná osobní preference je Agile. Více se tomu budu věnovat ve druhé lekci.

Dají se k problému definovat pod problémy? Dají se k problému přikládat přílohy – print screen, mail komunikace, Word dokumenty apod.?
Hierarchie položek se snadno vytváří pomocí vztahu Parent/Child. Ke každé pracovní položce lze přikládat URL odkazy anebo přímo přikládat libovolné přílohy podobně jako k e-mailu.

Co je myšleno předplacením mailu k reportu?
Je to taková nešťastná zkratka, která navíc zavání penězi. Ve skutečnosti je to registrace emailu a nastavení časového rozvrhu pro zasílání reportů daného reportu s přednastavenými parametry.

Jak se liší šablony projektů ve verzi TFS 2010 od verzí 2005, 2008? Je možné šablony aktualizovat o nové typy work itemů, reporty apod.?
Merzi verzemi 2005 a 2008 nebyl rozdíl. Mezi verzermi 2008 a 2010 jsou mezi šablonami značné rozdíly. Při upgradu se do existujících projektů (naštěstí) nijak nezasahuje, případné nové věci musíte přidat ručně nebo skriptem pro každý týmový projekt. Velmi podrobný popis je zde, kratší popis zde.

Jak je plánována pracnost jednotlivých úkolů? Jak se eviduje odpracovaná doba na jednotlivých úkolech?
Pracovní položky typu Task mají 3 pole – Original Estimate, Completed Work, Remaining Work – názvy jsou myslím celkem samopopisné. Tato políčka nejsou vyplňována nástroji automaticky, je na vás jaký proces si zvolíte, případně jakými pravidly tato pole zabezpečíte a budete validovat – výchozí nastavení je velmi liberální.

Pokud mam hierarchii workitemu UserStory - Bug - Task pres vazby typu Child, nezobrazují se mi z Tasků svázaných s Bugem hodiny v reportu Stories Progress. Nemáte s tím zkušenost? V reportu jsou započteny pouze hodiny z Tasků navázaných přímo na UserStory.
Nestudoval jsem tento konkrétní případ, ale tipuji následovně: zmíněný report používá jako zdroj dat relační sklad, nikoliv OLAP kostky. V definici reportu se v SQL dotazu nesčítá do hloubky, ale prostou relací dvou stejných tabulek (mimochodem nasčítání stromu není v T-SQL úplně triviální). Řešením by byla buď úprava reportu (Report Builderem anebo Report Designerem ve VS). Anebo si udělejte analogický report v Excelu připojeném k OLAPu, je tam dimenze Work Item Hierarchy, která je zcela určitě nasčítaná do hloubky (navíc máte v Excelu pohodlný drill-down).

Kdo přiřazuje bugy ke kódu? Projektový manažer, analytik?
Vývojář. Spíše se ale jedná o přiřazení změn v kódu k určitému bugu, i když ve finále je vazba oboustranná. Vývojář zkrátka upraví kód a před uložením změn do repository vyznačí, ke které pracovní položce chce změny vztáhnout.

Kam je výhodnější ukládat přílohy. K WI nebo na portál? Jak pak funguje vyhledání v textu dokumentů v TFS?
Na to není jasná odpověď. Možnosti jsou ve skutečnosti tři. Ukládat dokument jako přílohu – komfortní, při ruce, ale nelze ho měnit, jenom smazat a prilozit znovu, neni indexovan, neni verzovan, tezko se obnovuje pri nechtenem smazani. Ukladat dokument do repository spolu s kodem a do WI dat link – technicky dokonalé a čisté, ale uživatelsky ne moc přívětivé. Ukládat na portál a do WI dát pouze URL – uživatelsky přívětivé, verzování a fulltext prostředky SharePointu, ale zase volnější vazba na zbytek TFS, čímž se hůře vynucuje nějaký proces. Asi je třeba zvážit pro každý případ pro a proti.

Rád bych se zeptal, jak je myšleno, aby byla minimální režie (automatizace) vs. nechte je používat vlastní nástroje?
Myšlenka je ta nechat lidem nástroje, na které jsou zvyklý a přidat do nich add-ony pro integraci do jednotné repozitory. Tyto add-ony by neměly překážet v práci, měly by co nejvíce věci dělat za uživatele a chtít po něm pouze nezbytné minimum.

Co znamená trasovatelnost požadavku?
Udržování relevantních informací o požadavku po celou dobu průchodu životním cyklem – kdo strávil kolik času analýzou a implementací, kolik bugů v implementaci bylo, kdo je opravil, jak se při tom změnil kód, kdo požadavek a opravené bugy otestoval, s jakým výsledkem, v jaké konfiguraci atd.

Pokud mám WI, který má vyplněný Effort, Remaining a Completed time tak při asociování změny v kódu s tímto WI musím pak otevřít detail tasku a upravit tyto časové údaje. Není možnost během checkinu, do nějakých poznámek zadat celkový strávený čas a ono by se to promítlo do těchto polí. Případně pod čím v API hledat možnost vytvoření tohoto rozšíření?
Na to lze standardně použít vlastní checkin politiku. Ta má přístup k asociovaným pracovním položkám a může s nimi jménem uživatele manipulovat – např. přečíst hodnotu z Check-in notes a změnit work item, zkontrolovat, zda je asociovaný pouze jeden work item, zkontrolovat, zda při použití Resolve je políčko Remaining Work nastavené na nulu apod. Úvod do problematiky je např. zde. Jenom pozor, politika může být před vlastním checkinem volána i vícekrát, takže pokud něco někam přičítáte, zkontrolovat, zda se tak nechtěně neděje vícekrát.

Kombinace TFS s dalšími produkty a technologiemi

Při vývoji používáme nejen C# (Visual studio) ale i Javu (Eclipse). Dá se napojit TFS i na prostředí Eclipse a použít na vývoj v Javě?
Ano, plug-in pro Eclipse, který je ekvivalentem Team Exploreru ve Visual Studiu, se nazývá Team Explorer Everywhere.

Jaké jsou podporované verze Eclipse?
Verze 3.0 až 3.5, více zde.

Jaké je porovnání rozsahu funkčnosti Eclipse plug-inu vs. VS?
Je plně srovnatelný. Jediná chybějící věc, kterou si uvědomuji, je vizualizace přenosu změn mezi větvemi kódu (Track changeset, Track Work Item). Vše ostatní je podobné až stejné.

Je možné zkombinovat TFS se Subversion?
Určitě je možné používat TFS vedle Subversion (TFS pro projektové řízení, Subversion pro změnové řízení), ale výsledek bude výrazně horší – bude vám chybět hluboká integrace obou nástrojů, která je hlavní devizou TFS. Spíše bych doporučil přechod na TFS i včetně zdrojového kódu – koncept verzování se liší víceméně pouze terminologicky (revision=changeset, commit=check-in, atd.)

Je možné kombinovat TFS a Mercurial nebo GIT?
Víceméně stejná odpověď jako na předchozí otázku.Při přechodu je ale více rozdílů – TFS je založena na konceptu silného centrálního repository s omezenou autonomií klienta – není to distribuovaný systém úložišť.

Jak integrovat do TFS projekty VBA (MS Office)?
VBA řešení jsou uložena v binárním souboru MS Office, není možné je efektivně verzovat. V tomto případě je reálné využít TFS pouze pro projektové řízení, ne pro verzování, build, …

Je možná oboustranná integrace Work Items z TFS a tasku z RedMine?
V krabici produktu žádné integrační řešení není. K jednorázovému přenosu dat mezi TFS a čímkoliv jiným je možné buď napsat vlastní kód (TFS má veřejná API pro .NET framework a Java SDK). Robustnější migrace/synchronizace (jednostranná nebo oboustranná) je možná pomocí tzv. TFS Integration Platform – zde máte hotový runtime a “driver” do TFS, musíte si dopsat “driver” do jiného systému.

Existuje integrace TFS pro NetBeans?
Nativní plug-in není. Nabízí se dvě možnosti. První je použít emulátor jiného verzovacího systému nad TFS – je mi znám emulátor pro Subversion, tzv. SvnBridge (s TFS podle tohoto článku funguje, ale nebude tam moc přívětivé vytváření vazby na work itemy) a pro SourceSafe (MSSCCI Power Tool), zde ale nevím, zda to NetBeans podporuje. Druhou možností je mít přepínat mezi 2 prostředími – v NetBeans vyvíjet a v Team Exploreru provádět check-in, check-out, správu work itemů a další operace.

Lze integrovat TFS s XCode? Vyvíjíme pro mobilní platformy, takže integrace s VS, Eclipse i XCode by byla skvělým přínosem.
Víceméně stejná odpověď jako na předchozí dotaz. Postup nalezenete na tomto blogu.

Jaká je podpora pro analytické modelování a integrace s Enterprise Architectem?
Visual Studio má vlastní UML modelování s dokonalou integrací do TFS, bohužel je dost nešťastně licencováno – pouze v edici Ultimate. Pokud jde o EA, celý model lze verzovat v TFS, ale hlubší integrace, zejména na pracovní položky, chybí.

Ostatní TFS dotazy

Lze udělat build pro projekty psané v různých verzích VS, od Visual C++ 6, přes VS2005, po VS2010, včetně spouštění SQL skriptů pro změny databáze?
Build v TFS je workflow vytvořené pomocí technologie Workflow Foundation. Standardní workflow spouští v určitě fázi MSBuild (na něm je postavené VS od verze 2005). Pokud se používá Eclipse nástroj, spouští se javové buildovací nástroje Ant nebo Raven. Pokud používáte cokoliv jiného, co lze automatizovat do příkazové řádky, je možné šablonu upravit a spustit váš nástroj místo MSBuild. Speciálně pro databáze máme databázový projekt ve Visual Studiu, kde lze v rámci buildu snadno nasadit změny v databázi, případně vygenerovat testovací data.

Jak dostanu funkce v TFS v prostředí Windows Exploreru? Mám TFS 2008, klient je Windows 7.
Integrace do Windows Exploreru je součástí TFS Power Tools. Při instalaci musíte zaškrtnout “Windows Shell Extensions”. Nové položky v menu se objeví po restartu, a to pouze pokud se pohybujete ve složce namapované na TFS repository.

Existuje nástroj na verzování SQL databáze? Jedná se nám o kompletní schéma (uložené procedury, pohledy atd.)
Přesně k tomuto účelu slouží databázove projekty ve VS 2010. Základní funkce jsou již v edici Professional, některé pokročilejší věci (Schema Compare, Data Compare, Refactoring, Data Generation, Static Analysis) jsou až v edicích Premium/Ultimate. Princip je dobře popsaný zde. Typicky používané postupy a úlohy jsou zde. TFS je víceméně jedno, co verzuje – SQL nebo C++, text jako text.

Setkal jste se s problémem, že cesta v TFS nesmí být delší než 259 znaků?
Ano setkal, nejedná se o omezení TFS, ale operačního systému, viz zde. Jiné řešení než používání kratších cest zřejmě není.

Existují i lokalizované TFS šablony (aspoň pro SharePoint portály a TFS Web Access) do slovenštiny anebo čestiny?
TFS se lokalizuje pouze do hlavních světových jazyků, což čeština/slovenština bohužel není.

Chtěl bych se zeptat, co je vše potřeba pro získání statistik a reportů z TFS?
Po technické stránce potřebujete nainstalované Analysis Services a Reporting Services z instalace SQL Serveru. Licenčně jsou oba součástí SQL Serveru, licence na SQL Standard je součástí licence TFS Serveru.

Co dělat, pokud moje změny ovlivní několik Solution, např. změna rozhraní. Commity by mělý být atomické, abych nerozbil build.
Samozřejmě je to jak říkáte, můj příklad používal pouze jeden soubor – pro jednoduchost. TFS používá transakční přístup pro modifikaci úložiště, což je fyzicky SQL databáze – podobně jako všechny moderní verzovací systémy, ať už transakci nazýváme changeset nebo revision. Zda změněné soubory jsou nebo nejsou součástí jednoho solution je celkem lhostejné.

Dotaz na téma upgradu - upgrade TFS server 2005 na 2010 tak, aby byl zachován zdrojový kód včetně historie - máte s tím zkušenosti?
Osobně jsem několikrát prováděl upgrade pouze na verzi n+1, nikoliv na n+2. Byl vždy zcela hladký, samozřejmě se zachováním historie a všech dalších dat. Upgrade z verze 2005 na verzi 2010 je plně podporován, tudíž není důvod mít obavu. Pro popis upgradu z verze 2005 nebo 2008 na verzi 2010 se podívejte se sem a sem.

Je možné build označit jako "release" a vygenerovat "Release Notes" pre jednotlivé "release"?
Jednotlivé buildy je mozně označovat (tzv. build quality), ale to nemá vliv na asociované pracovní položky a změny v kódu. Jejich seznam se generuje při buildu na základě “změn provedených v kódu od posledního úspěšného buildu prováděného podle stejné definice”. V podstatě máte dvě možnosti – udělat si report v Excelu připojením k OLAPu a vyfiltrováním podle data nebo podle rozsahu denních buildů (vazba build-changeset-work item je v datovém skladu uložena). Druhá možnost je udělat si novou definici buildu – rikejme ji “release build”, kterou spouštíte nad stejnou verzí kódu jako denní build, který jste vybrali pro release. Asociované položky jsou pak přírůstkem oproti poslednímu “release buildu” a denní buildy na ně nemají vliv.

Používám TFS + agilní šablonu. Po přesunu VS2010 na SSD disk se mi Excel nepřipojí k TFS. Hlásí chybu TF208103 The initialization of the workbook to connect TFS was not successful... Blog na MSDN doporučuje přeinstalovat Office - víte něco o tomto problému?
Nemám žádné další informace kromě těch dostupných na webu. Zkusil bych provést Repair obou produktů, případně reinstalaci.

Licencování

V této oblasti padlo několik dotazů. Protože se jedná o komplexní otázku, připravím do příště krátkou prezentaci.

Těším se na slyšenou příští úterý,
Michael