Visual Studio Team System: Práce v týmech s pomocí Team Foundation Serveru Michael Juřek Software Architect Microsoft s.r.o.
Visual Studio Team System 2008 Change Management Work Item Tracking Reporting Project Portal Visual Studio Team Foundation Server Integration Services Project Management Process and Architecture Guidance Dynamic Code Analyzer Visual Studio Team System Architecture Edition Static Code Analyzer Code Profiler Application Designer System Designer Logical Datacenter Designer Visual Studio Team System Development Edition Visual Studio Industry Partners Team Build Deployment Designer Unit Testing (C#, VB.NET) Code Coverage Team Explorer (includes Team Foundation Server CAL) Visual Studio Professional Edition Load Testing Web Testing Visual Studio Team System Test Edtiion Class Designer (in Visual Studio Standard Edition and higher) Visio for Enterprise Architects (in MSDN Premium Subscription) Visual Studio Team System Database Edition Offline Database Project Schema Compare DB Rename Refactoring Data Generator Data Compare Unit Testing (T-SQL) Code Metrics Manual Testing Test Case Management
Agenda Architektura produktu Řízení projektu (work items) Správa změn (kódu) Automatizovaný build Projektový portál Reportování
Architektura zdálky App Tier StandbyServer DatabaseMirror Team Foundation Data Tier Team Foundation App Tier Build MachineVersion Control Proxy Report Client Team Foundation Client Tier
Architektura zblízka Custom reporting tools MS Excel Team Foundation Data Tier Team Foundation App Tier Version Control Proxy Report Client Team Foundation Client Tier CoreDataVersionControl Work Items Team Build Data SQLReportingServicesWindowsSharePointServicesSQLReportingServicesWindowsSharePointServices Work Item TrackingServiceVersionControlServiceTeamBuildServiceCoreServicesWarehouse Adapters Team Foundation App TierWSSProxies SQL RS Proxies Team Foundation Object Model MS Excel Plug-In MS Project Plug-In Visual Studio Packages Web Access BuildProcessVersionControlProxyService VSTFKlienti Jiné produkty Build Machine
Datový sklad Work Item Tracking SQL Server ReportingServices Source Code Control Work Item Adapter Source Code Adapter Partner Tool A Add-onAdapter Reporting Warehouse Object Model Excel CustomReporting BuildDatabase Test/BuildAdapter
Identifikace komponent infrastruktury TFS Autorizace pomocí rolí
Agenda Architektura produktu Řízení projektu (work items) Správa změn (kódu) Automatizovaný build Projektový portál Reportování
Chyby Chyby Úkoly Rizika a problémy Změny Změny Požadavky zákazníka Co se všemi seznamy, které musím udržovat?
Seznamy - architektura Jednotlivé seznamy jsou uloženy v relační databázi SQL Server 2005 Přístupné klientům jako webová služba v aplikační vrstvě Autorizace pomocí skupin a oprávnění Možní klienti: Visual Studio Team edice Project 2003 add-in Excel 2003 add-in TFS Web Access Vlastní klient web služby (SOAP) Obsah je importován do datového skladu pro účely reportů a zobrazení na portále
Nástroje – manager projektu Reporty (např. na portále) Pouze k prohlížení Parametrizované dotazy TFS Web Access Kdykoliv k dispozici bez nutnosti instalace čehokoliv Project 2003 add-in Silné stránky Projectu – plánování, správa zdrojů, závislosti, kritické cesty projektu,... Obousměrná synchronizace s TFS Navigace do dokumentace a reportů Excel 2003 add-in Silné stránky Excelu - kalkulace, grafy, sumarizace, kontingenční tabulky, formátování, tisk,... Obousměrná synchronizace s TFS Navigace do dokumentace a reportů
Práce se seznamy integrována do prostředí Visual Studia Okna, menu, kontextové nabídky,... Vazba změn v kódu na položku ze seznamu (chyba, úloha,...) Možnost vynucení povinné vazby pomocí check-in politiky Integrace s testováním: Možnost přiřazení testu chybě nebo úloze Found In/Fixed In integrace pro chyby vázané na testy selhávající během automatických buildů Integrace do Visual Studia
Každý typ se skládá z: Polí Přidání vlastních, modifikace existujících apod. Formuláře Typ a umístění ovládacích prvků ve VS Přidání, přemístění, změna typu/vizuálu,... Workflow (stavy a možné přechody mezi nimi) Přidání vlastních stavů, pravidel pro přechody, definování skupiny oprávněné k provedení přechodu Události na straně serveru při změně Úpravy typů v šabloně
Řešení konfliktů při aktualizaci Na úrovni jednotlivých polí
Definice seznamu v šabloně procesu Integrace do prostředí Visual Studia Vytváření a spouštění vlastních dotazů Vytvoření nové chyby Práce v Project 2003 Vyřešení konfliktu
Agenda Architektura produktu Řízení projektu (work items) Správa změn (kódu) Automatizovaný build Projektový portál Reportování
Visual SourceSafe Nejjednodušší a celosvětově nejvíce používaný nástroj pro správu vzorového kódu Vhodný pouze pro malé týmy: Nepoužívá databázi, ale souborový systém Vzdálená práce vyžadovala VPN – vyřešeno až HTTP tunelováním ve verzi 2005 Vlastní systém účtu bez integrace s doménou Stále jej lze použít s VS 2005 Professional V TFS je nahrazen novou správou změn
Moderní 3-vrstvá architektura Standardní rozhraní webových služeb HTTP/SOAP - snadný průchod přes firewall Optimalizováno pro pomalé linky SQL 2005 jako úložiště Transakčnost a robustnost Diferenciální komprese souborů (úspora diskového prostoru) Používá účty Windows Méně pracná správa Cachování v aplikační vrstvě a/nebo na počítači s funkcí Version Control Proxy Využívá neměnnosti konkrétní verze souboru Výrazné zvýšení propustnosti na pomalých linkách Správa změn - architektura
Způsob uložení verzí “ Deltafier ” Souborová cache (App Server) SQL Server DownloadHandler UploadHandler Komprese + uložení změn ≈ 70% úspora místa! GET foo.bmp; Commit foo.bmp bar.vb
Správa změn - schopnosti Důležité inovativní vlastnosti Atomický check-in (changeset) Integrovaný check-in Paralelní vývoj Psaní do šuplíku (shelving) Migrace z: Visual Source Safe ClearCase Source Depot (v MS interně užívaný nástroj)
Changeset „Transakce“ ve stromu zdrojového kódu Proti úložišti je uplatněna nedělitelně „Všechno nebo nic“ Množinu souborů, které tvoří transakci, určuje vývojář: Výchozí stav = všechny lokálně změněné Pohodlná správa změn Obsahuje metadata (komentáře apod.) Může mít vazbu na položky ze seznamů (work items)
Integrovaný check-in Vizuální podpora pro přidání (případně vynucení) následujících ingrediencí ke každému changesetu Položky Work Items Komentář Check-in Notes (definovaná metadata) Kdo provedl revizi apod. Politiky: Provedení skupiny unit testů Provedení analýzy kódu Povinná asociace s Work Items položkou Zabránění uložení pokud je rozbitý CI build Možnost vytvoření vlastní politiky (rozšiřitelnost)
Check-in Kontrola politik 1 Policy Engine Unit Testing WI Association Static Analysis Custom Policy Provedení změn 2 V1V1 V5V5 V4V4 V5V5 V2V2 V3V3 Change Set Change Set Change Set WorkItem Aktualizace Work Items 3 Událost na straně serveru, kterou lze zachytit Vazba Notifikace em 4 Workspace Integrační infrastruktura Správa verzí Položky Work Items Integrovaný check-in
Paralelní vývoj Současný vývoj více verzí softwaru, např.: Úpravy stávající verze a zároveň vývoj nové verze Vývoj hotfixu na stávající verzi Branching Vytvoření logického klonu větve stromu kódu Nezměněné soubory existují v úložišti pouze jednou Merging Sloučení změn provedených od okamžiku oddělení větví Přidání, smazání, přejmenování, modifikace apod. Je možné provést kompletní sloučení anebo pouze sloučit změny z vybraného changesetu
Psaní do šuplíku (shelving) Pojmenované uložení změn na server Formálně nejde o check-in Volitelně je možné se vrátit k původním verzím Soubory lze ze „šuplíku“ vyjmout a případně sloučit s existujícími změnami Některé scénáře: Nutnost přerušení práce Uložení aktuálního stavu („checkpoint“) Přesun nedokončené práce na jiného člena týmu Revize kódu jiným členem týmu před provedením check-inu
Visual Studio 2005 Solution Explorer, Source Control Explorer, Pending Changes Team Foundation Server Vazba mezi změnou a položkou Work Item během check-in procesu (možné vynucení) Správa z příkazové řádky MSSCCI klient Visual Studio.NET 2002/2003, VB6, VC++6,... Unix, Linux, Eclipse,... – produkty třetích stran Správa změn - integrace
Integrovaný check-in Source Control Explorer Psaní do šuplíku (shelving) Zobrazení a sloučení změn
Agenda Architektura produktu Řízení projektu (work items) Správa změn (kódu) Automatizovaný build Projektový portál Reportování
K čemu je denní build ”Denní build je srdce projektu. Pokud srdce netepe, projekt má velký problém.“ Měl by být plně automatický Neexistuje omluva, pokud chybí – čím složitější projekt, tím více ho potřebuje Stav projektu je daleko více transparentní: Omezení možnosti nepříjemných překvapení V každou chvíli je k dispozici produkt s nějakou funkčností Projekt je pomocí buildu průběžně měřen
Build – architektura Fronta úloh (buildů) s různou prioritou, jsou přidělovány build agentům (serverům) Paleta možností pro zařazení do fronty: Na vyžádání Podle časového plánu Reakce na check-in (okamžitě nebo „rolling“) – umožňuje tzv. kontinuální integraci (continuous integration, CI) Vše dostupné přes SOAP a.NET objekty Build agent používá WCF pro komunikaci s TFS: Mnohem flexibilnější konfigurace (např. bezpečnost) Build agent může být též spuštěn jako příkazová řádka v interaktivním desktopu: Umožňuje automatické testy uživatelského rozhraní
TF Client Team Build Client Team Build Store Build Server Source Control Build Configuration files - MSBuild Scripts MSBuild Scripts and targets Build sources and scripts Build Events Build events Build request and Reports Team Build Service Team Build logger Build and Test data Build start/stop Work item Tracking Open and Update bugs Build Drop site TFS Data Tier TF Warehouse Static Analysis & Testing TFS
Kontinuální integrace ClientClient Check-in Action App Tier Team Foundation Version Control Team Foundation Build Check-in Event Build Agent Team Foundation Build Service MSBuild Logger Data Tier Build Database CI (Orcas) Query workspace mappings Intersects check-in path? Exit No Yes Queue new build for each affected definition
Klíčové vlastnosti I. Používá MSBuild engine z.NET Frameworku 2.0 Build probíhá stejně ve Visual Studiu, v Team Foundation Serveru i příkazové řádce Více možných typů a konfigurací buildu Spuštění na vyžádání, periodicky, na základě změn v kódu Přerušený build pokračuje za posledním dokončeným krokem Speciální úlohy v krabici TFS (code churn výpočet aj.)
Klíčové vlastnosti II. Poskytuje klíčové metriky pro průběh projektu: Výsledky testů a jejich pokrytí kódu (code coverage) Statická analýza kódu Změny v kódu (code churn) Udržování vazeb na changesety a položky Work Items Uložení v SQL databázi umožňuje sledování historie a trendů Rozšiřitelnost Možnost vytváření vlastních úloh (build task) Možnost definice posloupnosti a parametrů úloh (.targets)
Typická posloupnost kroků Iniciace službou TFS Příprava počítače, generování ID buildu Synchr. zdrojových kódů Výpočet množství změn Generování reportu Opublikování Aktualizace work items položek Výpočet pokrytí kódu unit testy Kompilace, statická analýza Provedení unit testů
Build – interakce s uživatelem Správa buildů: Editor pro vytvoření/modifikaci vlastností buildu Definice buildu se nadále vytváří jednorázově Nastavení politiky pro automatické mazání starých buildů Správa fronty buildů: Stop, Postpone, Cancel, Set Priority, Delete Správa build agentů (serverů) Testy při buildu je možné spouštět na základě: Příslušnosti v seznamu Test Listů Příslušnosti v konkrétní knihovně (nové ve VS 2008) Politika pro check-in při použití CI: Není možné zanášet změny, pokud je build rozbitý
Základní operace s buildem: VytvořeníSpuštění Zobrazení výsledku Integrace s ostatními komponentami Unit Testing Work Items (bug) Integrovaný check-in
Agenda Architektura produktu Řízení projektu (work items) Správa změn (kódu) Automatizovaný build Projektový portál Reportování
Výhody portálu Usnadňuje komunikaci v týmech Specifikace, diskuse, oznámení,... Verzované knihovny dokumentů Šablony důležitých artefaktů projektu Snadný přístup k reportům Integrovaná metodologie... (cokoliv si sami doplníte) Vhodné pro managery a jiné netechnické uživatele (nevyžaduje TFS CAL)
Projektový portál - technologie Microsoft® Windows® SharePoint® Services (WSS) Site pro každý projekt Možnosti a rozšiřitelnost WSS jsou plně zachovány, např.: Přidávání vlastních web partů Správa dokumentů (schvalování, verzování) Správa seznamů („jednotabulkové databáze“ - oznámení, odkazy, úkoly, kalendář, kontakty,...) Vlastní knihovny dokumentů, typy seznamů, šablony, InfoPath formuláře,...
Projektový portál: Přístup z prohlížeče Možnosti WSS Integrace s Visual Studiem Team edicemi
Agenda Architektura produktu Řízení projektu (work items) Správa změn (kódu) Automatizovaný build Projektový portál Reportování
Reporty Historické i aktuální sumární informace z podsystémů TFS jsou udržovány v datovém skladu Detailní informace lze získat z operačních databází jednotlivých podsystémů Předdefinované reporty jsou součástí šablony metodologie Možnost modifikace přímo v šabloně anebo pro konkrétní týmový projekt Používá SQL Server Reporting Services Možnosti – definice RDL ve Visual Studiu, export do různých formátů, Report Builder, předplatné reportů, web party pro reporty apod.
Datový sklad Work Item Tracking SQL Server ReportingServices Source Code Control Work Item Adapter Source Code Adapter Partner Tool A Add-onAdapter Reporting Warehouse Object Model Excel CustomReporting BuildDatabase Test/BuildAdapter
Integrované reporty * ******** * * * * ProjectStructureProjectStructureIterationStructureIterationStructure WorkItemWorkItem LabelLabelVersionedItemVersionedItem LatestItemVersionLatestItemVersionChangesetChangeset BuildBuildTestResultTestResult
Příklad reportu
Reportování Identifikace komponent Přístup k reportům Příklady reportů
Doporučená literatura =
Závěrem Team Foundation Server povyšuje práci v týmech na novou úroveň: Zvyšuje produktivitu práce v týmu Zvyšuje předvídatelnost vývoje projektu Pilíře produktu: ProduktivitaIntegraceRozšiřitelnostInovace Dlouhodobý přístup