ALM avec Visual C++ v1.0b

Post on 20-Jan-2016

25 views 0 download

Tags:

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

Transcript of ALM avec Visual C++ v1.0b

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: christophepichaud@hotmail.com• 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