the magic of application lifecycle management in vs public
DESCRIPTION
How a new approach coupled with fresh tooling can make ALM more effective and easier.TRANSCRIPT
“the impossible must become possible. the possible must become routine. the routine must become easy. and the easy must become beautiful.”
Doug Henning’s creedo
Is it impossible to have a successful, large, team-based, software development project delivered on time and under budget?
Source: Standish Group, 2004 Third Quarter Research Report, CHAOS Research Results
1994 1996 1998 2000 2002 2004
Succeeded Failed Challenged
40%
30%
20%
10%
0%
50%
60%
Source: Forrester, September 2006, Trends “The Root Of The Problem: Poor Requirements”, Carey Source: Forrester, September 2006, Trends “The Root Of The Problem: Poor Requirements”, Carey Schwaber, 2006 Schwaber, 2006
Is IT getting Is IT getting involved in the involved in the business business initiatives at the initiatives at the right time?right time?
Are the Are the requirements requirements gathered gathered initially the initially the right ones?right ones?
How are How are you managing you managing changes to changes to requirementsrequirements??
Source: NIST, The Economic Impacts of Inadequate Infrastructure for Software Testing 2002, Standish Group
The Cost of Inadequate The Cost of Inadequate Software Testing (Billions)Software Testing (Billions)
Software usersSoftware users
Software developersSoftware developers
$0 $10 $20 $30 $40$0 $10 $20 $30 $40
How doesHow doesthe business the business define quality?define quality?
Individual Individual ProductivityProductivity
Organization Organization SizeSize
Desired
Actual
How can we How can we create team and create team and organizational organizational capacity for capacity for innovation? innovation?
It is possible if we take a new approach to developer tools that recognizes that it takes more than developers to build a solution.
IndividualIndividual TeamTeam OrganizationOrganization
• ProductiveProductive• IntegratedIntegrated• ExtensibleExtensible
Application Lifecycle ManagementApplication Lifecycle Management
ProcessProcess ToolsTools
ProjectManager
DatabaseProfessionals
Developer Tester
Architect
Users &Management
“Successful software projects are not possible without the understanding that developers are but one part of a team, and that all parts of this team are equally important for success.”David D. Solivan…just now
ProjectManager
DatabaseProfessionals
Developer Tester
Architect
Team Foundation ServerTeam Foundation Server
Users &Management
Web Browser
Team ExplorerMicrosoft Project Microsoft Excel
Team Edition for Testers
Team Edition for Developers
Team Editionfor Architects
WorkWorkItemsItems
BuildBuildServerServer
VersionVersionControlControl
ProjectProjectPortalPortal
ReportingReporting& Analytics& Analytics
Team Edition for Database Professionals
Rebuilt Team Build subsystemAcquired TeamPlain Web Access (TWA)Usability improvements in Version ControlExtensibility improvements in Work Item TrackingPerformance and scalability improvementsCustomer driven license changes:
anyone in the organization may open and track their own work itemsA new Internal Connector License enables IT orgs to integrate current systems with TFS
2008 is 2x faster than 2005Any size team, any size projectDeploying broadly across Microsoft 7k active users, 1,000 projects, 25 TFS
instances
2008 Hardware Recommendations
Application DesignerApplication Designer
Model application components and their communication paths
Create artifacts that can be used throughout the development process - no static models
Define application deployment needs before you begin construction
The Application Designer allows you to define the The Application Designer allows you to define the application components that comprise a service application components that comprise a service oriented systemoriented system
Logical Datacenter DesignerLogical Datacenter Designer
Reduce deployment defects.
Share deployment environment information between projects.
Captures a datacenter’s policies and logical structure.Captures a datacenter’s policies and logical structure.
Deployment DesignerDeployment Designer
Communicate your deployment needs to IT operations
Validate your application deployment before construction
Help developers understand the deployment environment of the application
The Deployment Designer allows you to validate the The Deployment Designer allows you to validate the deployment of an application against a logical view of deployment of an application against a logical view of your data centeryour data center
Class DesignerClass Designer
Design first approach to class design.
Generate new classes and relationships graphically.
Visualize the structure of existing classes, interfaces and other .NET types
Automatically generates code from design.
Model and code will always be synchronized.
Design object models and view class relationships.Design object models and view class relationships.
Class DesignerClass Designer
Class Designerand
two-way code synch
Class Designerand
two-way code synch
Improving Code QualityImproving Code Quality
Integrated Unit Testing
Integrated Static Code analysisSecurity ErrorsLocalization problemsMemory issues…
Integrated ProfilerPerformance problemsMemory problems
Potential Sql Potential Sql Injection attackInjection attackPotential Sql Potential Sql Injection attackInjection attack
Object not Object not DisposedDisposedObject not Object not DisposedDisposed
Localization IssueLocalization Issue
Improving Quality: ProfilerImproving Quality: Profiler
Who allocates Who allocates the most Objectsthe most Objects
Who allocates Who allocates the most Objectsthe most Objects
Who allocates Who allocates the most the most memorymemory
Who allocates Who allocates the most the most memorymemory
Who is called the Who is called the most?most?
Who is called the Who is called the most?most?
Who runs for the Who runs for the longestlongest
Who runs for the Who runs for the longestlongest
What do you What do you have the most have the most
of?of?
What do you What do you have the most have the most
of?of? What is taking up What is taking up the most the most memorymemory
What is taking up What is taking up the most the most memorymemory
Code MetricsCode Metrics
Gives a snapshot of software healthUnderstand your code complexityQuickly compare code to find potential trouble spots
Reduce risk & improve maintainabilityUnderstand complexity of inherited code
New in VSTS 2008New in VSTS 2008
Metric: Class CouplingMetric: Class Coupling# of Dependencies Between Types
GUI
Business Logic
Transaction
Customer Account
Metric: Class InheritanceMetric: Class Inheritance
# of Base Types
Component
Control
Label
ListBox
ListControl
LinkLabelComboBox
Metric: Lines of CodeMetric: Lines of Code# of Executing Lines of Code
123
4
5
static class Program{
#region Application Entry Point/// <summary>/// The main entry point for the application./// </summary>[STAThread]static void Main(string[] args){
Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Workflow(args);
}#endregion
#region Static Methods/// <summary> Primary workflow for the application. </summary>/// <param name="args"> Command line arguments. </param>private static void Workflow(string[] cmdargs){
// Collect the list of command line argumentsList<string> args = new List<string>(cmdargs);
// Show usage syntax if the user so asksif (UseArg(args, "/?")) { ShowAbout(); return; }
Metric: Cyclomatic Metric: Cyclomatic ComplexityComplexity# of Branches
12
3
45
6,7
89
10
11
bool ParseCommandLine(string[] args){
if (args.Length == 0) ShowHelp(); return;for (int i = 0; i < args.Length; i++)
switch (args[i]){
case "/?" :ShowHelp();return false;
case "/input" :if (args.Length > i && File.Exists(args[i + 1]))
InputFile = args[i++];break;
case "/c" :Colapse = true;break;
}return true;
}
Metric: Maintainability Metric: Maintainability IndexIndex
Overall indication of complexity by aggregation of several factors
Lines of Code Cyclomatic Complexity Computational Complexity Used on the Windows Code Base
How do we take ALM from an everyday task, to a simple, easy part of the background noise so users can focus on primary tasks?
40
Visual Studio Team SuiteVisual Studio Team Suite
MS
F P
rocess a
nd
Gu
idan
ce
MS
F P
rocess a
nd
Gu
idan
ce
Visual Studio Team Foundation ServerVisual Studio Team Foundation Server
VisualVisualStudioStudioIndustryIndustryPartnersPartners
SoftwareSoftwareArchitectsArchitects
SoftwareSoftwareDevelopersDevelopers
SoftwareSoftwareTestersTesters
DatabaseDatabaseProfessionalsProfessionalsVisualVisual
StudioStudioTeamTeamExplorerExplorer
Application Application ModelingModeling
Infrastructure Infrastructure and Deployment and Deployment ModelingModeling
Code AnalysisCode Analysis
Performance Performance TuningTuning
Security AnalysisSecurity Analysis Database Database Build &Build & Deployment Deployment
Database Database Change Change ManagementManagementDatabase Database TestingTesting
Performance Performance TestingTesting
Manual TestingManual Testing
Test Case Test Case ManagementManagement
Visual Studio Professional EditionVisual Studio Professional Edition
Change ManagementChange Management
Work Item TrackingWork Item Tracking
ReportingReporting
Project SiteProject Site
Integration ServicesIntegration Services
Project ManagementProject Management
Load Test AgentLoad Test Agent
Visio and UML Visio and UML ModelingModeling
Class Class ModelingModeling
Unit TestingUnit Testing
Code Code CoverageCoverage
New!New!
SOAP Messages
SOAP Messages
SOAP MessagesSOAP Messages
SOAP Messages
SOAP Messages
File TransfersFile Transfers
File TransfersFile Transfers
File Transfers
File Transfers
SOAP Messages
SOAP Messages
SOAP MessagesSOAP Messages
SOAP Messages
SOAP Messages
File UploadsFile Uploads
File UploadsFile Uploads
File UploadsFile Uploads
Downloads
Downloads
ContentContent No ProxyNo Proxy With ProxyWith Proxy35 MB, 1824 Files35 MB, 1824 Files 00:05:2000:05:20 00:00:3200:00:32
80 MB, 8 Files80 MB, 8 Files 00:14:0700:14:07 00:00:2500:00:25
* Raleigh office has 3Mbps of bandwidth shared by ~70 employees.* Raleigh office has 3Mbps of bandwidth shared by ~70 employees.
Redmond, WARedmond, WA368 Users368 Users
Fargo, NDFargo, ND4 Users4 Users
Research Research Triangle, NCTriangle, NC42 Users42 Users
Copenhagen, Copenhagen, DenmarkDenmark6 Users6 Users
Hyderabad, IndiaHyderabad, India14 Users14 Users
Team Foundation Users:Team Foundation Users: 434434Version Control Users:Version Control Users: 319319Number of Files/Folders:Number of Files/Folders: 271,766/30,376271,766/30,376Uncompressed File Size:Uncompressed File Size: 5.85 GB5.85 GBCompressed File Size:Compressed File Size: 1.71 GB1.71 GBWorkspaces:Workspaces: 612612Workspace File Versions:Workspace File Versions: 11 Million11 MillionChangesets:Changesets: 34893489Pending Changes:Pending Changes: 48064806Shelvesets:Shelvesets: 12541254
Redmond, WARedmond, WA368 Users368 Users
Fargo, NDFargo, ND4 Users4 Users
Research Research Triangle, NCTriangle, NC42 Users42 Users
Copenhagen, Copenhagen, DenmarkDenmark6 Users6 Users
Hyderabad, IndiaHyderabad, India14 Users14 Users
“Shelve”work in progress“Shelve”work in progress
Check-in policies enforcedduring check-inprocess
Check-in policies enforcedduring check-inprocess
Full Work Item Supportin Microsoft ExcelFull Work Item Supportin Microsoft Excel
Full Access fromVisual StudioFull Access fromVisual Studio
Synchronized withMicrosoft ProjectSynchronized withMicrosoft Project
View project status inMicrosoft Excel orMicrosoft Project
View project status inMicrosoft Excel orMicrosoft Project
Are we at beautiful yet? There is still work to be done to incorporate business requirements directly into ALM toolset.
Project Rosario is addressing.
Portfolio planning – Portfolio Server integration (via Project Server)Project planning – Project Server integration + lightweight schedulingRequirements Capture and Validation (Partner Ecosystem)Requirements Traceability - Hierarchical Linking and QueryingReporting dashboards and enhanced reportsProcess Authoring and Customization
Software Factories – Guided Development ExperienceEnhanced DB Refactorings + Refactoring into App TierT-SQL Static Analysis and Code CoveragePolicy Extended to the DB TierGated CheckinTest Prioritization - Determine what are the most important tests to runTest Case ManagementTest Execution (Functional and Manual Testing)“Eliminate the No Repro Problem” – Test / Diagnostics Integration
Current state is near impossible
Possible to solve if we understand that development is a team activityA tool that addresses all ALM Roles makes ALM part of the workday.A tool that requires roles to communicate and provides seamless supporting features
Coming soon…
© 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after
the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.