David Solivan Architect Evangelist Microsoft Corporation
“ Any sufficiently advanced technology is indistinguishable from magic.” Arthur C. Clarke’s 3 rd  Law
“ 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?
What percentage of such projects succeed?
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 Schwaber, 2006  Is IT getting involved in the business initiatives at the right time? Are the requirements gathered initially the right ones? How are you managing changes to requirements?
Source:  NIST, The Economic Impacts of Inadequate Infrastructure for Software Testing 2002, Standish Group The Cost of Inadequate Software Testing (Billions) Software users Software developers $0  $10  $20  $30  $40 How does the business define quality?
Individual Productivity Organization Size Desired Actual How can we create team and organizational capacity for 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.
Individual Team Organization Productive Integrated Extensible Application Lifecycle Management Process Tools
“ 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 Project Manager Database Professionals Developer Tester Architect Users & Management
 
How do we take the possibility of successful team development and make it an everyday reality?
Team Foundation Server Web Browser Team Explorer Microsoft Project Microsoft Excel Team Edition for Testers Team Edition for Developers Team Edition for Architects Team Edition  for Database  Professionals Project Manager Database Professionals Developer Tester Architect Users & Management Work Items Build Server Version Control Project Portal Reporting & Analytics
Rebuilt Team Build subsystem Acquired TeamPlain Web Access (TWA) Usability improvements in Version Control Extensibility improvements in Work Item Tracking Performance and scalability improvements Customer driven license changes: anyone in the organization may open and track their own work items A new Internal Connector License enables IT orgs to integrate current systems with TFS
2008 is 2x faster than 2005 Any size team, any size project Deploying broadly across Microsoft 7k active users, 1,000 projects, 25 TFS instances 2008 Hardware Recommendations
Designing Applications
Validating Architecture
Designing Web Services
Application 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 application components that comprise a service oriented system
Logical Datacenter Designer Reduce deployment defects. Share deployment environment information between projects. Captures a datacenter’s policies and logical structure.
Deployment 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 deployment of an application against a logical view of your data center
Class 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.
Class Designer Class Designer and two-way code synch
Improving Code Quality Integrated Unit Testing Integrated Static Code analysis Security Errors Localization problems Memory issues … Integrated Profiler Performance problems Memory problems Potential Sql Injection attack Object not Disposed Localization Issue
Improving Quality: Profiler Who allocates the most Objects Who allocates the most memory Who is called the most? Who runs for the longest What do you have the most of? What is taking up the most memory
Code Metrics Gives a snapshot of software health Understand your code complexity Quickly compare code to find potential trouble spots Reduce risk & improve maintainability Understand complexity of inherited code New in VSTS 2008
Metric: Class Coupling # of Dependencies Between Types GUI Business Logic Transaction Customer Account
Metric: Class Inheritance # of Base Types Component Control Label ListBox ListControl LinkLabel ComboBox
Metric: Lines of Code # of Executing Lines of Code 1 2 3 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=&quot;args&quot;>  Command line arguments.  </param> private   static   void   Workflow ( string []  cmdargs ) { // Collect the list of command line arguments List < string >   args   =  new   List < string >( cmdargs ); // Show usage syntax if the user so asks if   ( UseArg ( args ,   &quot;/?&quot; )) {   ShowAbout ();  return ; }
Metric: Cyclomatic Complexity # of Branches 1 2 3 4 5 6,7 8 9 10 11 bool   ParseCommandLine ( string []  args ) { if   ( args . Length   == 0)  ShowHelp ();  return ; for   ( int   i   = 0;  i   <  args . Length ;  i ++) switch   ( args [ i ]) { case   &quot;/?&quot;   : ShowHelp (); return   false ; case   &quot;/input&quot;  : if   ( args . Length   >   i   &&   File . Exists ( args [ i  + 1]))   InputFile   =  args [ i ++]; break ; case   &quot;/c&quot;  : Colapse  =  true ; break ; } return   true ; }
Metric: Maintainability Index 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?
 
 
Visual Studio Team Suite MSF Process and Guidance Visual Studio Team Foundation Server Visual Studio Industry Partners Software Architects Software Developers Software Testers Database Professionals Visual Studio Team Explorer Application Modeling Infrastructure and Deployment Modeling Code Analysis Performance Tuning Security Analysis Database Build &  Deployment Database Change Management Database Testing Performance Testing Manual Testing Test Case Management Visual Studio Professional Edition Change Management Work Item Tracking Reporting Project Site Integration Services Project Management Load Test Agent Visio and UML Modeling Class Modeling Unit Testing Code Coverage New!
SOAP Messages SOAP Messages SOAP Messages File Transfers File Transfers File Transfers
SOAP Messages SOAP Messages SOAP Messages File Uploads File Uploads File Uploads Downloads
* Raleigh office has 3Mbps of bandwidth shared by ~70 employees. Content No Proxy With Proxy 35 MB, 1824 Files 00:05:20 00:00:32 80 MB, 8 Files 00:14:07 00:00:25
Redmond, WA 368 Users Fargo, ND 4 Users Research Triangle, NC 42 Users Copenhagen, Denmark 6 Users Hyderabad, India 14 Users Team Foundation Users: 434 Version Control Users: 319 Number of Files/Folders: 271,766/30,376 Uncompressed File Size: 5.85 GB Compressed File Size: 1.71 GB Workspaces: 612 Workspace File Versions: 11 Million Changesets: 3489 Pending Changes: 4806 Shelvesets: 1254
Redmond, WA 368 Users Fargo, ND 4 Users Research Triangle, NC 42 Users Copenhagen, Denmark 6 Users Hyderabad, India 14 Users
“ Shelve” work in progress Check-in policies enforced during check-in process
Full Work Item Support in Microsoft Excel Full Access from Visual Studio Synchronized with Microsoft Project View project status in Microsoft Excel or Microsoft Project
 
 
 
