Software Development
Software Development
List of Tables v
Acronyms viii
1 Introduction 1
1.1 Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Goals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Structure of the Document . . . . . . . . . . . . . . . . . . . . . 2
1.4 Terms Elucidation . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 State of Art 5
2.1 Software Engineering . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Brief History of SDM . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 Software Qualities . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3.1 Correctness . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3.2 Reliability . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3.3 Robustness . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3.4 Performance . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3.5 User Friendliness/Usability . . . . . . . . . . . . . . . . . 11
2.3.6 Verifiability . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.7 Maintainability . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.8 Re-usability . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3.9 Interoperability . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3.10 Productivity . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.4 Knowledge Areas in Software Engineering . . . . . . . . . . . . . 14
2.4.1 Software Requirements . . . . . . . . . . . . . . . . . . . . 15
2.4.2 Software Design . . . . . . . . . . . . . . . . . . . . . . . 18
2.4.3 Software Construction . . . . . . . . . . . . . . . . . . . . 22
2.4.4 Software Testing . . . . . . . . . . . . . . . . . . . . . . . 23
i
2.4.5 Software Maintenance . . . . . . . . . . . . . . . . . . . . 27
2.4.6 Software Configuration Management (SCM) . . . . . . . . 30
2.4.7 Software Engineering Management . . . . . . . . . . . . . 32
2.4.8 Software Engineering Process . . . . . . . . . . . . . . . . 34
2.4.9 Software Engineering Tools and Methods . . . . . . . . . 35
2.4.10 Software Quality . . . . . . . . . . . . . . . . . . . . . . . 36
3 SDM Descriptions 38
3.1 Software Development Methodologies . . . . . . . . . . . . . . . . 38
3.2 Traditional Development Methodologies . . . . . . . . . . . . . . 39
3.2.1 Waterfall Methodologies . . . . . . . . . . . . . . . . . . . 39
3.2.2 Transformation Methodologies . . . . . . . . . . . . . . . 44
3.3 Evolutionary Methodologies . . . . . . . . . . . . . . . . . . . . . 45
3.3.1 The Win-Win Approach . . . . . . . . . . . . . . . . . . . 45
3.3.2 Spiral Methodologies . . . . . . . . . . . . . . . . . . . . . 48
3.4 Rapid Application Development . . . . . . . . . . . . . . . . . . . 51
3.4.1 Changing Plans . . . . . . . . . . . . . . . . . . . . . . . . 51
3.4.2 RAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.5 Agile Development Methodologies . . . . . . . . . . . . . . . . . 56
3.5.1 Agile Manifesto . . . . . . . . . . . . . . . . . . . . . . . . 56
3.5.2 Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.5.3 eXtreme Programming . . . . . . . . . . . . . . . . . . . . 64
4 Results 70
4.1 Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.2 Waterfall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.3 Spiral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.4 Rapid Application Development . . . . . . . . . . . . . . . . . . . 79
4.5 Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4.6 eXtreme Programming . . . . . . . . . . . . . . . . . . . . . . . . 87
Bibliography 99
ii
List of Figures
iii
List of Tables
iv
4.13 XP: Software Requirements, Software Design and Software Con-
struction KA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
4.14 XP: Software Testing, Software Maintenance and Software Con-
figuration Management KA . . . . . . . . . . . . . . . . . . . . . 89
4.15 XP: Software Engineering Management, Software Engineering
Process and Software Quality KA . . . . . . . . . . . . . . . . . . 90
v
Agradecimentos
vi
Abstract
We are facing a period where software projects have a huge dimension involving
small resources, high risk and a wide range of available approaches. In this
scenario the Software Development Methodologies (SDMs) can prove to be a
useful ally, but very dangerous and even fatal if misused. The big issue around
this matter is how to choose the appropriated SDM that fits a specific project.
In the given scope, this dissertation describes a framework for comparing SDMs
delivering a set of procedures that should be followed when the choice of an
SDM is made. The dissertation approaches the framework by applying it to a
group of SDMs that were selected by their popularity and significance. This
exercise is done to prove the concept of the framework and to provide a base
comparison, with each chosen SDM, that can, and should, be extended by those
who choose to use the framework.
The classification is achieved by defining a scale that goes from total satisfaction
to no satisfaction, with an intermediate level of partial satisfaction, that is ap-
plied to a set of keys. These keys are based in SWEBOK (Software Engineering
Body Of Knowledge) that describes and explains the different Knowledge Areas
(KA) stating their common issues and best practices. To explain the frame-
work, the dissertation analyzes each KA and evaluates the selected SDMs by
assessing how their approach complies with SWEBOKs knowledge areas, using
the previous stated scale.
The framework delivered can be enriched by its user who should provide weights
to each KA regarding the project in which the SDM will be used and previous
experiences.
vii
Resumo
viii
Acronyms
KA Knowledge Area
ix
SWAT Skilled Workers With Advanced Tools
XP eXtreme Programming
x
Chapter 1
Introduction
1.1 Context
The importance of software in the world is constantly increasing, and with the
increase of its importance also the size of the software systems is increasing
as well as the effects of its development. These effects have consequences on
the way software is developed. Software development of huge projects involves
huge amounts of money and time, which have to be used in the correct way for
delivering the final product with the minimal cost.
With the evolution of software development, different approaches have been pre-
sented and used to deliver a software product with aim of reducing time and cost
of its development, without impairing the quality of the product. Each approach
has its benefits and criticism but they all have similar goals, delivering a quality
product in the fastest and cheapest way possible. When we look for a Software
Development Methodologies (SDM) we have a set of very different perspectives,
and even different approaches for the same perspectives, to choose from. These
SDMs define the way we should organize our teams, and the way we should
organize our activities, so they provide a good guideline for achieving our goals.
So one big question that arises when starting a project is which methodology to
choose. Perhaps an even bigger question is how can one answer that question,
giving that, each project has its own specific characteristics to take in account.
Most companies simplify this issue by adopting one or more methodologies and
then all their projects are done using a specific methodology. But, given the
quantity of different kind of projects a software company is nowadays involved
in, is this the right answer?
In times of economical crisis, where budget and resources are more limited than
ever, a bad choice or a misuse of a methodology can lead to its death or to
spending more money and resources than expected.
1
Introduction Introduction
1.2 Goals
This dissertation provides a set of tools that one can rely upon when choosing
an SDM. In this document you will find an explanation of the framework used,
and the comparison of some of the most well-known SDMs.
To provide a comparison of SDMs and not to be biased by the project involved,
empirical testing and evaluation of the projects was not a desirable solution,
so a comparison method should be used without regarding the project it self
but a established set of facts and activities involved in the development of a
software project. The goal is to provide a framework for evaluating SDMs and
output a mean of comparison between them, that can be adapted according to
the project and context of the software system to develop.
The principle of comparing SDMs is the main goal of this dissertation, and it
must be clear that the intention is not to provide the best SDM. So, if the goal is
achieved, the framework output in this dissertation, together with someone who
is able to identify which characteristics are most important to a given project,
should be able to aid the election of an SDM, that fits the best to the project.
That process can be done by, after measuring the approach of the methodologies
according to key factors, and giving weights according to needs of the project
and its characteristics. Then we can get a comparison of the SDM with an
output of accountable metrics according to the characteristics of the project.
Thus, the subjectivity is in the side of the one that chooses, by determining the
weights, and not by the classification of each SDM. The choice of weights can
also be the flaw of the framework, but it helps to serve the one who chooses the
weight. The problem of correctly choosing the weights is a problem that wont
be addressed during this dissertation, but it is a problem to take in account
when making this choice.
The framework delivered here is provided together with the explanation of each
key factor for the comparison of SDMs.
2
Introduction Introduction
Results: in the results, the analysis done previously for each of the SDM,
will be used with the framework proposed in this dissertation and the
data produced is delivered providing the conclusions and satisfaction data
according of the framework. This data consist on the satisfaction classifi-
cation and an explanation for this classification.
Conclusion: the final chapter is a wrap up of the work done, stating pros
and cons of the approach taken in this dissertation and referring to further
work that can be added to this dissertation.
3
Introduction Introduction
Software Life Cycle: is the backbone of the SDM. It defines the se-
quence of activities that the software development should follow. It is also
responsible for defining its precedences and outputs, according to the cycle
of development. The software life cycles can be categorized by the way the
activities can be arranged, most of the times associated with the software
development philosophy. These categories can be related to the nature of
the development cycle, for example being linear or incremental/iterative,
or the way they address the sequence of activities, for example, big design
up front (BDUF).
Practices: define the activities the SDM should follow, considering its
life cycle. These practices come obviously associated with the software
life cycle, and with the definition of roles. The practices define the need of
performing certain activities to support the philosophy the methodology
is build on. Some SDM practices become popular and notable and are
sometimes adopted by other methodologies or ad-Hoc development (one
of the most notable examples would be the practice of pair-programming
and eXtreme programming).
Roles: defining the scope of action and profile of the projects team mem-
bers. This involves splitting up the activities for each members, but also
defining the main focus of each team member by addressing them a role.
The roles may also involve responsibility of outputs and procedures.
4
Chapter 2
State of Art
5
State of Art State of Art
the difference between programming and software engineering, while the first
is used to write programs the second is concerned with the process to deliver
a program developed by numerous people and with different areas of action.
Therefore a software engineer has to be able to translate what is intended for
the software to perform and also concern all the different levels of abstraction,
from the user point of view to the specific aspects of the programming language,
and in different stages of the development process. Software engineering as an
obvious relationship with computer science but also with other areas of knowl-
edge, or disciplines, such as management and system engineering, from which
much information as been used and adapted to software engineering. Therefore
the way the team interacts, and the definition of stages of a project, became an
essential part of software projects and different definitions of how to structure,
plan and control the software development, became a major study in software
engineering. The arising of software engineering also brought up the terms of
Software Life Cycle and SDM.
6
State of Art State of Art
ticle about how in that decade none of the software techniques would bring an
improvement to software production by it self [8], [19], representing the scep-
ticism that was also associated with which those developments represented by
them selves.
Parallel to these developments the concept of the software process, and its rep-
resentation, emerged and sooner the definition of the, now called, traditional
development methodologies also appeared. These methodologies were charac-
terized by the use of linear and step-forward software development, and based
in models (or software life cycles) that defined the steps that a software project
should follow.
Another milestone on the history of SDM was created by the combination of
ideas from several scientists, later formalized by James Martin in a book in 1991,
which had the same name as the SDM developed in the 80s, RAD (Rapid Appli-
cation Development). RAD intended to be a response to the called TDM (Tra-
ditional Development Methodologies) that allegedly its use implied the projects
to be so long that the prerequisites defined in the beginning of the project, by
its end were already obsolete, causing the solution to be useless and therefore
to be a waste of money and resources.
These critics originated the rising of the called ADM (Agile Development Method-
ologies) with Jeff Sutherland, John Scumniotales, Jeff McKenna and Ken Schwaber
[36] adapting the method based in the work of Takeuchi e Nonaka [43] applied
to the Software Development. The work of Takeuchi e Nonaka was based in a
rugby technique called Scrum, name which the SDM inherit.
Around 1996 Kent Beck formalized the concept of eXtreme Programming (XP)
in his book Extreme Programming Explained: Embrace Change [5]. This ap-
proach was used previously by Kent Beck and other authors, but without the
proper notability and only in industrial projects without any formal definition
of the SDM, at least externally to the companies in which it was being used.
In 2001 some of the authors responsible for this SDM gather and came up with
the agile manifesto, a sequence of principle that they all subscribe and that is
available to new subscribers, this subject has a further explanation in 3.5.1 and
more on this subject can also be found in the bibliography [42].
7
State of Art State of Art
2.3.1 Correctness
The term correctness is intrinsically connected to software specification. A
software specification is where it is stated what a software system is intended
to do. The formalism of this specification can vary, the field of formal methods
in computer science take the approach of defining the specification with aid of
8
State of Art State of Art
algebras and co-algebras, which is than used to proof the correctness of the
software using these formalisms. Is also very common that the term requisites
is used along the specification, which is a much more empirical way to specify
what is intend for the system to do. Nevertheless, the correctness of a software
system is the act of comparing an implementation against its specification. As
stated above, the correctness can be verified using mathematical formalisms,
the algebras and co-algebras, or by a more empirical way, by performing tests.
These techniques are related to the way the specification as been done, and
also, although not directly, by the implementation it self. For example, the use
of high level languages, specially functional languages, turns the use of formal
methods more easy to perform, there are even specification languages (such as
VDM, CASL, UML to more information, please refer the bibliography: [45],[9]
and [44], respectively). On the other hand, empirical specifications, and the
prove of correctness, can also determine how software is developed, one of this
approaches is commonly known as Test Driven Development, and the prove
of the specification is done up-front in the beginning of the project and the
implementation will then be done to surpass the tests previously developed.
2.3.2 Reliability
This concept is highly connected with correctness. Reliability is by definition
the ability of a software system to perform which it is required to, and under
the conditions it was designed for. It would be of common sense to say that if a
software is Correct, then it should be reliable, if the specification fulfill the user
requirements and if it does not have coding errors. Although, even if the software
is correct it does not imply that is reliable, it could suffer from performance
issues, or functional errors that could turn the software into not reliable. Also
the concept of reliability is relative, because an error in the program can be
harmful and by that you can still rely on the system. Relationship between
reliability and correctness can be retain by imagine a mathematical domain C
R, where C represents correctness and R reliability. Although, in a practical
way a program can be incorrect but reliable, if a the specification does not fulfill
what is intended but the implementation does (and all the issues of reliability are
fulfilled), than the software is reliable but not correct (against that particular
specification). Even though, if we abstract the term of the specification to
the level, of the program doing what the user intended, and not to the
representation of what the user intended, then correctness also involves a
correct specification (which would fail in the above example), and therefore the
previous theorem is true.
9
State of Art State of Art
2.3.3 Robustness
A software system is robust if it is reliable in not only the circumstances that
were predicted in requirements and specification. These circumstances are the
ones that are not in power of the developer to avoid, such as network crashes or
erroneous input from the user. Comparing to classical engineering disciplines,
such as, a motor of a car, one can say that a motor is more robust than other
because it resists more time to the erosion of the sand in the desert, or be-
cause the pieces are more resistant to higher temperatures compared to other
engines. Even in these cases, the concept of robustness is not absolute, and
software robustness it can be related with different aspects of the software sys-
tem. Robustness is commonly addressed when talking about operating systems
or core systems, and normally comparing the time it can perform without faults
or without the need of restarting the system. Robustness also measures the ca-
pability a system has to recover from faults and the way it interacts with other
systems when a fault occurs. Robustness is normally achieved for preparing the
system to have a certain behavior under fault and to address the best use of its
environment.
Like stated previously robustness is a relative concept and for that reason nor-
mally a software system is proven robust against a standard, that should also be
stated in the specification (leading that correctness can imply robustness), and
standards are commonly delivered by some institutions and companies which
can address which the software system should be ready for and normally the
tests it should be exposed before being considered robust.
2.3.4 Performance
Some disciplines in computer science do not consider the performance as effi-
ciency (the act of performing a task), and a program is considered efficient if
it ends performing the desirable act (less the infinite tasks which derive from
the conditional task e.g. while). In software engineering, as it is more into the
empirical experience of software development, efficiency is turned into the use of
computing resources in an economical way, strongly connected to the concepts
studied in the field of complexity. In software engineering, a software should
perform in a reasonable amount of time (bringing back the concept of reliabil-
ity 2.3.2) . If a user can rely on a software it should perform tasks without
the lost of a huge amount of time, which would lead to a lack of productivity
2.3.10, and would affect usability 2.3.5. Some would think that the performance
quality with the increase of computational resources would become an obsolete
issue, even so, by definition performance and efficiency would demand the use of
10
State of Art State of Art
these computational resources economically, but also, the argument rests with
the introduction of mobility, Internet and with virtualization. Therefore the use
of the resources in a proficient way, is required to the quality of the software
produced.
Regarding the complexity of algorithms, a very famous approach for this anal-
ysis, is the asymptotic approach commonly know as big-O notation which de-
scribes the behavior of a function when its limits tend to infinite value. The
performance can be calculated using different kind of approaches from the use
of calculus of the worst case scenario or more empirically by monitoring the
activity and measuring it, with simulation, for example, where the performance
of the model is evaluated. It is also common to use stress testing to see how
performant a software system is (this kind of testing is also normally used to
measure robustness 2.3.3).
11
State of Art State of Art
tive group, or event take into account, specially when the software is targeted
to mass-us, benchmarking and statistical input to help on this matter.
2.3.6 Verifiability
The qualities stated previously were centered on the desired behavior of the
system produced, verifiability and the further explained qualities are focused on
what the properties of the code produced allows to do. Verifiability is on of the
most forgotten qualities of software. The possibility to verify that a software
system is correct is indeed a difficult task if the abstraction level of the language
on which the software is produced is very low, even the use of good practices on
the structure of the code, and its modularization affect how verifiable a software
is.
This is a quality that easily fit in the group of internal qualities, but if you take
into account that a software of Internet banking must insure the user that the
security is verified we can bring out the quality to fit also as an external quality.
To measure this quality is not always an easy task, and is done mainly in an
empirical way by trying to prove that the software is correct. The ways of per-
forming a verification, have already been stated above, they can be calculations,
with strong formalisms, or monitoring a system and producing an analysis of
its behaviour (auditing a software system).
This quality is easily obtain by assuring during the process of development that
the software is verifiable with best practices, such as proper commenting the
code and providing test cases (or formal methodologies) for every functionality
developed.
2.3.7 Maintainability
To maintain software is necessary because a software system is intend to evolve
with time, considering adaptation of the context where it is built in (e.g. user,operative
system, system core, hardware), or the lack of some of the referred qualities,
which would imply a modification in the software system, so it gains a correct
behavior. Studies as been carried stating that, in some projects, the time used
in maintenance is bigger than the time taken to develop the system. Nowadays
with the increase of outsourcing, systems are often developed by people that
will not be responsible for maintaining the system, and after the final release of
the product, will no longer be with contact with the system. Maintainability
is a quality that customers take into account with an increasing weight in the
project development and management.
Most SDMs, since their main target is the development of software, dont have
a specific maintenance phase (even though, specially the TDMs, do have this
12
State of Art State of Art
phase), but the main concern of an SDM should be to properly provide the
conditions for future maintenance, this can be done by providing tools and doc-
umentation that can be used in the future and addressing good practices when
developing the system (e.g. commented/understandable code, encapsulation).
2.3.8 Re-usability
The concept of re-usability as two sides, one as an internal quality, that the
code produced to some determine module of the project can be used in another
system if serves the same purpose and the other, an external quality while
the program can be used in different contexts without the need of rewriting a
program. The common example when describing re-usability is to address the
example of the batch command, when is intended to perform a simple operative
system task, one could write an assembly or C program to execute an amount
of basic actions, on the other hand it could built a command line instruction or
a shell script, that is in fact reusing the amount of work that a batch command
requires, and it would be probably a more efficient way of doing it.
From the point of view of the software life cycle, it can also reuse parts of the
project with different ways, if a calculation is needed in various modules of the
project, maybe is a good start to do a generic calculation module, that can be
reused by the other components of the project.
2.3.9 Interoperability
The question of interoperability has two branches :
2. and the other is integration, which defines the coexistence with other
software elements. This is really crucial in some particular cases, such
as decision aid software or core systems, where is common that many
programs use the information generated by other software systems.
In some ways portability affects integration, because when trying to make a cross
platform software, the integration with the different systems is sometimes tricky
due to the differences between platforms. Some software companies, prefer
to deliver different releases of the same product to different platforms, taking
advantage of the development made for each of the release 2.3.8. Integration
can also be assured by creating a layer that addresses this problem specifically
by creating components to assure the coexistence with other software elements.
13
State of Art State of Art
2.3.10 Productivity
This is mainly an internal quality, and not referring for the productivity of the
software it self, but from the process of developing the software. The produc-
tivity is normally measured by the amount of deliverables, or for the evolution
of the project it self. A lot of constraints are introduced when measuring pro-
ductivity. In a group of individuals, the productivity is not the sum of the
particular productivity of each member of the group. A team can maximize or
minimize the productivity of each member. The SDM and project management
practices crucial for the productivity of a team.
The productivity is by far the most influential quality when determining which
is the most appropriated methodology to develop a project, and also where most
SDM focus on increasing. Unfortunately is also one of the most unpredictable
qualities, causing it to be one issue that as been studied extensively. The SDM is
responsible to aid the productivity and to provide tools/methods to measure it,
and this is probably where most methodologies diverge, in the balance between
increasing productivity and where to cut the fat of the project.
Software design;
Software construction;
Software testing;
Software maintenance;
Software quality.
Now each one of these knowledge areas is going to be explained with further
detail.
14
State of Art State of Art
Requirement process
The requirement process in an activity within a software project and its
normally initiated in the beginning of the project, although they should be
continuously refined throughout the project. By not being a discrete pro-
cess, normally, is very hard to define how the process should be performed.
A requirement process should identify the requirements as a configuration
item and it should be faced with the same practices as any other software
element of a development process.
The requirement process involves different actors or stakeholders which
include (not exclusive):
15
State of Art State of Art
they are the ones who will be operating the system. Its normally an
heterogeneous group, with people with different levels of education
and with different roles and requirements needs;
Customers: Customers are the ones who have commissioned the soft-
ware, who ask for its development, and normally represent, together
with the users,the target of the software to be implemented, but who
might have different requirements types. A good example to differ-
entiate users from customers is a example of a call center system,
which the users, will be the phone assistants, and the customer being
the company who ordered the software with a specific requirements.
In this case the requirements of users and customers are potentially
different, if you imagine that one of the requirements of the software
is to monitor the phone assistants activity;
Market analysts: Often, specially when addressing to the called
mass-market product, the user can not be easily personified, so a
market analyst represents the called common user defining what the
user needs acting as a proxy for the users;
Regulator : Some specific domains have constraints in which a soft-
ware can do and what it should do (such as financial services, or
aviation industry). Software has to comply with the requirements
defined for the regulators of that specific market or to seek a certifi-
cation that allows them to operate with certain players; and
Software engineers: Specially on integration issues, software engi-
neers have an important role in defining the requirements for the
system to comply. When the development of a system or a compo-
nent can imply with the reuse of other components, software engi-
neers are called to decide technical requirements, causing them to be
important actors on the requirement process.
Most of the times is not possible to comply with all stakeholders require-
ments as is the job of a software engineer/project manager to negotiate
the different trade-offs, without disregarding that to negotiate is necessary
that every stakeholder can be identified and their stake analyzed.
The requirements process has to be managed and supported, and the cost
of each activity analyzed within the different cost and human resources
issues.
One of the difficulties of the requirement process is the assessment of the
its qualities, cost and time-line within the overall project. As well, cus-
tomer satisfaction is directly correlated with the requirements definition
and the fulfillment of those requirements.
16
State of Art State of Art
Quality standards and software improvement models are a good aid to ori-
ent the requirement process, this subject is closely related to the software
qualities and with the definition of the software engineering process knowl-
edge areas. This topic also covers some techniques such as requirement
process coverage and benchmarking.
Requirements elicitation
This topic is related in how the software requirements are retrieved by
the software engineers. Human activity is crucial to the understanding of
requirements, where communication is crucial within all the project and
a specialist should be assigned to mediate the domain of the users and
the technical lexicon of the software development, normally designated as
business analyst. Requirements sources can come from the process actors
or from the different aspects of the organization and operational environ-
ment or even from the business and technical knowledge from the market
and technology involved.
There are different techniques of covering these requirements such as in-
terviewing, prototyping, meetings and even observation. The techniques
involved should be measured by its cost and resources need. One of the
most critical factors in big projects is not involving all the necessary peo-
ple, and its a difficult task to assure that the correct people have been
assigned to the project, since normally too much people reflects in harder
negotiations and bringing people without power or knowledge to decide
can influence negatively the agility of the process.
Requirement analysis
The requirements analysis have to deal with the classification it has de-
fined in the requirement fundamentals, to its scope and properties within
the project and they should be classified for its volatility or probability to
change.
The use of conceptual models are important when analyzing software re-
quirements, they assist the understanding of the real life problem into the
design of the system. The correct kind of the model has to be chosen
regarding the skills of the team involved, the nature of the problem it self
and should be aware of the tools and methods available. The models are
various and can go from data flows to user interaction models and they
are an important aspect when analyzing requirements. Another important
topic is the negotiation of the requirements with the stakeholders as they
may be incompatible, reinforcing the need for communication in all the
process.
Requirements specification
17
State of Art State of Art
The specification deals with the formalization of the requirements and how
they should be delivered. The importance of the production of the doc-
ument and its separation levels, some projects have the need of dividing
into several documents or specification according to the classification of
the process. The specification must be clear and well standardized, with-
out disregarding the specific needs of the project.
There are several standards to the documentation and production of soft-
ware specification as they are a good aid to create common terms and
rules for the requirements to be well understood by the developing part
of the project. In this point, a lot of SDMs diverge into the level of
abstraction these documents should have,generally the more traditional
methodologies support a more detailed specification with a lower abstrac-
tion level, which also implies a bigger risk if a requirement change occurs,
and more modern, specially agile, methodologies support more abstract
requirements implying more effort on the development but being more
adaptable to requirement changes.
Requirements validation
The validation of the requirements is crucial for the success of a software
system, as it proves that the system complies with its objectives. There
are several practices advised for the validation of requirements as a soft-
ware methodology should use them for the success of the project. These
techniques cover model validation, the proof of requirements and more
empirical techniques such as, requirements review, acceptance tests and
the use of prototypes/simulators prior to development in which the system
produced (prototype) is used to validate the requirements.
18
State of Art State of Art
19
State of Art State of Art
20
State of Art State of Art
21
State of Art State of Art
glossaries to aid people with the notation used and to help newcomers to
easily read and understand the notations used and therefore the software
design.
22
State of Art State of Art
Managing construction
The construction management is supported by the use of models and
methodologies, the main concern of this dissertation, The main goal of
an SDM is to manage the construction, of course all the other KA are
important but the main focus of an SDM
The choice of the methodology should empathize the concepts previously
addressed: minimizing the complexity, anticipation of change, con-
struction for verification and the use of standards.
Measuring the construction process can be performed, by measuring its
artifacts and activities. The code inspection statistics, complexity, effort,
faults and scheduling commitment are examples of elements that can be
measured.
Techniques to increase quality of software are various and will not be ex-
tended in this document, but they should be addressed by the SDMs.
The choice of programming languages is also very important for the sake
of software construction but the complexity of this choice and the believe
of the methodology being adaptable to various programming languages,
the theme will not be further addressed in this document.
23
State of Art State of Art
Testing for validation: producing tests for the user to confirm the
correct behaviour, normally addresses as User Acceptance Tests;
Testing for verification: producing tests to prove that the imple-
mentation fulfills the specification, by trying to perform the func-
tional requirements of the product; and
Testing for reasonability: producing test that are known to pro-
duce errors in previous versions or in classical implementations of the
specific product its being implemented, and according to the expe-
rience of the tester and software developer. This kind of tests are
also used to verify that the product has a reasonable response to the
input it receives, a classical example is the elbow test where the soft-
ware is tested to an random input from the keyboard. This kind of
tests is commonly used in an ad-hoc way by developers during the
development phase. Some authors defend that reasonable testing is
providing that all the specifications, and requirements have been ful-
filled by the implementation, then considering all the above testing
outcome acceptance tests.
Testing has to be seen as an activity to perform not only after the devel-
opment to detected failure, but as an activity to prevent problems from
occur during the development, it is better to avoid problems than to cor-
rect them.
Test levels
Software test can be performed in different stages and with different pur-
poses. The target of the test can be a function a module or the whole
system. Testing is also commonly divided by its target, defining:
Unit testing, where the modules and components are tested iso-
lated;
Integration testing, where the relationship between the modules
are tested concerning possible incompatibilities and the common be-
haviour of all modules; and
24
State of Art State of Art
Testing can also be divided according to the objectives of the test, a test
can be used to asset different qualities of the software and a division can
be done by testing its qualities (see section 2.3), as well as other charac-
teristics of the software development process, for example, stress testing,
installation testing or recovery disaster testing.
In products that are target to mass-use, its also common to release some
alpha and beta versions of the product to a group of user, normally power-
users or even developers, to do the final testings before completely deliv-
ering the product.
Test techniques
The techniques to perform tests are used to increase as much failure poten-
tial as possible in the product that is tested. The techniques can go from
more empirical, as ad-hoc testing and exploratory testing, to more formal,
as decision tables or to proof that the product (implementation) imple-
ments the specification using calculation. Other approaches are based on
the code developed (code-based techniques) or in errors (fault-based tech-
niques). Examples of code-based techniques are control-flow or data-flow
techniques and of fault-bases are error guessing or mutation testing.
Techniques can also empathize on the usage that it will be given to the
software (usage-based techniques) or in its nature, examples are, respec-
tively, operational profiling and object oriented testing. Combinations of
different kinds of techniques are also possible and advisable.
Test process
When addressing to test processes the attitude of its development rep-
25
State of Art State of Art
resents a key principle to its success. The problems of the human ego,
related to the non-success of tests, can lead to the misuse of its process, as
also to solving its problems. The use of test guides is advisable to avoid
mistakes and to provide a mitigation of the risk by prioritizing tests and
by serving as a play-book to be performed.
The use of test patterns and reuse of previous test batteries is desirable
by its cost and time reductions but it has to be used carefully for it can
be inadequate for specific situations.
To decide when to stop testing is also very important issue, because early
termination of the testing process can lead to uncovered errors and prob-
lems and the delayed termination can lead to not fulfilling schedules and
to a waste of effort and resources.
Considering its activities the software testing process can be divided into:
26
State of Art State of Art
27
State of Art State of Art
28
State of Art State of Art
29
State of Art State of Art
Maintenance process
The maintenance process is described as going through:
Process implementation;
Problem and modification analysis;
Modification implementation;
Review and acceptance;
Migration;
Software retirement
30
State of Art State of Art
software product and the identification of all its elements. To control and
manage change, provide verification, recording and reporting of the con-
figuration a comprehension of the organization context, evolving software,
hardware and firmware issues strongly related with quality assurance is-
sues and also with maintenance.
There are some constraints when addressing to SCM, such as, internal
policies and procedures within the organization where the system is de-
veloped.
31
State of Art State of Art
32
State of Art State of Art
Closure
The closure of the project is when all the milestones addressed in the plan
are fulfilled and all the satisfaction and validation from the stakeholders
is given. One of the issues of closure is to determine when its the correct
time to define that the project is done.
And the revision of the work done is then performed to gain from the
problems and success of the project leading to an organizational learning
and improvement.
33
State of Art State of Art
Process definition
Process definition can be of different kinds, it can be a procedure, a policy
34
State of Art State of Art
or a standard and they are defined to increase the qualities of the product,
enabling communication and understanding among other factors. The
types of process definitions required depend of the project context and
the reasons to produce it.
Software life cycle models serve as the definition of the phases that occur
during the software development, defining its activities and combined with
a software process, where these activities are detailed and ordered. A
software methodology arises when these are associated with a philosophy,
its practices and roles.
Process assessment
Process assessment is performed using assessment models and methods.
Assessment models retain what is considered to be a good practice in terms
of different variables, such as technical software activities or management,
examples of these models are ITIL or CMMI. To perform the assessment
a method is also required, these methods will provide quantifiable scores
which will characterize the capability of the process.
35
State of Art State of Art
to act. Methods are more commonly divided into the kind of approach taken,
heuristic approach, formal approach and prototyping approach.
A software methodology can advise the use of tools when referring to its prac-
tices. Even though they are not essential to the success of software engineering
approaches they provide a good aid to its activities.
The methods are part of an SDM, so they all address methods that support the
SDM provided.
36
State of Art State of Art
37
Chapter 3
SDM Descriptions
38
SDM Descriptions SDM Descriptions
linear to all life cycles), then to provide roles to do work in these phases and
then to provide the proper control for this activities by defining practices and
tools that should be used to avoid failure and to increase efficiency. Supporting
all this with a philosophy that can convince people to commit to this practices
and roles and you have yourself an SDM.
In the following sections we will describe a group of SDM, chosen by its popular-
ity in the academic and industrial worlds and grouped by its similarities in the
philosophy and life cycle. The order in which they appear is not random and
they should be order chronologically. The given prove that to choose an SDM is
not an easy task since that all these SDM are all used plenty used criticized and
adored with a lot of successful and disastrous stories to support them. And here
is where this dissertation enters and try to help to choose an SDM by giving
weights and classifying facts and making a sustained choice.
39
SDM Descriptions SDM Descriptions
they use the same underlying philosophy. The following phase division will be
considered in this dissertation:
Feasibility Study;
Feasibility Study
This phase is not stated in all variations of the waterfall model, due to not being
applied in practice very often.
The feasibility study starts when a problem emerges, the first step into the fea-
sibility study is to understand the problem correctly by analyzing it and finding
alternative solutions. Therefore this phase should take into a deep knowledge
of the problem which consumes a lot of time (and money) to the people who
are undertaking the activities. Its normal that the feasibility study, outputs
instead of a feasibility study document, delivers a commercial proposal, where
normally only the advantages of undertaking the project are shown. Obviously
if a feasibility study determines that the project would not be much of an advan-
tage to the client, the time and effort given to the task are wasted (if a proper
40
SDM Descriptions SDM Descriptions
After understanding the problem, and realizing which seems to be the best
solution, the goals of the solution should be very well defined. By this, functional
and technical requirements are defined. These requirements should state the
qualities stated in the previous section 2.3 with refinements for the solution in
cause.
The center of a requirement definition is not how it should be done its all about
what must, should or has to be done. The output of this phase is a requirement
specification document where all the requirements are stated, this document
should be revised with the customer for it to be clear what the product is
suppose to do.
The requirements can be divided into three big types:
The design and specification phase results in a document describing how the
software product should be built. It is based in the requirements defined in the
previous phase. It is suggested to divide the software into modules, and is in
this phase that the division occurs and the relationships between modules are
41
SDM Descriptions SDM Descriptions
defined. The design and specification can be done iteratively going through dif-
ferent levels of abstraction, starting from the point of a formal specification that
will be decomposed into an implementation in the next phase. There are many
different approaches into writing specifications from the formal point of view to
the other more empirical methods. To see more about specification languages
and methods see [45], [44], [9] and take a look into correctness quality in section
2.3.1.
It is also a suggested that a company should use a standard on specification and
design documents, regarding how appropriate the standard is for the specific
solution in which it should be used.
In short words the design and specification is like the project of a house or a
roadmap of a trip, its the guideline of the implementation, and should be as
clear as it is possible. The process of design and specification can be called dis-
ambiguation where vague terms will be translated to terms that a programmer
would not have doubts into converting to a programming language.
Coding is the part where the software is actually built. This phase translates
the design and specification document of the previous phase into a programming
language, as in the previous phase the notation and standards are advised. If
it was suggested in the previous phase that the product should be split into
modules and if the implementation follows the specification the software should
be coded into different modules. These modules should be tested individually
before being integrated in the next phase and all the tests should be documented.
The module testing should also occur in this phase, which should be the first line
of testing, standard in module testing is also advised and a line plan of tests
where the kind of tests to perform should be explicit (e.g. white-box, black-
box, unit testing etc.). The inspection of a well written code and the qualities
of software are also desirable some of them taking more relevance in later stages
of the coding process. Some authors suggest that correctness should not be
verified in this phase, although correctness of the product cannot be proofed
from one module, if the specification and the functional requirements are also
designed in a modular way, module correctness can be measured.
In the integration and System Testing, the modules built in the previous phase
are assembled and is sometimes included into the coding phase. Although inte-
gration requires different kind of coding and testing. The testing in this phase
42
SDM Descriptions SDM Descriptions
In the delivery phase, the application is ready to use before the beginning of
the phase, and the delivery is normally carried out in phases, to minor changes
and the impact of errors and misunderstanding of requirements.
It is normal that a controlled experiment is carried with a group of prior users,
that will provide output of the system, often called beta testing. During these
activities is nowadays common to put professionals from social areas with tech-
nical professionals to assure that the software fits all the required qualities, some
complex systems also require people that can explain better to users than the
people who have developed it.
After the product has been submitted to the beta testing if it is not reverted to
an early phase it will be released to the customers. After the release the main-
tenance of the system is essential, specially when requirements change fast and
the system have to evolve fast as well. The maintenance is by that responsible
for correction of missed errors and to adapt the system for the current needs.
Maintenance within the Waterfall methodology goes through repeating the life
cycle for the modifications to be done.
The Waterfall main principle can be measure twice cut once which is its most
loved and hated principle. The benefits gained from the use of the Waterfall
Method are unquestionable because it brought discipline and method that was
most needed when the method was created. It brought discipline, planning and
management to a world where coding and fixing was the main strategy. It is
calculated that a project costs much more when late requirements are discovered.
The Waterfall method is categorized as Big Design Up Front BDUF, where first
is well decided what/how and if it is worth to be done (measure) and then
43
SDM Descriptions SDM Descriptions
start coding the product (cut). The Waterfall method is an ideal model,
and obviously can only be approximated and the discipline and perfectionism
defended by the method is also its worst critic. Some critics suggests that
Waterfall is too rigid and that most clients/users dont realize some of the
requirements until late in the project, so a project should not waste a lot of
time in the pre-coding phases, on the other hand climbing up the Waterfall is
much more expensive than going through the phases. It is also suggested by
some authors [15] that the Waterfall method to be effective should be used with
the feedback loop between phases, so that a mistake in the beginning is not
postponed to later phases and that the linearity of the process is the main key
of success when using the model.
The principle that the balance between resources and requirements are difficult
to define and that to use documents/specifications are not mutable according
to the software development is a static document that can be changed, but
according to the model, to change it, it would imply going back to a previous
phase is also a common critic to the model. Also that the real life projects are
in constant change and requirements change more often than predicted and that
the monolithic design of the method is not sufficiently agile to adapt to those
changes.
Even though its critics Waterfall is still considered as one of the most important
methods which as brought a lot to the software industry, and it is fact a reference
still today when approaching Software Methodologies. It can also be considered
as the father of TDM.
44
SDM Descriptions SDM Descriptions
formal methods and program calculation please see the bibliography [30] and
[31] (in Portuguese). During the development process there is also a place for
redevelopment or the adaptation of new or future requests, but the development
would began in the point where is appropriated and will accommodate the
changes to the verification and correction of the software.
The transformation model is still very research oriented and it requires a lot
of familiarity to mathematical and formal methods which may not be suited
for large projects were the requirements analysis is very difficult even using
more informal processes. One of most pointed out issues is concerned with
change of requirements which must be changed in the initial model and if a
change is done it has to be drilled down until the final the implementation
because all implementation has been calculated/proven from the refinement of
the specification. So a small change in the requirements would affect all the
work, and all the verification and proof of correction had to be redone. Even
though the transformation can bring the correction to the equation of software
development and all the process of verification, if done correctly can proof that
a software implements the specification.
45
SDM Descriptions SDM Descriptions
Requirement Analysis
In this phase the requirements are analyzed. The methodology defends that
the common approach of How and What should not be used and advises a
How well it must do what approach. This means that normally during this
phase people are worried in finding all the functionalities and how to implement
them and they should be also focused on defining the proper quality for each
functionality. Then for the requirement analysis a specification is delivered
explaining the main functionalities to support the first version of the product
(or the first prototype).
Deliver
The deliver phase is where artifacts are released to the client, this means that
after the requirements analysis the specification is released with a prototype of
what the product will be. The deliver phase occurs for all the artifacts in the
project, including all the versions of the software. This phase is characterized
by small periods of development so the stakeholders can be almost constantly
providing input and feedback to the team. Each deliver is designated as an
increment and after validation it should be integrated with the previous releases.
Measure
46
SDM Descriptions SDM Descriptions
changes identified dont imply massive changes in the products. This measure
also defines that the product is in conditions to terminate the development of
the product.
Adjust
This phase occurs just after the measure and it should be followed by a deliver. It
is characterized by the development of the changes identified during the measure
phase, with the incorporation of the feedback provided. This feedback should
be systematic to produce the work that it has to be done by the development
team. This phase shouldnt be very long and it should be delivered to the
client as soon as is in conditions to be measured, otherwise, the measurement
phase can result on a waste of time as resources for development. This means
that a modularization of the product is also advisable so they can be measured
individually. This approach can be adapted to measure integrated artifacts or
only modules and then later the integrated is again submitted to the different
phases.
Terminate
This is a final phase and is achieved when the solution delivered fits into the
needs of the client and no more development, besides maintenance, is needed.
This means that the product delivered fulfills the objectives, always considering
that it does as well as it should (according to the previously stated How well
it must do whata requirements), and no more adjustments are needed. Obvi-
ously, and according to what was stated previously, this phase can occur only
to a module, not implying that the project has terminated but that the specific
module is done and should only be submitted to the process when the integrated
solution is delivered. This is always a critical part of the project and its always
hard to terminate a project and an approach regarding the quote perfect solu-
tions are enemies of good solutions should be applied. In a software product
there is always space for improvements and the difficult task is to realize when
is it good enough (again the same issue stated in the requirements), and thats
why this methodology states that during the requirement analysis
To see more on evolutionary methodologies please see the bibliography [17]
and [16].
47
SDM Descriptions SDM Descriptions
development process and can decrease the time of revising the requirement anal-
ysis before having anything tangible to work with. The cost of throwing away
prototypes is not very well understood by the majority of software vendors and
resistance to change is also common within clients, so these problems should
not be neglected. If the requirements are not well understood from the first
prototype and to actually throw everything of the first version is very hard, and
from the point of view of the developer is not easy to understand and accept
that the software produced is going to be disposed and can cause some issues
within the team and a resistance to adjustments. Another issue is related with
the common practice of using prototypes to sell the idea to the client that the
software will fulfill the requirements, which can cause a deviation from the phi-
losophy of the methodology. One of the most positive criticism to evolutionary
methodologies is the use of prototyping as a good practice to detect early mod-
ifications and needs of change, and using this with disregarding documentation
and to empathize the requirement analysis. This methodology is still used (or
its derivatives, like the spiral methodology) and is defined by removing some
of the rigid development of waterfall (section 3.2.1) without going deeply into
more flexible processes like agile methodologies (section 3.5).
48
SDM Descriptions SDM Descriptions
Top-Down Bottom-Up
This strategy is based in beginning into This strategy is almost the reverse of
a very not detailed analysis of the sys- the previous one. The definition of the
tem, and then refining it into differ- system is began by its base elements,
ent sub-systems into greater detail go- and then trying to linked them into a
ing through it until the entire definition greater system (inferring the system, by
is reduced to a set of base definitions. a set of base elements). The theme
The theme words for this strategy is words for this strategy is synthesis or
analysis or decomposition. induction.
Risks are potentially adverse circumstances that may impair the development pro-
cess and the quality of the products. - Fundamentals of Software Engineering 1991
[15]
49
SDM Descriptions SDM Descriptions
mitigation of the high risk problems and a differential reaction for the severity
of the risk in cause.
This methodology phases are better understood when placed in the diagram
represented in figure 3.2, but a description of each phase is presented next:
Determine Objectives
The development and test phase is responsible for delivering artifacts and for
its verification and validation. The concepts of requirements are defined in
this phase and after the first prototype the requirements are defined also in
this phase. Then for each prototype presented a draft product is verified and
validated until, with base on the operational prototype, the detailed design is
presented. With the detailed the design the development of code, followed by
integration and test is done until the implementation is achieved.
As all the previous phases, this phase starts with the results from the previous
one, so with the validation and verification of the requirements this phase will
produce the concept of operation. With the verification and validation of re-
quirements the development plan is also done in this phase and for each draft,
and its validation/verification, the test plan is elaborated until the release is
50
SDM Descriptions SDM Descriptions
delivered. This phase is also responsible for feeding the first phases, determin-
ing the cycle iteration, for each plan elaborated the determination of objectives
and risk analysis is performed supporting the new prototype and so on until the
release that terminates the spiral.
The Spiral Model has introduced the risk analysis into the planning a software
product which the earlier process model did not have. This measure occurs in
a natural way in a real-life situations but it was not considered as a part of the
management and planning of the project, was just performed taking intuition
and empirical knowledge. This and a strong versatility of the model are the
great advantages of using the spiral model.
Although the risk analysis can be hard to perform and if a high risk is measured
as a low or not important (or the opposite) the development process can be
easily become an disadvantage. Also the misuse of the spiral iterations can lead
to a waste of time if the risk, tracking and control are not performed carefully.
Also from the point of view of the contractors you can have an image issue,
where the work performed its not very tangible from his point of view in early
stages of the spiral, but that can be mitigated by using the clients into the
process of risk analysis by, for example, performing user acceptance tests with
the prototypes delivered (like in evolutionary methodology 3.3).
3.4.2 RAD
The Rapid Application Development was first published in a book by James
Martin in 1991 [28], although it was based in previous works of Scott Schultz
51
SDM Descriptions SDM Descriptions
52
SDM Descriptions SDM Descriptions
4. Team Members: The RAD advises the teams to be small and experi-
enced and where the client performs an important role in the development
process specially during the initial and final period of an iteration. Team
members should be able to perform multiple roles not to disregard im-
portant aspects of the system and are organized into called SWAT teams
(Skilled Workers with Advanced Tools).
6. Tools: Obviously when the method was formalized, the tools used are
nowadays almost obsolete although others evolved, but the major point
is that the RAD methodology relies on the use of state of the art tools
(such as IDEs and 4th generation languages) to speed up the development
process.
There are many divisions in phases of the RAD process, here the approach of
James Kerr and Richard Hunter [21], will be considered for its popularity among
industry and academic players in software engineering.
Kerr divides RAD into 5 phases as shown in figure 3.3:
2. Data Modelling: With the output from the previous phase, then the
need of technical resources is needed, the business is understood and there
53
SDM Descriptions SDM Descriptions
is the need of understanding where the system is needed and which in-
formation is needed for the system to work. During this stage the data
flow of information is modeled according to the business model previous
defined.
5. Testing and Turnover: All new components should be tested and inte-
gration testing is essentially for the success of one deliverable. As the reuse
of software is encouraged, the testing can be minimized to integration tests
(understanding that the component being reused has been tested). The
called turnover is used for modifications and changes detected in the final
testing and to deliver a release for the focus group sessions to evaluate the
state of the project and the deliverable it self.
54
SDM Descriptions SDM Descriptions
One of the innovation brought by RAD was the effort to reduce the time used for
each iteration as most models only focused on reducing the overall time taken in
the development. This can be viewed as a divide and conquer strategy, reducing
each iteration for reducing the overall activities and therefore the project. For
this purpose, RAD encourages the use of modern technology and management
techniques.
The main criticism to RAD is its feasibility in large projects. The encourage-
ment of reuse, is also cited as a high risk for the success of innovation projects.
Another common criticism to this methodology is the difficulty of its imple-
mentation, and the fact that if is not properly used it may lead to a chaotic
development.
The methodology is also criticized by not addressing properly the performance
software quality, because of its goal to reduce time of development specially
when developing critical software that can require an extra formal analysis and
cutting edge science, although this criticism can be rejected if the testing and
turnover phase addresses all software qualities.
The RAD methodology represents a mark in the history of SDMs and it is the
connection between the Traditional Development Methodologies and the Agile
Development Methodologies, together with the evolutionary methodologies, it
opened the door for new approaches to arise, and most of the new methodolo-
gies that did, were inspired by RAD. This methodology is still used by some
major software companies and is one of the most quoted methodologies both in
academic and industry papers about software development methodologies.
55
SDM Descriptions SDM Descriptions
That is, while there is value in the items on the right, we value the items on
the left more.
Authors:
56
SDM Descriptions SDM Descriptions
Our highest priority is to satisfy the customer through early and continuous
delivery of valuable software.
Business people and developers must work together daily throughout the project.
Build projects around motivated individuals. Give them the environment and
support they need, and trust them to get the job done.
The most efficient and effective method of conveying information to and within
a development team is face-to-face conversation.
At regular intervals, the team reflects on how to become more effective, then
tunes and adjusts its behavior accordingly.
57
SDM Descriptions SDM Descriptions
3.5.2 Scrum
Scrum in a known rugby formation and it was the theme for a work from
Takeuchi and Nonaka in an article [43] on Harvard Business Review. The anal-
ogy with the rugby formation technique, where the whole team achieves distance
by passing the ball back and forth as a a single unit, was made from the fact
that the approach to deliver a new product was made by a cross-functional
team going through overlapping phases. The analogy used to describe the old
approach was a relay race where the different teams are passing the baton to
the next group.
The cross-functional team should be able to self organize within the project,
with the proper control being performed subtly and should be able to learn dif-
ferent areas taking advantage of the knowledge resources within the organization
where the project is being held. In consideration to the development it should
be performed in overlapping phases and with the called built-in instability. The
built-in instability consists in creating a tension to promote creativity, the goals
for the new product should not be very strict neither should hand out clear-cut
concept of the new product. By that instability teams have a wide measure of
freedom and challenging goals.
In the early 1990s Ken Schawber, Jeff Sutherland, John Scumniotales and Jeff
Mckenna start exploring this kind of approach in the industrial software. Schaw-
ber and Sutherland then presented a paper describing Scrum. They started
working together in refining the methodology, by their experience in the soft-
ware industry and come up with the methodology that is now widely known
as Scrum. Ken Schwaber with the help of Mike Beedle then formalized the
methodology in a book in 2001 [36].
Roles
Scrum has distinctive roles within the teams [35], they divide the roles into two
different kinds: the pig roles and the chicken roles. The division of the roles is
based on a joke about the creation of a restaurant by a chicken and pig:
58
SDM Descriptions SDM Descriptions
A chicken and a pig are together when the chicken says, Lets start a restaurant!
The pig thinks it over and says, What would we call this restaurant?
The chicken says, Ham n Eggs!
The pig says, No thanks, Id be committed, but youd only be involved!
not the leader of the team neither manages the team, the team is self-
organizing, the Scrum Master just helps the team understand and use the
principles of self-organization and cross-functionality. The Scrum Master
is also responsible for choosing and teaching the Product Owner to perform
his work according to Scrum. The Scrum Master can also be a member of
the Scrum Team but it can never be the Product Owner.
The Team: The team is responsible, with the input from the Product
Owner (Product Backlog), to put the requirements in a deliverable in each
iteration (called sprint in Scrum). Team members can have specialized
tasks and activities but cross-functionality is required and they should
learn from each other, and even perform tasks they are not used to if
required. The team has no titles within, and no one should refuse to do
a task because its not their job. Scrum strongly refuses the creation of
sub-teams with specific tasks, and the team should not be very big and
as a optimal size of seven people (plus or minus two), Scrum Master and
Product Owner are not included in this count, unless they are also part
of the team. The team should be self-organized and not even the Scrum
Master should tell the team how to convert the Product Backlog into a
deliverable or an increment by the end of the sprint. Changes within
membership in the team are not advisable, because can affect the self-
organization of the team and therefore affect the productivity and these
59
SDM Descriptions SDM Descriptions
Using the previous analogy of the chicken and pig, the Scrum Team members
are pigs and all other roles are chickens. The Product Owner and Scrum Master
are considered to be chicken, but how was said before, they can also be a Scrum
team member, so they can also be pigs.
One of the rules in Scrum, is that chickens cannot tell pigs how to do their work,
by then, only if the Product Owner and/or Scrum Master are involved in the
deliver of the product as part of the Scrum Team (pigs), may they interfere in
the way pigs perform their tasks [35].
There are also other roles considered within the scope of Scrum, considered to be
chickens, such as managers who will be responsible for creating the conditions
for the project to be held and the clients and users of the product normally
designated as stakeholders.
Scrum can be divided into three major phases Pre-Game, Development and
Post-Game that will be now analyzed with more detail.
1. Pre-Game
In the pre-game phase the planning and conceptual architecture are defined.
This phase consists in preparing the requirements analysis that will be used to
construct the Product Backlog. In this phase, are also chosen the tools that are
going to be used to develop the product, the composition of the project mem-
bers and their roles. Also, a risk analysis and global costs are calculated to asset
the viability of the project. This phase involves the called chicken stakeholders.
Each requirement defined goes into the Product Backlog, the document that
will be managed by the Product Owner, defining the priorities for each one of
the requirements. This requirement list will be continuously updated during
the development phase. The pre-game is meant to provide the input for the
development phase, that works like a black box, the stakeholders define the
team, requirements and tools to the development phase and by the end of the
development phase a product will be released.
The conceptual architecture is also defined during this phase. A meeting with
different approaches should be taken and a conceptual approach should be cho-
sen and this architecture should be based in the requirements that are present
in the Product Backlog at this point.
The creation of the Product Backlog consists on defining an priority and ef-
fort estimation for each requirement, this should happen in the Release Planning
Meeting.
60
SDM Descriptions SDM Descriptions
2. Development
The development phase is the phase where the development is actually per-
formed. This phase is considered to be a black box, in which changes of require-
ments are predictable, and where the called pig elements of the project appear.
The development phase is divided into iterations called Sprints. Each sprint,
with a time-box between 2 and 4 weeks, should end with an some increment to
the product. A sprint starts with a Sprint Planning Meeting, time-boxed
to 8 hours for a 4 week sprint (with the rule of 5% for the total amount of
the sprint). This meeting is divided in two parts: the what part and the how
part, the meeting is conducted by the Scrum Master and the Product Owner
presents the priority list as in the Product Backlog. The parts are time-boxed
to half the time of the meeting (although the parts can be combined). The
input for the meeting is the Product Backlog, previous sprints increment, the
capacity and previous performance of the team. The team chooses an amount
of the Product Backlog and a Sprint Goal is crafted defining the objectives
for the sprint, which is represents a subset of the release goal, this is normally
done in the what part of the meeting. In the how part of the meeting the team
decomposes the part of the Product Backlog chosen into tasks and activities
that should be performed in order to obtain the Sprint Goals (converting the
subset of the Product Backlog into tangible software). The task list is called
the Sprint Backlog. The assigning part can be performed during the meeting
or during the sprint it self, its up to the team, advocating the self-organization
of the Scrum Team. The Product Owner should be involved in the meeting to
clarify the Product Backlog and to help in the negotiation of trade-offs. The
Product Owner may also reconsider the priorities in the Product Backlog.
The sprint is then started and during the sprints, there are meetings, time-boxed
to 15 minutes, called Daily Scrums, in which each member explains:
These meetings should take place at the same time and in the same place every
day. The Scrum Master conducts the meeting and assures that it happens
and happens within the correct time-box. The purpose of these meeting is to
improve the communication in the team and to eliminate impediments to the
development.
During the sprint are also some artifacts that are present to the all team:
61
SDM Descriptions SDM Descriptions
Backlog estimated effort across the time. The units are usually Sprints,
but its up to the team to decide how it should be measured.
In the end of the sprint, a Sprint Review meeting is held, with a time-box of 4
hours meeting for a month sprint (should be half the time of the Sprint Planning
Meeting). In this meeting the stakeholders should also be present to asset the
increment and the Product Owner should explain what has been done according
to the Product Backlog and all the items that are done, and the revisions that
have been performed to the Product Backlog and estimation of the completion
dates and velocity assumptions (how much Product Backlog effort can a team
handle for each Sprint). The team also discuss the problems they had, how they
solved it and what went well. The team then presents the work done, and the
meeting should provide the input for the next Sprint Planning Meeting that will
begin the next sprint. Before the next Sprint and after the Sprint Review, a
Sprint Retrospective meeting is also held, for the Scrum Team to revise their
organization and development practices. This meeting is time-boxed to 3 hours
and discuss not only technical aspects but all the aspects that can contribute
for an increase of effectiveness for the next sprint.
62
SDM Descriptions SDM Descriptions
3. Post-Game
The final phase starts when all the goals defined in the Pre-Game phase are
achieved, the preparation and creation of the final release, including its tests,
manuals and learning material. In this phase all stakeholders should be informed
of the end of the project. The tests to perform should include integration and
system testing. The definition of done is defined by the Project Owner, meaning
the conclusion of development, that can include, tests, documentation and other
kind of requirements such as internationalization issues, and it is the Product
Owner responsibility to clarify what should be done before releasing the product
to the final user.
63
SDM Descriptions SDM Descriptions
64
SDM Descriptions SDM Descriptions
Courage: Acts should be taken with courage. Team members should have
the courage to admit failure, and to provide the proper feedback without
fearing the consequences, no programmer likes to throw away code that as
cost him or her a lot of effort and time, but they should have the courage
to throw it away when needed and to admit they failed. Courage is needed
to respect the values above, and to stay strict to them.
Respect: Team members should respect each others and their work
should rely on that. When submitting a piece a code, a member of the
team should take into account that it can affect the work of the others, so
it should assure that the respect for others members work is guaranteed.
They accomplish that by performing unit and integration testing between
other tasks. Respect for the values is also required for the team members,
and if the values are respected is a good start for respecting the other
team members.
Roles
Customer: The customer is part of the team and is responsible for cre-
ating user stories, that will define the requirements for the programmers
to implement, and to perform the acceptance test of the functionalities
implemented. The customer knows what to be implemented and the pro-
grammer how, so its the customer job to define which tests should be
used to test the acceptance of the release.
Tester: The tester helps the customer in writing the tests and to execute
tests already implemented to assure that re-factoring and new functional-
ities dont compromise the previous implementations.
65
SDM Descriptions SDM Descriptions
Coach: The coach is the person in charge of the project and to guide the
rest of the team during the process. The coach, as to know the details of
the process and to be capable of which practices can mitigate the problems
that appear in the project.
Big Boss: The big boss is the project manager responsible to allocate
and to deliver all the resources needed and its responsible to intervene, if
needed, to assure the success of the project.
XP was named after the extreme approach when considering agile and lean
development, this demonstrates how XP is strict with the use of some practices.
In this section the life cycle of the methodology and the use of theses practices
during each phase of the process are described.
The XP methodology is divided in 6 phases:
1. Exploration
66
SDM Descriptions SDM Descriptions
2. Planning
In this phase, characterized by the practice called The Planning Game, cus-
tomers work with the programmers in order to define priorities and estimate
effort for each user story and define which user stories are going to be imple-
mented in the the next iteration. This phase can be split in two phases, being
the first with the interaction of the user, to define the priorities and estimate the
effort, called the Release Planning and a second phase, where only program-
mers are included defining the activities and tasks for each pair of programmers,
who will commit them selves into a deadline for the task to be complete. Dur-
ing this phase also unit tests are developed, prior to the actual development,
this approach is called the Test Driven Development is one of the practices
advocated by XP
3. Iterations
The iteration phase can take from one to four weeks long and considers all the
tasks normally stated in software development: analysis, design and testing.
It also adds a planning for testing when the developers gather to discuss how
the tests should be performed. The development how was explained above is
developed using pair-programming.
XP recommends the practices of code sharing, where all the team is able to
view and modify the code the called Collective Code Ownership. The use of
Coding Standards is advised in order to simplify the mixture of the program-
mers and for everyone to understand the code as easy as possible. Developers,
according to the values of XP, should develop simple designs and should use
common metaphors so everyone can easily understand when someone is refer-
ring to some specific element of the requirements.
During the process of development besides the Continuous Review from part
of one member of the pair, they should always work with the latest version of
software, advocating the called Continuous Integration, and should perform
Re-factoring of the code produced. This means removing ambiguity and re-
dundancy from the code. As was referred in the previous phase, XP uses test
67
SDM Descriptions SDM Descriptions
driven development, which means that tests should be continuous and even pre-
cede the development of code.
The customer is considered as part of the team as it should be involved during
the development of the code, and should perform functional tests to the re-
leases. This relates to two more practices that XP refers, Customer On-Site
and Small Releases. Customer on-site, means that the client is not considered
as to be external and should be in the same physical space as the developers,
and the small releases serve to the customer to test each increment as soon as
possible, these releases should run independently and they are not intended to
go live.
When regarding the programmer welfare, the XP is very strict, and defines that
no programmer should work more than 40 hours per week, as tired program-
mers are more likely to produce errors. In the need of extra hours of work in
one week from a developer, this developer should not work overtime in the next
week.
4. Productionizing
In this phase the performance is analysed and together with the released pro-
duced in the previous phase the customer revises the release and can suggest
modifications, the customer can demand new acceptance tests and performance
to prove the validation of the release. Modifications can be pointed out, and
they are then evaluated to go to the maintenance phase or being included in a
next iteration if the cost and objectives suggest it.
5. Maintenance
In this phase the modifications suggested by the customer are implemented and
an extra caution to integration is required. All uses cases should be re-run after
the modifications are done and an update of the previous release is presented
to the customer and its considered to be in production.
6. Death
The dead of the project happens when there are no more user stories to imple-
ment and performance and stability of the system are approved by the customer.
In this phase all documentation required by the customer is then produced,
considering a simple description of the of the architecture and functionalities
implemented.
68
SDM Descriptions SDM Descriptions
69
Chapter 4
Results
4.1 Method
To analyze SDMs using an empirical approach will imply an influence on the
outcome, of using the SDM, and even in the adherence of the team to SDMs
definition. This influence can appear by the characteristics of the team, its ex-
perience and to specific issues of the project given the context in which it is
enrolled. This influence reflects subjectivity, and when performing an evalua-
tion/classification subjectivity can imply that the results are not accurate. This
kind of approach has been used by attempting to analyze and quantify the qual-
ities of the product delivered when using the evaluated SDM, some examples
can be found in the bibliography in [4] and [22].
Other approach, more informal, is to analyze an SDM and then try to determine
how is better or worst by its advantages and criticisms.The problem with this
approach is that the subjectivity is on the person who evaluates and by the
sources that were used. Some examples of this kind of approaches can be found
in the bibliography in [40],[38], [39] and [1]).
The approach taken in this dissertation was not to perform an empirical re-
search, therefore removing the subjectivity of the specific experiences of using
the SDM, and to perform an analysis of the SDM but removing the subjectivity
by confronting them against facts instead of identifying advantages or criticisms
informally.
The first step was to define an ideal use of the methodology, that is present in
the state of the art sections 3.2, 3.4.2, and 3.5. Then the ideal methodology is
confronted against the SWEBOKs knowledge areas by grading its adherence
to these KAs. With this approach both subjectivity flaws stated previously
are being avoided. Of course that the grading is performed by someone who
analyzed the SDMs and also researched about the advantages and criticisms of
70
Results Results
the SDM and it can still be biased by this research. Although, it will have to
confront the SDM directly against a fact, prove that is adherent or not to this
fact, and grade it with a satisfaction scale, so in the end subjectivity is lessened.
The framework here presented it also allows to inflect subjectivity into the final
results. It may sound confusing, because subjectivity is not in benefit of the
classification but it can be useful when someone wishes to add their experience
and their context to the choice that they are doing. These addition can be made
by weighting the knowledge areas (or more detailed into the sub-knowledge ar-
eas). Again, because this addition is made after the classification is not adding
subjectivity to the process of grading the SDM but to the process of choosing
one.
An important issue when defining, the previous mentioned, ideal methodologies,
was the extrapolation made from the models, specifically when addressing to
waterfall and spiral model (sections 3.2.1 and 3.3.2). This extrapolation was
risky but the intention was to address two very common approaches in the
actual industry where methodologies derived from these models are still very
used. This extrapolation used descriptions of the use of the models to projects
defining an implicit methodology by both idealistic and averages uses of the
methodology.
The analysis that is presented in this chapter is the, already mentioned, con-
frontation of the definition of the methodologies against the knowledge areas.
To provide quantifiable metrics, the use of satisfaction points was given with the
justification. A quantification is made, to provide a more easy way of addressing
the results, by defining 0 to no satisfaction, 1 to partial satisfaction and 2 to
full satisfaction.
A visual aid is also delivered for each methodology, by gathering the results in
a bar chart with the percentage of satisfaction obtained in each knowledge area,
this is calculated by dividing the actual satisfaction by the maximum possible
of satisfaction.
This analysis should not be understood as an attempt of choosing which SDM
is better, but to provide an overview of each methodology according to the
software engineering methodologies, and to provide an aid when choosing a
methodology, according to the required KA concerns.
4.2 Waterfall
Waterfall is still one of the most used methodologies (or methodologies based
on this model) in the world, so it was a necessary presence in this analysis.
The software engineering knowledge areas have evolved to fit the new context
71
Results Results
engineering areas, some of the satisfaction points were low because of its mono-
lithic approach, without space for change and and effective process evaluation
or adaptation. The design process is very sustained in documents rather than
in practical solutions that can provide a more effective design when defining
the different kind of design levels. Quality assurance and requirements analysis
have very high satisfaction points and software construction was penalized for
not committing to simplicity and coding for verification.
The tables and bar chart for the waterfall methodology can be seen below.
72
Results Results
73
Results Results
74
Results Results
75
Results Results
4.3 Spiral
The spiral methodology, due to the prototyping technique, and the introduction
of iterations and the revision in each iteration, provide a great satisfaction in
the design and testing KA and a very reasonable one in software configuration
management and software engineering process and management.
The lack of metrics and quantifications, besides the risk assessments, and the not
commitment for simplicity and code verification are responsible for lower satis-
faction points in software construction and software engineering management.
Also a non definition of a specific phase or activities concerning maintenance
reflected in the lower satisfaction for this methodology.
Next the tables and satisfaction bar chart for the spiral methodology are pre-
sented.
76
Results Results
Table 4.4: Spiral: Software Requirements, Software Design and Software Con-
struction KA
77
Results Results
Table 4.5: Spiral: Software Testing, Software Maintenance and Software Con-
figuration Management KA
78
Results Results
79
Results Results
80
Results Results
Table 4.7: RAD: Software Requirements, Software Design and Software Con-
struction KA
81
Results Results
Table 4.8: RAD: Software Testing, Software Maintenance and Software Config-
uration Management KA
82
Results Results
83
Results Results
4.5 Scrum
The Scrum methodology due to its role distribution and with the use of artifacts
such as backlogs and burn-down charts was the only methodology to fully sat-
isfy the software engineering management and software engineering process KA
(although eXtreme programming also fulfilled the software engineering process).
Scrum approach on maintenance as another iteration of the process and the lack
of effort on minimizing the complexity reflected in the lowest satisfaction for this
methodology on software construction and maintenances KA. The tables and
bar chart satisfaction for the Scrum methodology are stated below.
84
Results Results
Table 4.10: Scrum: Software Requirements, Software Design and Software Con-
struction KA
85
Results Results
Table 4.11: Scrum: Software Testing, Software Maintenance and Software Con-
figuration Management KA
86
Results Results
87
Results Results
88
Results Results
Table 4.13: XP: Software Requirements, Software Design and Software Con-
struction KA
89
Results Results
Table 4.14: XP: Software Testing, Software Maintenance and Software Config-
uration Management KA
90
Results Results
91
Chapter 5
5.1 Conclusions
This dissertation provides a framework to compare SDMs and to correctly
choose one when embracing a new software project. This framework is backed
up by SWEBOK and its knowledge areas, providing that the classification and
comparison of the SDM is objective and based on facts. Subjectivity and expe-
rience can also be added to the framework by weighting the KA according to
what is believed to be the KA more important for the project in cause. One
of the main problems with software development projects is that normally this
activity is not done at all, normally a team or a company uses the same SDM
for all the projects and use them until something goes wrong or they decide
is time to use another methodology. The fact is that software development
projects should use an SDM that suits their demands and not the one that is
normally used. Even though experience using an SDM can influence the deci-
sion it should not be the only factor. So the result of this dissertation should
not be only the framework delivered but a concern with the importance that a
correct choice of an SDM can have in the final product. This dissertation also
contributes with an analysis of software engineering evolution during the years
and the contribution it has given to software development. With the the results
of this dissertation is possible to effectively improve the quality of the software
produce and the process of building it. In order to achieve it is necessary to
maintain the framework that have been delivered by increasing the number of
SDM and feeding the analysis with previous experiences, by giving weights not
only to KA but also to SDM them selves and updating the classification with
92
Conclusions and further work Conclusions and further work
93
Conclusions and further work Conclusions and further work
94
Conclusions and further work Conclusions and further work
95
Bibliography
[1] Pekka Abrahamsson, Jussi Ronkainen, and Juhani Warsta. Agile develop-
ment methods - review and analysis. Technical report, University of Oulu,
2002.
[4] Victor R. Basili and Robert Reiter JR. A controlled experiment quan-
titatively comparing software development approaches. IEEE Transac-
tions on Software Engeneering, VOL. SE-7(NO. 3), May 1981. http:
//www.cs.umd.edu/~basili/publications/journals/J10.pdf.
[8] Frederick P. Brooks. No silver bullet. Proceedings of the IFIP Tenth World
Computing Conference, 1986.
[10] Edward R. Comer. Alternative software life cycle models. VOL 2:289299,
1997.
96
BIBLIOGRAPHY BIBLIOGRAPHY
[15] Carlo Ghezzi, Mehdi Jazayero, and Dino Mandrioli. Fundamentals of Soft-
ware Engineering. Prentice-Hall International Editions, 1991.
[20] Stephen H. Kan. Metrics and models in software quality engineering. Pear-
son Education, 2nd edition, 2009.
[21] James M. Kerr and Richard Hunter. Inside RAD: How to Build a Fully
Functional Computer System in 90 Days or Less. McGraw-Hill, 1994.
[23] Henrik Kniber. Scrum and XP from the trenches - How we do Scrum.
InfoQ - Enterprise Software Development Series, 1999. http://infoq.
com/minibooks/scrum-xpfrom-the-trenches.
[25] Nancy Leveson. Medical devices: The therac-25. Appendix of: Safeware:
System Safety and Computers.
97
BIBLIOGRAPHY BIBLIOGRAPHY
[32] D.L. Parnas. On the criteria to be used in decomposing systems into mod-
ules. 1972.
[33] D.L. Parnas and D.M. Weiss. Active design reviews: principles and prac-
tices. 1987.
[36] Ken Schwaber and Mike Beedle. Agile Software Development with Scrum.
Prentice Hall, 2001.
[38] Henk Gerard Sol. A feature analysis of information systems design method-
ologies: Methodological considerations. 1983.
[39] Xiping Song and Leon J. Osterweil. Toward objective, systematic design-
method comparisons. IEEE Software Journal, VOL 9 issue 3, 1992.
[43] Hirotaka Takeuchi and Ikujiro Nonaka. The new new product development
game. Jan 1986.
98
BIBLIOGRAPHY BIBLIOGRAPHY
99