VS 2012 – novinky pro vývojáře Michael Juřek, Architect Evangelist Twitter hashtag: #cztechdays.
Download ReportTranscript VS 2012 – novinky pro vývojáře Michael Juřek, Architect Evangelist Twitter hashtag: #cztechdays.
VS 2012 – novinky pro vývojáře Michael Juřek, Architect Evangelist Twitter hashtag: #cztechdays V jednoduchosti je krása Čistší design – méně barev, méně bižuterie, čisté tvary http://blogs.msdn.com/b/visualstudio/archive/2012/02/23/introducing-the-new-developer-experience.aspx Zjednodušené panely nástrojů = více místa pro kód Na základě telemetrických měření ve VS2010 Kdo někdy kopíroval kód pomocí tlačítek Copy/Paste? Nové okno Solution Exploreru s více funkcemi Hledání všude: Menu, nalezené chyby, solution explorer, reference, … Lepší práce s otevřenými soubory – pinování, preview, … Slyšeli jsme… Team Explorer je se svojí stromovou strukturou příliš nepřehledný Je obtížné najít to, co hledám Neposkytuje vodítko pro pracovní postupy Je snadné se ztratit, např. založit pracovní položku v jiném týmovém projektu Není podpora pro paralelní práci na více úlohách: Shelveset řeší jenom část problému Nové uživatelské rozhraní Orientované na úlohu a kontext Vždy pracuji s jediným týmovým projektem Vylepšená uživatelská zkušenost: Nemodální, asynchronní, „líné“ provádění akcí Domovská stránka projektu jako rozcestník My Work jako kompas Specializované stránky pro každý subsystém: Zdrojové kódy, pracovní položky, buildy, reporty dokumenty Fulltextové hledání v pracovních položkách Funkce přepínání kontextu Vybudována nad funkčností Shelve/Unshelve Umožňuje: Dočasně sbalit a odsunout nedodělanou práci Uložit aktuální nastavení prostředí Udělat jinou práci (např. opravit urgentní chybu) Obnovit předchozí kontext (změny jsou automaticky sloučeny) Pokračovat v předchozí práci Najděte 12 rozdílů … Slyšeli jsme… Existující nástroj pro porovnávání a slučování verzí je zastaralý Existující nástroj postrádá integraci do prostředí Jediný způsob vizualizace nevyhovuje všem lidem a všem situacím Musíme kupovat nástroje třetích stran Množství konfliktů při paralelním vývoji je příliš velké Nový rozdílový nástroj Integrovaný do prostředí Visual Studia Různé typy pohledů na kód Vertikální/horizontální rozdělení Integrace okna do Visual Studia: IntelliSense, zvýrazňování syntaxe, Undo, … Navíc: zlepšená inteligence při řešení konfliktů Větší procento konfliktů vyřešeno automaticky Slyšeli jsme… Subversion funguje lépe v offline režimu Neotravuje s chybovými hlášeními Mohu vidět poslední verzi a porovnat se s ní Mohu zrušit změny a vrátit se zpět TFS nefunguje ideálně v offline režimu Nepraktické přepínání online/offline Obtěžující read-only atributy souborů TFS se obtížně používá s neintegrovanými nástroji (např. TFS nezjistí vymazání souboru ve Windows Exploreru) Realita je složitější Subversion nefunguje lépe, ale funguje jinak TFS 2010 používá přístup Checkout-Modify-Commit Subversion používá princip Modify-Merge-Commit Modify/Merge/Commit nabízí větší flexibilitu… Snazší použití, zejména pro začátečníky Velmi dobrá offline zkušenost … výměnou za horší kontrolu Nelze sledovat kdo co dělá Lze zahájit operaci, kterou nepůjde dokončit (např. existuje zámek) Větší potenciál vzniku konfliktů Neškáluje dobře s velmi velkou bází souborů Možnost volby v TFS 2012 Local workspace (styl Subversion) Výborná funkce v offline režimu Komfortní a pohodlná práce Server workspace (styl TFS 2010) Extrémní škálovatelnost Dokonalá kontrola V obou případech nižší počet konfliktů a problémů Automaticky slučitelné změny sloučeny bez potvrzení Vylepšený algoritmus detekce změn Slyšeli jsme… Unit testy jsou doporučenou praktikou napříč všemi moderními metodikami - pomáhají vývojářům, pomáhají kvalitě produktu Neměly by být vnímány jako „práce navíc“, ale… Unit testy ve VS jsou pomalé Uživatelské rozhraní není dobré Zaměřeno spíše na testery než na vývojáře Podpora ve VS pouze pro MSTest, co ostatní frameworky? Chceme unit testy i pro nativní kód Chcecme „oficiální“ mockovací framework od MS Nová architektura Unit testy s menší režií Nezávislé na testovacím frameworku: MSTest pro managed kód (C#, VB.NET) Možnost pro třetí strany – adaptéry (NUnit apod.) Kontinuální testování na pozadí po úspěšném buildu Redukce a přepracování uživatelského rozhraní: Unit Test Explorer – rychlé, přehledné UI zaměřené na vývojáře Code Coverage Results (nově i pro nativní kód) Integrovaný mockovací framework Fakes (dříve Moles) Neslyšeli jsme, ale víme… Ideální kód: Využívá návrhové vzory Neobsahuje duplicity Každá chyba se v něm vyskytuje pouze jednou … neexistuje Reálný kód: Množení chyb metodou Copy/Paste Code Clone Hledá sémanticky (nikoliv pouze textově) podobné bloky kódu Nalezení duplicitního kódu v řešení Ideální cíle pro refactoring Při nalezení problému najde podobné bloky kódu Eliminace chyb namnožených kopírováním Závěrem Zajistěte si nové Visual Studio formou existující MSDN subskripce: Zjednodušené UI orientované na úlohy Porovnávání verzí, slučování změn Přerušení práce Vývoj v offline režimu Analýza kódu Revize kódu Code Clone VS 2012 – novinky pro správu životního cyklu aplikací Michael Juřek Software Architect Microsoft s.r.o. Twitter hashtag: #cztechdays Vize pro ALM Vytvořit moderní ALM prostředí, na principech: Spolupráce pomocí integrace zahrnující všechny role během celého životního cyklu Rychlá, jasná a užitečná zpětná vazba, která minimalizuje plýtvání časem lidí Přirozený nástroj pro každou roli (IDE, Office, prohlížeč, speciální nástroje) Transparentní agilní procesy a techniky Vysvětlivky: ALM = Application Lifecycle Management Agilní vývoj a VS/TFS Netlačíme vás do žádné konkrétní metodiky Naše nástroje se řídí jednoduchými principy Přirozený nástroj pro každého člena týmu (Visual Studio, Excel, Project) Minimálizace ne-pracovních aktivit (režie) Nástroje pro osvědčené agilní techniky (např. kontinuální integrace) Inovace v oblastech způsobujících největší ztrátu produktivity Vývoj Nepochopení požadavků Provoz Chybí zpětná vazba Nelze reprodukovat problém Konflikt zájmů a priorit Nelze zjistit příčinu Iterace Dezorientace Kvalita kódu Monitorování Agenda • • • • • • Storyboarding Agilní plánování a týmy Zlepšení kvality kódu Agilní testování Získání zpětné vazby Diagnostika v produkčním prostředí Rychlá a agilní analýza Dosavadní používané prostředky: Popis ve Wordu – málo čitelný, neposiluje představivost, obtížná zpětná vazba Modelování, UML – proprietární nástroje; precizní, ale těžko srozumitelné „A picture says a thousand words“ Hledáme přirozený nástroj pro: Prototypování – rychlé, agilní, věrné, vizuální Umožňující snadnou a okamžitou zpětnou vazbu Bez nutnosti učit se něco úplně nového … a ten nástroj je … … PowerPoint. Cože??? Proč ne??? Vše potřebné víceméně umí Grafika, seskupování, kreslení, revize, kontrola pravopisu, screenshoty, animace, prezentace, anotace, vložení libovolného obsahu Je dostupný – otevře ho každý, zná ho každý Tisk, odeslání mailem, integrace se SharePointem, zobrazení v prohlížeči, paralelní editace, verzování, … Master slidy pro znovupoužití vzhledu Vlastní knihovny tvarů specifických pro vývoj Integrace s TFS pro zapojení do životního cyklu Agenda • • • • • • Storyboarding Agilní plánování a týmy Zlepšení kvality kódu Agilní testování Získání zpětné vazby Diagnostika v produkčním prostředí Problém Tradiční plánování v softwarových projektech často selhává Reakcí je velký nástup agilních přístupů TFS má kvalitní úložiště, ale chybí mu moderní nástroje pro agilní plánování Excelové sešity nejsou ideální Existují řešení od třetích stran Agilní plánování a řízení Nové webové rozhraní pro TFS Moderní, rychlé, přístupné z libovolného zařízení Excel/Project stále preferován pro hromadnou editaci Explicitní definice iterace – datum od/do Možnost definice týmů Tým je definován oblastmi týmového projektu Ve velkých projektech více týmů Podpora plánování nezávislá na použité metodice Plánování produktu – rozdělení práce do iterací Plánování iterace – rozdělení práce lidem Řízení iterace – sledování postupu, dynamické změny Vizualizace aktuálního stavu pomocí task boardu Plánování produktu Product Backlog Priorita 3 8 5 3 8 1 5 Rozdělení do iterací Product Backlog 5 8 5 Sprint Backlog Plánování iterace Product Backlog Sprint Backlog Řízení iterace Product Backlog Sprint Backlog Agenda • • • • • • Storyboarding Agilní plánování a týmy Zlepšení kvality kódu Agilní testování Získání zpětné vazby Diagnostika v produkčním prostředí Slyšeli jsme… Typický postup: 1. Zapnu analýzu kódu – všechna pravidla 2. Analyzuji svoje 10 let vyvíjené řešení 3. Vypadne 20.000 porušení 4. Vypnu analýzu kódu Statická analýza kódu (managed i C++) vypadá dobře, ale nepoužíváme ji Není snadné ji nastavit a udržet centrálně Výsledků je příliš mnoho Výsledky nejsou pochopitelné a nevedou k akci Analýza kódu je užitečná Systematicky hledá problémy v kódu již při kompilaci, doplňuje tradiční testování Vylepšení ve VS 2012: Hromadné nastavení pro celé řešení Nové okno pro analýzu, rychlý náhled, akce Prioritizace pomocí filtrování a textové hledání Rozšířená pravidla, přesnější výsledky Nenechte se zahltit !!! Začněte s malou sadou pravidel, postupně přidávejte další pravidla Udělejte analýzu kódu součástí vašich automatických buildů Revize kódu Plná integrace do prostředí a procesu Bez nutnosti vlastních nástrojů anebo řešení třetích stran Možnost použití ad hoc anebo jako systematický prostředek pro vyšší kvalitu kódu Přirozené předávání řízení procesu a komunikace Flexibilní náhled na kód integrovaný do prostředí: Více možných pohledů Syntax highlighting Podpora pro komentáře ke konkrétním řádkům … Agenda • • • • • • Storyboarding Agilní plánování a týmy Zlepšení kvality kódu Agilní testování Získání zpětné vazby Diagnostika v produkčním prostředí Agilní testování Akceptační testování provádí nějakou formou prakticky všechny týmy TFS 2010 podporuje formální strukturované testování Agilnější neformální testování (exploratory testing) není v TFS 2010 dobře podporováno Akceptační testy s menší režií Podpora pro oba styly testování v TFS 2012 Strukturovaný – s formálně definovanými testovacími případy, plány, konfiguracemi Nestrukturovaný – procházení hotové funkčnosti a hledání slabých míst (exploratory testing) Výhody pro oba styly testování: Sdílení kontextu chyby mezi vývojářem a testerem Automatizace rutinní činnosti testera Měřitelnost kvality a testovacího úsilí Testovací prostředí s menší režií Standard environment – snadnost použití: Fyzické počítače anebo virtuály Žádná konfigurace TFS, žádné prerekvizity Schopnosti: Automatická instalace agenta do prostředí Možnost spuštění libovolného skriptu Možnost spuštění automatizovaných testů SCVMM environment – maximální možnosti: HyperV virtuály řízené Virtual Machine Managerem (SCVMM) Schopnosti navíc: Spuštění, zastavení Klonování, současný běh více instancí (network isolation) Snapshoty Agenda • • • • • • Storyboarding Agilní plánování a týmy Zlepšení kvality kódu Agilní testování Získání zpětné vazby Diagnostika v produkčním prostředí Vytváříme správnou věc? Velmi často vytváříme věci, které si myslíme, že zadavatel chce Ne ty, které skutečně chce Příčinou jsou špatně komunikované požadavky Zpětná vazba často zcela chybí nebo je nahodilá Nad poskytnutou zpětnou vazbou není efektivní proces Nástroj pro zpětnou vazbu Okamžitá a přehledná zpětná vazba Rychlé odhalení funkčních problémů aplikace Minimální režie: Textové komentáře Snímky částí obrazovky Videozáznam Audio komentář Řízené workflow nad zpětnou vazbou Jsou to pracovní položky Email pro komunikaci Agenda • • • • • • Storyboarding Agilní plánování a týmy Zlepšení kvality kódu Agilní testování Získání zpětné vazby Diagnostika v produkčním prostředí Problém Vývojáři nemají přístup do produkčního prostředí Simulace produkčního prostředí je prakticky nemožná Diagnostika pomocí logování vyžaduje odstávku nebo nasazení nové verze V každém případě to znamená restart aplikace, čímž může problém vymizet Diagnostiku není možné spustit v okamžiku objevení problému Historické ladění v produkci Nevyžaduje žádnou instalaci na produkční server (stačí „přinést USB klíč“) Potřebné binární soubory pro IntelliTrace Nastavení sbíraných událostí ve formě XML souboru PowerShell pro skriptování sběru, dávkové soubory, … Nevyžaduje restart procesu aplikace Analýza ve Visual Studiu: Vyžaduje Source Server a Symbol Server, obojí je součástí TFS, je triviální na nastavení a je užitečné i v dalších scénářích Status kódy HTTP požadavků, výjimky, zvolené události (ADO.NET, ASP.NET, …), zásobník, hodnoty proměnných Do budoucna – integrace s Operations Managerem (SCOM) Závěrem Zajistěte si nové Visual Studio formou existující MSDN subskripce: • Storyboarding • Agilní plánování a týmy • Zlepšení kvality kódu • Agilní testování • Získání zpětné vazby • Diagnostika v produkčním prostředí