You are on page 1of 9

Applying Agility To The

Parallel Software Development Lifecycle

Senad Cimic
Computer Science Department
North Dakota State University
1301 12th Avenue North - Fargo, ND 58105
senad.cimic@ndsu.edu

Abstract
In this paper we take a closer look at one of the largest problems in the software
development processes – ability to adopt changes in the requirements at any stage of
development. Although parallel software development is designed to satisfy these
requirements, some of the problems still remain. The idea of applying some of the most
widely used software development models (such as agile and prescriptive models) to the
parallel model in order to make it more suitable for ongoing development and to increase
speed of development is introduced.
1 Introduction
In the software development world, software development organizations need to choose
which software methodology is going to be used when developing a software product. All
of the common methodologies have their advantages and disadvantages when it comes to
process management, adopting changes in requirements, ability in going back to previous
steps of development without major problems, etc. In this paper we, will compare the
characteristics of some of the most widely used software development methodologies
(agile and prescriptive models) and decide which one could be implemented in the
parallel model in order to improve it. These two models differ in many ways, and the
application of both models in certain cases may be impossible.

One the major challenges in the software development lifecycle is the change in the
requirements. In certain projects where requirements are not 100 percent defined, most
likely at some point of the lifecycle, some requirements may get changed or new ones
could be introduced. To satisfy this assumption that software development is ongoing
process, a new model has been introduced – Parallel Process Development Lifecycle
(discussed in next section).

When choosing which software development model to follow, organizations are not
limited to using a single model at the time, but instead two or more models can be
combined. Because of the problem of ongoing development, even after the release, and
the problem of having tight deadlines for release, we examine if some of the commonly
used methodologies could be applied in the parallel development in order to improve the
ability of modifying product in any stage and increasing the speed of development. The
following sections overview the characteristics of parallel model and compare agile and
prescriptive models when dealing with the problem of ongoing change in requirements.

2 Overview of Parallel Development


This model was originally created to give ability to software development organizations
to be able to continue development for as long the product is in use. Parallel development
is the type of development in which there are four main processes (requirements,
development, quality assurance, and management), which are overlapped and executed
simultaneously and sequentially (shown in Figure 1).

Requirements are the process of gathering required features from end users and
determining technical requirements under which the software must operate. Solution
Development is the process of design, implementation, and unit testing of the delivery
software. In this model coding often begins while requirements are still unsettled. The
Quality Assurance process is involved in the selection of criteria for acceptance as well as
the techniques for testing. This process also includes the actual testing and quality
assessment of the software product to deliver. Management is concerned with making
sure the appropriate resources are available and well utilized in order to complete the
production of the software product.

1
Parallel Software Development also identifies two additional parallel lines that exist in
addition to the above mentioned four lines of activities: Configuration management and
documentation. Configuration management in software development is defined as, “set
of activities designed to control change by identifying the work products that are likely to
change, establishing relationships among them, defining mechanisms for managing
different versions of these work products, controlling the changes imposed, and auditing
and reporting on the changes made,”(Pressman, 2005). Configuration management in
Parallel Software development is no different than other software development lifecycle
methods. It aims to control and manage change in a software development project.
Documentation in a software development project is likewise similar to all other software
development lifecycle methods where information that either needs to be shared
internally with other teams or externally with the end users is written down and kept and
ultimately should be under configuration management in order to track the changes in the
document artifacts created during the software development project.

Figure 1: Parallel Model

3 Change of Requirements in Prescriptive Models


Introducing new requirements in the prescriptive models is highly undesirable and very
expensive. For example, the waterfall process handling of the changing requirements is
not advised as this model starts of with a well understood requirements document. There
is scope for going back to implement the changes however it will prove to be expensive
both with time and money wise. In the incremental model the iterations of linear phases

2
are compromised. Even though the requirements are well defined, the product is
delivered in iterations and hence addition of functionality is possible, but limited. Rapid
Application Development (RAD) emphasizes a short development cycle. It is high speed
adaptation of waterfall model. Communication, planning and modeling serve as basis for
the construction activity. Different RAD teams work on different modules and hence to
combat to the changing requirements proves to be costly affair. There are also some
proscriptive models that provide more functional and inexpensive way to deal with this
problem. For example, prototyping model assists the customer and the software engineer
to better understand what to build when requirements are fuzzy. The prototyping iteration
is planned quickly and modeling occurs. The customer feedback is used to refine the
requirements for the software. Ideally, the prototype serves as a mechanism for
identifying software requirements.

4 Change of Requirements in Agile Models


