Choosing the Right SDLC For Your Project

p>Choosing the right SDLC (Software Developmentproject manager is responsible for an overall project
Lifecycle) methodology for your project is asplan which defines the deliverables for each phase,
important to the success of the project as theand a detailed iteration plan which manages the
implementation of any project management bestdeliverables and tasks belonging to each phase. The
practices. Choose the wrong software methodologypurpose of the iterations is to better identify risks
and you will add time to the development cycle.and mitigate them.
Adding extra time to the development cycle willRUP is essentially a cross between Scrum and
increase your budget and very likely prevent youwaterfall in that it only applies an iterative approach
from delivering the project on time.to project phases where the most benefit can be
Choosing the wrong methodology can also hamperderived from it. RUP also emphasizes the architecture
your effective management of the project and mayof the system being built. The strengths of RUP are
also interfere with the delivery of some of theits adaptability to different types of projects. You
project's goals and objectives. Softwarecould simulate some of the aspects of a Scrum
development methodologies are another tool in themethod by making all 4 phases iterative, or you could
development shop's tool inventory, much like yoursimulate the waterfall method by choosing to avoid
project management best practices are tools in youriterations altogether. RUP will be especially useful to
project manager's tool kit. You wouldn't choose ayou when you have some familiarity with the
chainsaw to finish the edges on your kitchen cabinettechnology but need the help of Use Cases to help
doors because you know you wouldn't get theclarify your requirements. Use Cases can be
results you want. Choose your softwarecombined with storyboarding when you are
methodology carefully to avoid spoiling your projectdeveloping a software system with a user interface
results.to simulate the interaction between the user and the
I realize that not every project manager can choosesystem. Avoid using RUP where your team is very
the software methodology they will use on everyfamiliar with the technology and the system being
project. Your organization may have invested heavilydeveloped and your product owners and users don't
in the software methodology and supporting toolsneed use cases to help clarify their requirements.
used to develop their software. There's not muchRUP is one of those methodologies that your
you can do in this case. Your organization won't lookorganization is very likely to have invested heavily in.
favorably on a request to cast aside a methodologyIf that's your situation, you probably don't have the
and tools they've spent thousands of dollars onauthority to select another methodology but you can
because you recommend a different methodologytailor RUP to suit your project. Use iterations to
for your project. We'll give you some tips on how toeliminate risks and unknowns that stem from your
tailor some of the methodologies to better fit withteam's unfamiliarity with the technology or the
your project requirements later in this article. In thesystem, or eliminate iterations where you would
meantime, before your organization invests inotherwise use the waterfall method.
software development methodologies you, or yourJAD
PMO, ought to be consulted so that at least aJoint Application Development, or JAD, is another
majority of projects are benefited from a good fit.methodology developed by IBM. It's main focus is on
This article won't cover every SDLC out there butthe capture and interpretation of requirements but
we will attempt to cover the most popular ones.can be used to manage that phase in other
Scrummethodologies such as waterfall. JAD gathers
Scrum is a name rather than an acronym (which isparticipants in a room to articulate and clarify
why I haven't capitalized the letters), although somerequirements for the system. The project manager is
users have created acronyms, and is commonly usedrequired for the workshop to provide background
together with agile software development. Scrum isinformation on the project's goals, objectives, and
typically chosen because of its iterative nature and itssystem requirements. The workshop also requires a
ability to deliver working software quickly. It isfacilitator, a scribe to capture requirements,
chosen to develop new products for those reasons.participants who contribute requirements, and
There is typically no role for a project manager in thismembers of the development team whose purpose
methodology, the 3 key roles are: the scrum masteris to observe.
(replacing the project manager), the product owner,JAD can be used to quickly clarify and refine
and the team who design and build the system.requirements because all the players are gathered in
There is only one role that you would be asked toone room. Your developers can avert
play if your organization is committed to using thismisunderstandings or ambiguities in requirements by
methodology, scrum master. If you should determinequestioning the participants. This method can be used
that this would actually be the best methodology forwith just about any software methodology. Avoid
your project, you'll have to re-examine your role asusing it where the organization's needs are not clearly
project manager. You can either identify a suitableunderstood or on large, complex projects.
scrum master and return to the bench, or fill the roleRAD
of scrum master.RAD is an acronym for Rapid Application
Scrum suits software development projects whereDevelopment uses an iterative approach and
its important for the project to deliver workingprototyping to speed application development.
software quickly. Scrum is an iterative methodologyPrototyping begins by building the data models and
and uses cycles called sprints, to build a workingbusiness process models that will define the software
system. Requirements are captured in a "backlog"application. The prototypes are used to verify and
and a set of requirements is chosen with the help ofrefine the business and data models in an iterative
the product manager. Requirements are chosencycle until a data model and software design are
based on 2 criteria: the requirement takes priorityrefined enough to begin construction.
over others left in the backlog and the set ofThe purpose of RAD is to enable development
requirements chosen will build a functioning system.teams to create and deploy software systems in a
During the sprint, which can last from 2 to 4 weeksrelatively short period of time. It does this in part by
maximum, no changes can be made to thereplacing the traditional methods of requirements
requirements in the sprint. This is one of the reasonsgathering, analysis, and design with prototyping and
that a project manager isn't necessary for thismodeling, the prototyping and modeling allow the
methodology. There is no need for requirementsteam to prove the application components faster
management because no changes are allowed to thethan traditional methods such as waterfall. The
requirements under development. All changes mustadvantage of this method is it facilitates rapid
occur in the requirements set in the backlog.development by eliminating design overhead. It's
Scrum will be suitable for software developmentdisadvantage is that in eliminating design overhead it
projects where the product is a new softwarealso eliminates much of the safety net which
product. By new I mean that it is new to theprevents requirements from being improperly
organization undertaking the project, not in general.interpreted or missed altogether.
The methodology was developed to address a needRAD is suitable for projects where the requirements
for a method to build software when its necessaryare fairly well known in advance and the data is
to learn on the fly, not all requirements are known toeither an industry or business standard, or already in
the organization and the focus is on delivering aexistence in the organization. It is also suitable for a
working prototype quickly to demonstrate capabilities.small development team, or a project where the
You need to be careful when choosing requirementssystem can be broken down into individual
to deliver in each sprint to ensure that the setapplications that require small teams. RAD is not
developed builds a software system that is capablesuitable for large, complex projects or projects
of demonstrating the feature set supporting thewhere the requirements are not well understood.
requirements included.LSD
You also need to ensure that these requirements areLean Software Development, or LSD, applies the
well known and understood as no changes areprinciples of waste reduction from the manufacturing
allowed once the sprint starts. This means that anyworld to the business of developing software. The
changes to the requirements must come through agoal of LSD is to produce software in 1/3 the time,
new set of requirements in the backlog makingon 1/3 the budget, and with 1/3 the defects of
changes to these requirements very expensive.comparable methods. Lean does this by applying 7
This methodology divides stakeholders into 2 groups:principles to the endeavor of software development:
pigs and chickens. The inventors of this methodology1. Eliminate waste
chose this analogy based on the story of the pig and2. Amplify Learning (both technical and business)
the chicken - it goes something like this. A pig and a3. Decide on requirements as late as possible
chicken were walking down the road one morning4. Deliver as fast as possible
and happened to notice some poor children who5. Empower the team
looked like they hadn't eaten for days. The6. Build integrity
compassionate chicken said to the pig: "Why don't7. See the whole
we make those children a breakfast of ham andAlthough Lean Manufacturing has been around for
eggs?" The pig said: "I'm not happy with yoursome time, its application to the process of
suggestion. You're just involved in making thedeveloping software is relatively new so I wouldn't
breakfast, I'm totally committed!" The point to this iscall it a mature process.
the product owner, scrum master, and team are all inLSD would be a suitable method to use where you
the "pig" group. All others are in the "chicken" group.have a subject matter expert in the method who
You will be in the "chicken" group if you choose thehas some practical experience in applying lean
Scrum methodology as a project manager.methods to a software development project.
Waterfall"Amplified" learning implies that your development
Waterfall methodology calls for each phase of theteam has a depth of knowledge in the software
development cycle to be repeated once only.tools provided, and also a breadth of knowledge that
Requirements will be gathered and translated intoincludes an understanding of the business needs of
functional specifications once, functional specificationsthe client. LSD would be suitable for a project where
will be translated to design once, designs will be builtthe development team has these attributes.
into software components once and the componentsLSD depends on a quick turnaround and the late
will be tested once. The advantage of thisfinalization of requirements to eliminate the majority
methodology is its focus. You can concentrate theof change requests, so will not be suitable for a
effort of all your analysts on producing functionalproject where a delayed finalization of requirements
specifications during one period rather than have thewill have a poor chance of eliminating change
effort dispersed throughout the entire project.requests, or the size and complexity of the system
Focusing your resources in this way also reduces thebeing developed would prevent a quick turnaround.
window during which resources will be required.Extreme Programming (XP)
Programmers will not be engaged until all theExtreme programming places emphasis on an ability
functional specifications have been written andto accommodate changes to requirements
approved.throughout the development cycle and testing so
The disadvantage of this approach is its inability tothat the code produced is of a high degree of quality
teach the project team anything during the project.and has a low failure rate in the field. XP requires the
A key difference between the waterfall approachdevelopers to write concise, clear, and simple code to
and an iterative methodology, such as Scrum or RUP,solve problems. This code is then thoroughly tested
is the opportunity to learn lessons from the currentby unit tests to ensure that the code works exactly
iteration which will improve the team's effectivenessas the programmer intends and acceptance tests to
with the next iteration. The waterfall methodology isensure that the code meets the customer's needs.
an ideal methodology to use when the project teamThese tests are accumulated so that all new code
has built software systems very similar to the onepasses through them and the chances for a failure in
your project is to deliver and has nothing to learnthe field are reduced.
from development that would improve theirXP requires the development team to listen carefully
performance. A good example of a project whichto the needs and requirements of the customer.
would benefit from the waterfall methodology is aAmbiguities will be clarified by asking questions and
project to add functionality to a system the projectproviding feedback to the customer which clarifies
team built in the not too distant past. Anotherthe requirements. This ability implies a certain degree
example of an environment that is well suited to theof familiarity with the customer's business; the team
waterfall methodology is a program to maintain awill be less likely to understand the customer's needs
software system where a project is scheduled forif they don't understand their business.
specific periods to enhance the system. For example,The intent of XP is to enhance coding, testing, and
an order and configuration software system which islistening to the point where there is less dependency
enhanced every 4 months.on design. At some point it is expected that the
The waterfall methodology does not lend itselfsystem will become sufficiently complex so that it
particularly well to projects where the requirementsneeds a design. The intent of the design is not to
are not clearly understood at the outset. Iterativeensure that the coding will be tight, but that the
approaches allow the product owners or uservarious components will fit together and function
community to examine the result of building a sub-setsmoothly.
of requirements. Exercising the sub-set ofXP would be a suitable software development
requirements in the iteration's build may cause themethod where the development team is
product owners or user community to re-examineknowledgeable about the customers business and
those requirements or requirements to be built. Youhave the tools to conduct the level of testing
won't have that opportunity with the waterfallrequired for this method. Tools would include
method so you need to be certain of yourautomated unit testing and reporting tools, issue
requirements before you begin the build phase.capture and tracking tools, and multiple test
Interpreting requirements into functionality is not theplatforms. Developers who are also business analysts
only aspect of development that can benefit from anand can translate a requirement directly to code are
iterative approach. Designing the system and buildinga necessity because design is more architectural than
it can also benefit from doing these activitiesdetail. This skill is also required as developers
iteratively. You should use the waterfall methodimplement changes directly into the software.
when your team is familiar with the system beingXP won't be suitable where the development team
developed and the tools used to develop it. Youdoes not possess business analysis experience and
should avoid using it when developing a system forwhere testing is done by a quality assurance team
the first time or using a completely new set of toolsrather than by the development team. The method
to develop the system.can work for large complex projects as well as
RUPsimple smaller ones.
The Rational Unified Process, or RUP, combines anThere is no law that states you must choose one or
iterative approach with use cases to govern systemthe other of these methodologies for your software
development. RUP is a methodology supported byproject. The list I've given you here is not a totally
IBM and IBM provides tools (e.g. Rational Rose) thatcomprehensive list and some methodologies don't
support the methodology. RUP divides the projectappear on it (e.g. Agile) so if you feel that there is
into 4 phases:some other methodology that will better suit your
1. Inception phase - produces requirements, businessproject, run with it. You should also look at combining
case, and high level use casessome of the features of each of these methods to
2.Elaboration phase - produces refined use cases,custom make a methodology for your project. For
architecture, a refined risk list, a refined businessexample, the desire to eliminate waste from the
case, and a project planprocess of developing software is applicable to any
3. Construction phase - produces the systemmethod you choose and there is likely waste that
4. Transition phase - transitions the system fromcould be eliminated in any development shop.
development to productionBe careful to choose a methodology that is a good
RUP also defines 9 disciplines: 6 engineering disciplines,fit for your team, stakeholders, and customer as well
and 3 supporting disciplines: Configuration and Changeas your project. Bringing in a new development
Management, Project Management, and environmentmethodology that your team will struggle to learn at
so is intended to work hand in hand with projectthe same time they are trying to meet tight
management best practices.deadlines is not a good idea. On the other hand, if
Iteration is not limited to a specific project phase - ityou have the latitude you may want to begin learning
may even be used to govern the inception phase,a new method with your project.
but is most applicable to the construction phase. The