David Solivan Architect Evangelist Developer & Platform Evangelism
 
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 scheduling Requirements Capture and Validation (Partner Ecosystem) Requirements Traceability - Hierarchical Linking and Querying Reporting dashboards and enhanced reports Process Authoring and Customization
Software Factories – Guided Development Experience Enhanced DB Refactorings + Refactoring into App Tier T-SQL Static Analysis and Code Coverage Policy Extended to the DB Tier Gated Checkin Test Prioritization - Determine what are the most important tests to run Test Case Management Test 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 activity A 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…
[email_address]
© 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.

The Magic Of Application Lifecycle Management In Vs Public

  • 1.
    David Solivan ArchitectEvangelist Microsoft Corporation
  • 2.
    “ Any sufficientlyadvanced technology is indistinguishable from magic.” Arthur C. Clarke’s 3 rd Law
  • 3.
    “ the impossiblemust become possible. the possible must become routine. the routine must become easy. and the easy must become beautiful.” Doug Henning’s creedo
  • 4.
  • 5.
    Is it impossible to have a successful, large, team-based, software development project delivered on time and under budget?
  • 6.
    What percentage ofsuch projects succeed?
  • 7.
    Source: StandishGroup, 2004 Third Quarter Research Report, CHAOS Research Results 1994 1996 1998 2000 2002 2004 Succeeded Failed Challenged 40% 30% 20% 10% 0% 50% 60%
  • 8.
    Source: Forrester, September2006, Trends “The Root Of The Problem: Poor Requirements”, Carey Schwaber, 2006 Is IT getting involved in the business initiatives at the right time? Are the requirements gathered initially the right ones? How are you managing changes to requirements?
  • 9.
    Source: NIST,The Economic Impacts of Inadequate Infrastructure for Software Testing 2002, Standish Group The Cost of Inadequate Software Testing (Billions) Software users Software developers $0 $10 $20 $30 $40 How does the business define quality?
  • 10.
    Individual Productivity OrganizationSize Desired Actual How can we create team and organizational capacity for innovation?
  • 11.
  • 12.
    It is possibleif we take a new approach to developer tools that recognizes that it takes more than developers to build a solution.
  • 13.
    Individual Team OrganizationProductive Integrated Extensible Application Lifecycle Management Process Tools
  • 14.
    “ Successful softwareprojects 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 Project Manager Database Professionals Developer Tester Architect Users & Management
  • 15.
  • 16.
    How do wetake the possibility of successful team development and make it an everyday reality?
  • 17.
    Team Foundation ServerWeb Browser Team Explorer Microsoft Project Microsoft Excel Team Edition for Testers Team Edition for Developers Team Edition for Architects Team Edition for Database Professionals Project Manager Database Professionals Developer Tester Architect Users & Management Work Items Build Server Version Control Project Portal Reporting & Analytics
  • 18.
    Rebuilt Team Buildsubsystem Acquired TeamPlain Web Access (TWA) Usability improvements in Version Control Extensibility improvements in Work Item Tracking Performance and scalability improvements Customer driven license changes: anyone in the organization may open and track their own work items A new Internal Connector License enables IT orgs to integrate current systems with TFS
  • 19.
    2008 is 2xfaster than 2005 Any size team, any size project Deploying broadly across Microsoft 7k active users, 1,000 projects, 25 TFS instances 2008 Hardware Recommendations
  • 20.
  • 21.
  • 22.
  • 23.
    Application Designer Modelapplication 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 application components that comprise a service oriented system
  • 24.
    Logical Datacenter DesignerReduce deployment defects. Share deployment environment information between projects. Captures a datacenter’s policies and logical structure.
  • 25.
    Deployment Designer Communicateyour 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 deployment of an application against a logical view of your data center
  • 26.
    Class Designer Designfirst 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.
  • 27.
    Class Designer ClassDesigner and two-way code synch
  • 28.
    Improving Code QualityIntegrated Unit Testing Integrated Static Code analysis Security Errors Localization problems Memory issues … Integrated Profiler Performance problems Memory problems Potential Sql Injection attack Object not Disposed Localization Issue
  • 29.
    Improving Quality: ProfilerWho allocates the most Objects Who allocates the most memory Who is called the most? Who runs for the longest What do you have the most of? What is taking up the most memory
  • 30.
    Code Metrics Givesa snapshot of software health Understand your code complexity Quickly compare code to find potential trouble spots Reduce risk & improve maintainability Understand complexity of inherited code New in VSTS 2008
  • 31.
    Metric: Class Coupling# of Dependencies Between Types GUI Business Logic Transaction Customer Account
  • 32.
    Metric: Class Inheritance# of Base Types Component Control Label ListBox ListControl LinkLabel ComboBox
  • 33.
    Metric: Lines ofCode # of Executing Lines of Code 1 2 3 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=&quot;args&quot;> Command line arguments. </param> private static void Workflow ( string [] cmdargs ) { // Collect the list of command line arguments List < string > args = new List < string >( cmdargs ); // Show usage syntax if the user so asks if ( UseArg ( args , &quot;/?&quot; )) { ShowAbout (); return ; }
  • 34.
    Metric: Cyclomatic Complexity# of Branches 1 2 3 4 5 6,7 8 9 10 11 bool ParseCommandLine ( string [] args ) { if ( args . Length == 0) ShowHelp (); return ; for ( int i = 0; i < args . Length ; i ++) switch ( args [ i ]) { case &quot;/?&quot; : ShowHelp (); return false ; case &quot;/input&quot; : if ( args . Length > i && File . Exists ( args [ i + 1])) InputFile = args [ i ++]; break ; case &quot;/c&quot; : Colapse = true ; break ; } return true ; }
  • 35.
    Metric: Maintainability IndexOverall indication of complexity by aggregation of several factors Lines of Code Cyclomatic Complexity Computational Complexity Used on the Windows Code Base
  • 36.
  • 37.
    How do wetake ALM from an everyday task, to a simple, easy part of the background noise so users can focus on primary tasks?
  • 38.
  • 39.
  • 40.
    Visual Studio TeamSuite MSF Process and Guidance Visual Studio Team Foundation Server Visual Studio Industry Partners Software Architects Software Developers Software Testers Database Professionals Visual Studio Team Explorer Application Modeling Infrastructure and Deployment Modeling Code Analysis Performance Tuning Security Analysis Database Build & Deployment Database Change Management Database Testing Performance Testing Manual Testing Test Case Management Visual Studio Professional Edition Change Management Work Item Tracking Reporting Project Site Integration Services Project Management Load Test Agent Visio and UML Modeling Class Modeling Unit Testing Code Coverage New!
  • 41.
    SOAP Messages SOAPMessages SOAP Messages File Transfers File Transfers File Transfers
  • 42.
    SOAP Messages SOAPMessages SOAP Messages File Uploads File Uploads File Uploads Downloads
  • 43.
    * Raleigh officehas 3Mbps of bandwidth shared by ~70 employees. Content No Proxy With Proxy 35 MB, 1824 Files 00:05:20 00:00:32 80 MB, 8 Files 00:14:07 00:00:25
  • 44.
    Redmond, WA 368Users Fargo, ND 4 Users Research Triangle, NC 42 Users Copenhagen, Denmark 6 Users Hyderabad, India 14 Users Team Foundation Users: 434 Version Control Users: 319 Number of Files/Folders: 271,766/30,376 Uncompressed File Size: 5.85 GB Compressed File Size: 1.71 GB Workspaces: 612 Workspace File Versions: 11 Million Changesets: 3489 Pending Changes: 4806 Shelvesets: 1254
  • 45.
    Redmond, WA 368Users Fargo, ND 4 Users Research Triangle, NC 42 Users Copenhagen, Denmark 6 Users Hyderabad, India 14 Users
  • 46.
    “ Shelve” workin progress Check-in policies enforced during check-in process
  • 47.
    Full Work ItemSupport in Microsoft Excel Full Access from Visual Studio Synchronized with Microsoft Project View project status in Microsoft Excel or Microsoft Project
  • 48.
  • 49.
  • 50.
  • 51.
    David Solivan ArchitectEvangelist Developer & Platform Evangelism
  • 52.
  • 53.
    Are we atbeautiful yet? There is still work to be done to incorporate business requirements directly into ALM toolset. Project Rosario is addressing.
  • 54.
    Portfolio planning –Portfolio Server integration (via Project Server) Project planning – Project Server integration + lightweight scheduling Requirements Capture and Validation (Partner Ecosystem) Requirements Traceability - Hierarchical Linking and Querying Reporting dashboards and enhanced reports Process Authoring and Customization
  • 55.
    Software Factories –Guided Development Experience Enhanced DB Refactorings + Refactoring into App Tier T-SQL Static Analysis and Code Coverage Policy Extended to the DB Tier Gated Checkin Test Prioritization - Determine what are the most important tests to run Test Case Management Test Execution (Functional and Manual Testing) “ Eliminate the No Repro Problem” – Test / Diagnostics Integration
  • 56.
    Current state isnear impossible Possible to solve if we understand that development is a team activity A 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…
  • 57.
  • 58.
    © 2007 MicrosoftCorporation. 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.

Editor's Notes

  • #2 06/03/09 21:51 © 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.