One of the main attributes of the agile development models welcome change of
requirements, even late in programming - Extreme Programming (XP) for example. Since
the agile models in general develop working software frequently, the customer is able to
actively participate in development by analyzing the current release and deciding weather
or not it satisfies particular requirements. In case the customer introduces any new
requirements, those requirements are presented to the developers and are put in a
particular format (stories in XP, basic requirements in ASD, backlog – Scrum) and will
be implemented in the one of the next increments. All of the agile models continuously
build up by implementing new requirements to their working software products. These
requirements are used to create acceptance tests which next release has to pass. If the
story is changed after the acceptance test was created according to that story, then the
acceptance test also has to be changed in order to meet new requirement. Once the
current release passes acceptance tests, the process goes back to the start phase (planning
phase in XP, speculation phase in ASD, etc.) in order to produce the next increment. This
means that in agile models the software is developed in cycles. After one round of
requirements is satisfied and we have a working prototype ready to collect customer
feedback, the process goes back at the beginning of the cycle. Customer provides instant
feedback on the latest release by introducing, changing, modifying, or removing
requirements. The development team then reconsiders all remaining releases and
modifying its plan accordingly, so that set of new requirements is satisfied in the next
increments.

Overall, the agile methods really prove to generally deal better with changing
requirements than the prescriptive methods. However, some prescriptive methods such as
prototyping can also introduce new or changed requirements very sufficiently. In all of
those methods that resolve this problem, customer involvement is intense and continuous.
This means that the customer is present on development site and works together with the
team in specifying requirements during whole development, or customer is provided with
some kind of working product (prototype, increment, etc.) and gives his/her feedback.

3
The philosophy in this case is simple – the more the customer is involved the more
current requirements the product will satisfy.

5 Modifying Parallel Development


As earlier mentioned, the combination of more that one model is possible as a software
development model, but not all of the models can be implemented in some cases. In this
particular case, agile and prescriptive models are being considered for the implementation
in the parallel model. Since the prescriptive models assume that all of the requirements
are predefined, and approach software development as a linear process, it contradicts the
nature of parallel methodology where more than one process is executed simultaneously.
On the other side, agile and parallel model have more attributes in common, such as both
models can adopt new requirements and are able to continue with the development even
after the release of the product. The following section examines how the agility could be
implemented in the parallel model of software development, and what are the resulting
advantages and disadvantages.

6 Using Agility in the Parallel Development

6.1 Implementation
The main question when applying agile concepts to any model is which concepts should
be applied and where? The agile method that will be applied to the Parallel Model will be
XP.

The Requirements process will remain same – there will still be requirements specialists
closely working with customers in defining customer and technical requirements.
However, instead of placing requirements in the requirements specification documents
they should be separated in smaller pieces (in shape of stories), which would be passed to
the development teams. After the prototypes are released, they would be evaluated from
the customers’ side, meaning that elicitation techniques would expand into the
development.

XP model substitutes documentation with working models, and gives the developing
team control of its own destiny. In order to successfully implement XP in the parallel
process, managers should give more freedom to the developers, and there should be no
emphasis on the documentation, but on prototypes (working software) instead.

In the development process the XP fundamentals will also apply. There will still remain
design, coding, and unit testing for each story, but instead of having developers working
directly with customer developers will receive finished stories describing what needs to
be implemented. Developers will work in pairs that would be changed frequently, and as

4
their code passes the unit tests, it will be passed to Quality Assurance phase for
immediate integration testing, and pair shall receive another story to work on.

Quality assurance will also mostly remain unchanged. In the agile development,
prototypes are usually released about every two to six weeks, and therefore before every
release the prototype should pass the integration testing before presented to the
customers. Using the parallelism would mean that the integration testing starts together
with the development. The demand of parallel development that prioritize team to find
and fix defects, completing essential features and fixes immediately and postponing less
essential ones will still be satisfied by using agility. Because of this, software
development is broken into smaller projects, each with small requirement set and a short
development cycle, for which the agile methodology could be applied.

By having requirements’ specialists defining stories, developing units based on those


stories using XP, and at the same time performing integration testing, the development
time will be reduced. Documentation in this case will be eliminated, which will also
reduce development time and cost. Managerial interaction will also be reduced, but not
eliminated. The development team should still report the progress and other relevant
information to the managers; however the development team should operate
independently.

Requirements
Stories

XP Pairs Develop &


Unit test

Integration Testing

Configuration Management

Management (limited supervision)

Figure 2: Parallel Model using XP

The figure above shows the simplified result when XP is applied as discussed to the
Parallel Model. Development is done in cycles, while other three main processes remain
linear. Documentation is eliminated, while the Configuration Management remains, but
the working software is primarily used in this process.

5
6.1.1 Advantages of Applying XP to Parallel Model

One of the most obvious advantages of applying XP in discussed model is the ability to
change or introduce requirements during the whole process. Since the documentation is
eliminated and management control reduced, the personnel number is reduced bringing
the cost down.

Another major advantage is increasing the speed of the whole process. Because code is
being integrally tested as delivered to Quality Assurance, the product is virtually finished
when all the requirements are gathered from the customer (since those requirements are
immediately processed and implemented).

By having developers work in pairs that are frequently changed, the knowledge of
individuals is spread among other team members. Because of this, developers’
performance improves at higher paste.

6.1.2 Disadvantages of Applying XP to Parallel Model

Since the development team is given freedom and responsibility in this model, the
emphasis has to be on the motivated and qualitative individuals that should be able to
also perform certain managerial tasks, which is not always the case. Managerial role is
reduced, and therefore managing the whole process is a hard task.

