Date post: | 01-Jan-2016 |
Category: |
Documents |
Upload: | lila-hendrix |
View: | 39 times |
Download: | 2 times |
Jak Microsoft dJak Microsoft dělá software?ělá software?
Michael JuřekMichael Juřek
Software ArchitectSoftware Architect
Microsoft s.r.o.Microsoft s.r.o.
[email protected]@microsoft.com
AgendaAgenda
V čem je MS stejný a v čem jiný?V čem je MS stejný a v čem jiný?
Prostředí, firemní kultura, ...Prostředí, firemní kultura, ...
Týmy Týmy
Procesy Procesy
NástrojeNástroje
V čem je MS stejný?V čem je MS stejný?Stejné problémyStejné problémy
Predikce postupuPredikce postupu
Odhad (a dodržení) nákladů a termínůOdhad (a dodržení) nákladů a termínů
(Ne)koordinovanost lidí(Ne)koordinovanost lidí
Vnitřní boje a rivalita skupinVnitřní boje a rivalita skupin
Špatná komunikaceŠpatná komunikace
Neodhalení rizik včasNeodhalení rizik včas
V čem je MS jiný?V čem je MS jiný?Jiná dimenzeJiná dimenze
Množství lidíMnožství lidí
Množství produktůMnožství produktů (-> z (-> závislostí)ávislostí)
Velikost spravovaného kóduVelikost spravovaného kódu
Větší specializace lidíVětší specializace lidí
Množství jazyků a nástrojůMnožství jazyků a nástrojů
HistorickHistorická číslaá čísla
0
5000
10000
15000
20000
25000
30000
35000
40000
45000
50000
55000
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
Employees Engineers
Velikost týmůVelikost týmůIBM DOS 1981IBM DOS 1981
Omluvte prosOmluvte prosím nekvalitní reprodukci z knihy.ím nekvalitní reprodukci z knihy.
Velikost týmůVelikost týmůWindows 3.0 a Windows 95Windows 3.0 a Windows 95
Omluvte prosOmluvte prosím nekvalitní reprodukci z knihy.ím nekvalitní reprodukci z knihy.
Velikost týmůVelikost týmůWindows 2000Windows 2000
Omluvte prosOmluvte prosím nekvalitní reprodukci z knihy.ím nekvalitní reprodukci z knihy.
... a ještě druhá polovina... a ještě druhá polovinaWindows 2000 – 5325 lidíWindows 2000 – 5325 lidí
Omluvte prosOmluvte prosím nekvalitní reprodukci z knihy.ím nekvalitní reprodukci z knihy.
AgendaAgenda
V čem je MS stejný a v čem jiný?V čem je MS stejný a v čem jiný?
Prostředí, firemní kultura, ...Prostředí, firemní kultura, ...
Týmy Týmy
Procesy Procesy
NástrojeNástroje
Multinárodní firmaMultinárodní firmaVVývoj silně koncentrován:ývoj silně koncentrován:
Redmond Campus poblíž SeattluRedmond Campus poblíž Seattlu
Vývoj některých technologií i v jiných Vývoj některých technologií i v jiných lokalitách:lokalitách:
Různá místa v USA (často pozůstatky Různá místa v USA (často pozůstatky akvizic)akvizic)
Indie, Čína– levná pracovní sílaIndie, Čína– levná pracovní síla
Dánsko – ex-NavisionDánsko – ex-Navision
Izrael – některé bezpečnostní technologieIzrael – některé bezpečnostní technologie
MS Research – Cambridge, Japonsko, ...MS Research – Cambridge, Japonsko, ...
Redmond, WA, USARedmond, WA, USA
Firemní kulturaFiremní kulturaKaždý vývojář má nárok na svoji místnostKaždý vývojář má nárok na svoji místnost
Rozměry neřešme Rozměry neřešme
Cola Cola & pop-corn& pop-corn
Tisíce třípísmenných zkratekTisíce třípísmenných zkratek
Slang:Slang:Dog fooding – sDog fooding – sám používám nehotový ám používám nehotový produktprodukt
Death march – dokončování produktuDeath march – dokončování produktu
War room – tým rozhodující o prohlášení War room – tým rozhodující o prohlášení produktu za hotovýproduktu za hotový
......
AgendaAgenda
V čem je MS stejný a v čem jiný?V čem je MS stejný a v čem jiný?
Prostředí, firemní kultura, ...Prostředí, firemní kultura, ...
TýmyTýmy
ProcesyProcesy
NástrojeNástroje
(De)centralizace(De)centralizaceRozdělení do 4 velkých divizíRozdělení do 4 velkých divizí
Produktové týmy uvnitř divizí jsou Produktové týmy uvnitř divizí jsou relativně nezávislérelativně nezávislé
Koordinace/spolupráce je úkolem týmů, Koordinace/spolupráce je úkolem týmů, senior management ji kontroluje, ale senior management ji kontroluje, ale neřídíneřídí
Principy MSF a infrastruktura ve Principy MSF a infrastruktura ve vývojovém procesu jsou povinné:vývojovém procesu jsou povinné:
V jejich implementaci je značná míra volnostiV jejich implementaci je značná míra volnosti
Organizace týmuOrganizace týmuProdukty vytváří produktové jednotky Produkty vytváří produktové jednotky “Product Units”“Product Units”
Obsahují 3 hlavní disciplínyObsahují 3 hlavní disciplíny (Dev, Test, PM) (Dev, Test, PM)Řídí jeŘídí je “Product Unit Manager” “Product Unit Manager”Velikost cca 30-200 lidíVelikost cca 30-200 lidí
Program Management (PM)Program Management (PM)Zodpovědnost za definici produktu, její dodržení Zodpovědnost za definici produktu, její dodržení a koordinacia koordinaci
Development (Dev)Development (Dev)Zodpovědnost za implementaci produktuZodpovědnost za implementaci produktu
TestTestZodpovědný za testování a zajištění kvalityZodpovědný za testování a zajištění kvality
Organizační strukturaOrganizační struktura
Product LineManager
Core EngineeringManager
PUManager #1
PUManager #2
DevelopmentManager
TestManager
Group ProgramManager
DevelopmentManager
TestManager
Group ProgramManager
PUManager #3
DevelopmentManager
TestManager
Group ProgramManager
DevelopmentManager
TestManager
Group ProgramManager
AgendaAgenda
V čem je MS stejný a v čem jiný?V čem je MS stejný a v čem jiný?
Prostředí, firemní kultura, ...Prostředí, firemní kultura, ...
Týmy Týmy
ProcesyProcesy
NástrojeNástroje
První krokyPrvní krokyShromáždění požadavků (marketing, Shromáždění požadavků (marketing, Product Manager)Product Manager)
Definice vize – schválena senior vedenímDefinice vize – schválena senior vedením
Široký tým upřesní vizi a definuje hlavní Široký tým upřesní vizi a definuje hlavní témata produktu, stanoví rámcová datatémata produktu, stanoví rámcová data..
Produktová jednotka pak provede detailní Produktová jednotka pak provede detailní plánování produktu:plánování produktu:
PersónyPersóny
ScénářeScénáře
TermínyTermíny
PersPersóónny (personas)y (personas)
V kontextu vývoje zastupuje uživatele V kontextu vývoje zastupuje uživatele anebo jejich skupinu (podobné „actor“)anebo jejich skupinu (podobné „actor“)
Persona není abstraktní a neosobní Persona není abstraktní a neosobní „actor“, je to fiktivní, ale konkrétní osoba„actor“, je to fiktivní, ale konkrétní osoba
Popisuje se její chování, návyky, motivace Popisuje se její chování, návyky, motivace apod., je možné ji ztotožnit s konkrétním apod., je možné ji ztotožnit s konkrétním člověkemčlověkem
Používá se ke stanovení cílů (a z nich pak Používá se ke stanovení cílů (a z nich pak scénářů)scénářů)
ScénářeScénářePersónám se přiřadí konkrétní scénáře Persónám se přiřadí konkrétní scénáře na základě analýzy zpětné vazby od na základě analýzy zpětné vazby od vybraných zákazníků, vývoje trhu, ...vybraných zákazníků, vývoje trhu, ...
Scénář se rozpadá na menší části – rysy Scénář se rozpadá na menší části – rysy („features“)(„features“)
Jednotlivé rysy se ohodnotí:Jednotlivé rysy se ohodnotí:Např. pracnost, složitost, důležitost, míra Např. pracnost, složitost, důležitost, míra rizika na tříbodové stupnicirizika na tříbodové stupnici
Tyto údaje slouží k upřesnění termínů a v Tyto údaje slouží k upřesnění termínů a v případě termínových tlaků jsou případě termínových tlaků jsou rozhodující o případné redukci rysůrozhodující o případné redukci rysů
MilníkMilník = = jednotka postupu v projektujednotka postupu v projektuCílCíl: : Flexibilní plánování, sledování, stabilizace a zpětná vazbaFlexibilní plánování, sledování, stabilizace a zpětná vazba
Typický postup milníkůTypický postup milníků: M0, M1, M2, Mx…, Beta1, Beta2, RTM: M0, M1, M2, Mx…, Beta1, Beta2, RTM
Umožňují měření postupu a zbývající vzdálenostiUmožňují měření postupu a zbývající vzdálenosti
Rysy jsou přiřazeny jednotlivým milníkům podle Rysy jsou přiřazeny jednotlivým milníkům podle definovaných pravidel (priorita, složitost, ...)definovaných pravidel (priorita, složitost, ...)
Umožňuje flexibilní plánování mezi jednotlivými milníky, Umožňuje flexibilní plánování mezi jednotlivými milníky, eventuální redukci rozsahu rysůeventuální redukci rozsahu rysů
Milník je dosažen, pokud jsou splněna jeho kvantitativní Milník je dosažen, pokud jsou splněna jeho kvantitativní i kvalitativní kritériai kvalitativní kritéria
Zaručuje, že se nepostupuje vpřed příliš rychle bez koordinaceZaručuje, že se nepostupuje vpřed příliš rychle bez koordinace
Zaručuje relativně stabilní produkt na konci milníkuZaručuje relativně stabilní produkt na konci milníku
Dosažení milníku je vždy explicitně ohlášeno a spojeno s verzí Dosažení milníku je vždy explicitně ohlášeno a spojeno s verzí produktuproduktu
Plánování milníkůPlánování milníků
Matice kompromisůMatice kompromisůPočáteční režim:Počáteční režim:
Fixní zdroje, zvolíme rozsah, přizpůsobíme Fixní zdroje, zvolíme rozsah, přizpůsobíme termíntermín
V dalších fázích projektu:V dalších fázích projektu:Fixní zdroje, zvolíme termín, přizpůsobíme Fixní zdroje, zvolíme termín, přizpůsobíme rozsahrozsah
Pozor na Beta zákazníkyPozor na Beta zákazníky
Pouze v mimořádných případech:Pouze v mimořádných případech:Fixní termín, zvolíme rozsah, přizpůsobíme Fixní termín, zvolíme rozsah, přizpůsobíme zdrojezdroje
Klíčové milníky v projektechKlíčové milníky v projektech
Milník/FázeMilník/Fáze DefiniceDefinice
Spec CompleteSpec Complete Scénáře a rysy jsou definovány a prošly revizíScénáře a rysy jsou definovány a prošly revizí
Feature CodingFeature Coding Typicky 8-9 týdnů – implementační práceTypicky 8-9 týdnů – implementační práce
Code Complete (CC)Code Complete (CC) Všechny rysy pro daný milník jsou implementoványVšechny rysy pro daný milník jsou implementovány
Test Plan Complete Test Plan Complete Testovací plány pro všechny rysy jsou hotové a prošly revizíTestovací plány pro všechny rysy jsou hotové a prošly revizí
Test Case Code CompleteTest Case Code Complete Všechny testy jsou hotovéVšechny testy jsou hotové
ZBB Test Pass (ZBB TP)ZBB Test Pass (ZBB TP) Všechny funkční testy běží na současném builduVšechny funkční testy běží na současném buildu
Zero Bug Bounce (ZBB)Zero Bug Bounce (ZBB) # # chyb pro danou iteraci starších než chyb pro danou iteraci starších než 48 ho48 hodindin = 0 = 0
Zero Resolved Bugs (ZRB)Zero Resolved Bugs (ZRB) # # počet vyřešených, ale neuzavřených chybpočet vyřešených, ale neuzavřených chyb = 0 = 0
Test Sign-OffTest Sign-Off Finální verifikace a uvolnění kódu širšímu publikuFinální verifikace a uvolnění kódu širšímu publiku
M0,M1, ... (Milestone) - prototypováníM0,M1, ... (Milestone) - prototypováníIDW (Internal Developer Workstation) – k IDW (Internal Developer Workstation) – k dispozici dalším skupinám uvnitř MSdispozici dalším skupinám uvnitř MSTAP (Technology Adoption Program) – k dispozici TAP (Technology Adoption Program) – k dispozici vybraným zákazníkůmvybraným zákazníkůmBeta, CTP (Community Technology Preview) – k Beta, CTP (Community Technology Preview) – k dispozici široké veřejnosti nebo jenom MSDN dispozici široké veřejnosti nebo jenom MSDN předplatitelům nebo zaregistrovaným testerůmpředplatitelům nebo zaregistrovaným testerůmRC (Release Candidate) – v podstatě hotový RC (Release Candidate) – v podstatě hotový produkt, který ještě neprošel finálními testyprodukt, který ještě neprošel finálními testyEscrow – produkt, který je později prohlášen za Escrow – produkt, který je později prohlášen za finální, pokud se nevyskytne mimořádně závažný finální, pokud se nevyskytne mimořádně závažný problémproblémRTM (Ready To Manufacturing) – hotový produktRTM (Ready To Manufacturing) – hotový produkt
Jména iteracíJména iterací
Vývoj – uložení kóduVývoj – uložení kóduCílem je efektivní, čistý, dobře faktorizovaný a Cílem je efektivní, čistý, dobře faktorizovaný a udržovatelný kódudržovatelný kód
Hotový kód musí mít minimální životnost 10 let po Hotový kód musí mít minimální životnost 10 let po dobu garantované podporydobu garantované podpory
Dokumentace uložena externě mimo zdrojový Dokumentace uložena externě mimo zdrojový kódkód
Aby nedocházelo ke kolizím vývojářů a Aby nedocházelo ke kolizím vývojářů a dokumentaristůdokumentaristů
Všechny řetězce jsou zásadně uloženy mimo Všechny řetězce jsou zásadně uloženy mimo zdrojový kódzdrojový kód
Lokalizace prováděna v Irsku a JaponskuLokalizace prováděna v Irsku a Japonsku
Např.Např. .NET Framework .NET Framework lokalizován dolokalizován do 34 34 jazyků, jazyků, Visual Studio do 8 jazykůVisual Studio do 8 jazyků
Vývoj – větve kóduVývoj – větve kóduUdržuje se jediný strom kódu pro celou produktovou Udržuje se jediný strom kódu pro celou produktovou řaduřadu
Např. je možné jedním příkazem provést Např. je možné jedním příkazem provést “build -c” “build -c” a provést a provést kompletní kompilacikompletní kompilaci CLR, ASP.NET, .NET FX, Visual Studio a CLR, ASP.NET, .NET FX, Visual Studio a setup programsetup programu včetně generování médiíu včetně generování médií ( (cca 9 hodincca 9 hodin))V libovolném podadresáři je možné dát V libovolném podadresáři je možné dát “build -c” “build -c” a provést a provést rekompilaci pouze částirekompilaci pouze části
Každý tým si udržuje oddělenou privátní větev kódu:Každý tým si udržuje oddělenou privátní větev kódu:Interní systém SourceDepot optimalizovaný proInterní systém SourceDepot optimalizovaný pro branching/mergingbranching/mergingPočet check-in operací do hlavního stromu je minimalizovánPočet check-in operací do hlavního stromu je minimalizován
KaždýKaždý check-in check-in musí projít revizí jiného vývojáře v týmu musí projít revizí jiného vývojáře v týmu před uložením změn do hlavního stromupřed uložením změn do hlavního stromu..Po provedení check-in dostane každý člen týmu e-mail Po provedení check-in dostane každý člen týmu e-mail sumarizující provedené změny a opravené chybysumarizující provedené změny a opravené chyby
Vývoj - integrace kóduVývoj - integrace kóduVirtual Build Lab (VBL) Virtual Build Lab (VBL)
Interní systém kontroly zdrojového kódu Interní systém kontroly zdrojového kódu optimalizovaný pro branching/mergingoptimalizovaný pro branching/mergingUmožňuje koordinaci vývoje (např. SQL a .NET Umožňuje koordinaci vývoje (např. SQL a .NET framework)framework)
Zpětná integrace:Zpětná integrace:Kód se po dosažení milníku ve skupině přesouvá z Kód se po dosažení milníku ve skupině přesouvá z privátních větví do veřejnějších větví (eventuálně až privátních větví do veřejnějších větví (eventuálně až do hlavního úložiště kódu)do hlavního úložiště kódu)
Dopředná integrace:Dopředná integrace:Změny v kódu od ostatních skupin se přesouvají Změny v kódu od ostatních skupin se přesouvají „dolů“ do privátnějších větví„dolů“ do privátnějších větvíUmožňuje integraci doposud nezávislých změn Umožňuje integraci doposud nezávislých změn provedených jednotlivými skupinamiprovedených jednotlivými skupinamiNěkdy je nutné řešit vzájemné nekompatibility změnNěkdy je nutné řešit vzájemné nekompatibility změn
Virtual Build Lab – pohyb kóduVirtual Build Lab – pohyb kódu
Denní buildDenní buildNovýNový “build” “build” produktu je vytvářen každý den produktu je vytvářen každý den
Vynucuje disciplínu, kritické zejména na konci projektuVynucuje disciplínu, kritické zejména na konci projektu
Centrální spravované prostředí provádí build pro celou Centrální spravované prostředí provádí build pro celou divizidivizi ( (např. .NET frameworknapř. .NET framework+VS+VS 2005 2005 = 2200 lid = 2200 lidíí))
Nepřetržitý provoz 24x7Nepřetržitý provoz 24x7Každý tým má tzv.Každý tým má tzv. build facilitation developer build facilitation developeraa (BFD) (BFD) neustále neustále na telefonu, aby pomohl s případnými problémyna telefonu, aby pomohl s případnými problémy
Proces buildu na příkladu .NET frameworkuProces buildu na příkladu .NET frameworku+VS:+VS:ZahZahájení synchronizace zdrojového kóduájení synchronizace zdrojového kódu (~24:00) (~24:00)Zahájení vlastního builduZahájení vlastního buildu (~4:00) (~4:00)Build je dokončenBuild je dokončen (~1 (~133:0:000))DokončeníDokončení BVT (Build Verification Tests) BVT (Build Verification Tests) verifikace verifikace (~(~1616:00):00)Získání případných hotfixů odZískání případných hotfixů od BFD BFD koordinátora a koordinátora a inkrementální rebuild inkrementální rebuild + BVT+ BVT
Opakuje se, dokud nenOpakuje se, dokud není build úspěšnýí build úspěšný
TestTestování 1/2ování 1/2V Test týmů jsou vývojáři zodpovědní za navržení V Test týmů jsou vývojáři zodpovědní za navržení testovacího plánu, vývoj automatických testů a testovacího plánu, vývoj automatických testů a provoz testovací infrastrukturyprovoz testovací infrastrukturyDůraz na kvalitu a obranu před regresními Důraz na kvalitu a obranu před regresními chybami, rychlou analýzu a porovnání buildůchybami, rychlou analýzu a porovnání buildůPříklad - .NET framework 2.0 Příklad - .NET framework 2.0 + VS 2005:+ VS 2005:
10,339,207 10,339,207 funkčních testůfunkčních testů~9000 ~9000 serverů v testovací laboratoři ke spouštění testůserverů v testovací laboratoři ke spouštění testůÚplné provedení všech testů trvá 21 dníÚplné provedení všech testů trvá 21 dní
Interní systém správy testů dovoluje:Interní systém správy testů dovoluje:Vytvářet, měnit, analyzovat testovací případy a scénářeVytvářet, měnit, analyzovat testovací případy a scénářeVzdálený re-imaging počítačů v testovací laboratořiVzdálený re-imaging počítačů v testovací laboratořiVzdálené spuštění sady testů v testovací laboratořiVzdálené spuštění sady testů v testovací laboratoři Vzdálenou analýzu výsledků a jejich publikováníVzdálenou analýzu výsledků a jejich publikování
TestTestování 2/2ování 2/2Testovací plány jsou prvním krokemTestovací plány jsou prvním krokem
Detailní dokument popisující všechny aspekty testování a Detailní dokument popisující všechny aspekty testování a požadavky na výsledky pro každý milníkpožadavky na výsledky pro každý milník
Cílem je pokrytí alespoňCílem je pokrytí alespoň 70% 70% kódu kódu automatizovanými testyautomatizovanými testy
Některé skupiny dosahují až 85Některé skupiny dosahují až 85%%CCíl se neustále zvyšujeíl se neustále zvyšujeStoupá důraz na automatizované testy UIStoupá důraz na automatizované testy UI
Snaha odhalovat „díry“ v testováníSnaha odhalovat „díry“ v testováníKdyž je nalezena chyba, tester vždy musí vytvořit testovací Když je nalezena chyba, tester vždy musí vytvořit testovací případ, který chybu odhalí a teprve pak se chyba opravujepřípad, který chybu odhalí a teprve pak se chyba opravuje
Automatické testování pro odhalování regresních Automatické testování pro odhalování regresních chybchyb
Zhruba dochází k 1 regresi v 3-6Zhruba dochází k 1 regresi v 3-6% oprav chyb% oprav chyb
PředpPředposlednoslední krokyí krokyVelké projekty prochází jakýmsi přistávacím Velké projekty prochází jakýmsi přistávacím manévrem, nejsou ukončeny náhlemanévrem, nejsou ukončeny náhle
Jako tanker, také nemůže přistát zničehonicJako tanker, také nemůže přistát zničehonic
Klíčové krokyKlíčové kroky1.1. Uzamčení množiny rysů, zákaz jakýchkoliv Uzamčení množiny rysů, zákaz jakýchkoliv
změnzměn
2.2. Kompletní otestování k odhalení chybKompletní otestování k odhalení chyb
3.3. Snaha o dosažení nula známých chybSnaha o dosažení nula známých chyb (ZBB) (ZBB)
4.4. Opakuje se, dokud množství nově Opakuje se, dokud množství nově odhalovaných chyb není dostatečně nízké odhalovaných chyb není dostatečně nízké
5.5. Zpřísnění klasifikace chyb pro opravu v dané Zpřísnění klasifikace chyb pro opravu v dané iteraci (pouze bezpečnostní a kritické chyby)iteraci (pouze bezpečnostní a kritické chyby)
Poslední krokyPoslední krokySnaha o dosažení nulové úrovně změn v kódu (code Snaha o dosažení nulové úrovně změn v kódu (code churn)churn)Ukončení vývoje přebírá „War Team“ (WT):Ukončení vývoje přebírá „War Team“ (WT):
Tvoří ho nejzkušenější členové týmuTvoří ho nejzkušenější členové týmuZodpovědný za závěrečná rozhodnutíZodpovědný za závěrečná rozhodnutíSetkává se minimálně 1x denněSetkává se minimálně 1x denně
Tell ModeTell Mode – tým může opravovat závažné chyby a je – tým může opravovat závažné chyby a je povinen oznámit to Wpovinen oznámit to WTTAsk ModeAsk Mode – tým musí požádat WT o povolení opravy – tým musí požádat WT o povolení opravyNeustále se zpřísňují požadavky na na povolení opravy Neustále se zpřísňují požadavky na na povolení opravy („raising triage bar“)(„raising triage bar“)Produkt je uvolněn, jakmile dostatečně dlouho nebyla Produkt je uvolněn, jakmile dostatečně dlouho nebyla povolena oprava chyby („escrow“) a zároveň proběhlo povolena oprava chyby („escrow“) a zároveň proběhlo úspěšné poslední testováníúspěšné poslední testování
AgendaAgenda
V čem je MS stejný a v čem jiný?V čem je MS stejný a v čem jiný?
Prostředí, firemní kultura, ...Prostředí, firemní kultura, ...
Týmy Týmy
ProcesyProcesy
NástrojeNástroje
Kde se používá VSTS ?Kde se používá VSTS ?VSTS bylo vyvinuto s pomocí VSTSVSTS bylo vyvinuto s pomocí VSTS
Beta 2 se vyvíjela pomocí Beta 1 apod.Beta 2 se vyvíjela pomocí Beta 1 apod.
Nový vývoj podle možností přechází na Nový vývoj podle možností přechází na VSTSVSTS
Např. SQL Server „Katmai“Např. SQL Server „Katmai“
Stávající projekty se vyvíjí stávajícími Stávající projekty se vyvíjí stávajícími nástroji (např. Windows Vista)nástroji (např. Windows Vista)
Příští verze VSTS by měla nahradit Příští verze VSTS by měla nahradit veškeré dosavadní vývojové nástroje veškeré dosavadní vývojové nástroje používané v MSpoužívané v MS
Modelovací nástrojeModelovací nástrojeModely UML pouze k vizualizaciModely UML pouze k vizualizaci a a porozumporozumění, ne ke generování kóduění, ne ke generování kódu
Nejčastějším nástrojem je VisioNejčastějším nástrojem je Visio
Class designer ve VS 2005 pro návrh Class designer ve VS 2005 pro návrh struktury .NET kódustruktury .NET kódu
Budoucnost – používání DSL jazyků pro Budoucnost – používání DSL jazyků pro specifické úlohyspecifické úlohy
Vývojové nástrojeVývojové nástroje
Vývojáři v MS používají pro vývoj Vývojáři v MS používají pro vývoj různé nástrojerůzné nástroje
Visual Studio, Emacs, VI, Source Visual Studio, Emacs, VI, Source Insight,Insight, ... ...
Nejsou povoleny žádné soubory Nejsou povoleny žádné soubory specifické pro daný nástrojspecifické pro daný nástroj
C++ a C# C++ a C# obsáhnou drtivou většinu obsáhnou drtivou většinu vývojevývoje
Kvalita kóduKvalita kóduStatická analýzaStatická analýza
Interní nástroje – FxCop (managed), PreFix, Interní nástroje – FxCop (managed), PreFix, PreFast (nativní)PreFast (nativní)
Nově zahrnuty ve VS Team DeveloperNově zahrnuty ve VS Team Developer
Dynamická analýzaDynamická analýza2 interní profilery – jeden vytvořil SQL tým a 2 interní profilery – jeden vytvořil SQL tým a druhý Windows tým, jeden na principu druhý Windows tým, jeden na principu instrumentace a druhý samplinguinstrumentace a druhý samplingu
Nově zahrnuty ve VS Team DeveloperNově zahrnuty ve VS Team Developer
Bug TrackingBug TrackingInterní systém pro sledování chybInterní systém pro sledování chyb (Product (Product Studio).Studio).
Bohaté reportování a sledování historie každé Bohaté reportování a sledování historie každé položkypoložky
Povinně využíván všemi týmy v MS (umožňuje Povinně využíván všemi týmy v MS (umožňuje prolinkování chyb mezi produkty)prolinkování chyb mezi produkty)
Chyby jsou ohodnoceny (Chyby jsou ohodnoceny (“triaged”“triaged”)) leadery leadery týmů a je jim přiřazena priorita 0-4týmů a je jim přiřazena priorita 0-4
Opravují se pak podle priorityOpravují se pak podle priority
Denní stav chyb se posílá celé diviziDenní stav chyb se posílá celé diviziKlíčové metrikyKlíčové metriky: : nové/vyřešené/uzavřené chyby nové/vyřešené/uzavřené chyby (sumárně i podle lidí)(sumárně i podle lidí)
Product Studio: Bug QueriesProduct Studio: Bug Queries
Product Studio: Bug DetailProduct Studio: Bug Detail
TestováníTestováníVlastní testovací systém „Mad Dog“Vlastní testovací systém „Mad Dog“
V projektech používajících VSTS se V projektech používajících VSTS se přechází na vestavěné testovánípřechází na vestavěné testování
Vysoká úroveň automatizace testů Vysoká úroveň automatizace testů nevizuálních částínevizuálních částí
Dlouhodobě neuspokojivá automatizace Dlouhodobě neuspokojivá automatizace funkčních testů vizuálního rozhranífunkčních testů vizuálního rozhraní
Používají se nástroje třetích stranPoužívají se nástroje třetích stran
““Mad-dog” Test Automation Mad-dog” Test Automation SystemSystem
Monitorování kvality – sběr datMonitorování kvality – sběr dat
Monitorování kvality – analýza datMonitorování kvality – analýza dat
Chyby
Co jetohle?
Kde je hranice?
A cotohle?
• Rozklad RAM• Chyby v málo
využívaných částech
• HW problémy
ZávěremZávěremMS má bohaté zkušenosti s vývojem MS má bohaté zkušenosti s vývojem softwaresoftware
Velmi propracovaný proces zaručující Velmi propracovaný proces zaručující vysokou kvalitu, který se stále vysokou kvalitu, který se stále zdokonalujezdokonaluje
Zkušenosti z 25 let vývoje a z interních Zkušenosti z 25 let vývoje a z interních nástrojů jsou zúročeny ve Visual Studio nástrojů jsou zúročeny ve Visual Studio Team SystemTeam System
Výhledově budeme používat shodné Výhledově budeme používat shodné nástroje jako naši zákazníci a partneřinástroje jako naši zákazníci a partneři
OtázkyOtázky
Michael Juřek, mjurekMichael Juřek, [email protected]@microsoft.com
http://msdn.microsoft.com/teamsystemhttp://msdn.microsoft.com/teamsystem