Microsoft Solution Framework for Agile Software Development Workshop April 18th & 20th , 2006 Agenda Time Topic Speaker 09:00-09:15 Opening Tom Lee 09:15-09:30 Expectations Alignment 09:30-11:00 MSF for Agile Software Development 11:00-11:15 Coffee Break 11:15-12:30 Process run through (Part 1) 12:30-13:30 Lunch Break 13:30-15:00 Process run through (Part 2) 15:00-15:15 Coffee Break 15:15-16:30 Customizing the process 16:30-17:00 Q&A Bobby Mak Tom Lee, Wong-Tun Chou Expectations Alignment Bobby Mak Senior Consultant Microsoft Technology Center Microsoft Taiwan bobbymak@microsoft.com Microsoft Solution Framework for Agile Software Development Workshop April 18th & 20th , 2006 Goal of this workshop • Helps you to better understanding the MSF for Agile Software Development methodology • Helps you to evaluate the adoption of MSF for Agile Software Development methodology What will be the take-away for this workshop? • Understanding the relationship between – – – – Microsoft Solution Framework Agile Software Development MSF for Agile Software Development Visual Studio Team System • Run through each of the tracks and work streams – Go through each activities – Go through each work products • Compares how things were done – In Microsoft Product Group – Microsoft Technology Center – MSF for Agile Software Development • How you can modify the process – To better fit your needs MSF for Agile Software Development Bobby Mak Senior Consultant Microsoft Technology Center Microsoft Taiwan bobbymak@microsoft.com Microsoft Solution Framework for Agile Software Development Workshop April 18th & 20th , 2006 A Brief History of MSF (Microsoft Solution Framework) MSF Offering MSF v2 Solutions Dev Discipline (SDD) MSF v2.5 MSF v3 MSF v4 Principles of … App Dev (PAD) Infra Deploy (PID) Ent Arch (PEA) Comp Des (PCD) Essentials + Exam Core Agile CMMI … MSF v1 1994 1995 1997 1999 2002 2005-06 Overview Methodology Agile MSF4ASD MSF v4 Principle Essential Mindset Role Practices MSF4CMMI Project Management Activities Process Work Products Tools VSTS Since 1994 Microsoft Solutions Framework MSF offers guidance in how to organize people and projects to plan, build, and deploy technology solutions successfully and effectively MSFv3 Essentials Key goals for MSF: Discipline • Drive business success through business MSFv4 & technology alignment Essentials • Ensure high quality solutions; handling the many facets of quality as defined by Application Family Infrastructure multiple stakeholders Development • Accelerate delivery, reduce costs, minimize risks MSF for Agile MSF for CMMI® Product Software Process • Improve team effectiveness (instantiated) Development Improvement The Origin of MSF Microsoft Products Groups Microsoft Services Microsoft Operations & Technology Group Microsoft Certified Partners Proven Practices • Results from project teams and product groups are analyzed • Analyzed results are contrasted with industry practices and methods • Combined results are then organized and consolidated into “people and process” guidance MSF v4 Principles • Foster open communications – to maximize members’ individual effectiveness and optimize efficiencies in the work, information has to be readily available and actively shared. • Shared vision – vision helps to clarify goals and bring conflicts and mistaken assumptions to light so they can be resolved • Empower team members – MSF advocates bottom-up scheduling, a schedule that the team can support because it believes in it • Clear accountability and shared responsibility – establishing well-understood lines of accountability and responsibility reduces uncertainty around the "who, what, when, and why," • Focus on business value – By combining a focus on business value with shared vision, the project team and the organization can develop a clear understanding of why the project exists and how success will be measured in terms of business value to the organization. MSF v4 Principles (cont.) • Stay agile, expect change – MSF advises teams to expect changes from stakeholders and even the team itself • Invest in quality – investment in people, as well as in processes and tools • Learn from all experiences – the failure to learn from all experiences is a guarantee that we will repeat them, as well as their associated project consequences. • Partner with customers – Understanding the value proposition of your solution and communicating it effectively is a key success factor. • Always create shippable solutions – Each change should be done in the context of the belief that the product should be ready to ship at any time. MSF v4 Mindsets • Team of Peers – all roles must have ownership of the product’s quality, must act as customer advocates, and must understand the business problem they are trying to solve. • Customer-focused mindset – Satisfied customers are priority number one – A customer focus throughout development includes a commitment from the team to understand and solve the customer’s business problem. • Solution mindset – It is about treating the results of your labor as a solution – MSF advocates the creation of project identities so that team members see themselves less as individuals and more as members of a project team • Trusting mindset – Trusting your peers • Quality mindset – commitment to quality. – team goal is to perform their work at the highest quality possible, so that if they have to deliver tomorrow, they can deliver something • Willingness to learn – commitment to ongoing self improvement through the gathering and sharing of knowledge MSF v4 Advocacy Groups Team Model Solution Delivery Solution Design Program Management Architecture Solution Definition Solution Construction Product Management Development Advocacy User Experience Solution Usability Test Release / Operations Solution Deployment Solution Quality MSF v4 Advocacy Groups Focus Business Focus Users Operations Support User Experience Product Management Customer Test Project Team Development Operations Release / Operations Program Management Architecture Technology Architects Technology Focus Project Sponsor Solutions Architects Advocacy Group Advocates Quality Goals Constituents Functional Areas Product Management Solution Definition o Satisfy stakeholders o Define solution within project constraints o Stakeholders o Marketing/Corporate Communications o Business Analyst o Product Planning o Release Management Program Management Solution Delivery o Coordinate identification and optimization of project constraints o Deliver solution within project constraints o Project Sponsor(s) o o o o o o Architecture Solution Design Design a solution within project constraints Development Solution Construction Build solution to specifications Test Solution Quality Approve solution for release only after making sure all aspects of the solution meet or exceed their respective, defined quality levels User Experience Solution Usability Maximize/ Enhance user performance/ effectiveness o Users o Operations Support o Accessibility o Internationalization o Technical Support Communications o Training o Usability o Graphic Design Release / Operations Solution Deployment Smooth deployment and transition to operations o Operations o o o o o Project management Program Management Resource Management Process Assurance Project Quality Management Project Operations o Solution Architecture o Technical Architecture o Functional Testing o System Testing Delivery Infrastructure Operations Commercial Release Management Build Master Tool Administrator MSF v4 Advocacy Groups • Roles may be combined, but some combinations pose risks Product Management Program Development Management N Product Management Test User Experience Release Management N P P U N U U P N N N P P Program Management N Development N N Test P U N User Experience P U N P Release Management U P N P P Possible U Unlikely N Not Recommended U U MSF v4 Advocacy Groups Small Team Small team, combined roles User Experience Program Management Product Management Release Management Test Development MSF Sub-teams in Relation to the Lead Team • Multidisciplinary sub-teams organized around product feature sets or created to focus on a particular capability Function Team Program Management Architecture Role Lead User Experience Program Management Product Management Product Management Development User Experience Test Architecture Desktop Feature Team Release / Operations Release / Operations Program Management Product Management Development Test Program Management File & Print Feature Team Release / Operations Development Test Architecture Messaging Feature Team Development Test Release / Operations Feature Teams Established 2001 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 Agile Software Development “An agile method is – – – – Iterative Incremental Self-Organizing and Emergent. It must include these attributes; otherwise it is a ‘lightened defined process’.” – Ken Schwaber, First eWorkshop on Agile Methods • MSF fulfills the definition of an Agile Process Agile Management Philosophy • Cost Accounting Accounting vs. Throughput 30 -M ar 23 -M ar 16 -M ar 9M ar 2M ar eb 24 -F 17 -F 10 -F eb 240 220 200 180 160 140 120 100 80 60 40 20 0 eb Features Device Management Ike II Cumulative Flow Time Inventory Classic Focus is on hours spent Started Designed Coded Complete Agile Focus is on value delivered Eliminate waste Well known Agile Methodologies • Extreme Programming (XP) • Scrum • Adaptive Software Development (ASD) • Crystal • Feature-Driven Development (FDD) • DSDM • RUP • Unisys QuadCycle • Etc. Agile – Software Development Lifecycle Support VTT Agile Software Development Method - http://www.inf.vtt.fi/pdf/publications/2002/P478.pdf MSF for Agile Software Development • Represent a version of MSF that – De-emphasizes formal project governances – Emphasizes agile principles within smaller collaborative teams • an iterative, scenario-driven, context-based software development process for building .NET, Web, Web Service, and other objectoriented applications. MSF for Agile Software Development • First Microsoft-branded software development methodology • Complete with – documented processes – Guidance and templates – Incorporate hooks into tools • “White label” approach – Designed for adopt then customized and extend as required MSF for CMMI Process Improvement • Help organizations operate at Capability Maturity Model® Integration (CMMI®) level 3, a standard defined by the Carnegie Mellon Software Engineering Institute (SEI) • Does not replace process improvement infrastructure • An Agile approach to CMMI – Introduce additional formality, reviews, verification, and audit • Compare to MSF4ASD – Based on the same MSF meta-model – Same set of principles – Same set of mindsets MSF Essential MSF4ASD MSF4CMMI MSF for CMMI Process Improvement • Coverage of 20 out of 25 process areas • Footprint only 150% bigger than MSF Agile Approximately 200 activities • Only 50 documents (work products) – Typical CMMI implementation ~100 • Supported by around 50 automated queries and reports – Easier certification 50% coverage Level 2 Project Planning Project Monitoring & Control Measurement & Analysis Requirements Management Configuration Management Process & Product Quality Assurance Supplier Agreement Management Omitted CMMI Model Level 3 Integrated Project Management Risk Management Integrated Teaming Requirements Development Technical Solution Product Integration Verification Validation Decision Analysis & Resolution Organizational Process Definition Organizational Environment for Integration Organizational Process Focus Organizational Training Integrated Supplier Management Level 4 Organizational Process Performance Quantitative Project Management Level 5 Organizational Innovation and Deployment Causal Analysis & Resolution 20% coverage When to choose MSF4ASD? • … for projects with results-oriented teams who can work without lots of intermediate documentation • “Stretch to Fit” instead of “Shrink to Fit” – Minimalist approach – Agile methodologies promote adaptation When to choose MSF4CMMI? • Choose the MSF for CMMI Process Improvement process for projects with longer lifecycles and that require a record of decisions made. Choose MSF for CMMI Process Improvement over MSF for Agile Software Development, if your organization is undertaking a broad quality assurance and process improvement initiative or your team needs the assistance of explicit process guidance rather than relying on tacit knowledge and experience. Work Products Activities Practices Project Management Process MSF for Agile Software Development • Tracks • Cycle • Roles • Work Streams • Activities • Work Products Tracks 1 n Cycle 1 n Roles 1 n Work Streams 1 n Activities 1 n Work Products Tracks MSF for Agile Software Development • Tracks overlap each other and are controlled by checkpoints – – – – – – Envision Plan Build Stabilize Deploy Continuous Cycle •Foundation of every day’s coordinated team work Iterative Approach Cycle • Minimize risks by breaking large projects into multiple versions Version 3 Version 2 Version 1 Time Iterations Cycle • Achievement of a pre-determined level of quality • Based on planning of feature-sets • Mechanism to correct project plan deviations Team Roles Work Streams • Work streams are groups of activities that flow logically together and are often associated with a particular role Activities • Composed of 14 basic work streams – Basic activity building blocks of MSF – A work stream is an activity that is composed of other activities – Activities are described using the ETVX format – Contains 70 activities (not including work streams) – Most work streams are performed by a single role Work Products • Work products are files, documents, specifications, binaries, parts, and other tangible items that are necessary to complete activities and build the product. Visual Studio Visual Studio Visual Studio Team Architect Team Developer Team Test Application Designer Dynamic Code Analyzer Load/Web Testing Logical Datacenter Designer Static Code Analyzer Manual Testing Deployment Designer Code Profiler Test Case Management Unit Testing Code Coverage Class Designer Visio and UML Modeling Team Foundation Client (includes CAL) Microsoft® Visual Studio® Professional Edition Visual Studio Team Foundation Team Build Version Control Team Reporting Integration Services Work Item Tracking Project Portal Project Management Visual Studio Industry Partners Process and Architecture Guidance Visual Studio Team System Work Items • A work item is a record uses to track the assignment and state of work. • The MSF for Agile Software Development process defines five work items to assign and track work. – – – – – Scenario Quality of service requirement Task Bug Risk Reports • Aggregates – Work Items – Source Controls – Test Results Work Products Work Streams Source Control Test Results Work Items Reports Team System Process Run Through Bobby Mak Senior Consultant Microsoft Technology Center Microsoft Taiwan bobbymak@microsoft.com Microsoft Solution Framework for Agile Software Development Workshop April 18th & 20th , 2006 Envision Capture Project Vision Capture Project Vision Write Vision Statement Define Personas Plan an Iteration Determine Iteration Length Plan Build Iteration Guide Project Access Progress Create a Scenario Create a Scenario Create Solution Architect Create Solution Architect Plan an Iteration Brain Storm Scenario Prioritize Scenario List Partition the System Determine Interface Schedule scenario Create a QoS/Scenario Create a Scenario Create a Scenario Plan an Iteration Create Solution Architect Plan an Iteration Dev. Lifestyle Snapshot Write Scenario Description Storyboard a scenario Estimate a scenario/QoS Create Architecture Phototype Divide Scenario to Tasks Create a QoS Create a QoS Create Solution Architect Create Solution Architect Plan an Iteration Implement a Dev Task Brain Storm QoS Prioritize QoS Requirement Develop Performance Model Dev. Threat Model Schedule QoS Cost a Dev Task Capture Project Vision Create a QoS Create a QoS Test a QoS Create Solution Architect Plan an Iteration Refine Personas Write QoS Requirement Identify Security Objectives Write QoS Test Create Infrastructure Arch. Divide QoS to Tasks Test a Scenario Test a Scenario Define Test Approach Write Validation Test Fix a Bug Fix a Bug Fix a Bug Fix a Bug Guide Project Reproduce the bug Locate the bug cause Decide Bug Fix Strategy Reassign the bug Triage Bug Implement a Dev Task Fix a Bug Fix a Bug Imp Dev Task/Fix Bug Create of Update Unit Test Code the Fix Create of Update Unit Test Code Review Implement a Dev Task Imp Dev Task/Fix Bug Imp Dev Task/Fix Bug Imp Dev Task/Fix Bug Implement a Dev Task Write Code for Dev Task Perform Unit Test Perform Code Analysis Refector Code Integrate Code Change Build Build a Product Fix a build Stable Check-In Accepted Build Test a Scenario/QoS Conduct Exploratory Test Build a Product Build a Product Build a Product Test a Scenario/QoS Test a Scenario Start a build Verify a build Accept Build Select & Run a test case Open a Bug Test a Scenario Test a Scenario Verify Fix(s) Close Bug(s) Deploy Release a Product Release a Product Release a Product Release a Product Execute a release plan Validate a release Create Release Note Deploy the product Cont. Guide Project Guide Project Guide Project Guide Iteration Guide Iteration Guide Iteration Review Objectives Access Progress Identify Risk Monitor Iteration Mitigate a Risk Conduct Retrospective Envision Capture Project Vision Capture Project Vision Write Vision Statement Define Personas Plan an Iteration Determine Iteration Length Plan Iteration Guide Project Access Progress Create a Scenario Create a Scenario Create Solution Architect Create Solution Architect Plan an Iteration Brain Storm Scenario Prioritize Scenario List Partition the System Determine Interface Schedule scenario Create a QoS/Scenario Create a Scenario Create a Scenario Plan an Iteration Create Solution Architect Plan an Iteration Dev. Lifestyle Snapshot Write Scenario Description Storyboard a scenario Estimate a scenario/QoS Create Architecture Phototype Divide Scenario to Tasks Create a QoS Create a QoS Create Solution Architect Create Solution Architect Plan an Iteration Implement a Dev Task Brain Storm QoS Prioritize QoS Requirement Develop Performance Model Dev. Threat Model Schedule QoS Cost a Dev Task Capture Project Vision Create a QoS Create a QoS Create Solution Architect Plan an Iteration Refine Personas Write QoS Requirement Identify Security Objectives Create Infrastructure Arch. Divide QoS to Tasks Test a Scenario Define Test Approach Check-In Build Build Stable Deploy Cont. Accepted Build Envision Plan Iteration Guide Project Access Progress Create a Scenario Create a Scenario Create Solution Architect Create Solution Architect Plan an Iteration Brain Storm Scenario Prioritize Scenario List Partition the System Determine Interface Schedule scenario Create a QoS/Scenario Create a Scenario Create a Scenario Plan an Iteration Create Solution Architect Plan an Iteration Dev. Lifestyle Snapshot Write Scenario Description Storyboard a scenario Estimate a scenario/QoS Create Architecture Phototype Divide Scenario to Tasks Create a QoS Create a QoS Create Solution Architect Create Solution Architect Plan an Iteration Implement a Dev Task Brain Storm QoS Prioritize QoS Requirement Develop Performance Model Dev. Threat Model Schedule QoS Cost a Dev Task Capture Project Vision Create a QoS Create a QoS Test a QoS Create Solution Architect Plan an Iteration Refine Personas Write QoS Requirement Identify Security Objectives Write QoS Test Create Infrastructure Arch. Divide QoS to Tasks For next iteration Build Test a Scenario Test a Scenario Define Test Approach Write Validation Test Fix a Bug Fix a Bug Fix a Bug Fix a Bug Guide Project Reproduce the bug Locate the bug cause Decide Bug Fix Strategy Reassign the bug Triage Bug Implement a Dev Task Fix a Bug Fix a Bug Imp Dev Task/Fix Bug Create of Update Unit Test Code the Fix Create of Update Unit Test Code Review Implement a Dev Task Imp Dev Task/Fix Bug Imp Dev Task/Fix Bug Imp Dev Task/Fix Bug Implement a Dev Task Write Code for Dev Task Perform Unit Test Perform Code Analysis Refector Code Integrate Code Change Build Build a Product Fix a build Stable Check-In Accepted Build Test a Scenario/QoS Conduct Exploratory Test Build a Product Build a Product Build a Product Test a Scenario/QoS Test a Scenario Start a build Verify a build Accept Build Select & Run a test case Open a Bug Test a Scenario Test a Scenario Verify Fix(s) Close Bug(s) Deploy Cont. Guide Project Guide Project Guide Project Guide Iteration Guide Iteration Guide Iteration Review Objectives Access Progress Identify Risk Monitor Iteration Mitigate a Risk Conduct Retrospective Envision Plan Iteration Guide Project Access Progress Test a QoS Write QoS Test Test a Scenario Write Validation Test Build Fix a Bug Fix a Bug Fix a Bug Fix a Bug Guide Project Reproduce the bug Locate the bug cause Decide Bug Fix Strategy Reassign the bug Triage Bug Implement a Dev Task Fix a Bug Fix a Bug Imp Dev Task/Fix Bug Create of Update Unit Test Code the Fix Create of Update Unit Test Code Review Implement a Dev Task Imp Dev Task/Fix Bug Imp Dev Task/Fix Bug Imp Dev Task/Fix Bug Implement a Dev Task Write Code for Dev Task Perform Unit Test Perform Code Analysis Refector Code Integrate Code Change Build Build a Product Fix a build Stable Check-In Accepted Build Test a Scenario/QoS Conduct Exploratory Test Build a Product Build a Product Build a Product Test a Scenario/QoS Test a Scenario Start a build Verify a build Accept Build Select & Run a test case Open a Bug Test a Scenario Test a Scenario Verify Fix(s) Close Bug(s) Deploy Cont. Guide Project Guide Project Guide Project Guide Iteration Guide Iteration Guide Iteration Review Objectives Access Progress Identify Risk Monitor Iteration Mitigate a Risk Conduct Retrospective Envision Plan Build Iteration Guide Project Access Progress Fix a Bug Fix a Bug Fix a Bug Fix a Bug Guide Project Reproduce the bug Locate the bug cause Decide Bug Fix Strategy Reassign the bug Triage Bug Fix a Bug Fix a Bug Imp Dev Task/Fix Bug Code the Fix Create of Update Unit Test Code Review Imp Dev Task/Fix Bug Imp Dev Task/Fix Bug Imp Dev Task/Fix Bug Implement a Dev Task Perform Unit Test Perform Code Analysis Refector Code Integrate Code Change Build Build a Product Fix a build Stable Check-In Accepted Build Test a Scenario/QoS Conduct Exploratory Test Build a Product Build a Product Build a Product Test a Scenario/QoS Test a Scenario Start a build Verify a build Accept Build Select & Run a test case Open a Bug Test a Scenario Test a Scenario Verify Fix(s) Close Bug(s) Deploy Cont. Guide Project Guide Project Guide Project Guide Iteration Guide Iteration Guide Iteration Review Objectives Access Progress Identify Risk Monitor Iteration Mitigate a Risk Conduct Retrospective Envision Plan Iteration Build Check-In Build Accepted Build Stable Deploy Release a Product Release a Product Release a Product Release a Product Execute a release plan Validate a release Create Release Note Deploy the product Cont. Guide Project Guide Project Guide Project Guide Iteration Guide Iteration Guide Iteration Review Objectives Access Progress Identify Risk Monitor Iteration Mitigate a Risk Conduct Retrospective What is a Vision Statement? Capture Project Vision • A short, coherent statement that concisely describes the purpose of building the new or improved system. • Provides the justification for building the system to the team. • Ideally it should be 25 words or less. • Everyone on the project team can recite it from memory and connect their daily work to it The one-sentence approach Capture Project Vision For (identified users) Who (narrow the scope of the problem) Our solution is (set framework) That (enumerate requirements) Unlike (differentiate from competitors / alternatives) Example Capture Project Vision For online shoppers Who are interested in sporting and camping equipment, but do not like shopping in brickand-mortal shops Our solution is an AdventureWorks e-commerce Web site That allows them to find and purchase exactly what they need Unlike without having to physically visit the store Personas Define Personas • Descriptions of a group of typical users. – (Instances of actors) • Instead of talking about the group of users in an abstract, impersonal way, a persona represents a 'proxy' for the user group, and provides a means to talk and reason about the group through the characteristics of one fictional individual, the persona. Where Does Personas Fit in? Define Personas On-site Customer Persona Actor What is in a Personas? Define Personas • A persona describes the typical skills, abilities, needs, desires, working habits, tasks and backgrounds of a particular set of users. • A persona is fictional reality, collecting together real data describing the important characteristics of a particular user group in a fictional character. Favored and Disfavored Personas Define Personas • Favored personas are users who will use the system “appropriately” or way that it was intended to be used. • Disfavored personas are folks who will abuse the system. An example of a disfavored persona for an operating system is a hacker or virus writer. Example: David Define Personas • Role: Online Shopper • Motivation: Get it Quick • Usage: David hates to shop but wants his equipment immediately. He will place his order on Thursday night for his weekend activity. David doesn’t want to wade through a catalog. Instead, he wants things that he typically orders to show immediately. Example: Judith Define Personas • Role: Online Shopper • Motivation: Get it Cheap • Usage: Judith shops for the best bargain. She looks for the best deal on similar items. She will visit half a dozen sites to find the best deal. Example: MSN Define Personas Example: VSTS Personas Define Personas •Larry Sykes Business Analyst •Mort Gaines Developer •Jacqui Ackerman Project Manager •Art Benson Architect • Renee Davis Tester • Ian Manning Release Manager Personas Resources Define Personas • Personas: Practice and Theory Whitepaper http://www.research.microsoft.com/research/coet/Grudin/Personas/ Pruitt-Grudin.doc • Personas book • The Persona Lifecycle Where do Scenario fit in? Create a Scenario User stories Scenarios Use cases Brain Storm Scenario Create a Scenario • For each persona, determine their goals of the system. • Decompose each goal into the scenarios that are required to achieve that goal or may result from an unsuccessful attempt to achieve that goal. • Add an entry (called a scenario entry) for each brainstormed scenario • One scenario is one path through the system Example: Purchase Product: Find Product Create a Scenario • David has heard about a new lightweight frame for his mountain bike. He brings up the AdventureWorks Website and finds the search engine. He enters the text “mountain bike frame” and gets a list of the products that meet his search criteria. The list comes back sorted by the most popular (purchased most often) product but can be sorted by brand, product name, rating (number of stars by reviewers), and price. David sorts on brand and all of the “Excalibur” products are grouped together. He selects the “XJ11” which is $799.95 and has received five stars. When he presses the details button, he sees a picture of the new frame as well as links to the reviews and specification information. • Note: the conclusion of adding the XJ11 to the cart has been omitted because it is described in the goal and scenario “Purchase Products: Add Product to Cart Prioritize Scenario List Create a Scenario • Determine the importance of the scenario • Sort the Scenario list by priority • Using Kano Analysis!! Satisfied Customer “That’s Cool” •Web page editing on IE Tool Bar •Free Internet Access @ Starbucks •Retractable light under hood •Send digital pix with your cell phone •Web page editing on IE Tool Bar “More Is Better” •Speed of Internet Connection •Flavor of coffee •Gas Mileage •Battery life on digital camera Indifferent Needs Poor Functionality “I don’t care” •MapPoint on standard tool bar Excellent Functionality •Color of coffee cup •Size of tires “If it’s not there, I’ll never be satisfied” •Voltage of battery •Ability to Print •Coffee is hot •Car has brakes •Ability to transfer digital pictures to computer Dissatisfied Customer Survey Questions: Functional If the speed of the internet connection is fast, how do you feel? 1. I like it Dysfunctional If the speed of the internet connection is slow, how do you feel? 5. I dislike it One-Dimensional Need I like it I expect it I am neutral I can tolerate it I dislike it A A I I I I I Q RM RM O M M M Q 3. I am neutral 2. I expect it Q A RA Q RA I RA I RO RM 5. I dislike it 1. 2. 3. 4. 5. 4. I can tolerate it Example 1. I like it Dysfunctional 1b. If (need 1) is poor, how do you feel? 1. I like it 2. I expect it 3. I am neutral 4, I can tolerate 5. I dislike it Kano Evaluation Table Functional Form of Question Functional 1a. If (need 1) is good, how do you feel? 1. I like it 2. I expect it 3. I am neutral 4, I can tolerate it 5. I dislike it Dysfunctional Form of Question Customer Requirement Is A: Attractive O: One-Dimensional M: Must Have Q: Questionable Result R: Reverse I: Indifferent % Response by Category Must-Have OneDimensional Attractive Indifferent Need1 45 20 20 10 Need2 10 60 25 Need3 5 10 Need4 5 Need5 Need6 Reverse Questionable M+O O+A 5 65 40 5 70 85 5 80 15 15 5 85 5 10 90 25 30 20 25 55 50 85 5 10 90 5 { { 100% Attractive 90% O+A – Corners • Strong Requirement – Center • Mix of segments (respondents) • Weak requirement Need2 70% 60% O+A • Location on Grid Need4 80% if Included Satisfaction One Dimensional + Attractive M+O One-Dimensional 50% 40% Need5 Need1 30% 20% Need6 Need3 10% M+O Indifferent Must Have 0% 0% 10% 20% 30% 40% 50% 60% 70% Dissatisfaction if Missing Must Have + One Dimensional 80% 90% 100% 100% Attractive 90% One-Dimensional Need4 Need2 One Dimensional + Attractive if Included Satisfaction 80% Perform slightly better than Competitors Include as Differentiator s 70% 60% Need5 50% 40% Need1 Ignore 30% DO NOT IGNORE! 20% Need6 Need3 10% Indifferent Must Have 0% 0% 10% 20% 30% 40% 50% 60% Dissatisfaction Missing Must Have + One if Dimensional 70% 80% 90% 100% Write Scenario Create a Scenario • A scenario is a single path of user interaction through the system. As the user attempts to reach a goal, the scenario records the specific steps that they will in attempting to reach that goal. Some scenarios will record a successful path; others will record an unsuccessful one. • When writing scenarios, be specific. Since there are an infinite number of possible scenarios for all but the most trivial systems, it is important to be discerning in deciding which scenarios to write. Storyboard Scenario Create a Scenario • Capture the screens that are presented to the persona. Draw out a rough sketch of the user interface called for in the scenario. Collaborate with members of the development team to ensure the user interface is consistent with the user interface metaphor. • Tools that work well for storyboards include Microsoft Visio and Microsoft PowerPoint. Brain Storm a QoS Create a QoS • “Non-functional” requirements • QSRs constrain other functionality • Top 5 – Performance – Security – User Experience – Platform – Load Example Create a QoS Context • Examples – “When the system is being used by 25,000 simultaneous users, the catalog search results response time Stimulus should not exceed 5 seconds in 95% of the cases.” [Performance] Response – “When the catalog prices are updated, the system should log the user that has done this to the Windows Security Event Log.” [Security] – “When the user changes the text size in his Web browser, the web pages should adjust accordingly” [User Experience] Source: Carriere Define Test Approach Test a Scenario • Called Test Metric Thresholds in MSF Agile – Objective definition of when the product quality is high enough to ship • Context-based – Testing that is acceptable on one project may be criminal on another Sample Test Thresholds Test a Scenario Planned test coverage/ release criteria for: What are we going to look at? When is it good enough? Code Unit tests for all code 70% code coverage, 100% pass rate Scenarios Validation tests for all scenarios At least 1 test per scenario, 100% pass rate Key QSRs (enumerate) Home page load time 10,000 simultaneous users Within 2 seconds Key Risks System administrator not able to deploy the system in the production environment because of an incomplete/incorrect Installation Guide A person that has never deployed the system before is able to do it in our test environment by following the Installation Guide Bugs Bugs will be classified as follows … No Priority 1 & 2 bugs Build Verification All unit tests will be run as part of the daily build 100% pass rate Configurations Scenario validation tests executed with IE6, IE7, FireFox and Safari browsers 100% pass rate Other Bug debt per developer Less than 7 Agile Plan Plan an Iteration How long is an iteration? Scenario 1 Scenario 2 Scenario 3 Scenario 4 Scenario List Iteration 1 Scenario 1 Scenario 2 Scenario 3 How big is a scenario? How many scenarios can I implement in an interation? Iteration Plan How Long is an Iteration? Plan an Iteration •Time-boxed –2 to 6 weeks –4 weeks is a reasonable default –Planning overlaps with developing and testing •(Self-organizing) How Big is the Scenario? Plan an Iteration •Use Rough Order of Magnitude (ROM) –~1 day -> 0 –~5 days or less -> 1 –~10 days -> 2 –> 10 days -> 3 •Consider splitting How many scenario per Iteration? Plan an Iteration • Velocity – The number of scenario units completed in an iteration • Calculating velocity – Sum of the ROM of each scenario • Initial velocity – (developers * iteration weeks) / 3 Example: Schedule Scenario Plan an Iteration Scenario 1 – ROM 1 Scenario 2 – ROM 2 Scenario 3 – ROM 1 Scenario 4 – ROM 1 Scenario List Initial velocity = (3 developers * 4 weeks) / 3 = 4 Iteration 1 Scenario 1 Scenario 2 Scenario 3 Iteration Plan Using Kano Analysis Plan an Iteration Minimum Acceptance Level Minimum Acceptance Level Iteration 3 Iteration 2 Iteration 1 Divide a Scenario/QoS to Tasks Plan an Iteration Scenarios Split Browse Catalog for Products Order Products for Pickup Catalog Create UI Order DB Browse for Products – Catalog Provisioning Browse for Products – Product Selection Create Sporting Good Order Dev Tasks Divide Test Tasks Assign Cost a Dev Task Implement a Dev Task • At the beginning of each iteration • Developers estimate their tasks in hours – Check if SumOf(tasks) + overhead > iteration length • Split or load-balance tasks if necessary • Update with the actual hours when done • Use velocity for estimation • Use actual hours for tracking • The difference between the two is the project overhead: – Meetings, code reviews, e-mail, etc. ROLE: Architects Create Solution Architect • Coordinate between Development and Operations – Not a Developer – Not responsible for Class Design • Hands-On Architect – Limited documentation (Architectural decisions) – Setup Solution structure • Responsible for Quality of Service Requirements – Architectural (evolving) prototype – Threat Modeling – Performance TOOLS: Application Designer Create Solution Architect • Define and visualize applications in a Visual Studio Solution and how they are connected Layering Architecture Create Solution Architect Shadow Architecture Create Solution Architect • MSF (Agile community) has to BDUF is that – Without working software, these efforts have no feedback mechanism. • Architecture must lead and reflect the structure and logic of the working code • MSF utilize Shadowing – Architecture for the functionality to be completed in the iteration – A top-down approach of using System Designer • System Designer in VSTS is optimized for bottom-up “composition” of systems Threat Model Create Solution Architect • Brainstorm threats to the system • Rank the threats by risk – How serious are the consequences? – How easy is the attack? • Find mitigations for the threats • Decide which threats to address, and follow up STRIDE-Categorize Threat Create Solution Architect Types Example Spoofing Somebody looked over your shoulder when you entered your PIN. Tampering Extra, unwanted items show up in your basket at the counter in the supermarket. Repudiation “You never lent me 1000 euros!” Information Someone put your salary slip up on the wall at the office Disclosure Service Someone slashed your car tyres and you can’t get to work. Elevation of You use your boss’ phone to order free lunch. Denial of Privelege DREAD-Rank Threats Create Solution Architect Rankings Description Damage Potential The extend of the damage Reproducibility How easy is it to get a potential attack to work? Exploitability How much effort and expertise is required to mount an attack? Affected Users A numeric value characterizing the ratio of installed instances of the system that would be affected if an exploit became widely available Discoverability The likelihood that, if the vulnerability were to go unpatched, it would be found by external security researchers, hackers, etc TOOLS: Threat Modeling Tool Create Solution Architect Coding!! Implement a Dev Task • Unit Testing – Not a choice – Rule of thumb: 70% code coverage • Check-in Policy – Check as early as possible – Prevent breaking the build – Unit Tests must succeed • Refactoring is not bad – Requirements change – Visions change Test First or Code First? Implement a Dev Task • It doesn’t matter, just do it! Create or Update Unit Tests Write Code for a Development Task Perform Unit Test Check Code against Design and Code Guidelines Coding Guidelines Implement a Dev Task • Full Design Guidelines can be accessed at http://msdn.microsoft.com/library/enus/cpgenref/html/cpconNETFrameworkDesignGuidel ines.asp. – These provide some more detail and some justifications for the guidelines described above. • Community Efforts, by Lance Hunt – C# Coding Standard for .NET – http://home.comcast.net/~lancehunt/CSharp_Coding_ Standards.pdf Integrate Code Change Implement a Dev Task • Policies – Pass Unit Test – Pass Code Analysis – Conduct Code Review • IMPORTANT: Make sure you… 1. Put a lock on to the server (source control) 2. Get latest version of the code from server 1. Integrate the differences locally 3. Compile and must PASS Check-In Suit 4. Check in only the changes 5. Release the lock Coding!!! Fix a Bug • Bug classification – MSF 4 Process Guidance • 1 = This iteration • 2 = This release • 3 = May or may NOT fix – Microsoft Best Practice: Tell and Ask – Be aware: Honesty pays off • Unit Test – Helps validating bug fixing – Can be used to repro a bug and check for the fix Daily Build Build a Product • Daily Build Vital! – Heartbeat – Keep quality near 100% • Use Build Verification Tests (BVT) for validation – Scenario based • Daily Integration – No surprises in the end – Saves time Select and Run a Test Case Test a Scenario • Involve testers during the project – Not at the end • Automate tests – Where possible Opening a Bug (in Microsoft) Test a Scenario Select and Run a Test Case Test a QoS • Performance Testing – Global performance, scenario performance – Load testing (users) – Stress testing (resources) • Security Testing – Various roles, environment • Exploratory Testing – Not monkey testing – Act as persona Close a Bug Test a Scenario • Testers decide, NOT the developers Risk Guide Project • Definitions – Dictionary: “Possibility of loss or injury” Webster’s Collegiate Dictionary, 10th edition – Common: A problem waiting to happen • Characteristics – Inherent in every project – Neither intrinsically good nor bad – Not something to fear, but something to manage Risk Guide Project • Simplified risk management framework • Risk is just another work item • New or renamed Fields – Severity is the same as Impact – Priority replaces Exposure • No Probability field • Prioritization is done by customer – State • Risks can be in Active or Closed states – Reason • Reason a risk is in current State Risk Guide Project • New or renamed Fields – Iteration •Iteration in which risk could be realized •Risk can be made part of Iteration Backlog – Mitigation and Contingency plans are tracked in a general Description field • Risks that impacts solution architecture are handled by the Architect – Architect creates an architectural prototype to validate proposed architecture Access Progress Guide Project • Remaining Work – How much work is left to be done, and when will it be completed? Access Progress Guide Project • Quality Indicator – What is the quality of the software? Access Progress Guide Project • Velocity – How quickly is the team completing work? Access Progress Guide Project • Unplanned Work – How much unplanned work is there? Access Progress Guide Project • Actual vs. Planned Work – How many scenarios can be completed before quality is unacceptable? Access Progress Guide Project • Bug Rates Access Progress Guide Project • Reactivations Access Progress Guide Project • Remaining Work – How much work is left to be done, and when will it be completed? • Quality Indicator – What is the quality of the software? • Velocity – How quickly is the team completing work? • Unplanned Work – How much unplanned work is there? • Actual vs. Planned Work – How many scenarios can be completed before quality is unacceptable? • Bug Rates • Reactivations Stabilize • Focus on delivery • Feature Complete – NO new functionality will be added • Bugs Fixed should exceed Bugs Found • Balances stability against customer needs • Can result in loss of features for the sake of stability Deploy Microsoft Solutions Framework Microsoft Operations Framework Deploy • Goal: Release to Production or Acceptance • Team focus – To facilitate the smooth transfer of the solution from the project team to the operations team – To secure customer approval that the project is complete Validate Release • Deliverables – Repository of all versions of documents, load sets, configurations, scripts, and code – Release Notes Deployment Best Practice • Test deployment early in an environment with production characteristics • Deploy multiple times during Development Lifecycle to improve the process • Automate as much as possible • Produce useful and up-to-date Release Notes • Work closely with the Operations Team Customizing VSTS Bobby Mak Senior Consultant Microsoft Technology Center Microsoft Taiwan bobbymak@microsoft.com Microsoft Solution Framework for Agile Software Development Workshop April 18th & 20th , 2006 Process Templates in VSTS • Work Item types, workflow • Check-In policy • Document templates • Reports • Groups and permissions • Integrated help Extensibility • Process templates can be edited • Process guidance includes Microsoft® InfoPath® editing form • Third-party tools available from Osellus Method of Extension • Framework – Building a process within the MSF meta-model, adopting pieces or all of MSF for Agile or Formal Software Development process • Prototype – Using pieces or all of MSF for Agile Software Development or Formal as a base to build your own process without the meta-model Process Guidance Architecture Process Guidance (MSF) Layout Word Docs Activities Workstream Roles etc Single Primary XML Datasource XSL Transforms Index Activities Roles etc (With PageInfo.xml Info) Single HTML URLs IE (User) CTP/Betas MSDN Project Portal JScript XML Mapping Table Keyword & Context -> URL XML Index F1 Search Process Guidance Integration (VSTS) URLs Help System (DExplorer) Extending Team System VSTF Extension Kit • Process – Process Template Customization Guide – MSF Process Guidance Customization Guide • Core Service – – – – – – – – – – Authoring work items Work Item Query Language Work Item Tracking Object Model Check In policy extensibility Continuous Integration Event Subscription Object Model Help Linking Service Extension Reports Extension Security Service Guide • Operation – Configure TFS to use a Remote SharePoint Server – Migrate TFS from a single to dual server – Migrate TFS to a new server – TFS Backup and Restore Q&A Tom Lee – DPE Architect Evangelist Wong-Tun Chou – DPE ISV Evangelist Microsoft Solution Framework for Agile Software Development Workshop April 18th & 20th , 2006 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY. Appendix Methodology Agile MSF4ASD MSF v4 Principle Essential Mindset Role Practices MSF4CMMI Project Management Activities Process Work Products Tools VSTS Microsoft Solution Framework For Agile Software Development Workshop April 18th & 20th, 2006 Envision Capture Project Vision Capture Project Vision Write Vision Statement Define Personas Microsoft Solution Framework For Agile Software Development Workshop April 18th & 20th, 2006 Plan an Iteration Determine Iteration Length Plan Build Iteration Guide Project Access Progress Create a Scenario Create a Scenario Create Solution Architect Create Solution Architect Plan an Iteration Brain Storm Scenario Prioritize Scenario List Partition the System Determine Interface Schedule scenario Create a QoS/Scenario Create a Scenario Create a Scenario Plan an Iteration Create Solution Architect Plan an Iteration Dev. Lifestyle Snapshot Write Scenario Description Storyboard a scenario Estimate a scenario/QoS Create Architecture Phototype Divide Scenario to Tasks Create a QoS Create a QoS Create Solution Architect Create Solution Architect Plan an Iteration Implement a Dev Task Brain Storm QoS Prioritize QoS Requirement Develop Performance Model Dev. Threat Model Schedule QoS Cost a Dev Task Capture Project Vision Create a QoS Create a QoS Test a QoS Create Solution Architect Plan an Iteration Refine Personas Write QoS Requirement Identify Security Objectives Write QoS Test Create Infrastructure Arch. Divide QoS to Tasks Test a Scenario Test a Scenario Define Test Approach Write Validation Test Fix a Bug Fix a Bug Fix a Bug Fix a Bug Guide Project Reproduce the bug Locate the bug cause Decide Bug Fix Strategy Reassign the bug Triage Bug Implement a Dev Task Fix a Bug Fix a Bug Imp Dev Task/Fix Bug Create of Update Unit Test Code the Fix Create of Update Unit Test Code Review Implement a Dev Task Imp Dev Task/Fix Bug Imp Dev Task/Fix Bug Imp Dev Task/Fix Bug Implement a Dev Task Write Code for Dev Task Perform Unit Test Perform Code Analysis Refector Code Integrate Code Change Build Build a Product Fix a build Stable Check-In Accepted Build Test a Scenario/QoS Conduct Exploratory Test Build a Product Build a Product Build a Product Test a Scenario/QoS Test a Scenario Start a build Verify a build Accept Build Select & Run a test case Open a Bug Test a Scenario Test a Scenario Verify Fix(s) Close Bug(s) Deploy Release a Product Release a Product Release a Product Release a Product Execute a release plan Validate a release Create Release Note Deploy the product Cont. Guide Project Guide Project Guide Project Guide Iteration Guide Iteration Guide Iteration Review Objectives Access Progress Identify Risk Monitor Iteration Mitigate a Risk Conduct Retrospective