VS 2012 – novinky pro vývojáře Michael Juřek, Architect Evangelist Twitter hashtag: #cztechdays.
Download
Report
Transcript 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í