Software Product Development

Course information and plan

TechnicalUniversity of Denmark

Spring 2006

What should you expect from this course?

Completing a successful software project is more than just coding. It also requires other activities such as customer interaction, planning, documentation and testing. It usually involves a number of people with a set of specialized tasks and skills who have to work together as a team in a structured manner.

This team of peers is brought together to represent the entire set of constituents that are involved with the production, use, and maintenance of the product. Each team member, or role, is accountable for representing the specific needs of its constituencies and none is more important than another. Together these views provide the necessary checks and balances to ensure that the team produces the right solution.

This course will give you an introduction to the different roles and their tasks during the different phases of a software project. The lectures will be given by different Microsoft employees, each of them experts within a given role.

During this course you will get acquainted with the work associated with the different roles through a number of assignments we will give you. And even though it is scaled down, you will under our guidance be creating a real software product using Microsoft tools.

What is expected from the students?

Evaluation:

The evaluation of the course will be based on one or more mandatory reports and an oral examination. The course grade, which is individual, will be an overall evaluation of the reports and presentation.

The reports should be handed in by each group and the oral examination will be group-wise. During the oral examination each student should present a topic related to the group’s report, and each student will be asked questions relating to the report, the presentation, and the course.

More practicaldetails about mandatory reports and the oral examination will be announced later.

The course comprises lectures, introduction and use of a collection of technologies, labs, exercises and projects. In the final report you should show that you master the concepts, processes, technologies etc. introduced throughout the course. Therefore, we strongly encourage you to perform well on the individual labs, exercise etc., which systematically will build up the skills needed for the mandatory reports.

Envisioning / Planning / Developing / Stabilizing
6/2 / 13/2 / 20/2 / 27/2 / 6/3 / 13/3 / 20/3
27/3 / ¾ / 24/4
8/5
9/5
  • Vision Scope document
  • Overall scenarios
  • Personas
  • Storyboards
/
  • Master Project Plan
  • Functional Specifications (start)
  • Risk Analysis
/
  • Functional Specifications (done)
/
  • System Architecture (Conceptual, Logical
    and Physical Design)
/
  • One Page Specs
  • Design Brief
  • Plan updated
/
  • Test Plans
  • Test Design
  • Plan updated
/
  • Code
  • Unit Test
  • Code Coverage Report
/
  • Threat Model
  • User documentation
/
  • Bug reporting in Product Studio
  • Test reporting
  • Final Report

Overall Product Theme

The product you will be creating is a “Bowling reservation system” and on the first day of the course we will give you some of the requirements to such a system and an example of a real implementation running live.

Bowling reservation system

During the last decade bowling centers in Europe have changed from being focused around the sport to being more event driven including food, drinks and other areas of entertainment. In the bowling centers the bowling lanes are reduced to being the magnet that pull people into the bar or restaurant which are the main sources of revenue.

A typical bowling center has 20 lanes, 300 seats in the restaurant and between 10 and 40 employees on duty with a yearly revenue of up to 100 million dkk.

This transformation has also had a major impact on the use of IT in the business where a tight integration between a number of highly sophisticated systems are needed.

Reservation system:

  • Customers have to be able to make reservations and payment in advance by phone or over the internet.
  • The system should be able to handle back to back reservations between the restaurant and bowling lanes – taking into consideration how long the reservation is for and size of the party.
  • Since the customers are not experts at using the system, it has to be very recognizable and intuitive to use.
  • The number of employees and the size of the restaurant need to be taken into account (spread out reservations)
  • Customer profiles have to be taken into account (smokers, bachelor partys, etc.)
  • The system must prevent internal fraud (giving away playing time to friends for free or discount prices)

As example see :

Bowling lane integration

  • The individual bowling lanes have to be monitored: based on data from the reservation system each lane has to be opened and closed, the names of the individual players should automatically be download and in case of breakdown, the system should activate an alarm.
  • Export scores: Print scores, send scores to customers, campaign offers and competitions

We will provide a bowling lane emulator (Thomas H. and Esben will help)

Campaign system:

  • Usually people want to go bowling on a weekend night, which is not a very effective use of the facilities. Therefore is should be possible to make campaigns in order to attract more customers on normal days by providing special offers.
  • A loyalty program - it should be possible to track frequent customers and keep them loyal with an incentive program giving them special deals when they make new reservations or sending out emails with special offers.

Reporting

  • Utilization of lanes and restaurant
  • Profitability – Revenue vs. numbers of employees on duty
  • Export data to financial systems

Agenda

Time & Place:

Each Monday 30/1 – 9/5:

Building 303, room 45
8:15am – 10:00am / Lecture
Building 308, room 1,2 &3
10:00am – noon / Training class

Week plan:

Date / MorningLectures / Training class / Role / Lab duty
30/1 / Introduction (Michael Nielsen)
Product presentation(Thomas Hejlsberg)
VSTS intro (Henrik Vestergård) / VS & VSTS Lab / Henrik Westergaard
6/2 / Envisioning PM (Torben Siggard) / Project Kick-off
Scenario document Personas
Vision document Storyboard
Technology investigation / Program Manager / Mike Borg
13/2 / Planning process and planning PM
(Torben Siggard) / Continue on documents
Start on specs Risk analysis / Program Manager / TBD
20/2 / Planning processand planning PM
(Troels Bent Hansen) / Func specs, Estimation, Schedule / Program Manager / TBD
27/2 / Architecture (Pavel Hruby) / High level architecture, UML etc. / Architecture / TBD
6/3 / Moving from Planning To Developing (Alessandro Guida) / Design Briefs, design specs, iteration planning / Developer / TBD
13/3 / Planning Test (Mario Luici) / Test plans, test design / Tester / TBD
20/3 / Development process and development Dev (Bugsy) / Coding (Unit test API’s). Code coverage,
design reviews and code reviews / Developer / TBD
27/3 / Development Test (Henrik Frovst) / Automatic tests, coding / Tester / TBD
3/4 / Trustworthy Computing (Alessandro Guida)
User Education (Clara Bui) / Threat Modelling / Developer & Technical Writer / TBD
24/4 / Stabilizing process and stabilizing Test (Michael Englev) / Coding and bug handling. Code Coverage / Tester / TBD
8/5 / Performance (Thomas Hejlsberg) / Coding and profiling / Developer
Tester / TBD
9/5 / Test labs (Allan Guinot)
Wrap up (Michael Nielsen) / Coding, run auto test, test reporting / Tester / TBD

General Training

All general training sessions use the “MSF for Agile Software” portal which can be found on the VSTS foundation server.

Labs for Visual Studio Team System

This document contains some labs and some resources that will take you through most of the features in Visual Studio Team System (VSTS).

General resources

Here are some great resources if you want to dive in to VSTS. I will mention specific resources in the labs when needed.

  • - A lot of good introduction videos.
  • - Web casts from MSDN
  • - The main Team System site
  • - MSDN, the primary development resource

Lab 01 - Team System Overview

  • Look at the following web cast to get an introduction to VSTS. You need to log in with your Microsoft Passport

Lab 02 - Project Kickoff

  • Create a team project. Please announce your project name, so teachers are able to follow progress
  • Enter the Project Portal. Create an new announcement that identifies who is working on the project.
  • Optionally, create at list of contacts and add all project members to the list

Lab 03 - Plan the Project

  • Install Microsoft Project 2003 from M:/Alle/.The filename is “Project 2003”
  • Update the development plan

1)Open the “Development project plan” from your Project Portal

2)From the toolbar in MS Project, click “Choose Team Project” and connect to your project.

3)Click “Get Work Items”. Add, edit and delete the items/tasks so it fits your plan.

4)Finally, click “Publish

Lab 04 - Check-in Policy and Source Code Control

A great resource is:

  • From look at:
  • If you are familiar with version control you can watch all videos under Team Foundation Version Control.
  • Watch “Enforcing and Customizing Check-In policies”
  • Enable a check-in policy for your project. Test it.
  • Commit a project to Source Control
  • Make sure that all source code is under source code control for the remainder of the project (and for the rest of your life for that matter :-)

Lab 05 - Application Design

  • Have a look at all the videos under VSTE/Arc on
  • Create a logical datacenter diagram which represents the infrastructure you would suggest the application deployed on
  • Create the application diagram, which specifies the overall application structure of your bowling application
  • Create a deployment diagram where you deploy our application into the logical infrastructure diagram
  • Try and fix the deployment errors!
  • Create a class diagram
  • From your diagrams, try and create the project templates

Lab 06 - Code Quality

  • Watch this webcast on writing quality code:
  • Create unit tests run them
  • Enable code coverage and verify results
  • Run the static code analysis. Look at the errors and try to fix an error of you choice 

Lab 07 - Build Process

This is an entirely free lab. Look at the following online resources:

Implement build automation in the project.

Lab 08 - Testing

  • Look at the following webcast:
  • Create a manual test case for your project.
  • Run the manual test case(s)

Lab 09 - Load Testing

Look at the following webcasts:

  • If your solution contains a Web Application (depends on project scope), create some web tests that runs through your application. Optionally you can create a “hello world” web app to run web tests
  • Create a load test. Explore the load test results. If you do not have a web test, just add some unit tests to the load test scenario.

