Traa, J.W.A. - RUP vs. MSF - A Comparative Study
Traa, J.W.A. - RUP vs. MSF - A Comparative Study
Traa, J.W.A. - RUP vs. MSF - A Comparative Study
VS.
A COMPARATIVE STUDY
By
Master Thesis
By
254014jt
Final Version
Supervisors
Erasmus University Rotterdam
Flavius Frăsincar
LogicaCMG
Eric van der Laan
2
3
ABSTRACT
For this thesis, which I write for the study Informatics & Economics at the Erasmus
University Rotterdam, The Netherlands, I am a trainee at LogicaCMG Rotterdam.
This thesis makes a comparative study of two software engineering processes, namely
the commonly used IBM Rational Unified Process and the new Microsoft Solutions
Framework for Agile Software Development. Both software engineering processes have
the same objective, to create a solution that meets the needs and expectations of the
stakeholders. However, they have different approaches to reach their goal. The Rational
Unified Process focuses on the time schedules and budget to create a predictable and
disciplined software development environment. Microsoft Solutions Framework for
Agile Software Development does not believe in predictability, it considers the fact that
changes are inevitable and do occur during the software development life cycle.
Therefore, this software engineering process focuses on the ability to cope with changes
to create an adaptive and responsive environment. This dissertation compares the two
processes in three different points of view, namely their philosophy, focus in time and
work division, to discover their common grounds and differences. It makes also a
proposal on how to choose one of the two software engineering processes for a project
depending on the project characteristics.
Summarizing, the goal of this thesis is to explain the IBM Rational Unified Process and
the Microsoft Solution Framework for Agile Software Development, to identify the
common grounds and differences between the two software engineering processes, to
recognize the most suitable process for a project based on its characteristics.
4
CONTENTS
ABSTRACT ........................................................................................................................ 4
CONTENTS ........................................................................................................................ 5
GLOSSARY ........................................................................................................................ 7
ACRONYMS ..................................................................................................................... 11
5
Content
6
GLOSSARY
Agile software development
An adaptive change-oriented software development. Agile software development
assumes project change in its requirements, features and schedules.
Activity
An activity is a piece of work that an individual in his role performs, which produces a
meaningful result, called an artifact, in the context of the project.
Architecture
See software architecture.
Architectural view
A simplified description of a system from a particular point of view, covering only the
relevant aspects of this perspective.
Artifact
A piece of information that is produced, modified, or used by a process of the project
while working towards the final product.
Build
The compilation of all the files, libraries, or components into a new set of executables,
libraries, or components.
Checkpoint
A moment in the Microsoft Solutions Framework to check the status of the software
development project to control the project team is still on the right track to deliver a
solution that meets the needs and expectation of the stakeholders.
Component
A clearly defined separable, replaceable and reusable building block of computer
software system.
7
Glossary
Development process
The process of developing computer software or system. This process can be supported
by using a software engineering process as guidance.
Discipline
A collection of activities that are all related to a major ‘area of concern’.
Framework
A flexible and scalable outline for software development projects that can be adapted to
meet the needs of the stakeholder, within a specific domain.
Increment
The difference between two software releases at the end of an iteration.
Iteration
One cycle of a set of instructions to be repeated in the process until a specific result is
achieved.
Iteration assessment
An assessment, which concludes an iteration, to evaluate what goals are achieved or not
and why, and what lessons can be drawn from this iteration.
Method
A controlled and systematic way to accomplish a task or attain a goal.
Milestone
A beforehand fixed point in a process at what a goal or task is achieved.
Model
A model is a simplification of the reality that helps us master a large, complex system
that cannot be comprehended in its entirety.
Programming language
A standardized language to program computer software. Examples of languages are C#
(CSharp), C++ and Java.
8
Glossary
Refactoring
A disciplined technique to alter the structure of an existing code base to improve its
design quality while not changing any of its functional characteristics [9].
Release
A stable, executable version of the software and the accompanied peripherals necessary
to use this release.
Requirement
A condition or capability that a system must require [13].
Role
A role defines the behaviour and responsibilities of a resource, individual or a group of
individuals working together as a team to produce coherent artifacts.
Software architecture
A blueprint, a coherent set of abstract patterns guiding the structure and behaviour of
the system, in terms of the usage, functionality, performance, resilience, reuse,
comprehensibility, economic and technologic constraints and trade-offs [16].
9
Glossary
Software platform
A set of agreements and prescribed standards for developing on the software
development platform to guide standardized development for computer software. For
example dotNet or J2EE.
Stakeholder
A person or representative who has a vested interest in the outcome of a project or
whose opinion must be accommodated. A stakeholder can be an end user, a purchaser, a
contractor, a developer, or a project manager.
Track
A phase in time of a project that is directed with Microsoft Solution Framework for
Agile Software Development.
Work item
An actionable unit of information that is produced, modified, or used by the MSF4ASD
process of the project while working towards the final product.
Work stream
A group of activities that are all related to a major ‘area of concern’ of the MSF4ASD.
10
ACRONYMS
ASD Agile Software Development
IT Information Technology
11
Chapter 1
INTRODUCTION
According to the Standish Group in Chaos Report 2001 [32], system development
projects become more successful. Where in 1994 only 16% of application development
projects met the criteria for success, in 2000 this percentage is increase to 28%. They
say that in the year 2005 the success rate has increased again. The Chaos study of the
Standish Group shows that the time- and cost-overshooting of IT-project have decreased
from respectively 222% over the original time estimates in 1994 down to 63% and from
189% over the original cost estimates in 1994 down to 45% in the 2000 study. The
reasons for the increase in successful projects vary from lower average cost of a project,
improvement of software development platforms to monitor and control the processes,
and better trained project managers with better software engineering processes [32]. The
history perspective of success rate of IT-projects is shown in Figure 1-1.
12
Chapter 1 | Introduction
Figure 1-1 The resolution of the 30,000 applications projects in large, medium, and small cross-
industry U.S. companies tested by The Standish Group since 1994 [32].
As shown in Figure 1-1, still a big percent of the projects fail or are late and/or over
budget. The most important reasons of most of these failures are not the lack of fund or
technology, but the shortcoming of project management knowledge and executive
support. Without a well-defined software engineering process with a solid business
vision, projects can become an uncontrollable and reckless train [32].
There are intern and extern factors that stipulate the outcome of the IT-project. Extern
factors are uncontrollable aspects of an IT-project like the customer’s business
competition environment and government legislation. The intern factors can be
controlled by the customer and project team to positively influence the outcome of a
development process, factors like customer’s business processes, software engineering
processes and software development platforms. The Chaos Report shows the rise of the
software development, but the Promised Land is still a far away. It is wise to keep
researching in the field of software development. Therefore, this thesis addresses new
relevant research on software engineering processes and software development
platforms of an IT-project.
1.1 MOTIVATION
A software engineering process is a process that provides a disciplined approach of
assigning tasks and responsibilities for the stakeholders within a development
organisation. Stakeholders include for example the customer, project manager, architect
manager, developers and testers. Its goal is to ensure the development of high-quality
software that meets the needs of its customer and end-user, within bounded time
schedule and budget [14], [16]. The software engineering process refers to a
standardized, documented methodology like Waterfall processes [30], Rational Unified
Process [17] and Agile Software Development [10].
13
Chapter 1 | Introduction
IBM has a software development platform, called IBM Rational, to support their
software engineering process. This group of tools enables system development teams to
define, configure, tailor, document and practice the Rational Unified Process for
developing a system [13]. Microsoft released a new software development platform at
the end of 2005. This new platform, called Visual Studio 2005 Team System, is a team-
oriented version of the Visual Studio integrated development environment (IDE) [8].
For the first time, this new version of the Microsoft IDE offers full support to the
software engineering process in comparison to older versions of the IDE. Microsoft
claims that it is expanded with software tools for, among other things, system analysis,
system design, version management and configuration management. Microsoft presents
the Agile Software Development as a new software engineering process, and claims that
Microsoft Visual Studio 2005 Team System fully supports this software engineering
process [22].
LogicaCMG mainly uses the Rational Unified Process (RUP) as software engineering
process for their ICT projects [17] and it utilizes the IBM Rational software
development platform to support this process. The projects that are based on the
Microsoft dotNet software development standard use the Microsoft Visual Studio IDE.
LogicaCMG wants to make a conversion from Microsoft Visual Studio 2003 to
Microsoft Visual Studio 2005 and possibly a shift from Rational Unified Process to
Microsoft Solutions Framework for Agile Software Development for some project. This
thesis must give LogicaCMG more insight about the MSF4ASD and Visual Studio 2005
Team System when shifting to the new software development platform and the agile
flavour of Microsoft Solutions Framework as described in the following research
problem.
Research problem
What are the common grounds and differences regarding the IBM Rational Unified
Process and the Microsoft Solutions Framework for Agile Software Development and
how are these supported by Microsoft Visual Studio 2005 Team System.
Question 1 : What are the IBM Rational Unified Process and the Microsoft
Solutions Framework for Agile Software Development?
To understand the comparison of the IBM Rational Unified Process and Microsoft
Solutions Framework for Agile Software Development, one first has to understand what
a software engineering process is. This introduction explains generally relevant
characteristics of software engineering processes. Knowing this, the thesis describes the
principles, range of ideas, and the process procedures of the IBM Rational Unified
Process and the Microsoft Solutions Framework for Agile Software Development.
14
Chapter 1 | Introduction
Question 2 : What are the common grounds and differences regarding the IBM
Rational Unified Process and the Microsoft Solutions Framework for Agile
Software Development?
The two SEPs, the IBM Rational Unified Process and the Microsoft Solutions
Framework for Agile Software Development, are compared in three different views.
Firstly, this thesis compares the two on their philosophy by evaluating the RUP’s best
practices and the MSF4ASD’s principles. Secondly, this thesis compares the two on
their time segmentation by evaluating the RUP’s phases and MSF4ASD’s tracks.
Thirdly, this thesis compares the two on their workload classification by evaluating the
RUP’s disciplines and MSF4ASD’s advocacy groups.
Question 3 When is the IBM Rational Unified Process or the Microsoft Solutions
Framework for Agile Software Development more appropriate to use?
The answer of Question 2 shows the common grounds and differences between the two
software engineering processes, and therefore this thesis is able to give a general advice
in which project situation the IBM Rational Unified Process or the Microsoft Solutions
Framework for Agile Software Development is more appropriate to use as guidance
during the development of the solution.
This thesis explains what RUP and MSF4ASD imply by highlighting the principles,
essentials and procedures of the processes. This description together with the results of
the comparison of the two SEPs and the explanation on how these are utilised in
Microsoft’s VSTS, enables LogicaCMG to see what the impact and consequences are
when using Microsoft Solutions Framework for Agile Software Development as
software engineering process and Microsoft Visual Studio 2005 Team System as
software development platform instead of IBM Rational Unified Process and IBM
Rational Products.
1.3 SCOPE
In order to answer the research questions this thesis compares two software engineering
processes, namely Microsoft Solutions Framework for Agile Software Development and
Rational Unified Process, and researches Microsoft’s new software development
platforms, named Microsoft Visual Studio 2005 Team System. The research focus is on
high-level software engineering processes and software development platform, so for
example the detailed description of the artifacts and work items are out of the scope, to
ensure that this dissertation concerns on various kinds of software development projects.
Note that, the research does not embrace elements that are not part of a software
engineering process, like the costs of licenses, training and the personal preferences.
Also note that, this thesis does not judge which software engineering process and/or
15
Chapter 1 | Introduction
1.4 METHODOLOGY
This dissertation uses literature, interviews, conferences and the Microsoft Visual
Studio 2005 Team System to answer the research questions and to solve the research
problem. The literature is obtained from the Erasmus University Rotterdam’s library,
electronic databases and internet. The interviewees are found in the companies which
are concerned during this research, mainly LogicaCMG, IBM and Microsoft, and they
are authorized to make the decision which software engineering process and software
development platform are used or they have experiences or knowledge in one of these
fields. The results of the literature research eventuate in a strong theoretical base of the
two SEPs and software development platform. The interviews, conferences and our
practice with Microsoft Visual Studio 2005 Team System give an insight of practical
experience in the field of software development.
The second part of this thesis addresses the software development platform in general
and the Microsoft Visual Studio 2005 Team System. Chapter 6 begins with an
introduction on what a software development platform implies and continues with
answering research Question 4 by examining the features of Microsoft Visual Studio
2005 Team System and describing how the mindsets of the SEP are supported. The last
chapter, Chapter 7 gives a summary of the main research results and indicates some
possible future research directions.
16
Chapter 2
SOFTWARE ENGINEERING
PROCESS
The software paradox ‘Deliver quality software and deliver it quickly’
emphasize the inconsistency of deploying the solution as soon as possible at
the customer’s environment and the stakeholders’ quality expectation of the
solution. A software development team can choose from a lot of software
engineering process to guide the team members during a software
development project to create a solution that meets the needs and
expectations of the stakeholders. This thesis divides software engineering
process into three types of processes, where each has a different philosophy,
time segmentation and workload classification.
First, the sequential process goes through the procedure of software
development as if the team is building a house, creating the solution step by
step as it is written in the blue print. This process leaves no room for changes
after the identification of the requirements to provide all the stakeholders
with a predictive project in time and costs [31].
Second, the iterative process divides the project into segment, to enable the
project team to cope with changes during the software development life cycle.
This ability causes the overall process to be less predictable to schedule time
and costs of the software development project [13].
Third, the agile process is built on the foundation of iterative software
development, but more strongly emphasize the ability to be adaptive. The
team develops the solution ad hoc through a close relationship with the
customer. Stakeholders have the opportunity to change their needs and
expectations during the whole software development life cycle [10].
2.1 INTRODUCTION
A software engineering process helps project teams address the most common causes of
technology project failure in order to improve success rate, solutions quality, business
impact and create a meaningful business solutions which meets the needs of the
customer. The process of developing systems goes through a multistep process from
analysis of the system requirements through design, implementation and completion.
This chapter gives a general impression of what a software engineering process implies
and addresses some characteristics of the process that are relevant for answering the
research questions.
17
Chapter 2 | Software Engineering Process
2. Software design and implementation. To plan and build the software inline with
the specification.
There is no ‘ideal’ process for developing a system for several reasons [22]. Different
technologies require different method of approach, every individual in the project team
is unique with his own preferences and knowledge and therefore every project team is
unique. Other reason is that the external needs vary, because the customer or his
business legislation has a preference of one SEP. Also projects itself have different
facets, like team size, fixed or variable price and non- or business critical. Every SEP
has its strengths and weaknesses that should be taken in consideration to get an
appropriate process [3].
Some processes aim for a predictive others aim for an adaptive way of software
development. Extreme predictive processes aim to control the process by planning and
establishing the requirements a priori to create a solid and predictable lifecycle. An
example of a predictive process is the Waterfall model. To create a predictable process,
one has to formulate as much aspects early in the lifecycle and freeze them in order to
baseline an unchangeable project planning. This sounds great, but it disables
stakeholders to change their needs and expectations for the future system after analyse
and design. On the other hand extreme adaptive processes are open-minded towards
changing the project’s constraints. An example of an adaptable process is eXtreme
Programming. They aim to manage and control the outcome of the project by allowing
the customer and other stakeholders to changes their thoughts of the solution. These
processes are harder to plan, but are able to cope with adaptability.
18
Chapter 2 | Software Engineering Process
19
Chapter 2 | Software Engineering Process
Requirements analysis
Completely understand and identify the demands and constrains of the problem.
Design
Design a solution to satisfy the needs of all stakeholders.
Implementation
Implement the solution by writing the code and test the product.
Integration
Deliver and integrate the software product in the customer environment.
Sequential processes do not allow reversing to previous steps and correcting errors in
previous steps, so the rest of the SEP may be executed to the end with misconceived
assumptions, resulting in a system that does not meet the needs and expectations of the
customer. The project results in an unusable solution, because the team keeps on
building on a poorly constructed fundament. This is a conventional development
process and is nowadays not preferable to use for the reasons as described below.
Nowadays it is naïve to think that one can identify all requirements in the early phase of
the process and freeze them during the rest of the software engineering process. A
system can be too complex for humans to understand as a whole. We do not have the
ability to comprehend an overall detailed and precise view of the system’s possibilities
and desired capabilities. Therefore, it is necessary to reformulate the framed
requirements into more detail. More, due to progressive understanding, customers and
users of the future system will change their needs and expectations throughout the
process. They see other similar systems, get new insights of their business problem, and
are getting more familiar with the possibilities of the used technology when they see it
is transformed into an IT-solution. It is said that users do not really know what kind of
20
Chapter 2 | Software Engineering Process
solution they want in advance, but they know what kind of solution they do not want
afterwards. One of the interviewees expressed this as followed, “Two weeks after the
system deployment, the customer knows what he really wants.”. Also, new technical
insights, new technologies or fluctuating businesses makes the system requirements
more uncertain. Another disadvantage of sequential processes is that the customer does
not see the tangible system until the end of the SEP when it is completely implemented,
resulting in a negative influence on the customer involvement and enthusiasm.
Summarizing, the most important reason not to use sequential oriented processes are as
followed. You have just one shot to analyse, design, develop, test and integrate the
system. If the project introduces new insights, techniques, tools or new people, the
sequence process gives you no latitude for learning and improvement.
There are various benefits of the iterative approach for software development. This
approach uncovers and fixes issues and risks early by receiving periodic user feedback.
The periodic feedback and testing provide the project team the ability to check the
project’s status and creates the stakeholders to be more involved by receiving concrete
21
Chapter 2 | Software Engineering Process
sight of their solutions throughout the lifecycle of the project. Additional benefits are
that the team can progressively improve the process itself by applying the lessons
learned during the lifecycle, and the project workload is spread more evenly throughout
the project’s lifecycle. These benefits keep the project team focussed on the real needs
of the customer and end-user. Examples of iterative processes are Spiral Model1, Object
Oriented Software Process2, and Rational Unified Process. More details aspects of
iterative software development are described further on this dissertation.
The ideology of the agile processes is described in the ‘Manifesto for Agile Software
Development’ [1]. It says that individuals and interactions are preferred over processes
and tools, working software over comprehensive documentation, customer collaboration
over contract negotiation, and responding to change over following a plan. Scrum3,
Feature Driven Development4, eXtreme Programming5, and Microsoft Solutions
Framework for Agile Software Development are examples of software engineering
processes that embraces the agile principles. More details aspects of agile software
development are described further on this dissertation.
Summarizing, the sequential process is a predictable and planned SEP that freezes the
requirements and walks through the process step-by-step without looking back, where
there is no room for change requests. The iterative process plans, controls and measures
on time and budget to become as predictable as possible, but uses iterations to cope with
changes during the software development, where the stakeholders give the project team
feedback and requests for changes on a period base. The agile processes are less based
on time and budget planning, they prefer to control and measure the project on quality.
These lightweight processes do not focus on predictability but on adaptability instead.
Stakeholders have the opportunity to change their needs and expectations whenever
they want.
1
For more information see http://en.wikipedia.org/wiki/Spiral_model visited February 2006.
2
For more information see http://www.ambysoft.com/books/processPatterns.html visited February 2006.
3
For more information see http://www.controlchaos.com visited February 2006.
4
For more information see http://www.featuredrivendevelopment.com visited February 2006.
5
For more information see http://www.xprogramming.com visited February 2006.
22
Chapter 3
RATIONAL UNIFIED PROCESS
The IBM Rational Unified process is an iterative software engineering
process, which ensures the production of quality software that meets the
needs of its end-users, within a predictable schedule and budget.
RUP consists of ten essentials and six best practices to express the beliefs of
the IBM Rational iterative software development mindset. The process itself
is arranged in phases and iterations, which segments the process in time, and
disciplines, roles, workflows, activities, and artifacts which divides the work
of the process. The RUP is a formal and heavy software engineering process
that focuses on time and budget planning, to be a predictive process, and
uses iterations to cope with changes that are inline with the scope of the
project throughout the software development life cycle [12], [13].
3.1 INTRODUCTION
In 1997 the Three Amigo’s Grady Booch (IBM), James Rumbaugh (General Electric)
and Ivar Jacobson (Ericsson) gathered their knowledge of software engineering process
and created the Unified Process [16], later renamed as Rational Unified Process. The
Rational Unified Process (RUP) is a well known iterative software engineering process
(SEP) created by the Rational Software Corporation, now a division of IBM. It provides
a disciplined approach to assigning tasks and responsibilities within a development
organization [16] and makes the development team more productive by giving them
guidelines, templates and tool mentors for all critical software lifecycle activities [13].
RUP’s goal is to ensure the production of high-quality software that meets the needs of
its end users within a predictable schedule and budget [16].
Over the years, Rational has gained a base of knowledge and experience in the area of
software development. This information is expressed in the Ten Essentials, Best
Practices and the process itself, which are described in detail in the next sections of this
chapter.
23
Chapter 3 | Rational Unified Process
The essentials provide an introduction to each of the many of its Best Practices,
mentioned in 3.3 and Disciplines of the RUP, mentioned in 3.4.
RUP gives an extensive description on how to construct the Vision artifact. RUP’s
Vision artifact contains an enumeration of high-level requirements and design
constrains. It gives the reader an understanding of the system to be developed, is created
early in the Inception phase and evolves during the earlier portion of the lifecycle [12].
It also provides input for the project-approval process, and is therefore intimately
related to the Business Case. And finally, because the Vision communicates the
fundamental "why's and what's" of the project, it serves as a resource for validating
future decisions.
Creating the Vision Artifact and identify a set of requirements is the essence of the
Requirements discipline, and the Best Practice: Manage requirements. This beholds
analyzing the problem, understanding stakeholder needs, defining the system, and
managing the requirements as they change [12].
24
Chapter 3 | Rational Unified Process
The ‘Plan’ essential emphasizes the creation of a development plan. In RUP, the
Software Development Plan (SDP) is an artifact in the discipline project management
[12]. It aggregates all information required to manage the project and must be
maintained and updated throughout the project because of the changing character of
iterative software development [28]. The SDP is used to estimate the time (including
Project Plan and Iteration Plan), resource and tools needs and to measure the progress of
the project by comparing the estimated to the actual planning.
"Plan - Manage to the Plan" together with essentials Risks – Identify and Mitigate Risks,
Issues – Assign and Track Issues, Business Case – Examine the Business Case,
Evaluation – Regularly Assess Results captures the essence of the project management
discipline in RUP, which involves conceiving the project, evaluating scope and risk,
monitoring and controlling the project, and planning for and evaluating each iteration
and phase [28].
25
Chapter 3 | Rational Unified Process
critical milestone to see if the estimations are still accurate and the project is still worth
investing in [12].
RUP introduces the Iteration Assessment to capture the results of an iteration. It verifies
the degree to which the evaluation criteria were met, determines the lessons learned, and
changes to be done. This object is an essential artifact of iterative development and
focuses not only on the product but also on the process issues [12], [28].
26
Chapter 3 | Rational Unified Process
to provide the stakeholders a history of decisions, to ensure that the impact of the
potential changes are considered and understood by all the project members. Change
Request is an important aspect of project management and control; it ensures changes to
be well considered and controls the scope of the project. This essential is connected to
the Control changes to software best practice, and the project management,
configuration management disciplines [12].
This essential implies that delivering the software to the customer is not enough to end a
project successfully. The project team must provide the customer with documentation
and training to support the users [28].
27
Chapter 3 | Rational Unified Process
ordered to the level of risk, where at every stage in the lifecycle the iteration with the
highest level of risk is carried out [13].
The Rational Unified Process uses the iterative approach to allow the stakeholders to an
increasing understanding of the problem through refinements and to incrementally grow
an effective solution that meets the user’s expectations over multiple iterations [13].
Each iteration ends with an executable release, which enables frequent end-user
involvement and feedback. Therefore, problems are found in an early stage, reducing
risks of the project [13]. Another advantage of iterative development is that after every
iteration the status of the project is checked, so developers stay focussed and the
stakeholders are ensured that the project stays within agreed boundaries.
MANAGE REQUIREMENTS
The requirements for a system are the description of the services provided by the system
and its operational constraints. These requirements are partially written by the customer
and partially written by the development team. They are the desires of the customer,
such as placing an order or reporting a document, and constraints of the developer, e.g.
using a specific kind of database for placing the order.
The Rational Unified Process uses UML (use cases and scenarios) to identify, organize
and document the requirements of a system. The UML models give a simplistic view of
a complex structured system. UML is proven to be successful to guarantee that the
stakeholders do not lose touch with requirements during the development process [11].
28
Chapter 3 | Rational Unified Process
The Rational Unified Process describes how to develop and maintain visual models of
the system to clarify the structure and behaviour of architectures and components. It is a
guide to the effective use of the models like use-case models, business models, design
models, analysis models, and a test model [16].
29
Chapter 3 | Rational Unified Process
The horizontal axis represents time and shows the dynamic aspect of the process as it is
enacted, and it is expressed in terms of cycles, phases, iterations, and milestones [13].
The vertical axis represents the static aspect of the process: how it is described in terms
of activities, artifacts, workers and workflows [13].
1. Inception phase
2. Elaboration phase
3. Construction phase
4. Transition phase
Each phase consists of one or more iterations, depending on the kind of project. An
iteration is a complete development loop resulting in an executable product release. A
phase is completed with a well-defined milestone, as shown in Figure 3-2, to evaluate
whether the goals have been achieved, all stakeholders are being considered and the
actual expenditures correspond with the planned expenditures.
30
Chapter 3 | Rational Unified Process
A pass through the four phases produces a generation of the software and is called a
development cycle [12]. Note that, the phases in the cycle are not similar in term of time
and effort, the construction phase usually takes the most effort and time.
INCEPTION PHASE
The goal of the inception phase is to achieve concurrence among stakeholders on all the
lifecycle objectives and to ensure that the project is both worth doing and possible to do.
It focuses on understanding the overall requirements and determining the scope of the
development effort [12], [28]. Therefore, it is primarily significant for new development
projects. Projects that enhance existing software have a brief inception phases, because
they are able to use and update the artifacts of the previous projects. During this phase
the scope of the project is formulated, a business case is created, a vision is defined and
the environment is prepared [12].
The Business Case provides the economic constrains and describes the arguments of the
project’s right to exist. Within the success criteria, risks and plans to attack these risks
are formulated, as well as the necessary resources, and major milestones are
documented. At every critical milestone, the Business Case is reviewed and updated to
see if the estimations are still accurate and the project is still worth investing in [16].
The Vision artifact creates a complete and shared view for all stakeholders of all the
desired requirements. It identifies all external entities that interact with the future
software, by creating all use cases of the project. It shows the fundamental "why's and
what's" of the project and can serves as a means for validating future decisions [16],
[28].
The inception phase ends when the criteria of the Lifecycle Objective Milestone are
met. The stakeholders have to understand all requirements, be united in the project
definition and cost/time schedules, and believe in the project intention.
ELABORATION PHASE
The goal of the elaboration phase is to baseline the architecture of the system to provide
a stable basis for the design and implementation activities in the construction phase. The
31
Chapter 3 | Rational Unified Process
project‘s objectives, scope, architecture, the resolution of the major risks are examined
more thoroughly at a so-called “mile wide and inch deep” view [12].
During this phase the activities and resources that were identified in the inception phase
are planned, iteration plans are defined, the features are specified and a component-
based architectural prototype is produced. This prototype addresses the critical use
cases, identified in the inception phase, and exposes the highest technical risks of the
project. This prototype serves as a foundation to build the product in the next phase.
The activities of this phase have to ensure that the architecture, requirements and plans
are stable enough, that the risks are adequately mitigated, so the cost and time schedules
can be determined. Therefore the Lifecycle Architecture Milestone criteria are met, and
the project can proceed to the next phase of the development cycle [12], [13].
CONSTRUCTION PHASE
The goal of the construction phase is to clarify the remaining requirements and
constrains and to complete the translation from the Vision into a stable product based
upon the component-based architecture created in the previous phases [12], [16]. The
construction phase is most likely the longest phase of the project lifecycle.
At the end of the phase, the Initial Operational Capability Milestone determines whether
the product release is stable and mature enough to be handed to the end user [13].
TRANSITION PHASE
The goal of the transition phase is to ensure that the software has been completed to an
acceptable level of quality that meets the criteria of the Vision and therefore can be
hand over to its end users [12], [13].
The cycle has come to the end phase, which includes the activities of manufacturing,
delivering, maintaining the product, training and supporting the users until the project
objectives are met and the project can be placed into the hands of the end-users. The
product is fine tuned by fixing minor feature changes and thoroughly tested in
preparation for an extern release. The users’ environment is adjusted; converting the
operational database, configuring the hardware, parallel operating the product with the
legacy system. And additional, the user receives support documentation and possibly
training [13], [16].
32
Chapter 3 | Rational Unified Process
When the objectives are achieved and the stakeholders are satisfied, the Product Release
Milestone is accepted. This closes the development lifecycle and another development
cycle can be started [13].
3.4.2 WORKFLOW
A process describes who is doing what, how, and when. The Rational Unified Process
describes these terms using four modeling elements, namely Roles, Activities, Artifacts
and Workflows [13]. The coherence between role, activity and artifact is shown in
Figure 3-3.
Philippe Kruchten defines the role, activity and artifact in his book Rational Unified
Process, An introduction as follow.
33
Chapter 3 | Rational Unified Process
RUP organizes the set of activities in workflows in different ways, namely Disciplines
and Workflow details. In the next section the thesis discusses the core disciplines of the
Rational Unified Process.
34
Chapter 3 | Rational Unified Process
3.4.3 DISCIPLINES
RUP identifies nine disciplines that each describes a set of associated activities and
artifacts based upon a set of skills that are common in a general ICT project. These
disciplines are a way to arrange the activities and artifacts and are mainly used to
understand the project form a waterfall perspective [29]. A discipline's workflow is, like
other workflows, a semi-ordered sequence of activities which are performed to achieve
a particular result. RUP divides the disciplines into six engineering disciplines and three
supporting disciplines as shown in Figure 3-6.
35
Chapter 3 | Rational Unified Process
BUSINESS MODELING
The purpose of this discipline is to understand the structure, business processes, the
problems, and to identify potential improvements of the demanding organization. The
processes, roles and responsibilities are defined in a model of the business based on the
Vision artifact. The business models show the structure and dynamics to ensure that all
stakeholders have the same understanding of the demanding organization [16], [29].
REQUIREMENTS
The activities in the requirements discipline establishes and maintains agreement with
the customers and other stakeholders on the system capabilities, user-interface, user
needs. It provides the project team a better understanding of the system requirements
and boundaries. The artifacts in this discipline are a basis for planning the technical
content of iterations and estimating cost and time to develop the system. The
requirements discipline describes how to create the Vision artifact and how to interpret
it into a use-case model. The use-case model and the supplementary specifications
define the detailed software requirements of the system [16], [29].
The analysis part translates the system’s functional requirements to a set of classes and
subsystems based on the use-cases. This Analysis Model is a rough sketch of the system
and has to be refined and evolve to be able to implement the system-to-be. In the design
part of the discipline the Analysis Model is expanded with the constraints imposed by
the non-functional requirements, the implementation environment, etc, into the Design
Model. The Design Model consists of a set of collaborations of model elements e.g. use-
cases that describe the behaviour of the system. The Design Model is the refinement of
the Analyse Model and is the primary artifact of the analysis & design discipline. The
design model is the essential input artifact for the activities in the implementation and
test disciplines. The Analyse & Design discipline links the requirements and the actual
implementation of the solution by creating a Design Model artifact [12], [16], [29].
IMPLEMENTATION
The activities of the implementation discipline imply the definition of a mutual
arrangement of subsystems organized in layers to implement the classes and objects in
components. The finished components are unit-tested and improved until they have an
acceptable level of quality to be integration into an executable system. The iterations of
the RUP enable the integration of components in an evolutionary approach throughout
the system’s lifecycle [12], [16].
36
Chapter 3 | Rational Unified Process
TEST
The previous discipline has unit-tested the individual components and has integrated
them into the system. This discipline examines the system as a whole to assess the
product quality. It provides the project with a feedback mechanism to measure quality
and identify defects. Testing occurs in all phases of the RUP to enable continuously
feedback to improve the product as it is designed and built. The test includes verifying
the completeness and correctness of the implemented requirements, the integration and
interaction of components in the system, and conforming that all defects are addressed
before the system is deployed. Note that, the quality of the system is not obtained by
quality-assurance or tests. RUP uses the test discipline to provide periodic feedback on
quality measures of the product to the team members to enable them to improve the
quality of the solution [16], [29].
DEPLOYMENT
The deployment discipline embraces all the artifacts that are delivered to the end-users
or customers. It includes activities like beta testing, which implies testing the software
in the customer’s operational environment, the creation of a deployable package of the
solution, distribute and install it, and if necessary migrate the product with the existing
software or convert the legacy database. Additional, this discipline prescribes the
project team to write a users’ manual and train them on how to use the software [16].
PROJECT MANAGEMENT
A healthy software project has a balance of contradictive objectives, managing risks and
defeating constraints to deliver a product that meets the needs of the customers and the
end-users. Project manager plans the software development life cycle in two ways. One,
he generally plans the process as a whole in iterations to monitor the progress of an
iterative project. Two, he plans the next iteration with a risk-driver approach in detail.
This balance is created by the project management discipline by providing the project
with a framework for managing software-intensive projects and risk management,
practical guidelines for planning, staffing, executing, and monitoring projects [12], [16].
37
Chapter 3 | Rational Unified Process
ENVIRONMENT
The purpose of this discipline is to support the project organization with both processes
and tools. It establishes an environment where the right tools, acquisition and process
are available and well configured to suite the organization. It is also responsible for the
technical services to support the process, like the IT-infrastructure, account
administration and regularly backup. In other words, the activities in the environment
discipline provide the project environment with the correct tools, processes, and
methods [12], [16].
38
Chapter 5 | RUP versus MSF4ASD
Chapter 4
MICROSOFT SOLUTIONS
FRAMEWORK
The Microsoft Solutions Framework for Agile Software Development is one
of the two software engineering processes of the Microsoft Solutions
Framework. This process is a very adaptive process that guides the software
development team during the implementation of an IT-solution with an ad
hoc planning and development mindset.
MSF4ASD consists of foundation principles and a team model to grow an
agile mindset within the project development team. The process itself is
arranged in tracks and cycles to segment the process in time, and advocacy
groups, roles, work streams and work items to divide the process suitable
small work tasks. The MSF4ASD is an informal, ad hoc, and responsive
software engineering process that focuses less on time and budget planning,
but more on a perfect end result and coping with changes [1], [10], [24].
4.1 INTRODUCTION
The Microsoft Solutions Framework was developed in 1993 and for the first time used
in 1994. It has aggregated guidance from well-known industry best practices for more
then decennia. MSF is relatively unknown by software developers, but this changes with
the introduction of Microsoft Solutions Framework version 4.0 in November 2005, by
the fusion of MSF and the latest version of the Microsoft’s software development
platform, named Microsoft Visual Studio 2005 Team System [18], [25].
MSF 4.0 provides a higher-level framework of guidance and principles which can be
mapped to a variety of prescriptive process templates. It is structured in both descriptive
and prescriptive methodologies. The descriptive component is called the MSF 4.0
metamodel, which is a theoretical description of the SDLC best practices for creating
SDLC methodologies. Microsoft is of the opinion that organizations have diverging
dynamics and contrarily priorities during their software development; some
organizations need a responsively and adaptable software development environment, if
others need a standardized, repeatable and more controlled environment. To fulfil these
needs, Microsoft represent the metamodel of MSF 4.0 in two prescriptive methodology
39
Chapter 4 | Microsoft Solutions Framework
The MSF philosophy holds that there is no single structure or process that optimally
applies to the requirements and environments for all sorts of projects. Therefore MSF
supports multiple process approaches, so it can be adapted to support any project,
regardless of size or complexity [22]. This flexibility means that it can support a wide
degree of variation in the implementation of software engineering processes while
retaining a set of core principles and mindsets.
40
Chapter 4 | Microsoft Solutions Framework
The MSF for Agile Software Development uses the principles of the agile development
approach formulated by the Agile Alliance [1]. The MSF4ASD provides a process
guidance which focus on the people and changes. It includes learning opportunities by
using iterations and evaluations in each iteration [4]. The MSF4ASD is further
discussed in the next section, namely 4.4 MSF for Agile Software Development.
6
For more information see http://www.sei.cmu.edu/sei-home.html visited November 2005.
7
For more information see http://www.sei.cmu.edu/cmmi/cmmi.html visited November 2005.
41
Chapter 4 | Microsoft Solutions Framework
The bigger and more innovative a system is, the more uncertainties the development
project has during the system development life cycle. These uncertainties push the
project in a situation where establishing the conditions and constraints a priori is hard to
42
Chapter 4 | Microsoft Solutions Framework
do. Nowadays, to define all the requirements and constraints of a project in advanced
becomes more an illusion. To demand certainty in a changing environment is unrealistic
and leads to unsuccessful project. Therefore, project members have to expect the
inevitable changes to be made during the lifecycle [22], [24].
FLOW OF VALUE
The project should be planned and executed to create a flow of value. Every step is
scheduled based on the delivery of increasing value to the customer. The activities are
prioritized in the order of adding business value in the solution to the customer.
Activities that do not add a customer value have to be minimized. This principle of
prioritize and incremental development ensures that every step has a positive effect to
the customer value and return on investment of the project.
The Team Model is the part of the MSF that structures and organizes people and
activities, in line with the MSF principles mentioned earlier, as they share a common
project vision and focus on deploying the project, to positively influence the outcome of
a project. The team model consists of three fundamental beliefs, namely team of peers,
advocacy groups and stretch to fit.
The first key concept is the team of peers, which places equal value on each role in the
team model to create a non hierarchic balance. This emphasizes the idea that everyone
in the project team is equal to enable unrestricted communication, increase team
accountability and responsibility. Not like in a hierarchy, each role contributes to and is
responsible for their part of the quality of the overall solution. The team of peers is the
glue that holds the roles of the project together and is illustrated in Figure 4-2 as the
cycle through the advocacy groups [21], [24].
43
Chapter 4 | Microsoft Solutions Framework
While the entire team is responsible for the overall project’s success, MSF divides the
team model into seven groups. An advocacy group, as depicted in Figure 4-2, is a
cluster of coherent functional areas with its own goal and responsibilities. This
representation of a project team provides a good balance to ensure accountability and
focus [21], [24].
The Program Management group advocates for solution delivery, where the focus is to
deliver a solution within given projects constraints. This group is responsible to keep
the project on the right track. Architecture advocates for the system in the large to
ensure that the deployed solution will meet all qualities of service as well as the
business objectives and will be useful in the long term. It is responsible for the service,
technical considerations, and standards with which the solution will interoperate; the
infrastructure in which it will be deployed; its place in the business or product family;
and a roadmap of future version. In other words, the architecture advocacy group
focuses on the architectural aspects of the software engineering process. The primary
task of the Development group is building the solution. It ensures high-quality code by
writing maintainable, unit tested and clear design code and fixing the identified bugs.
Test advocates for the quality of the solution by looking for and notifying the project
team on aspects, bugs and errors which negatively influence the quality of the solution
from the customer and user perspective. Release Operations advocates for the correct
delivery and deployment of the solution into the customer’s environment to ensure
timely readiness and compatibility of the infrastructure for the solution. The User
Experience attends to enhance the users’ effectiveness in the way they work and
perform, by means of identifying the end-users and their needs, and communicating the
user’s feedback to the rest of the project team. Product Management has to understand
44
Chapter 4 | Microsoft Solutions Framework
the customer’s incorporated business, communicate the customer’s needs to the team
members, and give the customer economic project satisfaction [21], [24], [25].
The MSF team model can be stretch to fit more projects with different characteristic in
different organizations. The roles of the MSF team model can be combined to fit small
project teams or further divided as teams develop larger solutions. Note that some roles
are unlikely or even not recommended to be merged, because it is important to preserve
the balances and controls in the team model to keep the accountability and focus that the
different advocacy groups provide. Where the Rational Unified Process has a big team
model and often has to be scaled down, the MSF has a small team model that can be
stretch to fit bigger projects [24].
The foundational principles and the team model are aspects of the descriptive meta-
process. As already mentioned this MSF 4.0 meta-process consists of a formal
prescriptive process, Microsoft Solutions Framework for CMMI Process Improvement
and an adaptive prescriptive process, Microsoft Solutions Framework for Agile
Software Development. This thesis compares the Rational Unified Process to the
Microsoft Solutions Framework for Agile Software Development on request of
LogicaCMG. The MSF4ASD is described in more details in the next section.
Agile development methods have increasingly taken central stage in the last few years.
On February 11-13, 2001 a council of seventeen people, known as the Agile Alliance8,
created the Agile process model. The Agile Alliance is a non-profit organization that
supports individuals and organisations that use agile approaches to develop software.
Driven by the simple priorities articulated in the Manifesto for Agile Software
Development [1], agile development approaches deliver value to organizations and end
users fast and with high quality with the notion that people are more important than
process. The Manifesto for Agile Software Development emphasizes the following as
value of Agile Software Development (ASD):
8
http://www.agilealliance.org visited at November 2005.
45
Chapter 4 | Microsoft Solutions Framework
project teams who strive for a decisively software engineering process, which can cope
with a changing environment. It enables iterative software development enhanced with
features like risk management, release management and design for operations.
The process of MSF4ASD is composed of tracks, advocacy groups and cycles. The
tracks are the time phases of the process and lead to governance checkpoints that creates
go/no go moments in the project. The seven advocacy groups of the MSF team model
are groups of combined work actions that are related to each other. The MSF4ASD
maps these seven constituencies onto six roles, explained in section 4.4.3, where each
role contributes a different part of the whole project. Where the tracks represent the
process in time, the advocacy groups represent the process in work activities. The cycles
describe the frequency with which activities, within the tracks and advocacy groups, are
performed or work products produced and updated to turn the project cycle as depicted
in Figure 4-3. The cycles are filled with relevant Work streams that are explained in the
next paragraph. Note that, a cell in the Figure 4-3 may contain more than one iteration
cycle.
In the MSF4ASD, the non-functional and functional requirements of the system are
expressed in scenarios and quality of service requirements (QSR).
Functional requirements are statements of services the system should provide. It
prescribes the expected reaction to particular inputs and behaviour in particular
situations. In some cases, the functional requirements may also explicitly state what the
system should not do. A scenario explains a single path of user interaction through the
46
Chapter 4 | Microsoft Solutions Framework
system and uncovers these functional requirements needed to run this single process of
the system. As a persona attempts to reach a goal, the scenario records the specific steps
that will take in attempting to reach that goal. A persona is a fictional individual who
represents a group of users of the future system and is used to classify the needs of an
entire customer segment by exploring the characteristics of one fictional individual such
as skills, abilities, needs, desires, working habits, tasks, and backgrounds. The personas
and scenarios have to be refined to keep up-to-date, as changes occur or new insights
are obtained. Non-functional requirements are constraints on the services or functions
offered by the system. They include timing constraints, constraints on the development
process and standards. Non-functional requirements often apply to the system as a
whole. They do not usually just apply to individual system features or services. The
quality of service requirements documents these non-functional requirements of the
system such as performance, load, availability, stress, accessibility, and maintainability.
These requirements usually take the form of constraints on how the system should
operate.
As already explained, a cycle consists of coherent work streams. Work streams are
groups of activities that flow logically together and are often associated with a particular
role. Every work stream contains of various activities that describes the work
instructions in detail for the concerned role. For example, the ‘Release a Product’ work
stream contains four activities and is the responsibility of the Release Manager role, as
depicted in Figure 4-4. Every activity in the work stream encloses prescriptive
instructions, e.g. create or update work products to obtain the goal of the work stream.
The combination of cycles, work streams and activities create a process environment
where every role knows what, how and when he has to do his job.
This section gives a detailed description of the MSF4ASD process. It describes the
change of focus in time and the work division in different segments. Different iterations
have different focus as the project approaches the release phases of the SEP. Different
47
Chapter 4 | Microsoft Solutions Framework
roles have different activities of representing the specific needs of its constituencies
[24].
A visually depiction of the process gives one a clear overview about the SEP.
MSF4ASD did not have a graphical representation of its process, like RUP does.
Therefore we conducted a graphical representation of Microsoft Solutions Framework
for Agile Software Development as shown in Figure 4-5. The comment of the architect
of the Microsoft Solutions Framework, Granville G. Miller9, on this graphical
representation of MSF4ASD was: “This is really good!” and “Fantastic job!”. The
procedure of accomplishing this illustration is summarized in appendix A.
The horizontal axis represents time and shows the dynamic aspect of the process as it is
enacted, and it is expressed in terms of cycles, tracks, and governance milestones. The
vertical axis represents the static aspect of the process: how it is described in terms of
advocacy groups, roles, Work streams and activities. The undulated lines represent the
workload and amount of activities of a particular advocacy group in time during the
software development life cycle.
9 Granville “Randy” Miller is the architect of Microsoft’s agile software development process, Microsoft Solutions Framework for
Agile Software Development. He has two decades of experience in the commercial software industry and has spoken at many
international events, including XP200x, Conference On Object Oriented Programming Systems, Languages and Applications, Web
Services Edge, Software Development West, Microsoft TechEd, and others. His interests include software development technology
and agile software development. Miller is author of “Advanced Use Case Modeling” and “A Practical Guide to Extreme
Programming.”
48
Chapter 4 | Microsoft Solutions Framework
4.4.2 TRACKS
The Microsoft Solutions Framework for Agile Software Development uses tracks to
phase the process. Tracks group the activities that lead to governance checkpoints,
which are illustrated in Figure 4-6. The governance concerns the control of time and
capital and not the execution of tasks or work, which are handled in the cycles that are
described further in this chapter.
After the end of each track five questions are asked to create “go/no go” moments. For
example after the Envision track the decision has to be taken if the product is built and
after the Stabilize track the project team has to decide if the product is ready to be
deployed. In the next sections the tracks of the MSF4ASD are explained individually in
terms of which roles and activities are concerned during this phase of the software
development life cycle [20], [25].
ENVISION
The Envision track addresses an important condition that is mandatory to end a project
successfully, namely the unification of the stakeholders behind a common vision of the
project. A project vision is a clear establishment of the end result and the purpose for
building it. A team without strict boundaries and goal is bound to lose track on building
a system that meets the needs and expectations of the stakeholders. A clear and
structured project goal is required to create a cooperating and motivated atmosphere
among the team members and customer. Also during the envisioning phase, the general
business requirements must be identified and analyzed, which are refined in each
iteration during the whole software development life cycle. This track ends with an
agreement between the project team and customer on the overall direction for the
project, a general identification of the features of the system, and general schedule for
the completion of the product [22], [24].
49
Chapter 4 | Microsoft Solutions Framework
PLAN
In this phase it is intended to create the plans for the iterations and project. The iteration
plan is constructed by choosing the scenarios and quality of service requirements and
prioritizing the tasks within them that should be implemented in the upcoming iteration
based on its importance and workload. Once the team knows what to do, the project
manager creates the iteration plan based on the time to develop, test and fix bugs. This
track ends with the team accepting the plan of the work that will be done in the next
phase [24].
BUILD
During the build track, the implementation of thoughts and ideas of the system are
accomplished. The developers build the code in an orderly and structured way and once
implemented, they have to unit test their additional parts of the system to ensure quality.
The developers code the system incrementally and iteratively to obey the adaptive
characteristic of agile software development. Note that, while implementing the
scenarios and QSRs into code, the software development team needs to create
accompanying documentation [24].
STABILIZE
In this track of the software engineering process the tester stabilizes the current
implemented code of the solution. This stabilization implies that the tester runs the
appropriate tests to verify the quality of the system. He checks the overall system on
correct implementation of the scenarios and quality of service requirements, makes sure
that the bugs are fixed and reports the found errors. Once all requirements are
implemented and the system is stable enough to be released, the project continues to the
next phase [24].
DEPLOY
In this point in time of the project, the system is implemented, meets the needs of the
stakeholders and is ready to be deployed at the customer site. The deployment addresses
the packaging, installing and testing of the solution in the infrastructural environment of
the customer, delivering the appropriate documentations, like a user guide and
installation manuals, and customer’s acknowledgement of meeting the expected
business value [24].
50
Chapter 4 | Microsoft Solutions Framework
CONTINUOUS
This track embraces the activities that are needed when a new release of the system is
wanted. The vision statement, scenarios and quality of service requirements are adjusted
and reformulated, and the lessons learned are documented to improve the process of
developing the next generation of the system. This track gives a good preparation to the
team members and other stakeholder for the start of the following project.
Figure 4-7 The MSF for Agile Software Development team model [24]
ARCHITECTURE - ARCHITECT
The architect role of the Architecture advocacy group is responsible for designing the
foundations of the application into a software architecture that describes the
characteristics and construction of the system. The software architecture contains a
clean and simple internal structure for the key elements of the solutions to reduce the
complexity of the system by dividing it into clear and independent partitions. This
division enables the application to better handle changing requirements. Well-defined
software architecture also positively influences the reliability and maintainability of the
system and describes how to meet performance and security standards [22], [24], [25].
DEVELOPMENT - DEVELOPER
The developer role is occupied by people who implement the solution within the
specifications and planned time-schedule. They build the application in a way that it
meets the needs of the customer and is ready to deploy at the client’s environment. After
completion of a segment, developers perform a unit test to verify the proper
implementation of a unit of code to ensure the solution’s quality. The developer also
specifies the features of the physical design and advices the program manager with the
estimation of time and effort to complete a feature [24], [25].
TEST - TESTER
The tester’s main goal is to ensure that the solution meets the quality standards for the
product. They have to identify problems of the system that negatively influence the
project’s outcome and communicate the findings to the other team members. The testers
must understand the whole context of the project to be able to test the product to prove
that known functions work correctly and to discover new product issues. Once a bug is
found, the tester has to precisely communicate its impact on the product or business
processes and give a solution on how to solve the problem. After the developers report
that the bug is fixed, the testers examine and judge if it meets the quality standards [24].
52
Chapter 4 | Microsoft Solutions Framework
His goal is to define the customer’s business opportunity and how the solution will
serve it. Therefore, he has to understand the customer’s business problems and IT needs
to be capable to translate them into persona definitions, scenarios and quality of service
requirements (QSR) that the development team will use to build the application. The
business analyst captures and communicates the customer’s field of business and needs
in the vision statement in order to keep the team focused, creates the quality of service
requirements to capture the non-functional requirements and constraints on the
functionality of the system, and creates scenario’s to capture the functional requirements
of the system. MSF utilizes the just-in-time approach meaning that scenario’s and
quality of service requirements are written not in the early phases of the SDLC, but
when the developers are ready to implement them [22], [24], [25].
4.4.4 CYCLES
The previous sections describe the phases and the responsibilities of the team members
in the project. Taking this in consideration, this section describes when the activities
occur during a project and an iteration. During the course of the project, different
activities are executed at different times and with different frequencies. For example,
the document that describes the vision of the project is created once in the early stage of
the process, the project plan is revised often, and the source code of the software is
revised more often.
MSF 4.0 lays out the frequency of the activities in so-called cycles, which are illustrated
in Figure 4-8. Cycles describe the frequency and duration of performing the activities,
or creating and updating work items in a timely manner. The small cogwheel has a short
duration and turns quickly. The big cogwheel has a long duration and therefore turns
slowly.
The check in, daily build and the accepted build together turn the cogwheel of an
iteration and all the iterations together turn the Project cogwheel.
PROJECT
The Work streams in the Project cycle capture the project vision, plan the iteration and
release a product. The project team must have a clear and shared vision of how the
53
Chapter 4 | Microsoft Solutions Framework
solution meets the business needs of the customer and creates a cooperating and
motivated relation with stakeholders.
The business analyst is responsible for establishing of the project vision. Capturing the
vision in a vision statement and share this to all stakeholders is the most essential aspect
to keep a project focused. Once the vision is captured changes may occur during the
software development life cycle, then the business analyst has to realign the project to
the new vision. The shared vision categorizes usage patterns and goals of the end-users
by capturing personas. This fictional individual represents the needs and expectation a
of group users in different scenarios.
A project is partitioned into a number of iterations to organize the workload of the team
members. An iteration is a schedule of a set of tasks that occur in a fixed period of time.
The iteration length is the time that is needed to complete the tasks scheduled in the
iteration. It is established at the beginning of the project and is used for all iterations
throughout the project. The project manager determines the iteration length generally
expressed in weeks by examining the timely key factors like the delivery date of the
project, size of the scenarios, and integration time.
Once the solution has enough functionality and performance, it can be deployed at the
customer site. This means that the end-users are going to work with this release in their
environment for the first time. The release manager has to develop a release plan to
coordinate the delivery of the product. Once rolled out, he has to run a complete
regression test at the customer environment to identify the last bugs. He also has to
create so-called release notes, which describe the environment requirements, installation
details, new features, resolved bugs, and known defects with possible workarounds. The
track ends when the system is packaged to be easily installed, delivered and accepted by
the customer [20], [24], [25].
Figure 4-9 The Iteration cycle turns the Project cycle [24]
ITERATION
The iteration cycle is turned by the smaller cogwheels Accepted build, Daily build and
Check. The iteration cycles together turn the overall cycle Project, as illustrated in
Figure 4-9, to a delivery of the product that solves the customer’s problem.
First the architect has to create a solution architecture that has a simple structure for the
primary elements of the solution. This simple structural view of the system reduces the
complexity of the system, enables reusability of the components and makes the system
54
Chapter 4 | Microsoft Solutions Framework
more flexible to changes. He partitions the system in logical parts and determines the
interfaces between them to enable parallel development. He has to develop two models,
namely the threat and performance model. A threat model documents the known
security threats to the system and expresses how to address them. The performance
model documents potential performance issues to the system and expresses how to
address them. Having this, the architect can now create an architectural prototype to
identify, address and reduce potential overall risks as early as possible in the project.
This prototype can be discarded once the issues have been addressed, or used as a basis
to work out the core architecture.
The business analyst creates quality of service requirements to capture the non-
functional requirements or constrains of the solution, such as platform, load, stress,
security, and performance. He also has to capture the functional requirements of the
solution in scenarios by determining the system’s goals. A scenario explains a single
path of user interaction through the system and the coherence is expressed through a
storyboard. Once both kinds of requirements are identified, he prioritizes and
documents them on the importance of each requirement. MSF uses the just-in-time
approach to write the scenarios and QSRs meaning that they are written when the
developers are ready to implement them. The scenarios and QSRs which adds the most
value to the customers business are implemented first in the upcoming iteration.
Once the QSRs and scenarios are described, the developers are being consulted to
estimate on how much time it costs to implement a development task. These
estimations, the vision statement and the iteration length are the foundation for planning
an iteration. This plan must have the right balance of scenarios, quality of service
requirements, and bug reparations for the upcoming iteration. After all, the amount of
work that can be realised in an iteration is limited.
The project manager is assigned to plan an iteration by first estimating the concerned
requirements for understanding how much effort they take. From there, he schedules the
iteration with the scenarios and QSRs and some time for fixing bugs. The scenarios and
QSRs are divided into development tasks for the developers for further understanding of
the work they have to accomplish. The iteration plan is finalized in a meeting of project
managers, business analysts and developers to be agreed upon and is published to the
project portal.
As the requirements are transformed into source code of the solution, the tester role
writes or updates tests in order to check them on bugs. A bug is an error in an already
implemented code that needs to be fixed. A scenario is tested through a so-called
validation test, which checks if the system functionalities match the specifications of the
realized scenarios. Testing a quality of service requirement demands performance,
security, stress, and load tests to be successfully completed. These tests check the
system’s response time and break points under normal and extreme pressure, and check
the system’s threats that are listed in the threat model. In this cycle the tester writes the
tests that are mentioned to verify the scenarios and QSRs.
When an iteration comes to an end, the project manager calls for a feedback meeting
with the developers, testers and business analysts to determine ways to improve the
development process and project environment to maximize productivity. After all, every
55
Chapter 4 | Microsoft Solutions Framework
project and problem has its own unique characteristics. The project manager
incorporates the results of this meeting into the planning of the next iteration.
The project manager has the responsibility to guide the project to a successful result.
Therefore, the progress of the whole project and of each iteration has to be monitored
and reported constantly. He consults the tester about the finding and outcome of the
tests, like test effectiveness, bug rate, code coverage detail, and test result reports. These
help understanding the progress of the project. This project status check uncovers the
bottlenecks and roadblocks, risks and bugs, which are ordered a priority for the next
iteration [22], [23], [24], [25].
The next cycles together are inside and turn the previous iteration cogwheel as shown in
Figure 4-10.
Figure 4-10 The Check in, Daily build and Accepted build cycles turn the Iteration Cycle [24]
CHECK IN
The ‘Check in’ cycle is the smallest wheel of all cycles, because it has the shortest
duration and turns frequently. The developer begins his role to reproduce the identified
bugs to locate and get more information about the causes. Once enough insight is
collected, he fixes the bug, and updates and runs the concerned unit test to ensure that
the new code is correctly implemented and is ready to be integrated into the build.
After fixing bugs he begins to implement a development task that is assigned to him. A
development task is a small amount of development work that stems from a QSR or
scenario and adds new functionalities to the system. Once the task is finished, it must be
unit tested, reviewed, and integrated into the existing code base. Each build contains a
set of build notes that outlines all of the new changes of the solution. The concerned
QSR and scenario are then passed on to the tester [22], [24].
DAILY BUILD
At the end of each day, the developers compile the code elements of the system into a
single build. A build is the compilation of all the files, libraries, or components of the
solution into a new set of executables, libraries, or components. This new build must
pass the build verification tests to make sure the modifications work correctly and do
not cause problems. After that, build notes are created to document that the new features
and changes are accepted. These notes are used to monitor the progress of the project.
For instance, the more code has changed going from build A to build B, the less stable
and mature the overall system is [22], [24].
56
Chapter 4 | Microsoft Solutions Framework
ACCEPTED BUILD
After merging all development results in a team build, the tester verifies the reported
bugs to be fixed correctly. In this cycle the tester actually runs the written test cases to
verify the quality of the fixed bugs. If the test case runs successfully, the bug can be
closed. Otherwise, the bug is reassigned back to the developer. Other reasons to close a
bug are if the bug is deferred to another release, demonstrated to be invalid, not
reproducible, or a duplicate of a bug already logged.
The tester also verifies the implemented quality of service requirements and scenarios in
the build by selecting and running the adequate tests, which have been written in the
iteration cycle. Once a test case is run, it is important to record the results against the
scenario or QSR. The last activity of the tester in this cycle is performing an exploratory
test. Exploratory testing is a systematic way of testing a product without a
predetermined set of written tests. The method provided in this guidance describes how
a product is tested from the point of view of a persona with the purpose of generating
new requirements in the scenarios and QSRs. When all the tests are finished, the tester
reports his results back to the rest of the project team [22], [24].
The cycles, the Work streams and roles that are described in this paragraph are
summarized in Table 4-1 to give a general overview.
The Microsoft Solutions Framework for Agile Software Development is a process for
projects with short lifecycles and results-oriented teams who can work without lots of
57
Chapter 4 | Microsoft Solutions Framework
58
Chapter 5
5.1 INTRODUCTION
This chapter answers research Question 2 by examining the common grounds and
differences regarding the IBM Rational Unified Process and the Microsoft Solutions
Framework for Agile Software Development, both depicted in Figure 5-1. The two
SEPs are compared in three different points of view, namely their philosophy, focus in
time and work division.
The first comparison contains the best practices of RUP and the foundation principles of
MSF4ASD. The criteria are captured by gathering all best practices and foundational
principles and examined in detail to create an enumeration of a so called ‘Best
Principles’. Both processes are marked to what degree they emphasize these best
principles. The second point of attention compares the division of time of both SEPs for
a project, represented as the horizontal axis of the graphics of Figure 5-1. The phases of
IBM Rational Unified Process are measured up to the tracks of the MSF agile. The third
comparison looks at the vertical axis of the graphic representations of the two software
59
Chapter 5 | RUP versus MSF4ASD
engineering processes that represents the workload of the project. It compares the
disciplines to the advocacy groups, the roles and activities of both processes, workflows
to the work streams and artifacts to work products.
5.2 PHILOSOPHY
RUP’s Best Practices: MSF’s Principles:
60
Chapter 5 | RUP versus MSF4ASD
Table 5-1 is an enumeration of the RUP best practices and the MSF4ASD principles
with a short descriptive sentence. Putting the best practices of the IBM Rational process
and the foundation principles of the Microsoft Solutions Framework together and
eliminating duplicates, leads to the ten Best Principles in Table 5-2. Both processes are
marked to what degree they give emphasis to these ten main beliefs.
The next sections explain how RUP and MSF4ASD emphasize these ten best principles.
Nowadays it is not fare to assume that project teams know every aspect of the project
and the product to be built. Every system has uncertain elements during the software
engineering process. Customers have no stable and clear idea about their wanted
solution, developers are not familiar with the customers business, and even the business
61
Chapter 5 | RUP versus MSF4ASD
environment can change. The uncertainty causes privies to understand the solution-to-
be-built progressively along the software development process.
MSF4ASD develops software with a more strongly iteratively mindset than RUP. It
contains five cycles as already mentioned in Chapter 4, namely the Check In, Daily
Build, Accepted Build, Iteration, and Project as shown in Figure 5-3. The project cycle
is turned by the iteration cycles, which itself is turned by three smaller cycles, depicted
in the picture as cogwheels. The principles of MSF4ASD prescribe that the project team
develops the system in a context where the product should be ready to ship at any time
and to deliver these releases frequently by iterative software development. MSF4ASD
prescribes to keep iterations sizes small with a duration time of a couple of weeks to a
couple of months, preferable to the shorter timescale, and should result in a stable
segment of the overall system. MSF4ASD prescribes that the system to-be-built is
designed and implemented to be executable after each iteration. The process also
recommends the team to practise deploying the solution in the user environment. The
overall project is not only divided in iterations, but an iteration is also divided into
smaller feasible parts.
62
Chapter 5 | RUP versus MSF4ASD
Iterations allow the project team to reduce the margin of error in ones estimates and
provide fast feedback about the accuracy of your project plans. Both RUP and
MSF4ASD emphasize an iterative development process that is adaptable based on the
progressive understanding of the future product, but MSF4ASD embraces this mindset
more strongly.
REQUIREMENTS MANAGEMENT
Requirements management is a systematic approach to eliciting, organizing,
communicating, and managing the requirements of a system [16]. The project team has
to analyze and understand the customer’s business problem to acquire the stakeholders’
needs and expectations of the system. These needs and desires are translated in the
system’s requirements. The determined and agreed requirements provide a basis for the
planning, cost and time estimation of the project and to manage the scope of the system.
RUP prescribes a "use-case driven approach" for managing the requirements of the
system and form the basis for the entire development of the system. RUP prefers
defining the requirements in way that tells a story of how one may use the system and
are expressed visually in the Unified Modeling Language. RUP claims that this scenario
driven approach provides greater completeness and consistency, and also provides a
better understanding of the importance of a requirement from a user's perspective. The
IBM Rational process wants the identification of the functional and non-functional
requirements as early in the SEP as possible. This enables the project team to estimate
and plan the project early and precise, but makes the software engineering process
rough to cope with changes during the development of the system.
MSF4ASD does not acknowledge the need to identify and manage requirements in the
early phase of the SDLC. This agile flavour of the Microsoft Solutions Framework
embraces identifying and creating ad-hoc requirements and design. MSF4ASD
welcomes changing requirements, even late in development. The Agile Alliance claims
it does not make sense to define the system’s requirements beforehand, because they
will change during the development process. One of the principles behind the Agile
Manifesto is “The best architectures, requirements, and designs emerge from self-
organizing teams” [1]. Therefore, the team works on deliverables in a just-in-time (JIT)
manner during the SDLC, e.g. the scenario’s and quality of service requirements are not
written by the business analyst in the early phases of the SDLC, but when the
developers are absolutely ready to implement them. MSF4ASD captures the vision of
the project in a so-called Vision statement. It is a short, coherent statement that provides
the project team with a brief summary of the project background, the driving factors,
and the purpose for building the system at a high description level.
RUP wants many requirements to be identified at the beginning of the project and to
strictly manage them. They form a basis for the development and testing of the solution.
MSF4ASD has a more flexible attitude towards managing requirements as they come
along the software engineering process. Both SEPs are scenario-driven processes that
define their requirements in stories and express them visually.
63
Chapter 5 | RUP versus MSF4ASD
COMPONENT-BASED ARCHITECTURE
A software architecture is a blueprint which describes the structure and behaviour of the
system [16]. Stakeholders lose overview of systems due to complexity and information
overload. Software architecture reflects the organization and the system interaction on a
high level to obtain a better overview of complex systems. The architecture is translated
into architectural models (a model is a simplistic view of the reality). Architectural
models help stakeholders to understand and shape the system by simplistic
representation and hiding unnecessary information and improve the communication and
understanding, by setting a common set of references and vocabulary, throughout the
project [13].
Risks and requirements of the stakeholders are the basis of the architecture in the
Rational Unified Process. RUP provides a methodological, systematic way to design,
develop, and validate a durable and understandable architecture, which can cope with
changes and promotes reuse of new and existing components [13]. The project team
identifies the candidate architectures in the inception phase. During the elaboration
phase the project team baseline a robust component-based architecture, this matures
during the rest of the lifecycle. RUP also provides a number of templates and activities
to determine an architectural description around the concept of multiple architectural
views. The iterative development approach enables the project team to progressively
identify components, and therefore progressively plan when they are developed, got off
shelve or bought.
MSF4ASD says that the architect is responsible to ensure success of the project by
designing the structural elements of the system based on the MSF4ASD scenarios. This
includes defining both the organizational structure of the system and the physical
structure of its deployment based on the system’s requirements [2]. It does not prescribe
a clear instruction, only short statements for the project team to achieve an agile
architecture that are mainly based on experience and common sense.
The architect role must partition the system to reduce complexity by problem
decomposition, create encapsulation and promote reuse of subsystems. The team has to
identify and agree upon the interfaces between the subsystems to enable the developers
to build the system parallel. Determining the system’s interfaces helps with the
integration of the subsystems. When the interface definitions are agreed, only the
highest level and external interfaces for the system are presented in the application
diagrams. When the system is divided in subsystems and their interfaces are moulded, a
threat model is created. A threat model describes the known security threats with their
countermeasures and prioritizes them on the impact they may cause to the solution.
64
Chapter 5 | RUP versus MSF4ASD
MSF4ASD says to build the threat model early and to update it as the architecture and
system evolves each iteration of the lifecycle. After the threat model, the architect has to
create a performance model, which helps to identify and address potential performance
issues in the system and is based on the quality of service requirement. In the agile
flavour it is important to address project risk as soon as possible by creating an
architectural prototype early in the software engineering process. Creating prototypes
reduces overall project risk and uncertainties and makes planning and estimating more
accurate. Finally, the architect has to create the infrastructure architecture, which
defines the deployment environment of the system to ensure that the system is
deployable and quality of service requirements are met. This architecture also must be
updated each time the system evolves during the lifecycle.
VISUAL MODELING
Project members need to have an insight of the system and have to unambiguously
communicate decisions with other team members or other stakeholders. Visual
modeling is used to provide the project team with a better overall overview, because we
cannot comprehend such a system in its entirety. A model describes a system from a
particular perspective and helps the project team and other stakeholders to visualize,
specify, construct, and document the structure and behaviour of architectures and
components. Each model reflects different aspects by focussing on different relevant
information and activities.
The RUP uses the Unified Modeling Language (UML) to visually specify the system.
The UML is a widely accepted language that uses different models for different
stakeholders to express their interest and addresses all the important analysis, design
and implementation decisions. The software development and team communication is
driven by use-cases.
The MSF4ASD applies a different visual modeling language called Domain Specific
Language (DSL). According to Microsoft, UML is a too general language; every aspect
of the whole system is visualized in one language. The domain specific language is a
visual modeling language that is designed to be useful for specific set of tasks or
interests of the software engineering process and it lets project members design models
using domain related terms.
Both processes emphasize visual modeling to improve the team’s ability to manage
system complexity. But RUP also uses the models to communicate with team members
and stakeholders, where MSF4ASD communicates more face-to-face.
65
Chapter 5 | RUP versus MSF4ASD
RUP verifies the quality of the product, artifacts, and process at the end of each iteration
through well-defined review procedure. This review includes an iteration assessment to
evaluate the course of the iteration; which targets are obtained, why things went wrong,
and collect feedback of the end-users. The outcome of the assessment is the primary
input for the next iteration planning activities. In RUP quality can be measured in many
ways, like use cases implemented or milestones completed, artifacts completed, and
discrepancy of planned and real schedules and budgets. RUP prescribes that the creation
of process and product quality is the responsibility of everyone in the project team and
therefore is integral to almost all project activities. The accountability of the quality is
only related to whom is directly involved in a specific process component or artifact.
The project manager role is responsible for managing, measuring, and achieving the
overall quality of the project [12].
One of the principles is to invest in quality, for that reason MSF4ASD defines quality as
an objective. This assurance is present in all principles, practices and activities, so
quality is continuously verified to ensure the project keeps on the right track. A team of
a MSF4ASD project consists of a so-called Team of Peers. This implies that no one of
the team members is more important than another. The participants have a shared
responsibility for the quality of the system, but are accountable for their own portion of
the overall system. By means of preventive, detective and corrective measures
throughout of the whole software engineering process, like code analysis and peer
reviews one can prevent flaws as well as maximize the testing to find flaws in order to
enforce a better quality of the system [24].
CHANGE MANAGEMENT
The conservative ‘waterfall’ approaches believe that the project team has the ability to
know all aspects of the solution in advance. Nowadays, as previously mentioned a
software engineering process is a creative process with accompanying uncertainties and
is subjected to change in its solution, process and environment. To demand a high level
of predictability in a changing environment is unrealistic and leads to unsuccessful
projects. The whole software development environment is a strong coherency, where
multiple developers are organized in teams on maybe different workplaces, working on
several different components, releases and products of the solution. Changes that are
made during the SEP may have deep impact on the various parts of the solution. Change
management enables the project team to cope with changing requirements and
66
Chapter 5 | RUP versus MSF4ASD
In RUP, the configuration & change management discipline prescribes how to control,
track and monitor changes to create an environment for coordinating the activities,
artifacts, iterations and releases of the SEP. Coupled with iterative software
development and requirements management, RUP provides a guidance for the project
team to be able to continuously monitor and control changes, to lay bare the
consequences of the change and to track the changes that were made. The submitted
changes have to be motivated and checked by the responsible role to be justified to the
project agreements. Accepted changes are not handled in the current iteration, but are
planned to be granted in the next iteration. Changes that have drastic impact on the
current iteration or product may cause the iteration to end premature, so the project team
can make the necessary changes before they begin at a new iteration. The RUP change
management is an extensive and prescriptive procedure.
RUP uses a formal and strict change management to control and plan the adjustments,
where MSF4ASD has a lawless change management to give the stakeholders more
freedom of movement concerning changing aspects of the future solution by
establishing the needs and requirements within margins and instead of fixed points.
CUSTOMER INVOLVEMENT
Satisfying the customer is really the number one objective in a software engineering
process. At the end, a customer has to receive a system that has a surplus value for their
business process. The project team has to interact with the customer during the software
engineering process, at first to ensure that they understand and solve the customer’s
business problem and to control and validate the system releases, to achieve a business
value adding solution.
The RUP role model defines roles for the customer to stimulate customer involvement
during the software engineering process, and the project manager is the link between the
customer and the project team. RUP involves the customer to define, control and
validate the system’s requirements. This interaction occurs in beginning of the inception
67
Chapter 5 | RUP versus MSF4ASD
and elaboration phase and at the end of an iteration to give feedback on the product
release.
MSF4ASD mentions that after the customer business problem is understood, the
customer involvement still has to be maximized to ensure that their expectations are
constantly aligned with the project through early and continuous delivery
of valuable software. Project members may take wrong assumptions when customers
are not able to provide feedback and check the status of their project. MSF describes
some techniques that support setting and managing the customer’s expectations like
delivering quality products frequently.
The MSF4ASD prescribes a more frequent interaction between the project team, the
customers and other stakeholders than RUP. RUP prescribes the team to communicate
on planned moments, during the iterations assessments at the end of an iteration, while
MSF4ASD recommends a continuous interaction with its customers.
OPEN COMMUNICATION
Communication is an important factor for having a successful software development
team and therefore a successful project. Developing a technologic solution is a creative
process done by humans and each individual has his own ability and perspective to the
project. In order to create a clear project status vision, to understand the business
problem and to prevent communication pitfalls, a software engineering process has to
have a well-formed communication structure between all stakeholders. As projects are
getting more complex, more open communication is necessarily to enable stakeholders
to notify their opinion, status and problem to each other, to create a shared vision and to
ensure and assure the project is on the right track.
MSF4ASD believes that all project information has to be actively shared with all
stakeholders to create a project environment that maximizes members’ individual
contributions. Each team member has his own skills and vision towards the process and
solution. Sharing all knowledge ensures more members’ insight of the best solution to
decrease project uncertainty, creates a general agreed vision of the solution, as well as
everyone-is-equal aspect positively influence the team spirit. The regular planned open
communication becomes more important as projects increase in size and complexity and
is the medium through which a shared vision and performance objectives can be
defined, measured, and achieved [22], [24].
68
Chapter 5 | RUP versus MSF4ASD
SHARED VISION
A shared vision is needed to ensure that all members of the project understand the
customer’s business and how the IT-solution will help to achieve business value, and it
gives a clear understanding of its objectives to solve the customer’s business problem.
This collective mindset makes the software engineering process less amenable to
conflicting views, unnecessary labour, and communication flaws.
The best practices of RUP do not explicitly mention the need to create a shared vision.
Although in [28] is said that one of the minimal set of items a project will have if they
are truly following the ‘essence’ of the Rational Unified Process is to develop a vision.
This Vision artifact of the requirements workflow is created early in the Inception phase
and evolves during the earlier portion of the lifecycle. It documents the stakeholders’
view of the future product, specified in terms of the stakeholders’ fundamental needs
and features. Team members use this document to create a general understanding of the
stakeholders’ business problem and needs to create a shared vision of the future system.
Also MSF4ASD does acknowledge the need to capture the vision of the project by
writing a so-called Vision statement. It is a short, coherent statement that provides the
project team with a brief high level summary of the project background, the key driving
factors, and the purpose for building the system. Combine with its related activities, the
vision creates a solid foundation on which the project can be built. By means of so-
called personas, the vision statement gives the team members an understanding of the
end-users, their goals and their usage patterns. A persona is a fictional individual who
represents a group of users of the system to be developed and is used to classify the
needs of an entire customer segment by exploring the characteristics of one fictional
individual. MSF4ASD underlines that capturing and communicating this central vision
is the most important element to keep a project focused. The vision statement and the
project team composition of MSF4ASD, where everyone is treated equal and open
communication is applied, create a togetherness, because decisions are not arbitrary, but
are determined in a solidarity vision of the solution.
Both software engineering processes create a vision to ensure fulfilling the correct needs
of the customer, but MSF4ASD shares this more with the project team and stakeholders.
RUP has a more hierarchic and closed communication flow than MSF4ASD.
This best principle is not mentioned explicit in the best practices of RUP. RUP has risk
driven approach as it prioritizes the activity on the level of risk and not level of adding
business value. RUP prescribes that the activities with highest risk should be
implemented first. MSF4ASD prescribes that the activities are organized and prioritized
in the order of adding business value in the solution to the customer. Activities that do
69
Chapter 5 | RUP versus MSF4ASD
not add a customer value have to be minimized. This principle of prioritize and
incremental development ensures that every step has a positive effect to the customer
value and return on investment of the project. The 'flow of value' is a key component of
agile methodologies. They want to deliver value to the customer throughout each
release, not just at the end.
CONCLUSION
Table 5-3 reflects a summary of process rating of the results of the comparison of the
Rational Unified Process best practices and the Microsoft Solutions Framework for
Agile Software Development principles. The rating is carried out by giving points to the
level of embracing the comparison criteria, where 1 represents a weak, 2 a moderate,
and 3 a strong accent of the criterion in the software engineering process.
Both RUP and MSF4ASD perform overall equally, only the processes emphasize
different best principles.
RUP is a strict and formal process, resulting in the possibility to plan, schedule and
control the project more accurately. Requirements and changes are managed in a
prescribed method to keep track and control of the progress of the solution. The team
develops the system on the basis of a component based architecture and communicates
on a need-to-know basis that is mainly based on documents. The customer and end-
users are involved in the SEP at prescribed moments to evaluate the product and to
feedback the change requests. These changes are well managed, but are restricted by
previously identified project boundaries.
The MSF4ASD is a flexible and informal software engineering process to maximally
support the will of the customer to create a business value adding solution. This agile
flavour of the MSF believes that system development is a creative process with
uncertainties, which causes stakeholders to understand the needed solution
progressively along the software development life cycle. It assumes that change requests
will appear along the way, and therefore less acknowledges the needs of requirements
management, change management, and architecture. By strong iterative software
development, the project team is able to build the product incrementally and implements
the changes when they occur. MSF4ASD emphasize great customer involvement to
continuously receive feedback and to create an environment, where changes can be
made all the time. The iterative software development, continuous customer
70
Chapter 5 | RUP versus MSF4ASD
involvement, the equal status of team members and open face-to-face communication
allows the environment to be agile.
Inception Envision
To specify the vision, its business case, To unify the stakeholders’ goals behind
and defining the scope of the project. a common vision of the project.
Elaboration Plan
To plan the activities and resources, and To understand and track the progress of
to specify the features and design the project and product.
architecture of the system.
Construction Build
To build the product and to evolve the To write and update the architecture,
vision, architecture, and planning until scenarios, QSRs, and to develop the
the system aligns with the agreements. system incrementally en iteratively.
Transition Stabilize
To hand the system over to its users by To verify and to close a bug to enable
deploying it in the user environment or stability of the system.
delivering it to the buyer with the
appropriate support, trainings and Deploy
documentation. To deploy the stable system in the
customers environment with
accompanying documentation.
Continuous
To identify the lessons learned and to
prepare for starting a project for a new
release.
71
Chapter 5 | RUP versus MSF4ASD
In the beginning of the project, the project members are brought together and for the
first time introduced to the stakeholders. The team gain knowledge of the business
problem and environment, the needs and expectations of the customer. This information
has to be documented and communicated, to create a complete and common vision
among all stakeholders.
The Rational Unified Process as well as Microsoft Solutions Framework for Agile
Software Development create respectively a so called vision artifact or vision statement
to ensure that all stakeholders have the same idea of the business problem and how the
solution solves it. Also both set boundaries to the project to scope the solution
environment, only RUP establishes the scope of the project in more detail to create
fixed boundaries. The scope of the agile project is wider to create an environment where
the solution has more freedom to move in order to align with altering wishes of the
customer.
Once the stakeholders know the business case of the project, the team has to identify
and understand which elements the system must have to solve the business problem.
The customer, end-users and other stakeholders notify the project team their wishes,
needs and expectations of the system. A RUP project team wants to obtain as much
information as soon as possible to create an overall planning and understanding of the
project. In the inception phase all requirements, overall cost and time estimations,
potential risks and candidate architectures are formulated. MSF4ASD has an agile
mindset, meaning that a MSF4ASD team thinks that it is not necessary to have all the
information in advance. The agile community believes that change is not only likely,
but it's inevitable. That is the reason the MSF4ASD uses the just-in-time (JIT) approach,
where an item is created when that item is needed. In the first track of the SEP, the
envision track, only the vision statement, persona’s and iteration length are determined
to create a go/no go to continue to the next track. The scenarios, quality of service
requirements, and architecture are created and updated right before they are
implemented. This attitude enables you to be flexible and cope with changes, but this
makes the whole project less suitable to plan.
Both use this period to study the customer’s business, problem and needs, to develop a
common accepted view of the project. Only RUP is more strict and formal to the scope
and the agreements of the project than MSF4ASD which is more flexible and open for
changes.
72
Chapter 5 | RUP versus MSF4ASD
The planning period is for elaborating the ideas of the future product, estimating the
time and cost of the project, and reserving resources. Both processes use the vision as
basis to create system architectures, identify the non functional and functional
requirements and constraints. As mentioned earlier, RUP wants to know as much as
possible in advance, to be able to estimate and plan the project as a whole and in
iterations. At the end of the inception phase all the functional and non functional
requirements are identified. In the elaboration phase, the team baselines the architecture
and vision and makes a detailed risk-driven plan for the whole construction phase to
manage and control the rest of the process. MSF4ASD focus more on the planning of
the iterations than the overall project planning. It has the opinion that planning the
project as a whole is unnecessary, because it believes that it is a given fact that changes
occur during the project. Where RUP focuses on risk driven planning of the project,
MSF focuses more on quality driven planning of the next iteration.
The build period has in both processes the same purpose, to build the software product
in line with the expectations, needs and agreements of all stakeholders. This phase
really shows the benefits of iteratively and incrementally development, which both
processes embrace. Step by step, the product is build and verified to ensure that the
quality of the product is kept on a high level. In the software engineering processes this
is the most work and time consuming period of the software development life cycle.
Although this phase has the same purpose in both SEPs, they differ in approach.
RUP has created a planning for the whole project and iterations in the previous phases
of the SEP and focuses now on the actual building of the product using iterations. The
developers receive the needed use cases, functional description and the architecture to
certify the functionalities of the system they have to build. Each iteration ends with an
executable release and is shown to the stakeholders for frequent end-user involvement
and feedback. Also the project team organizes an iteration assessment to provide itself
and other stakeholders with information about the progress and status of the system and
document the lessons learned to ensure that the project is consistent with the
agreements.
The short-term vision mindset of MSF4ASD is shown the most during this period.
Same activities of the plan track belong to the first iteration, which continues throughout
the build track and is repeated as much as needed throughout the project. The iteration
cycle is also divided in the cycles accepted build, daily build, and check in to ensure
more iteratively software development. The time between the start of a project and the
actual building of the system is short, because of the lack of interest to know all the
requirements and to plan the project as a whole. For that reason, the agile team has to
begin the iteration with the creation or update of the solution architecture, quality of
service requirements, and scenario’s that are implemented in this iteration. After that, a
work day begins with a short meeting to talk about the status, progress and work-to-be-
done of the week. The developers implement their tasks and fix the possible bugs,
which is illustrated in the metaphor check-in cycle. All this is done in the context of the
belief that the product should be ready to ship at any time. Therefore, the check-in cycle
turns the cogwheel of the daily build, meaning that at the end of the day, the changed
code is integrated in a build. The daily build wheels together are followed by the
acceptation of the build, where the builds are extensively tested and verified to meet the
appropriate level of quality. The iteration ends with an overall review of the objectives
and progress of the project.
73
Chapter 5 | RUP versus MSF4ASD
Of course both processes continue building the product until it is finished, but RUP uses
the agreements in the project documentation and MSF4ASD uses the feedback of the
stakeholders to determine the state of the product. RUP plans the project and iteration in
advance, while MSF4ASD is more short-sighted and plans only the next iteration ad
hoc. Also, an agile project is more divided into fragments than one embracing RUP.
Once the product is mature enough and has the quality level that is expected by the
customer and end-users, it is ready to be passed to the customer. Different products need
different transition approaches. For example, a new release of a widely spread
accountancy system on the retail market needs a more commercial approach, than a
tailored human resource management system, which the team most likely needs to
implement at the customer’s environment. But there are basic elements or strategies that
need to be done to successfully handover the product to the customer; Beta testing to
validate the new system against user expectations, parallel operation with the legacy
system that the product is replacing, conversion of operational database, give trainings
to users, write additional documentation, like manuals, installation and release notes,
and possibly roll out an advertising campaign. After the product is rolled out at the
customer site, issues usually arise that requires for developing a new release, correct
some problems, or finish features that were postponed. Once the product is handed to
the satisfied customer, RUP’s project cycle comes to an end. The MSF4ASD has an
extra period in its process, namely the continuous track. Its purpose is to review the
overall project, and identify new risks, bugs and personas for a good start of the follow
up project for a new generation of the system.
The transition phase of RUP has one or more iteration to release the product at the
customer’s site to deal with unexpected errors. Typically, this phase contains beta
releases, general availability releases, and bug-fix and enhancement releases.
MSF4ASD has to stabilize and deploy tracks to ensure that the system is correctly put
into the hands of the users. To minimize problems at the customer site, the agile team
designs the system to be deployed and practices deploying it in a development
environment continuously during the build phase. RUP tests this at the end of the
project in the transition phase using one or more iterations. RUP uses the iterations in
the transition track to ensure a fine product handover, and MSF4ASD ensures this
throughout the whole project.
RUP and MSF4ASD use certain check-moments in their process. RUP calls them
milestones and MSF4ASD calls them governance checkpoints. These are the moments
the team looks objectively at the project to decide to proceed, abort, or change the
course of it.
RUP measures the progress of the project at the end of each of the four phases. The first
ends the inception phase, the lifecycle objective milestone checks the existence of a
common idea of the solution among all stakeholders. The second ends the elaboration
phase, the lifecycle architecture milestone verifies the existence of stable vision,
requirements and architecture, and the identification of the major risks. The third
concludes the construction phase, the initial operational capability milestone validates if
the product is mature and stable enough to be deployed in the user community. The last
one wraps up the project lifecycle, the product release milestone measures the
contentment of the user. MSF4ASD measures the progress of the project at the end of
the six tracks. Each track concludes by answering the five governance checkpoints, each
of which focuses on a specific question to answer. The first question reviews the system
74
Chapter 5 | RUP versus MSF4ASD
to meet the minimum acceptance level of functionality. The second question assesses
the progress of the project to meet the deadlines. The third question concerns the
evaluation of the level of quality. The fourth question addresses the project and
technical risks. The last one asks the team if they designed and created a solution that is
ready to deploy.
RUP and MSF4ASD periodically verify the project to be on the right track. The
difference is that RUP changes the validation focus in time, once a focus area is labelled
positive, RUP does not reconsider this later in the project. MSF4ASD has the same
criteria to check the project during the whole software engineering process.
CONCLUSION
The different focus in time during the software engineering process as RUP is illustrated
in Figure 5-4 and MSF4ASD in Figure 5-5.
In the early period of the project, RUP wants the vision and scope to be complete and
strict as possible, and MSF4ASD wants a vision that is kept open to cope with a
changing project environment. After the common vision both process begin with
75
Chapter 5 | RUP versus MSF4ASD
planning. RUP focuses on the risk driven planning for the project as a whole, MSF
focuses more on quality with adaptable planning for the next iteration. RUP plans the
project and iteration in advanced, if MSF4ASD is more short-sighted and plans only the
next iteration ad hoc. Besides MSF4ASD projects are more divided into segments than
RUP in order to cope better with the inevitable changes. After the creation of the
planning both processes continue building the product until it is finished, but the two
have different building approaches. RUP uses the agreements in the vision as guidance
during the construction phases and MSF4ASD uses the feedback of the stakeholders to
determine the state of the product. During the building track, MSF4ASD continuously
considers and tests on deploying the product in the customer environment to minimize
unexpected deploying problems. The RUP SEP does not do this and therefore has to test
deploying the system in the transition phase. Also MSF has an extra period in their agile
SEP, namely the continuous track to prepare the team for a follow up release project of
the product. During the process both SEPs have checkpoints to review the status and
progress of the project. The difference is that RUP changes the focus of the checks as
the project proceeds and MSF4ASD asks the same five questions for each checkpoint.
76
Chapter 5 | RUP versus MSF4ASD
Project Management
To provide a framework and guidelines
for managing, planning, staffing,
executing, and monitoring projects.
Environment
To provide the software development
company with both processes and tools,
that supports the development team.
77
Chapter 5 | RUP versus MSF4ASD
The processes arrange the workload of project into groups to cluster the activities that
are related to a major ‘area of concern’ of the project to create more overview of the
process. These clusters called workflows (RUP) or work streams (MSF) group the
sequential activities that lead to an artifact (RUP) or work product (MSF), or have the
same goal in the project. Each artifact of work product has one role that responsible for
it, and one role is responsible for multiple artifacts. The process elements of RUP and
MSF4ASD are illustrated in Figure 5-6 and enumerated in respectively appendix B and
C.
The Rational Unified Process separates its process in nine disciplines to represent a
partitioning of all team members and activities. These nine disciplines consist of six
engineering disciplines and three supporting disciplines. The engineering workflows are
business modeling, requirement, analysis & design, implementation, test, and
deployment. The three supporting disciplines are configuration & change management,
project management, and environment. A discipline consists of an enumeration of
workflows, these workflows consist of relevant activities, and each activity is addressed
to a role. A team member occupies one or more roles in the project. Generally RUP
organizes the team model in thirty-one roles and MSF in six roles, each with its own
purpose and goal for the project. The responsibilities of each team member are usually
expressed in relation to certain artifacts that the role creates, modifies, or controls. The
Microsoft Solutions Framework for Agile Software Development breaks up its process
in seven advocacy groups, the product management, user experience, architecture,
development, test, release operations, program management. The team model of
MSF4ASD is a non-hierarchic structure of people and their activities are aligned to the
advocacy group. These seven constituencies are generally occupied by the six roles
which MSF4ASD identifies. In Table 5-5, the comparison of the disciplines and
advocacy groups are schematic reflected, and the ones connected with the double arrow
are considered to be equivalent.
As shown in Table 5-5, all the advocacy groups of the agile flavoured process are
represented in the disciplines of the RUP. However, RUP identifies two other points of
attention, namely the disciplines ‘configuration & change management’ to control the
changes to, and maintains the integrity of project’s artifacts and ‘environment’ to
provide the software development organization with both processes and tools, that
support the development team.
78
Chapter 5 | RUP versus MSF4ASD
The MSF4ASD does not recognize the need for a separate configuration & change
management advocacy group for two reasons. First, the agile SEP believes that not a
role or person is responsible for configuration and change management, every team
member has to stay agile and be adaptive. Second, in contrast with RUP, where most
requirements are identified and elaborated in detail in the early phase of the SEP,
MSF4ASD uses the JIT approach to provide the project with more freedom of
movement during the software development life cycle. The more elements are
established and written down in advance, the more changes will be made at a later
moment in the process.
The MSF4ASD also does not recognize the need for an environment advocacy group.
This discipline provides the RUP project team with the right tools and acquisition, and
configures and improves the SEP, to support the development organization with both
processes and tools. The lack of interest in environmental advocacy groups confirms the
thought that this SEP expects a continuous follow up projects for new generations of the
product, because it assumes that a development environment already exists.
The processes differ in the amount of roles in their software development process.
Where the RUP software engineering process identifies thirty-one roles, the light
weighted agile process has just six roles. In general, RUP’s high quantity of roles sees
that team members have to perform one or more roles. In other words, the team model
has to be scaled down to fit the project and the number of team members. The agile
team model has a different way to fit the project. Looking at the number of roles in
MSF4ASD, team members have more chance to fulfil one role or even share the same
role. One of the fundamental principles of the MSF team model is stretch to fit the scale
necessary for the specific project.
79
Chapter 5 | RUP versus MSF4ASD
The amount of workflows, activities and artifacts of the RUP and the amount of Work
streams, activities and work products of MSF4ASD is an immense difference. The
project members of the agile flavour of MSF have to execute seventy-six activities that
are classified in its fourteen work streams to create and update the twenty-four
prescribed work products. In contrast, RUP has fifty-five workflows with one hundred
and forty-eight activities that create, use and update sixty-nine artifacts during its
SDLC. Again, this shows that RUP is a more heavy and formal software engineering
process than the MSF4ASD. MSF4ASD not only leaves more freedom of movement for
the stakeholders in the field of outcome of the project, but also the process of the project
itself.
CONCLUSION
The vertical axis of the two graphical representations in Figure 5-7 represents the
workload of the project during the two software engineering processes. Both processes
work to the same goal, but the way the work is arranged and accomplished is different.
The Rational Unified Process is a more prescriptive process than the Microsoft Solution
Framework for Agile Software Development. RUP identifies every element that may be
useful in the software development project in great detail. This complete enumeration
enables the project members to manage and control the workload of the project, and
therefore enables the team to estimate and plan the project in time and costs down to the
minutest detail. On the other hand, MSF4ASD is more adaptive and is more able to
cope with changes than RUP. MSF4ASD leaves more room for stakeholders to change
their needs, expectations, and even the process.
The disciplines in RUP cover the advocacy groups of the agile MSF, but RUP adds two
more points of interest, namely the disciplines configuration & change management and
environment. The first is not explicitly mentioned in MSF4ASD but is woven into the
whole process. It believes in a collective mindset of the configuration & change
management and uses the JIT approach during the whole process. The amount of roles
in the two processes differs impressively, RUP has thirty-one and MSF4ASD has six
roles. The role arrangement of the team member in RUP is handled differently than the
MSF4ASD. To use RUP in an average project, the process has to be scaled down,
80
Chapter 5 | RUP versus MSF4ASD
meaning that team members have more than one role or some roles are left out of the
project. To use MSF4ASD in an average project, the process has to be stretched out to
fit, meaning that possibly the project has to be divided into subprojects.
As shown in Table 5-6, IBM Rational describes their process in detail. RUP is a more
formal and strict process, that estimates the cost and time of the project, then plans the
whole project and focuses on keeping the project on track to reach the pre-agreed
destination. The agile SEP of Microsoft has less handles established to give the project
members more freedom to flavour the process to their own taste or need. The
MSF4ASD is the younger, more playful and unbridled little brother of the more serious,
rusted and grown-up software engineering process of IBM Rational, which leaves less
room for margins and ad hoc changes for the stakeholders in the end-product and
process, but is more capable of planning on time and costs.
5.5 CONCLUSION
RUP and MSF4ASD strive for the same objective, to guide the project team in creating
a solution that meets the needs plus expectations of the customer and therefore satisfy
the stakeholders. The way the two software engineering processes reach this goal has
common grounds and differences, in the field of the philosophy, focus in time and work
division. This section summarizes the results of the three comparisons by combining
and presenting them in the answer to Question 3, namely “When is the IBM Rational
Unified Process or the Microsoft Solutions Framework for Agile Software Development
more appropriate to use?”. Which project situation is more appropriate to use RUP and
which to use MSF4ASD?
RUP is a formal and heavy software engineering process that focuses on time and
budget planning, to be a predictive process, and uses iterations throughout the software
development life cycle to cope with changes that are inline with the scope and vision of
the project. RUP is suitable for relatively average to large sized projects, and when
creating critical systems with no room for mistakes or errors, like a big budget
development project for satellite control system. The project team consists of a
significant amount of members and has a hierarchic structured team model, from
dependent immature juniors to expensive seniors with a lot of experience. The customer
must have a clear idea of his solution to enable the stakeholders to identify and
document the requirements in the early stage of the software development life cycle.
These demands must be agreed upon to create a clear scope of the project, but the team
leaves some freedom of movement for the stakeholders to request modest changes.
These agreements enable a more predictive project that focuses on time schedules and
budget planning. This project situation has a clear distinct customer and project team
81
Chapter 5 | RUP versus MSF4ASD
relationship, where the customer and the team do not have the ability or time for
continuous interaction. Therefore the communication is based on documentation and the
feedback is obtained during the periodically planned assessments.
82
Chapter 6
MICROSOFT VISUAL STUDIO
2005 TEAM SYSTEM
“Application development is carried out by teams with various roles.
Traditionally, these roles have been services by point solutions, producing
output specific to their creator but not linked to coordinate with each other.
This exaggerates communications gaps that tool manufacturers are now
closely considering by delivering collaborative development environments
that integrate across the life cycle” [26]
6.1 INTRODUCTION
This chapter answers research Question 4 by assaying the results of Chapter 5, the
common grounds and differences regarding RUP and MSF4ASD, to the Microsoft
Visual Studio 2005 Team System to examine how they are supported by this software
development platform.
As software development become more complex and the development teams become
more distributed, the point of attention of software development tools shift from a focus
on individual productivity to team productivity [26]. Software development platforms
support this shift by integrating the collaboration and process capabilities with full life-
cycle development environments. In other words, software development platforms is a
combination of the ‘traditional’ integrated development environment and SDLC
supporting tools, that support activities like modeling, versioning, testing, etcetera.
83
Chapter 6 | Microsoft Visual Studio 2005 Team System
productivity has been optimized for individual role steps, but not for the entire
development process. The product moves forward through the project on an assembly
line, where step by step a new individual with a new tool works on a new part of the
solution. The project stakeholders must metaphoric sit around the solution, as illustrated
in Figure 6-1, and not next to one another.
Software development platforms, like Microsoft Visual Studio 2005 Team System,
embrace the collaborative mindset to develop a solution as a team and not as a group of
individuals.
Visual Studio 2005 Team System consists of the Visual Studio 2005 Team Edition for
Software Architects, Visual Studio 2005 Team Edition for Software Developers, Visual
10
Source: http://msdn.microsoft.com/vstudio/teamsystem/products/
84
Chapter 6 | Microsoft Visual Studio 2005 Team System
Studio 2005 Team Edition for Software Testers, Visual Studio 2005 Team Foundation
Server, Visual Studio 2005 Team Test Load Agent, and MSF process guidance [23].
Figure 6-2 Visual Studio 2005 Team System products and features arrangement
Visual Studio 2005 Team Suite is a SDP that enables the project team to design,
develop and test the solution in an integrated environment to improve project overview,
communication, and efficiency [23].
The VS Team Edition for Software Architects enables the team with the ability to
visually model the service oriented applications, and validate them to the IT
environments, to improve the productivity and identification of problems between
development and deployment early in the SEP. The VS Team Edition for Software
Developers provides the team with an advanced integrated development environment to
write quality source code for the solution by checking the grammar of the code,
identifying security issues, performing unit testing, and detecting code coverage. The
VS Team Edition for Software Testers provides the team with tools for testing the
quality of the solution early in the software development life cycle. The VS Team
Foundation Server is the heart of the SDP that enables the collaboration mindset of
VSTS. The VS Team Test Load Agent provides the team with extra test load capacity
for the using the VS Team Edition for Software Testers.
In the next sections, this thesis explains the main features of the Visual Studio 2005
Team System by examining the three Visual Studio editions and the Team Foundation
85
Chapter 6 | Microsoft Visual Studio 2005 Team System
Server. Note that, this thesis describes the features that are supported in VSTS and does
not describe the features that are missing in the Microsoft software development
platform.
The team has little costs during the planning and designing phases, but the project team
is committing to a much larger costs for the rest of the lifetime of the system. Eight
percent of the budget spent during design locked down 80 percent of the lifetime
product cost [5]. Therefore the architecture has to be well modelled in a common
language. This enables to project team just to focus on relevant system information and
to improve communication within the team and with other stakeholders.
Visual Studio 2005 Team System for Architects facilitates the architect in the project
team to model the system in different views using the logical datacenter designer, the
application designer, system designer and the deployment designer. These tools, called
Distributed System Designers, are a set of design tools in the architect edition of the
Microsoft’s software development platform, and help the architect to visualize the
future system and communicate this to the rest of the project team.
86
Chapter 6 | Microsoft Visual Studio 2005 Team System
The architect does not create new structure rules for the network, but maps the existing
into the diagram. This diagram ensures that the solution respects the settings and
constraints and ensures compatibility with the customer’s logical infrastructure. VSTS
also validates the architecture of the application itself to the logical datacenter diagram
of the customer network infrastructure.
Summarizing, the logical datacenter diagram is the blueprint, settings and constraints of
the infrastructure on which the future solution is deployed, that makes sure that the
implementation actually can be implemented at the customer’s site.
APPLICATION DESIGNER
The application designer is used to define or visualize applications in a visual studio
solution. This distributed system designer allows the architect to design the
configuration of the applications and the interactions to each other. The application
diagram represents the high level architecture for your applications.
87
Chapter 6 | Microsoft Visual Studio 2005 Team System
As shown, the application designer is not designing one application in detail, but
diagrams the system as a whole to illustrate how the elements of a system are connected
to each other. The connections are the traffic flow of a high level design of the
application, the deployable pieces of the application. The architect also can set and
constraint each connections and element to restrict and scope the solution’s architecture.
VSTS enables the project team to generate all applications designed in the application
diagram. In the example, VSTS will generate a windows application project called
CalcWinApp, a web project called CalcWebsite and a webservice project called
CalcWebService with a webservice called CalcSercive into the solution of the example.
SYSTEM DESIGNER
The system designer is used to define a specific configuration of applications and other
systems. The application diagram shows the developers how the applications are
designed and how they can connect with each other on a high level. The system diagram
zooms in and describes the developers how the applications and their connections
should be. A portion of the example system is represented in the Figure 6-5.
88
Chapter 6 | Microsoft Visual Studio 2005 Team System
The benefit of the system diagram is that a portion of the overall solution can be singled
out to enable the project team to create different configuration of different deployment
environments.
DEPLOYMENT DESIGNER
The deployment designer is the fourth and final architect designer. The architect uses
this designer to describe a deployment of the system in the customer’s logical datacenter
by binding applications within the solution to logical servers defined in the logical
datacenter diagram. The project team validates the application diagram and the
implemented code against the logical infrastructure of the customer.
The elements of the application diagram in Figure 6-3 are put into the logical datacenter
diagram in Figure 6-4 and resulting in a deployment diagram that is depicted in Figure
6-6.
89
Chapter 6 | Microsoft Visual Studio 2005 Team System
The deployment designer allows the architect to model the deployment of the system
into representation of the customer’s infrastructure by dragging and dropping the
applications into the logical datacenter diagram. Binding the application architecture to
the logical infrastructural representation validates the architectural design that the
solution is deployable.
Visual Studio 2005 Team System for Architects allows the architect to model the high
level architecture of the future system using four distributed system designers. Visually
modeling the architecture enables a better communication between the architects and
the developers. The architecture is integrated throughout the whole software
engineering process and allows the architect to create overview, rules and constraints
for the development of the system and enables a better handling of changes in the
system architecture.
90
Chapter 6 | Microsoft Visual Studio 2005 Team System
Professional Edition. Tools like the class designer to graphically create class files, the
static code analyzer to write consistent source code, the unit testing tool to validate the
source code, the code coverage tool to verify that every source code line is tested, and
the code profiler to check the performance of the source code [23], [25]..
Note that, many VSTS sources mentions the dynamic code analyzer as a feature of the
VS edition for Software Develops, while this analyzer is unit testing, code coverage and
performance tools together. This thesis describes them individually, so this dynamic
code analyzer is left out of this section [33].
CLASS DESIGNER
VSTS enables the user to implement the source code in two ways. Firstly, just by
writing the code into the class source code files. Secondly, by implementing the source
code using the class designer.
Visual Studio 2005 Team System provides the project team with a graphical interface,
called class designer, for creating source code without the knowledge of program
language. The class designer of the Microsoft software development platform enables
the project team to model the business logic layer visually in a class diagram, as
illustrated in Figure 6-7. The project team can use this graphical view for documentation
and communication purposes among the project stakeholders to better understand the
underlying class files. It should be said that the class designer only creates the general
source code of the class files by implementing methods, properties, events and the
associate parameters. The developer still needs to write the actual instruction code
within the method.
The class diagram stores no source code to solve a lot of reverse modeling problems and
to ensure that the class diagram and the class code file are synchronized. Figure 6-8
shows the only XML code of the class diagram, with properties of the diagram, and the
name and location of the actual “calculator.cs” class file.
91
Chapter 6 | Microsoft Visual Studio 2005 Team System
The class designer facilitates a more easy way to design and model the business logic
layer using class diagrams. This also creates documentation to communicate among all
stakeholders for a better understanding of the system’s business logic.
92
Chapter 6 | Microsoft Visual Studio 2005 Team System
The static code analyzer enables the team to import or create own validation rules. The
analyzer is also customizable on which checks or rules to include in the analysis,
whether to report as error or warning to set the severity of the inconsequentialities, and
supports the creations of own rules and checks. All together increases the quality of the
code as it is written in a common and consistent way.
CODE PROFILER
Code profiling is the process of finding the bottlenecks and roadblocks of the
application as an executable version. This functionality of the VSTS for developers has
the purpose to enable developers to measure the performance of an executable
application and identify issues in the source code. The developer has the ability to
analyze the time and memory spends of the application, like identifying which methods
or classes are using most of the execution time. After the code profiler reports its
finding, as shown in Figure 6-10, the developer is able to prioritize which parts of the
source code needs to be optimized first, and which not to spend his time on.
93
Chapter 6 | Microsoft Visual Studio 2005 Team System
The team can code and store the tests in projects within the solution, like the normal
source code projects. These test projects are designed to provide a container to hold all
tests. This interpretation offers tests the same functionalities as the source project
receive of VSTS. For example, the tests are placed in the source code control, can be
linked to work items, and the test results are saved on the foundation server for other
team members to review [23], [25].
In this section of the thesis describes the main functionalities of the test edition of VSTS
by creating and executing the four types of tests, organizing them in the test manager,
and explaining the results.
UNIT TESTING
After implementing the first method into the source code of the system, the developer
and/or tester has the opportunity to test its correctness by creating a unit test. A unit test
is a functional class method test by calling a method with the appropriate parameters,
exercise it and compare the results with the expected outcome to ensure the correctness
of the implemented code.
94
Chapter 6 | Microsoft Visual Studio 2005 Team System
A unit testing functionality is built in VSTS, which enables the team to write and run
units tests. This way of testing the system creates an overlap of tasks and knowledge of
the developer and the tester role, because the tests are written using the same code as the
actual system source code. Normally, these unit tests are integrated in the system
solution as a project and just like the source code of the system, the unit testing code is
stored onto the team foundation server.
VSTS has the functionality to automatically generate unit test methods during the
implementation of the system class methods. Note that, VSTS creates classes with
testmethods and initiates variables, but the project team needs to refine these methods to
be useful tests. Figure 6-11 shows the generated unit test for validating the “Add”-
method of the calculator example.
The generated code has to be revised to be a functional unit test for the “add”-method.
VSTS attends the user that variable a, b and expected has to be initialized to an
appropriate value. For example a is set on 20, b on 44 and expected on 64. If the actual
implemented method does not match the expected value, this test method will alert the
user with the error “CalcLogic.Calculator.Add did not return the expected value”. Note
that, VSTS adds the last code line to inform the user that this unit test is not revised and
may not be correct.
MANUAL TESTING
The oldest way to verify the correctness of the implemented code is the manual test. A
manual test is a list of test activities with descriptions that a tester performs step by step.
A project team uses manual tests, as portrayed in Figure 6-12, when the test steps are
complicated or unfit to be automated. An example of a test situation where a team may
95
Chapter 6 | Microsoft Visual Studio 2005 Team System
decide to use a manual test is when they want to determine a component's behaviour
when network connectivity is lost.
The manual test in the Microsoft’s project development platform is in either MS Word
or text format as scripts for manual testing tasks. VSTS treats manual tests the same as
automated tests, they are checked in/out and is stored in the source control repository on
the Visual Studio 2005 Team Foundation Server, they are managed and run in the test
manager and the test results are shown in the test result explorer. As the manual test is
started in the test manager, the manual test description is shown as in Figure 6-12. It
will keep on the status ‘pending’ as the tester steps through the prescribed activities
until the he selects the result of the test. If the test fails, the tester is able to create a bug
work item to report the bug and associate this test to the work item.
WEB TESTING
Web testing is integrated into Visual Studio 2005 Team Edition for Software Testers to
verify the quality of web applications. A web test allows the tester to automate the
testing of a web-based application or interface by coding or recording the user and web
browser interactions into editable scripts.
VSTS supports two different types of web testing, the recorded and coded web test.
The first type of web test records the HTTP-traffic of the web application into editable
scripts, which enables the tester to play back the interactions. The tester can check web
page access, content or response by adding validation rules to the recorded web test.
96
Chapter 6 | Microsoft Visual Studio 2005 Team System
Figure 6-13 shows the results of an executed recorded web test of the calculator
solution, where the user has loaded the webpage and hit the buttons after entering the
numbers 10 and 5 in the textboxes.
Each HTTP-traffic is recorded as a test line, which the tester can modify and enhance by
adding validation rules. In this example, four validations rules were added to check the
outcome of the four functions of the calculator. As shown in Figure 6-13 the third
“minus” test line fails, because the expected value of the result textbox in the validation
rule was not 3 but 5. Also, the VSTS facilitates the user to generate coded web tests out
of recorded web tests to be modified in more complex web tests. Just like the other tests,
the web tests are stored in test projects and are check in and out to the source code
control.
LOAD TESTING
The idea behind the load test is simulating that multiple users execute the logic of the
solution simultaneously. The primary goal of the load test is to discover scalability and
performance issues in the solution. Testing the solution also gives benchmark statistics
on performance as the solution modified or extended.
The tester creates a load test in the VSTS environment using a wizard that steps through
the process of defining a load test scenario. A scenario is a certain situation of the use of
97
Chapter 6 | Microsoft Visual Studio 2005 Team System
the application and is defined with a load pattern, test mix, browser mix, and network
mix.
The load pattern defines how the load is applied to the application and has two flavours,
a constant and a step load definition. The constant load definition applies a continuous
load of users on the applications. For example, when the tester sets the maximum user
count setting on 50, the load test continuously simulates 50 users stressing out the
applications. This option is useful for peak usage testing and stability testing to see how
the system performs under constant peak stress. The step load definition starts the load
test with a small number of users and adds a predefined amount each step until the
maximum is reached, or the system performs badly, or the solution falls over. This
option is suitable for testing the performance limitations of the system, like the
maximum number of users is before the system falls.
The test mix defines which tests are included in the load test and how they are
distributed. The tester can select all the automated test types that are stored in the test
projects of the solution. When selecting more than one test, the tester needs to define
what percentage of the total load capacity should be executing each test, as shown in
Figure 6-14.
The browser mix to define the kinds of browser to use for web tests. The browsers types
include various versions of Microsoft Internet Explorer, Netscape, Mozilla, Pocket
Internet Explorer, and smartphones profiles. The network mix defines the kinds of
network types are simulated, and ranges from LAN, dial-up through T3 connections for
the load test. After finishing the New Load Test Wizard, VSTS gives the tester an
overview of all properties of the load test as depicted in Figure 6-15.
98
Chapter 6 | Microsoft Visual Studio 2005 Team System
After defining the way to test the load on the system, the tester needs to identify what
information is important to collect during the test. Setting these so called counter sets is
a difficult task of the tester. Fortunately VSTS provides default counter sets to simplify
the creation of the load test.
Finally, the tester has to set the load test’s Run Settings, where it is decided how much
time the test needs to warm up, how long the test runs, and what the sample rate is. The
warming up time is the time between the start of the test and the first sample to be taken
of the counters. For example, the system starts slow the first minute due to the lack of
caching files and the tester does not want this warming up to influence the test results.
The sample rate is the time interval how often the counters are sampled. For instance,
the tester prescribes VSTS to take test data samples of the counters every ten seconds.
During the execution of the load test, the tester is able to monitor the counters in real
time and add or remove counters. The tests results, as shown in Figure 6-16, are
presented in tables and graphs, which also can be modified during the test run by adding
or removing counters.
99
Chapter 6 | Microsoft Visual Studio 2005 Team System
The test results are stored in a database or XML-file on the Visual Studio Team
Foundation Server to be available to all the team members or other stakeholders. From a
failed test, a tester is able to create a bug work item that is linked to these test results to
be addressed to a developer. The VSTS project portal website provides the managers
and other team members with extensive test and bug-tracking reports to track bug work
items.
TEST MANAGER
After the creation of the appropriate tests, one uses the test manager, as depicted in
Figure 6-17, to organize them in test lists. This allows the user to group and categorize
tests and execute them in an appropriate order.
100
Chapter 6 | Microsoft Visual Studio 2005 Team System
Figure 6-17 shows that the test manager has a tree structure of the lists of all tests, like
load, manual, and unit test. New lists with different test or order can be created to
validate the written source code in different ways and angle. Figure 6-17 also shows the
test results of the checked tests in the test manager, where one of tests failed to pass due
to the error that the expected and actual outcome of the “MultiplyTest”-method are not
equal. As already mentioned earlier in this chapter, the user is now able to create a new
bug work item to inform the responsible team member to fix this error.
CODE COVERAGE
The code coverage functionality enables the software development team to see which
lines of code are touched during the tests to grade the quality of the tests and its results.
For example, a class file contains thousand lines of code and the tests only touches fifty
percent of them, the test and its results may not be as accurate as the team want it to be.
The code coverage functionality, as shown in Figure 6-18, is kind of quality indicator of
the tests in the system development project, and answers the question how much of the
source code are tested.
101
Chapter 6 | Microsoft Visual Studio 2005 Team System
VSTS uses the code coverage functionality to inform the project team in percentage and
graphically how many lines of code is activated while running the tests. The project
manager may use this code coverage percentage as a check in policy to ensure better
code quality. For example, the class source code must run a number of unit tests and the
code coverage percentage must be over 80 to check in the source files onto the team
foundation server.
In other words, The Microsoft Visual Studio 2005 Team Foundation Server (TFS) is the
heart of the VSTS. It is the central organ of the software development projects that
stores and binds all information, sources, and documentation together to facilitate
project teams with better collaboration and communication opportunities. The Visual
Studio 2005 Team Foundation Server (TFS) is the collaboration hub of VSTS. It is the
102
Chapter 6 | Microsoft Visual Studio 2005 Team System
central repository for your team assets and consists of four pillars and one reporting
element generates the information of the components, as presented graphically in Figure
6-19.
PROJECT MANAGEMENT
In short, project management is tracking what is going on in the software development
project. A project manager wants to know what the other team members are doing to
plan, guide and predict the rest of the SEP. The project manager has to inquire the status
of the project; where are we and what should we do next? Are we still on the right
track? Are we meeting the requirements? Is this project failing? To answers these
questions, the project manager has have all kinds of lists; list of requirements, change
requests, customer requests, issues lists, bugs, et cetera. The MSF4ASD prescribes five
work items, namely a scenario, quality of service requirement, task, bug, and risk. The
Visual Studio software development platform enables the project team to record these
elements as work items centrally on the Visual Studio 2005 Team Foundation Server
[23], [25].
A project manager uses the work item lists to verify the status of the project, like the
amount of scenarios that need to be implemented or the amount of bugs that are need to
be solved. The project manager has the ability to organize the work of the project in
three ways, using the Team Explorer of VSTS, using MS Excel, or using MS Project.
VSTS has a pane within the IDE, named Team Explorer, which enables the team to
manage, view and change these work items using the VSTS Team Explorer, as
illustrated in Figure 6-20.
103
Chapter 6 | Microsoft Visual Studio 2005 Team System
The different queries on the work item database on the TFS present the team members
the relevant work items and its properties, such as title, date status, and name of the
team member that is responsible for the item. For example, the team explorer gives the
tester the ability to add a new bug work item, the developer the notification for fixing
this bug, and the project manager the information of the status of the bug.
As one can imagine, a project manager may dislike the use of the heavy SDP to manage
the work items. Therefore, VSTS has integrated MS Excel and MS Project to give the
project team the capability to organize the work items and to plan the project without
Visual Studio knowledge. As one can imagine, it is faster and easier to adjust work
items in MS Excel, as shown in Figure 6-21.
104
Chapter 6 | Microsoft Visual Studio 2005 Team System
Work items can be linked to each other or documents at the SharePoint site. For
example, a requirement work item can be linked to a scenario description or a bug work
item to a source code file. Another feature is the possibility to attach files to a work
item, like importing a screenshot of an error into a bug work item.
A tester discovers an error in the system, and therefore adds a bug work item to the team
project, as shown in Figure 6-22, with a description, assigns it to a specific developer,
gives a certain priority and adds a screenshot of the error.
105
Chapter 6 | Microsoft Visual Studio 2005 Team System
As the tester adds the work item, the rest of the team will be informed as well about this
work item. A developer can see this new bug, retrieve its information, possibly fix it,
state the bug as resolved, and give it back to the tester, who ensures that the bug is fixed
and then closes the bug. These state-changes of the bug work item are illustrated in
Figure 6-23.
As a work item alters during the SEP, it is important for the team to be able to track its
properties, like which user changed the work item on what date and time to which state
and for what reason. Visual Studio Team Foundation Server stores all the properties of
all work items in a database to give the team members the ability to track the transition
history of the work item in TFS, as shown in Figure 6-24.
The history of the work items can be viewed in the work item pane in the Visual Studio
IDE or using the web-based report manager, which is described later on this chapter.
106
Chapter 6 | Microsoft Visual Studio 2005 Team System
First feature is the checking in and out of the project files. A project team that consists
of multiple individuals and work together on the same solution needs to know who is
working and changing which classes, documents, or diagrams. The TFS controls who is
doing what to which file by prescribing that all the files that are stored on the TFS need
to be checked out of the TFS and a copy is stored on the individual workspace until the
files are checked in back on the TFS. For example, a developer wants to fix a bug that is
assigned to him and needs the relevant source code files and then check out these files
of the TFS. After he has fixed the bug, he changes the state of the bug work item into
resolved and then checks in the source file back on the TFS. VSTS not only combines
the source changes, the developer has the ability to give comments on his changes,
relates a work item to his changes, and as selected a notification of his check in is send
to the team members. VSTS facilitates the project manager to write so called check-in
policies to control the check in. These policies are rules that prescribe team members
what to do before checking in their changed files. For example, the changed source code
files need to pass test A and test B before the developer is allowed to check them in on
the TFS. If the developer is not able to check in his work, he has to opportunity to
shelve his work on the TFS, meaning that it is not officially checked in, but other team
members are allowed to unshelve it and improve it until it can be checked in. The ability
to set the unsuitable files, called a shelveset, aside on a shelf for later usage is the
second main feature of the source code control.
Other features of the source code control of the TFS are branching and merging.
Branching is to copy and backup a set of projects of the solution on the TFS, including a
version control, history, comments and all other project properties. This capability
allows multiple builds and release to be maintained efficiently and in the same overall
solution. The Visual Source Control Explorer enables team members to easily work
simultaneously on different branches a.k.a. versions of the solution, making different
revisions on different branches as illustrated in Figure 6-25.
Merging is the functionality in TFS that reconciles all changes made in one branch into
another branch. For example, when a bug fixed in branch 2.1.1 of the solution, the team
is able to merge this change into the targeted branch 2.2 automatically, as depicted in
Figure 6-25. Note that, TFS stores the project files, history and other properties to be
able to merge not only by blending code together, but also by merging additions,
deletions, undeletions, and renames from the source branch to the target branch.
107
Chapter 6 | Microsoft Visual Studio 2005 Team System
BUILD AUTOMATION
A build is the compilation of all files, libraries, or components into a new set of
executables, libraries, or components. Development teams create builds to deploy them
into the customer environment, but most likely they create a build to verify that all files,
libraries and components that are check in onto the TFS by different individual team
members are able to work together as one solution. VSTS enables the team to manually
create a build using the Visual Studio IDE or create a full automated build solution with
the Team Build tooling. The project team has the opportunity to verify the check-ins
daily by running the build process, as shown in Figure 6-26, during the night and
checking the results the next day.
The build process on the build server is initialized manually or on a timely schedule.
Once VSTS triggers the team build server to build, generates a build name and retrieves
the right data and files from the team foundation server using the source control system.
The build server then compiles the solution and does a static code analysis to
consistency and quality of the code. Once the solution is compiled and did not fail the
static code analysis, the build server executes the tests that are defined in the build
script. The team is able to select all types of tests, except the manual test type, to be
executed during the build process. Once the solution passes these tests, related work
items are updated on the foundation team server and the code coverage and code churn
are calculated. Code churn is a percentage of how many lines of code are changed
compared to the previous version to shows the project team how healthy the source code
is. For instance, the more code has changed going from build A to build B, the less
stable and mature the overall system is. Finally, the test results, code coverage, code
churn and other build details are produced and represented in the build report, and the
build is published into the project environment. Summarizing, VSTS’s build manager
108
Chapter 6 | Microsoft Visual Studio 2005 Team System
facilitates the project team to produce automatic daily builds of the solution, with
analyzing, testing, and reporting abilities, to reach a higher level of quality.
REPORTING
The views of the information on the TFS are role-driven, meaning that each role gets its
own relevant information and is not disorganised by irrelevant data of the development
process. The information is reported using the Team Explorer, Windows SharePoint
Services11 project portal, Microsoft Excel and Microsoft Project12 to create an insight
into the software development life cycle and to react on changes in the SEP [23]. The
reports are based on data from tool activity that is stored on the Visual Studio 2005
Team Foundation Server, like information of work items, version control, team builds,
and test results.
Team members who are using the one of Visual Studio Edition are able to reach the
reports that are facilitated by the chosen SEP via the Team Explorer, as shown in Figure
6-27. Note that, different SEP means possibly different reports.
11
Windows SharePoint Services allows teams to create Web sites for information sharing and document
collaboration, benefits that help increase individual and team productivity. Windows SharePoint Services
is a component of the Windows Server 2003 information worker infrastructure and provides team
services and sites to Microsoft Office System and other desktop programs. It also serves as a platform for
application development. Including such IT resources as portals, team workspaces, e-mail, presence
awareness, and Web-based conferencing, Windows SharePoint Services enables users to locate
distributed information quickly and efficiently, as well as connect to and work with others more
productively. Source: http://www.microsoft.com/windowsserver2003/techinfo/sharepoint/overview.mspx
12
Microsoft Project (or MSP) is a project management software program developed and sold by
Microsoft which is designed to assist project managers in developing plans, assigning resources to tasks,
tracking progress, managing budgets and analyzing workloads. Source:
http://en.wikipedia.org/wiki/Microsoft_Project
109
Chapter 6 | Microsoft Visual Studio 2005 Team System
Another way to reach the reports to analyze the state and health of the project is through
the report manager. Figure 6-28 shows the report manager’s main page with the
standard reports that are prescribed by the chosen SEP, namely the MSF4ASD process.
The information is presented in the reports textually and graphically as depicted in
Figure 6-29.
As Figure 6-28 also is showing is that VSTS provides the team members with report
builder to create own customable reports and add them to the software engineering
process template. The user walks though a wizard to generate the correct queries for
retrieving the correct information from the TFS databases, and uses a report designing
to custom the standard report design.
110
Chapter 6 | Microsoft Visual Studio 2005 Team System
The most sophisticated way to retrieve information from the TFS is through the
advanced project portal. Note that every project has its own portal. Figure 6-30 gives an
idea about the graphical user interface of the Windows SharePoint Services team portal.
111
Chapter 6 | Microsoft Visual Studio 2005 Team System
The project portal is a browser-based sharing and collaboration tool that enables the
team to store and share files, have discussion forms, post announcements, and is strong
integrated with Microsoft Office 2003. In other words, it is a customizable dynamic
content project portal based on Windows SharePoint Services to enables users to create
and manage their own project sites and document repositories.
The Visual Studio 2005 Team Foundation Server is the glue that sticks all team
members with all their information together. It is the collaboration centre of the Visual
Studio Team System that enables the real benefits of the collective software
development as it is the central repository for all the team assets.
112
Chapter 6 | Microsoft Visual Studio 2005 Team System
VSTS supports iterative software development on various methods. As the project team
initialize the SEP in VSTS, it has the ability to divide the SDLC in various iterations,
and assign work items to certain iterations and or areas using VSTS or MS Project, as
captured in Figure 6-31. The iterations represent the lifecycle stages into which a project
is divided such as planning, envisioning, development, etc. The areas represent a logical
division of project into feature areas and components. For example, the team divides the
project tasks as per logical architecture, like user interface layer, business layer and data
access layer.
113
Chapter 6 | Microsoft Visual Studio 2005 Team System
The software developers are enabled with the ability to test early and frequent via unit
testing, while checking in and out the source code files onto the TFS. VSTS makes it
possible for the project team to create an automatically build process, that can be
executed on a timely schedule, for instance during the night. This ensures a stepwise
creating and validating software engineering process.
REQUIREMENTS MANAGEMENT
As a new project is setup in the VSTS, the project team has to choose which SEP is
used during the software development life cycle. After this initialization, VSTS creates
default work item as they are prescribes in the process template. Team members have
the ability to manage the requirements by adding new work items into the project and
changing the properties of work items using the Team Explorer, MS Excel, or MS
Project. These work items are centrally stored on the TFS to be distributed to all the
team members. Another requirements management feature is for the project manager to
set a check-in policy that forces team members link a work item to the files when
checking them in on the TFS.
COMPONENT-BASED ARCHITECTURE
VSTS provides the project team in the Visual Studio edition for Software Architects
with four architectural designers, namely the logical datacenter designer, application
designer, system designer, and deployment designer. The architect uses these distributed
system designers to create component-based architectural diagrams, which helps the
team to develop a blueprint of the solution before it is implemented in source code files.
The designers have the ability to generate source code files out of the diagrams and
interconnected the component-based diagrams and models to each other and to the
source code files that they represent. These connections control and check the developer
to write source code that is consistent with the component-based architecture of the
solution.
VISUAL MODELING
The Microsoft software development platform embraces the domain specific language
to design and model the solution using the distributed system designers. Other visual
modeling feature of VSTS is the class designer that makes possible to visually create the
source code of class files. The result is a class diagram that is a graphical representation
of the code structure in the class file. The graphical outputs of the designers are
distributed via the TFS to all stakeholders to work as a communication instrument to
explain the answer to the customer’s problem.
114
Chapter 6 | Microsoft Visual Studio 2005 Team System
The functionalities as static code analysis, unit testing, and code profiles give the
developer more surety that his implemented source code is correct, clean and performs
inline with the quality of service requirements. The tester uses the test manager to
create, organize and execute all tests types, like unit tests, load test, manual tests, web
tests, to identify bugs and other performance issues. The team even can test the tests by
using the code coverage tool to ensure that an acceptable percentage of the source code
is tested. Note that, VSTS not only allows the tester to validate the quality, also the
developer is facilitated with testing tools to assure the quality of the solution. The ability
to create check in policies gives the team an extra assurance that the items on the TFS
have the right level of quality.
CHANGE MANAGEMENT
As changes occur during the software engineering process, two key elements of the SEP
changes along, namely the activities and task of the project team changes, and as the
work changes the files of the solution changes.
The team effort is represented in VSTS as work items which are centrally stored on the
Team Foundation Server and team members use the team explorer to look inside this
repository to see what work should be done. When a team member adds or edits a work
item, others will be informed as everybody uses the same information source. TFS also
records all changes that are made on the work item repository, to facilitate the team with
the history of the work items.
The Visual Studio 2005 Team Foundation Server has the capability to manage changes
to the solution itself using the source control system. This source control manages the
different versions of the source code, diagrams, and other files as changes are made to
the solution by the usage of the checking, branching, merging, and shelving
functionalities, as explained in the previous section of this chapter. Just like the work
items, the history of the changes on the different versions of solution is recorded to
enable the team to look back at the past.
CUSTOMER INVOLVEMENT
The software development team must have close interaction on a regularly basis with
the customer, just like Rational Unified Process and Microsoft Solution Framework
prescribes. The VSTS itself is a software development platform, which itself is not
appropriate to install at the customer sites. The customer just wants to know the status
of the project, like are there many bugs to fix or in which iteration is the project, and do
not want to set up a large SDP. VSTS only enables casual stakeholders to download the
team explorer as a lightweight standalone interface to the VS Team Foundation Server
to check in documentation, and read the project reports.
OPEN COMMUNICATION
Microsoft has build VSTS with a couple of mindsets. One is to improve the
communication within the software development team using one primary Visual Studio
environment. VSTS integrates the all kinds of messaging types, like requirements, tasks,
115
Chapter 6 | Microsoft Visual Studio 2005 Team System
changes, accomplished work, announcements and bugs, into the team’s IDE. As all
files, diagrams, documentation and reports are stored centrally on the Visual Studio
2005 Team Foundation Server, all team members has the same sources and views and
use the identical open reporting tools, like team explorer, project portal.
Summarizing, as all team members are able to use the same repository, all information
is consist. As all team members are able to use the same reporting tools to view the
information, VSTS enables open communication.
SHARED VISION
All stakeholders need a shared vision to be able to work together as a team towards the
same goal. Therefore, everyone has to participate in the creation of that shared vision to
ensure that everyone understand and emphasize the same goals and ideas of the end-
solution. VSTS does not directly support the participation of all stakeholders to create
the vision documentation. VSTS does support open communication to inform and share
the targets of the solution to every stakeholder. The MSF processes, agile and CMMI,
that are available provides the team with template vision documentation, which can be
distributed to all team members, customers and other stakeholders.
Another way, VSTS addresses activities that add value to the project is the code profiler
feature. This performance testing tool identifies the bottlenecks and roadblocks of the
compiled executable application. As the problems are presented, the developer is able to
prioritize which parts of the source code needs to be optimized first, and which parts he
does not need to spend his time on. For example, a class file has two method one small
and one big method. Normally, one may think to optimize the large method, but if the
116
Chapter 6 | Microsoft Visual Studio 2005 Team System
code profiler reports that the small method is executed a lot and the other method just
one time, it is more interesting to optimize the small method.
6.4 CONCLUSION
The Microsoft Visual Studio 2005 Team Foundation Server is the heart of the software
development platform that provide the Team System editions with the correct
documents, libraries, source code files and other information. It enables the project team
to build and manage multiple version of the solution at the same time and enables
developers to work on the same file simultaneously by facilitating the team with a
source code control functionality. It provides the team with a central repository to
provide shared information and univocal communication to enable requirements and
change management. Visual Studio 2005 Team Edition for Software Architects
provides the team with features to visually model a component-based architecture. The
architect is able to design a blue print using diagrams to reduce the complexity of the
system, and to direct the project team while developing the solution. Visual Studio 2005
Team Edition for Software Developers facilitates the team besides the Visual Studio
2005 Professional IDE, with quality assurance functionalities. The developer is able to
run unit tests, and use the static code analyzer and code profiler to write orderly and
correct source code. Visual Studio 2005 Team Edition for Software Testers offers the
team with test tooling to verify the correctness and performance of the implemented
scenarios and quality of service requirements. The code coverage controls the quality of
the tests, like unit tests, web tests, and load test, and the test manager organizes them
into lists to execute them orderly.
Table 6-2 reflects the answer of research Question 4 : How are these common grounds
and differences supported by Microsoft Visual Studio 2005 Team System? The rating is
carried out by giving points to each of the ten best principles, where 1 represents a
weak, 2 a moderate, and 3 a strong level of the support in VSTS.
117
Chapter 6 | Microsoft Visual Studio 2005 Team System
be fully automated. Customer involvement implies the relationship between the project
team and customer. The shared vision implies one overall idea of the future system that
is accepted by all stakeholders.
Microsoft Visual Studio 2005 Team System is a software development platform that
supports most of the software development life cycle. It supports collaboration across
team members and software engineering process, and facilitates the ability to measure
and manage projects, boosting overall productivity and customer satisfaction.
118
Chapter 7
CONCLUDING REMARKS
A software engineering process is a process that describes who is doing what, how and
when in a project aiming at developing software. A process that provides guidance to
order the team's activities, to specify which artifacts should be developed and when they
should be developed, directs the tasks of individual developers and the team as a whole,
and offers criteria for monitoring and measuring the project's products and activities.
This thesis explains in great detail the IBM Rational Unified Process and the Microsoft
Solution Framework for Agile Software Development and identifies the common
grounds and differences between the two software engineering processes. These results
show when one is more appropriate to use than the other and how they are supported in
Microsoft Visual Studio 2005 Team System.
7.1 CONCLUSIONS
At the beginning of the thesis, in Chapter 1, we did ask four research questions. This
section summarizes the findings and gives the answers to the four research questions
that this research came up with in the different chapters of this dissertation.
Question 1: What are the IBM Rational Unified Process and the Microsoft
Solutions Framework for Agile Software Development?
In Chapter 2 this thesis described three procedures for developing a system, namely the
sequential, iterative and agile process, as an introduction to the two software
engineering processes.
The IBM Rational Unified Process description in Chapter 3 answers the first part of
research Question 1. RUP is an iterative software engineering process, which guides a
project team to produce a high quality solution that meets the needs and expectations of
the stakeholders within predictable time and budget plans. The guidance consists of ten
essentials, six best practices and a knowledge base website to articulate the thoughts and
beliefs of iterative software development.
RUP is a strict and formal process that arranges the project time in phases and iterations,
and the project labour in disciplines, workflows, activities, artifacts and roles to divide
the lifecycle into segments in order to create an iterative software development
environment. RUP focuses on time and budget planning to have a predictive process,
and uses iterations to cope with changes that are inline with the scope of the project
throughout the software development life cycle. The team develops the system on the
119
Chapter 7 | Concluding Remarks
Chapter 4 studied the Microsoft Solution Framework for Agile Software Development
to answer the second part of research Question 1. The MSF4ASD is a flexible and
informal software engineering process to maximally support the will of the customer to
create a business value adding solution. This agile flavour of the MSF believes that
system development is a creative process with uncertainties, which causes stakeholders
to understand their solution progressively in time. One of the interviewees expressed
this as followed, “Two weeks after the system deployment, the customer knows what he
really wants.”. MSF4ASD consists of foundation principles, team model and process
template to grow an agile mindset within the project development team.
The MSF4ASD is an informal and responsive software engineering process that
arranges the project time in tracks and cycles, and the project labour in advocacy
groups, work streams, work items and roles to divide the project in small work tasks to
create a flexible environment that focuses on ad hoc planning and requirements
management to cope with changes. This SEP considers change requests as a fact and
therefore minimizes the need to identify requirements and fully design the architecture
in advanced, as the project team builds the product incrementally and ad hoc.
MSF4ASD defines customer involvement using face-to-face communication with a
continuously flow of feedback to create a situation, where changes can be made all the
time. The iterative software development, continuous customer involvement, the equal
status of team members and open face-to-face communication allows the environment
to be agile.
Question 2: What are the common grounds and differences regarding the IBM
Rational Unified Process and the Microsoft Solutions Framework for Agile
Software Development?
RUP and MSF4ASD both guide the project team in creating a solution that meets the
needs of the customer to satisfy the stakeholders, but they differ in beliefs and process.
Chapter 5 compares the two software engineering processes in three ways, namely the
philosophy, the focus in time and work division of the SEPs.
120
Chapter 7 | Concluding Remarks
The results of the comparative study show that RUP and MSF4ASD have overall
common grounds, this because they both are software engineering processes which
covers the same pathway using iterative software development to aim for the same goal,
namely to satisfy the need of the customer.
RUP is (1) a formal, strict and heavy software engineering process that wants to (2)
identify the requirements and architecture early in the process to be able to (3) focus on
planning the time schedules and budget to create (4) a predictive and ordered software
development environment.
MSF4ASD is (1) an informal, loosely, and light software engineering process that (2)
embraces ad hoc requirements management and architecture design to (3) facilitate the
ability to cope with changes to create (4) an adaptive and responsive environment.
Question 3: When is the IBM Rational Unified Process or the Microsoft Solutions
Framework for Agile Software Development more appropriate to use?
This thesis uses the results of research Question 2 to study which of the two software
engineering processes tends to be more appropriate for what kind of project. In Chapter
5 this thesis portrays two project descriptions, each with their own characterizations, to
explain when RUP and when MSF4ASD is more appropriate to be used as a software
engineering process.
The IBM Rational Unified Process is suitable for software development projects with
the following characterizations:
A project with a normal to large scope that needs a strict, formal and predictable
process which focuses on planning, fixed deadlines and budgets.
The team model has a hierarchic structure to control the average to large number of
persons in the project team.
The customer knows his demands, needs and expectations to create a business value
adding system. He is acquainted with the technological possibilities and boundaries.
The stakeholders are able to create a clear vision, identify stable requirements and
design a firm architecture in the early phases of the SEP.
RUP prescribes a strict change management to control the alterations and keep them
within the agreed project boundaries. The stakeholders are sure that the fixed
agreements will not change dramatically.
The customer and project team have a formal business relationship with a need for
lots of documentations. They do not have the time or capacity to interact closely and
therefore plan periodic meetings to exchange information and feedback.
121
Chapter 7 | Concluding Remarks
The Microsoft Solutions Framework for Agile Software Development is suitable for
software development projects with the following characterizations:
A project with small to normal scope that needs a flexible, informal and adaptive
process which focuses on the needs and expectations of all stakeholders.
The project team has no clear hierarchic structure because the team is relative small
and the team members are skilled, have a great sense of responsibility and are able to
work autonomous.
The customer does not exactly know what he wants. His needs and expectations of
the solution are bound to change, as he is unfamiliar with the possibilities of the
technology, or how the system will support his business processes.
The requirements and architecture are uncertain and identified progressively during
the software development life cycle due to progressive understanding.
Customer and project team are closely connected and have a tight and truthful
relationship. They collaborate and use face-to-face communication to create the
mutual end result without the need for strict agreements and documentations.
The best principles that embrace the adaptive mindset are well supported in VSTS. The
Microsoft Visual Studio 2005 Team Foundation Server has well defined requirements
management and change management functionalities, like source code control and work
item tracking. The Microsoft Visual Studio 2005 Edition for Software Architects gives
the architect the opportunity to design and continuous update the component-based
architecture of the system. This blue print is reusable and gives the developers a
window of capabilities to implement the needs of the customers. Another strong point is
the continuous management of quality assurance, for example the check in policies, the
support of different types of tests and the automation of the build process. The weak
point is the minimum support of the customer involvement and shared vision best
principles. VSTS has the ability to share project documents, reports and other
information, but has no direct functionality that stimulates customer involvement or
shared vision.
The VSTS strongest quality is the integration of all these features in one software
development platform, which improves the communication between all members of the
team. Adding the requirements management and change management support, makes
the Microsoft Visual Studio 2005 Team System a notorious competitive software
development platform.
122
Chapter 7 | Concluding Remarks
7.2 RECOMMENDATIONS
This thesis compares the two software engineering processes on three different views,
the philosophy, focus in time and work division. This section describes several aspects
in which this work can be extended.
Beyond the SEP characteristics mentioned in the previous chapters, there are other
factors that play a roll while selecting the most suitable SEP for a certain company. This
thesis recommends future research on the following topics to recognize to the overall
most suitable software engineering process.
One research direction is to study the financial aspects for an organisation to use a
certain SEP. The following research activities are possible:
To explore the savings one SEP will make for an organization. Research the return
on investment for an organisation for each individual SEP.
To research the internal processes that relates to the software engineering process
and the impact on them. Different SEP means different internal organisational
procedures to support the project teams.
To explore the effects on the organizational businesses process for a company to use
one organization wide standard SEP for every project instead of a different SEP for a
different project.
To study effects of transformation of the project teams. The team of people and how
they work together is a big factor in the project’s success. Using different SEPs
means using different team models.
123
REFERENCE
[1] AGILEALLIANCE (2001) Manifesto for Agile Software Development.
[3] AMBLER, S. W. (2006) Choose the Right Software Method for the Job.
Ambysoft Inc.
[8] BRUYCKERS, G. D. (2004) Visual Studio 2005 Team System. dotNet magazine
for developers, 6, 4 - 6.
[9] FOWLER, M. (2002) Agile Development: What, Who, How, and Whether.
[11] FOWLER, M. (2003) UML Distilled: A Brief Guide to the Standard Object
Modeling Language, Third Edition, Addison Wesley.
[12] IBM (2003) The Rational Unified Process®, Version 2003.06.12.01, Rational
Software Corporation.
[13] IBM (2005) Rational Unified Process – Best Practices for Software Development
Teams. Rational Software White paper. Rational.
[14] IVAR, J., GRADY, B. & JAMES, R. (1999) The unified software development
process, Addison-Wesley Longman Publishing Co., Inc.
124
Reference
[18] LUKAWIECKI, R. (2005) MSF v4: What's New and Old in Microsoft Solutions
Framework v4. Microsoft Tech-Ed.
[20] MICROSOFT (2002) MSF Process Model v. 3.1. Microsoft Solutions Framework
White paper. Microsoft.
[21] MICROSOFT (2002) MSF Team Model v. 3.1. Microsoft Solutions Framework
White paper. Microsoft.
[24] MICROSOFT (2005) MSF for Agile Software Development, Beta, Build 100.
Microsoft Solutions Framework. Microsoft.
[25] MICROSOFT (2005), Visual Studio 2005 Team System – Reviewers Guide Beta
2. Microsoft.
[28] PROBASCO, L. (2000) The Ten Essentials of RUP - The Essence of an Effective
Development Process. Rational Software White paper. Rational.
125
Reference
[32] THE STANDISH GROUP (2001) The Chaos Report. The Standish Group
International, Inc.
[33] VALK VAN DER, E. (2005) Code analysis in Visual Studio 2005. dotNet
magazine for developers, 9, 39 - 43.
[35] WESSBERG, M. (2005) Introducing the IBM Rational Unified Process essentials
by analogy. developerWorks.
[36] ZUSER, W., HEIL, S. & GRECHENIG, T. (2005) Software quality development
and assurance in RUP, MSF and XP: a comparative study. Proceedings of the
third workshop on Software quality. St. Louis, Missouri, ACM Press.
126
APPENDIX
A THE GRAPHICAL REPRESENTATION OF MSF4ASD
During this research, we conducted a graphical representation of the Microsoft
Solutions Framework for Agile Software Engineering with the help of the architect of
the Microsoft Solutions Framework, Granville G. Miller13. In this appendix the
procedure is explained how I accomplished this illustration.
First we created a Microsoft Access database with all the elements of the Microsoft’s
agile software engineering process to get a solid base and overview for further
development of the graphical model. The elements, the advocacy groups, roles, work
streams, activities, work items, tracks and cycles, are placed in the database tables and
related to each other as illustrated in Figure 0-1.
These tables are used to produce two queries. The first query, named
qrAdvocacy_Role_Workstream_Activity_Track, connects all advocacy groups with the
right roles, work streams, activities, and tracks. The SQL-code of the
qrAdvocacy_Role_Workstream_Activity_Track query is as followed:
13 Granville “Randy” Miller is the architect of Microsoft’s agile software development process, Microsoft Solutions Framework for
Agile Software Development. He has two decades of experience in the commercial software industry and has spoken at many
international events, including XP200x, Conference On Object Oriented Programming Systems, Languages and Applications, Web
Services Edge, Software Development West, Microsoft TechEd, and others. His interests include software development technology
and agile software development. Miller is author of “Advanced Use Case Modeling” and “A Practical Guide to Extreme
Programming.”
127
Appendix
The second query we created is a pivot query of the previous query, named
qrMSF4ASD. It contains the advocacy groups, roles, work streams and activities in the
rows and the activities sorted by track as column headers. The query puts the name of
the track in the cells where the row activities and the track activities in the column
headers are the same. As a result, the query shows when an activity in which track
occurs. The SQL-code of the qrMSF4ASD query is as followed:
We exported the results of the last query to a Microsoft Office Excel sheet to get more
creative freedom. Now we have a spreadsheet with a vertical axis with all activities
ordered by the work streams of each advocacy group and a horizontal axis with all
activities ordered by tracks. We coloured the cells of the corresponding activities with a
different colour for each cycle an activity occurs, as the legend shows in Figure 0-2.
In the next step we added the roles of MSF4ASD at the end of the track columns and
coloured per activity which role is responsible (red) or is consulted (green) for the
concerned activity. These actions result in an excel sheet as shown in Figure 0-3.
128
Appendix
Figure 0-3 Advocacies, roles, activities, tracks, cycles, responsibilities and consultations
After this we put all the coloured cells in a work stream beneath each other to create a
column with a height coupled with the amount of activities that take place in the work
stream or cycle as reflected in Figure 0-4.
129
Appendix
As already mentioned, the heights of the bars are linked to the amount of activities in
the concerned work stream or cycle. Up to now, the graphical model of MSF4ASD
contains only one of each cycle. The next step, we repeat some activities, reckon with
the frequency that the cycles occur, to generate an iterative software development
model. We heightened the workload-columns with one cell when a role is consulted for
an activity in a work stream. For example the activity ‘conduct retrospective’ in the
‘guide iteration’ work stream is the responsible of the project manager, but he consults
the developer, tester and business analyst and therefore we coloured an extra cell in the
rows of the concerned roles.
130
Appendix
After this, we draw undulate lines that connect the bars and improve the picture in
Adobe Photoshop to produce the final graphical representation of the Microsoft
Solutions Framework for Agile Software Development as shown in Figure 0-6 on the
next page.
The horizontal axis represents time and shows the dynamic aspect of the process as it is
enacted, and it is expressed in terms of cycles, tracks, and governance milestones. The
vertical axis represents the static aspect of the process: how it is described in terms of
advocacy groups, roles, Work streams and activities. The undulated lines represent the
workload and amount of activities of a particular advocacy group in time during the
software development life cycle.
131
Figure 0-6 The graphical representation of MSF4ASD
B THE PROCESS ELEMENT OF RUP
Phases
Inception
Elaboration
Construction
Transition
Disciplines
Business modeling Test Project Management
Requirement Deployment Environment
Analysis & Design Configuration &
Implementation Change Management
Roles
Business-Process Integrator System
Analyst Project Manager Administrator
Business Designer Change Control Tool Specialist
System Analyst Manager Course Developer
Requirements Configuration Graphic Artist
Specifier Manager Tester
Software Architect Test Manager Test Analyst
Designer Deployment Test Designer
User-Interface Manager Reviewer
Designer Process Engineer Review Coordinator
Capsule Designer Management Technical Reviewer
Database Designer Reviewer Any Role
Implementer Technical Writer Stakeholder
Workflows
Assess Business Define the System Structure the
Status Manage the Scope of Implementation
Describe Current the System Model
Business Refine the System Plan the Integration
Identify Business Definition Implement
Processes Manage Changing Components
Refine Business Requirements Integrate Each
Process Definitions Perform Subsystem
Design Business Architectural Integrate the System
Process Realizations Synthesis Define Evaluation
Refine Roles and Define a Candidate Mission
Responsibilities Architecture Verify Test
Explore Process Refine the Approach
Automation Architecture Validate Build
Develop a Domain Analyze Behaviour Stability
Model Design Components Test and Evaluate
Analyze the Problem Design the Database Achieve Acceptable
Understand Mission
Stakeholder Needs Improve Test Assets
133
Appendix
Activities
Capture a Common Capture a Common Incorporate Existing
Business Vocabulary Vocabulary Design Elements
Assess Target Structure the Use- Structure the
Organization Case Model Implementation
Set and Adjust Find Actors and Use Model
Objectives Cases Class Design
Maintain Business Manage Subsystem Design
Rules Dependencies Use-Case Design
Identify Business Develop Use-Case Analysis
Goals Requirements Design Testability
Structure the Management Plan Elements
Business Use-Case Detail the Software Design the User
Model Requirements Interface
Find Business Actors Detail a Use Case Prototype the User-
and Use Cases Construct Interface
Define the Business Architectural Proof- Capsule Design
Architecture of-Concept Database Design
Define Automation Assess Viability of Implement Design
Requirements Architectural Proof- Elements
Detail a Business of-Concept Execute Developer
Use Case Prioritize Use Cases Tests
Detail a Business Architectural Analyze Runtime
Entity Analysis Behaviour
Detail a Business Describe Implement
Worker Distribution Developer Test
Find Business Describe the Run- Implement
Workers and time Architecture Testability Elements
Enitities Identify Design Develop Installation
Develop Vision Mechanisms Artifacts
Elicit Stakeholder Identify Design Plan Subsystem
Requests Elements Integration
134
Appendix
Artifacts
Software Implementation Configuration
Requirement Model Management Plan
Vision Integration Build Configuration Audit
Glossary Plan Findings
Stakeholder Develop Test Business Case
Requests Test Strategy Software
Storyboard Test Results Development Plan
Software Test-Ideas List Iteration Plan
Requirements Test Suite Deployment Plan
Specification Test Log Risk List
Supplementary Test Plan Issues List
Specifications Test Data Work Order
Use-Case Model Test Script Project
Requirements Test Case Measurements
Management Plan Test Environment Iteration Assessment
Requirements Configuration Status Assessment
Attributes Workload Analysis Review Record
Software Model Development
Architecture Test Evaluation Process
Document Summary Development
Architectural Proof- Test Interface Infrastructure
of-Concept Specification Tools
Deployment Model Test Automation Development-
Reference Architecture Organization
Architecture Product Assessment
Design Model End-user Support Business Vision
Analysis Model Material Business Glossary
User-Interface Manual Styleguide Target-Organization
Prototype Change Request Assessment
Navigation Map Project Repository Business Goal
Data Model Workspace Business Rule
Build
136
Appendix
137
C THE PROCESS ELEMENTS OF MSF4ASD
Tracks
Envision
Plan
Build
Stabilize
Deploy
Continuous
Cycles
Check In
Daily Build
Accepted Build
Iteration
Project
Advocacy Groups
Product Management
User Experience
Architecture
Development
Test
Release Operations
Program Management
Roles
Business Analyst
Project Manager
Architect
Developer
Tester
Release Manager
Work Streams
Create Solution Build a Product Release a Product
Architecture Fix a Bug Close a Bug
Capture Project Implement a Test a Quality of
Vision Development Task Service Requirement
Create a Quality of Guide Iteration Test a Scenario
Service Requirement Guide Project
Create a Scenario Plan an Iteration
Activities
Partition the System Develop Create Infrastructure
Determine Interfaces Performance Model Architecture
Develop Threat Create Architectural Write Vision
Model Prototype Statement
Define Personas
138
Appendix
Work Products
Application Diagram
Changeset
Class Diagram
Code
Iteration Plan
Load Test
Logical Datacenter Diagram
Manual Test
Persona
139
Appendix
Project Checklist
Prototype
Quality of Service Requirement List
Release Plan
Scenario Description
Scenario List
Storyboard
System Diagram
Team Build
Test Approach
Test Result
Threat Model
Unit Test
Vision Statement
Web Test
140