Eliminating documentation also has negative side effects. Creating new software based
on the existing one that was created using this model would become extremely difficult
because there is no documentation, but prototypes instead.

6.2 Releases and Prototyping in Parallel Development


In parallel system where the agility is being used, instead of dividing development phases
between teams, projects should be divided by related features into releases, and have one
team (or pair if using Extreme Programming) perform all phases for one release, while
other teams are working on the other releases. By implementing this fundamental of
agility to the parallel systems, there is less emphasis on maintenance, and is simply faster
and cheaper to reimplement successive versions rather than to maintain them. This ability
is very important if it is expected for the requirements to change.

The other advantage of using this approach is satisfying the demands of time-to-market
compression. In competitive software market the products are pushed out the door as
soon as possible. Those products need to be faster and with higher quality than their
earlier versions, and rapidly releasing prototypes in parallel development enables rapid
introduction of new features because it is highly responsive and adaptive. Because of this,
an organization can dynamically reprioritize requirements according to the current needs

6
and delicately slip features that prove to be problematic without holding up other critical
functions.

Rapid prototyping also improves customer-developer communication because it focuses


on an operational artifact. There are two main types of prototypes: design and production
prototypes. Design prototypes can help finalize requirements and design issues and are
discarded after the software is built. In the parallel development where agility is being
applied, design prototypes are not as needed since the emphasis is not on well defined
and understood requirements. Production prototypes are efficient enough to support live
operation. Component-based development is enabling the use of production prototyping
to rapidly develop production systems. Both types are very useful in defining and
understanding poorly defined requirements. Such problems arise in high-speed agile
development because users aren’t often sure what they want. Production prototyping
crystallizes requirements and reveals design issues, enabling customers to be involved
actively. Customers often find that position very awarding, and the development team
reaches the coding stage quickly. As the entire upcoming customer requirements are
being satisfied in the releases, by the time all requirements are defined, software product
is nearly finished.

When the agility is applied to the parallel development developers can’t rely on a formal
specification and are capturing requirements only informally in user stories, which can
cause production prototyping to be costly. It can involve a fair amount of rework in
changing operational software systems to match shifting customer needs. Prototyping can
also lead to larger than needed focus on user interface, giving short attention to important
computational aspects. Critical requirements like security, scalability, and robustness are
hard to appraise through prototyping.

One of the other disadvantages of the constantly releasing prototypes with new features is
that users might need additional training in order to be able to use new functionalities.
Another drawback is that large, complicated revisions are nearly impossible to
contemplate. The limited scope of requirements might lead to scalability problems, e.g.
many small components could introduce overhead that becomes overwhelming at high
volume.

6.3 Customer Implementation


Customer implementation is a typical agile practice in which high speed development
teams often enlist customers or users either as full time or temporary, assigning them as a
part of the team. Its fundamentals are very similar to prototyping, but in this case
customer interaction is even more intense. As developers construct the software from
informally specified requirements and customer-developer discussions, customers
prioritize requirements and redirect development, release-by-release. In the addition to all
the advantages of the prototyping, customer implementation also helps to refine the
requirements. In the high-speed development requirements can also be changed because
of the evolving of market place and technology. This turbulence often leads developers to

7
avoid formally documenting requirements, because they see such activity as unnecessary
overhead. Detailed requirements analysis delays the development team’s response to
rapidly changing market conditions. Also, when using this approach in parallel
development, the customer is privileged. Developers receive an instant feedback on
creative new features. The approach also rapidly moves the latest customer needs into the
system, which prevents the risk of building yesterday’s systems for tomorrow.

The disadvantages of the using customer implementation are similar like in prototyping;
it is assumed that users know what they want, but it is rarely the case. Many customers or
users do not think consistently and systematically about their day-to-day problems.
Because of this, developers must routinely bound customer requirements against the
quality that the delivered product can achieve.

7 Summary
In this paper the possibility of applying agile methodology to the parallel development in
order to increase ability of developing product before and after its release was discussed.
Agile methods such as XP and parallel model can easily be implemented together,
because their emphasis is on the same thing – being able to adopt new requirements.
Some of the common used agile methods such as customer interaction in the incremental
software releases can also be used in the parallel software development. By implementing
XP model to the parallel model, the development process would use the fundamentals of
parallel model (having more than one process executed at a time) and use discussed XP
fundamentals which would reduce the cost and increase the speed of the development.
The most important problem of being able to adopt changes in any stage of development
is also resolved.

References
Baskerville, R. & colleagues (2003). Is Internet-Speed Software Development Different?
IEEE Software, 20(6), 70-77.

Beck, K. (2000). Extreme Programming Explained: Embrace Change. Boston: Addison-


Wesley.

McConnel, S. C. (1996). Rapid Development: Taming Wild Software Schedules.


Redmond: Microsoft Press.

Boehm, B. (2002, January). Get Ready for Agile Methods, with Care. Computer, 15(2),
64-69.

Pressman, R. S. (2005). Software Engineering: A Practitioner’s Approach. New York:


McGraw Hill.

You might also like