Lab 10 - Fixing Bugs

  • Watch the following webcast:
  • Create a new bug under work items. Take a bug through the work flow (work flow can be viewed here:
  • Look at the bug rate report (it might take some time before the bug shows up in the report because reporting services are updating on a certain schedule). The report is found in the Team Explorer, under reports and is called “Bug Rates”.
  • Use bug reporting for the remainder of the project (and your career :-)

Lab 11 - Source Control

Please refer to lab 04

Lab 12 - Process Customization

This is entirely optional.

Have a look at:

Lab 13 - Reporting

Look at the webcast:

  • Look at the Quality Indicators report. How would you use this report?
  • What other reports would you consider important if you should identify current risks in your project?

Lab 14 – Project Portal

For more information on the project portal look at:

Week 1: Introduction to Visual Studio.net & Visual Studio Team System

  • Visual studio lab exercise“Develop a web solution, deploy it and run it”:
  • Walk throughVSTS Lab 1: “Team System Overview”
  • Walk throughVSTS Lab 14: “Project portal”

Week 2: Technology exploration

  • Walk throughVSTS Lab 2: “Project overview”
  • Use VS.net to exploit different technologies and build a simple prototype

Go to the “MSF for Agile Software” portal and select the “Business Analyst” role

  1. Use the Vision statement template and the step-by-step guide to create your vision document
  2. Use the persona template to describe the personas you are going to support
  3. Use the scenario template to describe the high level scenarios
  4. Create a storyboard to visualize one of your scenarios

Week 3: Vision Scope and Functional Specs

  • Complete documents from last week
  • Write one page specs for all feature areas
  • Risk analysis

Week 4: Functional Specs and Scheduling

  • Complete one page specs for all feature areas
  • Write a functional spec, including requirements, for one of the feature areas
  • Estimate the Project
  • Schedule the Project
  • Walk throughVSTS Lab 3: “Plan the project”

Repeat the steps on your own solution

Week 5: Architecture

Go to the “MSF for Agile Software” portal and select the “Architect” role

Select the step-by-step guide “Create solution architecture”:

  • Select step 1: “Partition the system” and use the guidance to design Application and System diagrams using Visual Studio
  • Select step 2: “Determine System interfaces” and using the guidance, add interfaces to your application diagram
  • Select step 3:”Create Infrastructure Architecture” create a Logical datacenter diagram using Visual Studio.net

Inspiration can be found in VSTS Lab 5: “Application design”

Week 6: Design

Develop a design brief for each one page spec

Develop functional/design specifications for each feature associated to a one page spec

Week 7: Test Planning

Go to the “MSF for Agile Software” portal and select the “Tester” role

Select the step-by-step guide “Test a scenario”:

  • Select step 1: “Define Test Approach” and specify the test mission, test coverage, test techniques, and test data using the “Test approach worksheet”

Week 8: Coding

Go to the “MSF for Agile Software” portal and select the “Developer” role

  • Read through “Implement a development task”
  • Walk throughVSTS Lab 6: “Code quality” exercise 1: Create unit tests
  • Walk throughVSTS Lab 4: “Check in-policy”
  • Walk throughVSTS Lab 11: “Source control”
  • Read through “Build a product”
  • Walk throughVSTS Lab 6: “Code quality” exercise 2-7
  • Walk throughVSTS Lab 7: “Build process”

Develop your own solution under source code control, including unit test, and create and execute a build

Week 9: Developing automated tests

Go to the “MSF for Agile Software” portal and select the “Tester” role

Select the step-by-step guide “Test a Quality of Service Requirement”:

  • Select step 6: Read through “Select and Run a Test Case” and walk through VSTS Lab 8 : “Testing”
  • Create an automated Web test using Web test in VSTS, use as a test application.
  • Create validation rules for the automated test.
  • Data driven test sample: Record a new test on iBuySpy that tests the “search” function. Create a database containing a minimum of 3 search phrases and create a DB reference to the automated Web test you created earlier.
  • Load test: Create a new Load test that includes the two previous tests. Try to gradually increase the load starting with a couple of concurrent users and then every time the test succeeds, increase the level of concurrent users. Find the maximum amount of users.
  • Select step 7: Read through “Open a bug” and walk throughVSTS Lab 10: “Visual Studio Team System – Fixing Bugs”

Repeat the steps on your own solution

Week 10: Threat modeling

Continue feature development

Go to the “MSF for Agile Software” portal and select the “Architect” role

  • Select the step-by-step guide “Create solution architecture” and select step 3: “Develop Threat model”
  • Use the step-by-step guide to fill out the “Threat model” template

Week 11: Stabilizing Test

  • Bug registration
  • Bug fixing
  • Verification

Week 12: Performance

Go to the “MSF for Agile Software” portal and select the “Architect” role

  • Select the step-by-step guide “Create solution architecture” and select step 4: “Develop performance model” and walk throughVSTS Lab 9: “Load testing”
  • Perform load testing on your own solution
  • Post performance issues in the bug database, fix them and run the test again

Week 13: Test labs

  • Coding of automated tests
  • Running automated tests
  • Test reporting