the magic of application lifecycle management in vs public

58
David Solivan Architect Evangelist Microsoft Corporation

Upload: david-solivan

Post on 04-Nov-2014

4 views

Category:

Technology


0 download

DESCRIPTION

How a new approach coupled with fresh tooling can make ALM more effective and easier.

TRANSCRIPT

David SolivanArchitect EvangelistMicrosoft Corporation

“Any sufficiently advanced technology is indistinguishable from magic.”

Arthur C. Clarke’s 3rd 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 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

How do we take the possibility of successful team development and make it an everyday reality?

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

Designing ApplicationsDesigning Applications

Validating ArchitectureValidating Architecture

Designing Web ServicesDesigning Web Services

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

David SolivanArchitect EvangelistDeveloper & 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 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.