Upload
matteo
View
25
Download
0
Tags:
Embed Size (px)
DESCRIPTION
ALM avec Visual C++ v1.0b. Christophe Pichaud Architecte MCSD, MCSD.NET. A propos de ChristopheP. 1994 Développeur Windows Platform SDK 1997 Développeur Services NT sur Windows NT 2000 Développeur COM, OLE et MFC 2003 Développeur ATL et DCOM 2005 Consultant Senior Microsoft .NET - PowerPoint PPT Presentation
Citation preview
2
ALM avec Visual C++v1.0b
Christophe PichaudArchitecte
MCSD, MCSD.NET
3
A propos de ChristopheP
• 1994 Développeur Windows Platform SDK• 1997 Développeur Services NT sur Windows
NT• 2000 Développeur COM, OLE et MFC• 2003 Développeur ATL et DCOM• 2005 Consultant Senior Microsoft .NET• 2007 Consultant Microsoft Windows Server• 2009 Architecte Microsoft• Email: [email protected]• WWW: www.christophep.com
4
Une session Visual C++ ?
5
Guizeh, 2006 av JC…
6
Guizeh, 2006 av JC…
7
Agenda• Quel est votre type de développeur C/C++ ?
• Standard, Windows C++, Hybride
• Introduction à ALM
• Introduction, Agilité et Guidances Patterns and Practices
• TFS 2010 et Visual Studio 2010
• TFS et la famille de produits Visual Studio
• Visual C++ 2010
• Les extensions Visual Studio
• Architecture Explorer
8
Visual Studio et Visual C++•Les outils du développeur VC++
9
Historique du produit VC++
La ligne de produit Visual C++La ligne de produit Visual C++Produit Année Commentaire(s)
Visual C++ 1.52c 1992-1994 Win16
Visual C++ 2.x 1995 Win32 et Win32s
Visual C++ 4.x 1996 Win32
Visual C++ 6.0 1998 Win32
Visual Studio .NET 2001
Visual Studio .NET 2003 2003
Visual Studio .NET 2005 2005
Visual Studio 2008 2008
Visual Studio 2010 2010
10
Visual Studio et TFS
11
Visual Studio et TFS
12
La gestion de projet classique
13
Visual Studio 2010 – le produit
La ligne de produit Visual Studio 2010La ligne de produit Visual Studio 2010Produit Année Commentaire(s)
Visual Studio 2010 Ultimate 2010 Application ALM
Visual Studio 2010 Premium 2010 Outil complet
Visual Studio 2010 Professional 2010 Outil essentiel
Visual Studio Test Professional 2010 2010 Pour les testers
Team Foundation Server 2010 2010 TFS SCM
Visual Studio Lab Management 2010 2010 Labs virtuels
14
Quel(s) outil(s) utiliser ?
Les produits associés à VS ALMLes produits associés à VS ALMProduit Planning
and Tracking
Design Develop Test Build
Team Foundation Server (TFS)
MS Test Manager
Visual Studio Premium
Visual Studio Ultimate
15
Avant ALM et l’AgileThe Microsoft Way
16
Microsoft’s Modeling Strategy
Domain Specific Languages (DSLs)Model-driven development (MDD)
From Object to ServicesComponents and Deploy-Time Reuse
2 canevas MicrosoftMOFMSF
17
ALMApplication Lifecycle Management
18
Application Lifecycle Management (ALM) ?
http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=b4765f41-a2c2-41e4-a1da-b35e1f502ef6
Microsoft Download Center
Defining application lifecycle management (ALM) isn’t easy. Different people (and different vendors) take quite different perspectives. Still, ALM is an important topic, and so understanding what it encompasses is also important.
19
ALM par Microsoft Services
http://www.microsoft.com/microsoftservices/en/us/custom_development.aspx
20
ALM par Microsoft Services
http://www.microsoft.com/microsoftservices/en/us/custom_development.aspx
21
ALM par David Chappell
22
ALM par David Chappell
Les 3 aspects de ALM
23
ALM par David Chappell
La Gouvernance
24
ALM par David Chappell
Le Développement
25
ALM par David Chappell
Les Opérations
26
ALM chez Microsoft Visual C++ TeamThe Microsoft WayTeam Foundation Server
27
ALM chez MS Visual Studio Team une idée sur la taille ?
• Question ? alecont@microsoft is bldg 41 in MS
Active “devs” per week 3,586
Builds per month 2,008
Work items
Source code files
Terabytes of dataStats as of July 2009, from Visual Studio TFS Server
716,858
23,681,882
15
• Development in Redmond, China, India
28
TFS Chez Microsoft
• 42 instances• 19,700 unique users• 6,154 team projects• 7.9 million work items• 95% of the data is version
control
29
Infrastructure physique
30
ALM chez Visual Studio TeamPlanning
31
90 scenarios90 scenarios
1,115 experiences1,115 experiences
5,179 user stories5,179 user stories
32
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
13,732 tasks13,732 tasks
33
ALM chez Visual Studio TeamPlanning
34
35
Equipes Autonomes, Reporting Centralisé
Equipes indépendantesProcessus définisUne seule cadenceUn système de reportingUne équipe Top Management
36
• Fully msbuild based!• Migration from nmake based system (build.exe) took
some time, especially for C++ projects: completed at the beginning of the Dev11 product cycle
• Full tree is >200Gb, ~80 base projects• Developers usually enlist in only a few projects• Tools are checked-in with the code
37
• Mostly C++ and C#• Visual Studio, some Emacs, very little vi • We use the version of Visual Studio we build every day• New IntelliSense and code navigation features– More robust and more accurate IntelliSense in Visual C++– Revamped GoToDef and new NavigateTo features
• Compiler and linker throughput improvements– Parallel linking, parallel compilation with msbuild and /MP
38
ALM chez Visual Studio TeamTracking
39
40
AgileLa méthodologie…
41
The Agile Manifesto
• Individuals and interactions over processes and tools
• Working software over comprehensive documentation
• Customer collaboration over contract negotiation
• Responding to change over following a plan
43
Intégration continue
Martin Fowler– Contents– Building a Feature with Continuous Integration – Practices of Continuous Integration
• Maintain a Single Source Repository. • Automate the Build • Make Your Build Self-Testing • Everyone Commits To the Mainline Every Day • Every Commit Should Build the Mainline on an Integration Machine • Keep the Build Fast • Test in a Clone of the Production Environment • Make it Easy for Anyone to Get the Latest Executable • Everyone can see what's happening • Automate Deployment
– Benefits of Continuous Integration – Introducing Continuous Integration – Final Thoughts – Further Reading
44
Application Lifecycle Management
Visual Studio ALM c’est quoi ?Plan and TrackDesignDevelopBuildTestDeploy
45
Application Lifecycle Management
46
MSF/Agile v5.0
Microsoft propose 2 canevasMOFMSF/Agile v5.0
47
Rôles et ResponsabilitésLes rôles
ArchitecteDéveloppeurTesterBuild & Release Manager (TFS)Gestion des projet (Chef de projet/produit)
48
Les points clé
• Visual Studio 2010 propose une expérience ALM forte• TFS est un outil robuste pour le développement
logiciel• De nombreux outils pour le “code
understanding” seront disponibles• Mix and Match : TFS s’adapte à vous
• Target multiple platforms• Leverage different tools• Mix & match and takes the time to migrate
49
Agenda• Quel est votre type de développeur C/C++ ?
• Standard, Windows C++, Hybride
• Introduction à ALM
• Introduction, Agilité et Guidances Patterns and Practices
• TFS 2010 et Visual Studio 2010
• TFS et la famille de produits Visual Studio
• Visual C++ 2010
• Les extensions Visual Studio
• Architecture Explorer
50
Développeur C/C++Ça existe encore ?
51
Audience
• Comment qualifier votre profil ?
•C/C++ Standard•Windows C++•C/C++ Hybride
52
Un développeur C++…• Quel type de développeur C/C++ êtes-vous?
• ANSI/ISO C/C++• STL ou Boost• ATL ou COM et OLE• MFC• ATL Server• WTL• Windows Platform SDK• Windows DDK• Window XP, Vista ou Windows 7• Windows Server 2003 .. Windows Server 2008 R2• Portable et compatible avec GCC sur Linux• Portable et compatible avec XCode/GCC sur Mac
53
Développeur C++ Standard• Vous êtes un développeur C/C++ Standard
• Strandard C++• Herb Sutter• C0x, TR1• Les livres rouge Addison Wesley
• Adepte STL et/ou Boost• Adepte de la portabilité ?
• Portable et compatible avec GCC ?• XCode sur Mac ?
54
Développeur Windows C++• Vous êtes un développeur C/C++ Windows
• Win32 et/ou Win64• Platform SDK• Windows DDK• ATL
• ATL Server
• WTL• COM, OLE, DCOM• CLR et Managed C++• MSBuild, nmake, Wix, HtmlHelp Workshop
55
Développeur C/C++ Hybride• Vous êtes un développeur C/C++ hybride ?
• STL et/ou Boost• Win32 et/ou Win64• COM, OLE• Libraries SourceForge• Libraries Open-Source, GPL, etc• MFC, ATL• CLR et Managed C++• Cross-Platform sur Win32, Win64, Mac, Linux
56
Agenda• Quel est votre type de développeur C/C++ ?
• Standard, Windows C++, Hybride
• Introduction à ALM
• Introduction, Agilité et Guidances Patterns and Practices
• TFS 2010 et Visual Studio 2010
• TFS et la famille de produits Visual Studio
• Visual C++ 2010
• Les extensions Visual Studio
• Architecture Explorer
57
Introduction à ALMALM, c’est quoi ?
58
ALM
• ALM = Application LifeCycle Management• Un consultant C/C++ est ALM compliant
• Fichier .h• Fichier .cpp• Fichier .rc• Documentation via doxygen ou VS Diagrams• Tests via CPPUnit ou VS Tests• Builds automatique en Perl, en Cmd ou en batch
divers
MIX AND MATCH !
59
ALM « Custom » avec VS2010 Pro
Visual Studio comme IDEPlan and Track
Excel, MS Project et Import/Export TFSDesign
Visio, Word ou une feuille de papier et un crayon…
DevelopBuild
MSBuild <solution> ou <vcxproj> or nmakeTest
CPPUnitDeploy
Wix or MSI
60
Agenda• Quel est votre type de développeur C/C++ ?
• Standard, Windows C++, Hybride
• Introduction à ALM
• Introduction, Agilité et Guidances Patterns and Practices
• TFS 2010 et Visual Studio 2010
• TFS et la famille de produits Visual Studio
• Visual C++ 2010
• Les extensions Visual Studio
• Architecture Explorer
61
VS10U et TFS10Le couple idéal…
62
Visual Studio 2010 - Starting
63
Visual Studio 2010 Ultimate
64
Visual Studio 2010 Ultimate
65
Office et TFS10Le couple minimum…
66
Best Practices - TFS
Excel et Project ont des extensions pour TFSImport/Export de WorkItems TFS
Mise à jour de TFS
67
MSF/Agile Envisionning
68
MSF/Agile Planning
69
MSF/Agile Planning
70
MSF/Agile Développement
71
Agenda• Quel est votre type de développeur C/C++ ?
• Standard, Windows C++, Hybride
• Introduction à ALM
• Introduction, Agilité et Guidances Patterns and Practices
• TFS 2010 et Visual Studio 2010
• TFS et la famille de produits Visual Studio
• Visual C++ 2010
• Les extensions Visual Studio
• Architecture Explorer
• Dependency Viewer
72
Visual C++ 10VC 1.52c, VC 2.x, VC 4.x, Visual Studio 97, VC 6, VC 7, VC 8, VC 9 et… VC 10 !
73
Architecture Tools – Nouveau!VS2010 Ultimate
Créations de diagramsUse case diagramsActivity DiagramsSequence DiagramsComponent DiagramsClass DiagramsLayer Diagrams
74
Architecture Explorer VS2010 Ultimate
Exploring Architecture ExplorerUsing the Architecture Explorer
to understand existing codeVisualizing existing code
using Dependency Graphs
75
VC10 – Project Types• Project Types
• ATL• ATL Project
• CLR• Class Library• CLR Console Application• CLR Empty Project• Windows Forms Application• Windows Forms Control Library
• General• Empty Project• Custom Wizard• Makefile Project
• MFC• MFC ActiveX Control• MFC Application• MFC DLL
• Test• Test Project
• Win32• Win32 Console Application• Win32 Project
76
Visual C++ 2010 - Projects• VC++ 2010 Project Converters
• Conversion depuis Visual C++ 6.0 est possible
77
Visual C++ 2010 - IDE
78
Visual C++ 2010 – Project Setting
79
Analyse de Code C/C++
Retour d’expérienceProblème de Nommage, de Design, etc
80
Analyse de Code C/C++
81
Code Metrics
82
Visual C++ 2010 and TFS 2010
83
Code - Architecture Explorer
84
Visual Studio 2010 SDK
85
Visual Studio 2010 Extensions• Liste des extensions Microsoft
• PowerCommands.vsix• ProPowerTools.vsix• Visualization and Modeling Feature Pack
Runtime.vsix• VS2010 Ultimate only
86
MFC – Ribbon Editor
• Simple
87
MFC - RC – Ribbon Editor
• Le Ribbon == un simple document XML
88
MFC - RC – Ribbon Editor
89
MFC - RC – Ribbon Editor
90
MFC - RC – Ribbon Editor
91
MFC – Ribbon Demo
92
Visual C++ 10Modern C++ ProgrammingScale and Productivity for C++ Developer
93
Visual C++ 10Modern C++ Programming
94
Visual C++ Agenda
• C++0x et TR1• TR1 est le Technical Report1, 2005• C++0x est le futur Standard C++• lambdas
• IDE• Intellisense – plus aucun fichiers .NCB• NavigateTo (CTRL ,)
• Bonus car C++ est beau et difficile• Nouveautés MFC• shared_ptr• copy_if, is_sorted, etc
95
Visual C++ 2010
• TR1 est le Technical Report1, 2005• C++0x est le futur Standard C++
• VS2008 SP1 ou Feature Pack avant, aka VC9
• Visual C++ 2010 aka VC10
96
Visual C++ - lambdas & auto• Lambdas
• Un expression lambda est une fonction anonyme• Qui utilise les lambdas ? Est-ce smart ?
• Auto• auto obj1 = new TaSoeurEnShort(“95B”);• for( auto it=v.begin() ; it!=v.end() ; it++ )• const auto *pOb = new Foo();• const auto& ref = animal
97
Visual C++ 2010 – C++0x
• vector réallocation• make_shared• unique_ptr• cbegin(), cend()• copy_if(), is_sorted()• Code Convertions - <codecvt>• Exceptions propagation: exception_ptr• Diagnistics <system_error>
98
Visual C++ - Smart pointers• Smart pointers
• Il sont devenus smart• shared_ptr -> make_shared
• Unique pointers• auto_ptr est deprecated
99
Visual C++ 10Scale and Productivity for C++ Developer
100
VS2010 Architecture – Nouveautés
• Intellisense• Plus de fichiers NCB.• SQL Server CE sert de repository
• SDF : SQL Server Comptact Database File• Plus rapide, plus efficace, enfin intelligent…
101
VS2010– Nouveautés
• Navigate To• Chercher et trouver un symbole
• Call Hierarchy (Hiérarchie d’appel)• Calls From• Calls To
• #include <oui mais quoi?>• Aide pour l’inclusion des headers
102
VS2010 - NavigateToCTRL CommaCTRL ,
103
VS2010 - #include aide
#include <????>
104
VS2010 - #include aide
#include <????>
105
VS2010 – un meilleur build
Choix du compilateur: VC9 ou VC10
106
VS2010 – un meilleur build
MSBuild – mode Minimal ou Diagnostic
107
VC10 – Code Moderne
Support TR1shared_ptr | unique_ptr | regex | tuple | array, etc.
Support C++0xlambdas | r-value references | auto | decltype | static_assert
Support Concurrency (PPL)Parallel algorythmes | Tasks | Agents API | Thread-safe containers
108
Native Concurrency Stack
Parallel Pattern Library
Threads + UMS
Messaging Primitivessend, receive
asend, try_receivemessage buffers
…
Messaging Primitivessend, receive
asend, try_receivemessage buffers
…
Concurrency RuntimeSchedulers with
Work-Stealing QueuesSchedulers with
Work-Stealing Queues chores … …
Concurrency Primitivestask handlestask groups
futuressynchronization types
Concurrency Primitivestask handlestask groups
futuressynchronization types
Concurrent Collectionsconcurrent_queueconcurrent_vector
concurrent_hash_map…
Concurrent Collectionsconcurrent_queueconcurrent_vector
concurrent_hash_map…
chores …
C/C++ Application or LibraryC/C++ Application or Library
Resource ManagerResource Manager
Proc 1 … Proc p
109
Concurrency & Debugging
110
C++: Puissance et Performance• Pourquoi utilisez-vous C++ ?
• L’outil est approprié• Accès aux ressources• Contrôle, Performance• Multi-Platforme• Le language de l’innovation
• L’état de l’art
• La responsabilité• Les techniques modernes C++ rendent le
développpement secure, safe sans jamais compromettre la performance
• IDE, les librairies, les options de compilateur, l’ananlyse statique et le debugger sont vos amis
111
C++ est plus que vivant
• Code natif est complètement supporté par MS• Interop est drmatiquement plus simple en C++• Les Templates C++ n’ont aucun équivalent
• Valable en natif et en interop• Microsoft construit ses logiciels en C++
• IDE évolutions• MFC évolutions• Language évolutions
112
Visual Studio 2010 == VS2010
Les nouveautésStandard C++ LibraryMicrosoft Foundation Classes (MFC)IDETFS
« un pointeur ? as-tu peur ? »
113
VS2010
Interop est dramatiquement facile en C/C++C/C++ est plus puissant que C#Templates déchirent les générics
Generic append at runtimeTemplate append at compile time
STLOptimiséeSecureStable
Vous voulez des sessions C++Demandez-les !
114
Des logiciels de qualité… ?
Microsoft Visual Studio 2010MSDN LibraryLes nouveautés VS2010Les Visual Studio 2010 walkthroughsLes Visual Studio 2010 samplesLes forumsLes vidéos Channel 9MSDN Déveloper CentersPatterns and Practices, Guidances
115
116
Partners & Tools
Microsoft Visual Studio Scrum 1.0http://visualstudiogallery.msdn.microsoft.com
Resharperhttp://www.jetbrains.com/resharper/`
AIT Taskboardhttp://www.aitgmbh.de/
Urban Turtle – Agile Planning Toolshttp://urbanturtle.com/
117
www.microsoft.com/learning
http://microsoft.com/technet
http://microsoft.com/msdn
118
MSDN et TechNet : l’essentiel des ressources techniques à portée de clic
http://technet.comhttp://technet.com http://msdn.comhttp://msdn.com
Portail administration et infrastructure pour informaticiens
Portail de ressources technique pour développeurs