Requires Free Membership to View
When you register, you'll receive targeted emails designed to keep you informed of the most relevant information on Agile development, application security, testing & QA, software requirements, and more.
Hannah Smalltree, Editorial DirectorIf you want to build quality software, most experts these days say you should use an agile
development model or method. However, many still believe traditional models have benefits. And
others say even if you use an agile method, that doesn't guarantee you'll produce a quality
product.
Each model has its own practices for building quality software. It is up to software makers and
their development teams to determine which model best fits their needs and to follow its practices
so that they can deliver software on time that meets users' needs and is bug-free.
To help you decide which model or combination of models is right for you, we've gathered these
articles, tips, books and other resources about the main software development models. You'll learn
what their main philosophies are, their benefits and downsides, and how companies are using them to
create quality software.
Are there other topics you'd like to see learning guides on? Send me an e-mail and let me know
what they are.
-- Michelle
Davidson, Site Editor.
TABLE OF CONTENTS
- Basics/Fundamentals
- Traditional Models (Waterfall, V-Model, spiral)
- Agile
- Scrum
- Extreme Programming (XP)
- Rational Unified Process (RUP)
- Test-Driven Development (TDD)
- More Helpful Resources
| Basics/Fundamentals |
[Return to Table of Contents]
There is no absolutely perfect software development model or process. Proponents say each has its
own benefits. But by comparing them you can determine which model -- or combination of models -- is
best for your project.
- Which
development method is right for your project?
We can debate the pros and cons of one development process over another until we're blue in the face, but the simple fact is that we will never declare a true winner. There simply is no silver bullet development process that will help every development team deliver every product on time and on budget. This article provides a brief overview of three development processes and when they are most appropriate. -
- Software
quality development and assurance in RUP, MSF and XP: A comparative study (PDF)
This study compares three of the most industrially relevant software development process models (Rational Unified Process (RUP), Microsoft Solution Framework (MSF) and Extreme Programming (XP)) regarding their software quality support in terms of software quality development and software quality assurance. Based on the results, the writers propose a de-facto standard for quality support in software development process models. -
- Iterative vs. waterfall
software development: Why don't companies get it?
Why, given that iterative and incremental approaches dominate the literature, does business remain so wedded to the waterfall approach to software development? After much reflection and research, this author attempts to explain. -
- Introducing an
agile process to an organization (PDF)
The transition from a plan-driven process to an agile process affects not only the development team members, but also other teams, departments and management. This article describes common pitfalls and effective approaches to making this change.
| Traditional Models |
[Return to Table of Contents]
Traditional software development models such as Waterfall,
V-Model and spiral
aren't highly regarded these days and are considered to be ineffective. However, many companies
still use them and say they have benefits.
- Arguments for
the waterfall model
While many would say the waterfall model is ineffective and outdated, some still say it is well-suited for software projects that are stable and where "it is possible and likely that designers will be able to fully predict problem areas of the system and produce a correct design before implementation is started." -
- Understanding
the pros and cons of the waterfall model of software development
Waterfall development is a software development model involving a phased progression of activities, marked by feedback loops, leading to the release of a software product. This article provides a quick and dirty introduction to the model, explaining what it is, how it's supposed to work, the six phases and why the model can fail. -
- Waterfall development for new
managers
There are many development methodologies to choose from, and new managers often struggle when deciding which to use. This article says waterfall development, while it has its shortcomings, is popular among new managers because it's straightforward and it facilitates project management. -
- The V-Model (PDF)
This paper provides an overview of the V-Model, describing the basic concepts, its submodels and its advantages and disadvantages compared with other development methods. -
- The spiral model as
a tool for evolutionary acquisition (PDF)
This paper provides definitions of a set of six spiral model Essentials or critical success factors for spiral development. It illustrates each with examples, identifies the hazardous look-alikes to avoid, and provides guidelines for using the spiral model in support of evolutionary acquisition.
| Agile |
[Return to Table of Contents]
Agile
software development is a methodology for the creative process that anticipates the need for
flexibility and applies a level of pragmatism into the delivery of the finished product. It focuses
on keeping code simple, testing often and delivering functional bits of the application as soon as
they're ready.
- Agile
development best for delivering products on target
If you want your application to truly meet your users' needs, you must use an agile development methodology. That's the point Venkat Subramaniam from Agile Developer and Neal Ford from ThoughtWorks stressed during their presentations at the Fifth Annual TheServerSide Java Symposium. -
- Agile
methods bring improved software quality, but challenges remain
Early benchmarking results of agile development methods such as Extreme Programming (XP) and Scrum projects show productivity and quality improvements, but time/scope pressures remain the biggest challenges to project success. Software metrics and estimation expert Michael Mah sat down with SearchSoftwareQuality.com to discuss the improvements seen and what factors can still negatively affect a project. -
- The
state of software quality, part 2: The challenge of building quality into the development life
cycle
Organizations are adopting lighter-weight development methodologies and agile development styles to address software quality issues, as well as bringing testing into the development process. -
- Role
of testing in agile projects
Agile development emphasizes the role of testing in the software development process. Here are some guidelines to testing within the agile methodology. -
- Secure
agile software development an oxymoron?
Can you be agile and secure? That's the dilemma agile software developers face as they build flexible, responsive applications. But it is possible, according to Dan Cornell, principal at the Denim Group. Some compromises just need to be made. -
- Agile quality: A
canary in a coal mine (video presentation)
Scrum co-creator Ken Schwaber discusses how a degrading core code base paralyzes a team and negates any agility gained through process improvement. He proposed strategies for management to identify, track and stop this downward spiral. -
- Quality in an agile world
(PDF)
In this article Scott Ambler outlines how agile methodologies and improve software quality and what effect the use of agile has on traditional quality assurance roles. -
- Agile
software testing in a large-scale project (PDF)
This case study of a large Extreme Programming project provides quantitative and qualitative data to show that agile software testing does work. -
- Agile outsourcing: Testing and
quality assurance
In this column, the author explores how agile methodologies offer probably the smoothest way to ensure a balance between testing and quality assurance. He also explores some typical problems that arise in testing and quality assurance and how agile methodologies address them effectively. -
- Agile
development and software quality
Learn how the agile development process played an integral part in repairing a configuration issue this company's users experienced. -
- Book:
Agile Software Development Quality Assurance
This book provides the research and instruction used to develop and implement software quickly, in small iteration cycles, and in close cooperation with the customer in an adaptive way, making it possible to react to changes set by the constant changing business environment.
| Scrum |
[Return to Table of Contents]
Scrum
is an agile software development model based on multiple small teams working in an intensive and
interdependent manner. The model employs real-time decision-making processes based on actual events
and information. This requires well-trained and specialized teams capable of self-management,
communication and decision-making. The teams in the organization work together while constantly
focusing on their common interests.
- Agile
software development with Scrum (PDF)
In this FAQ, Scrum co-creator Ken Schwaber answers just about every question you may have about using Scrum. -
- The
state of software quality, part 2: The challenge of building quality into the development life
cycle
Organizations are adopting lighter-weight development methodologies and agile development styles to address software quality issues, as well as bringing testing into the development process. -
- Diving into
the scrum to make things happen
Learn how Wizard Information Services adapted Scrum to develop its own agile methodology called Scrum Agile Methodology (SAM). -
- Project management and Scrum: A side
by side comparison (PDF)
This paper compares traditional waterfall project standards and deliverables with those in Scrum, as well as looks at the differences between the project manager's role and that of the Scrum Master. -
- Best practices in
Scrum project management and XP agile software development (PDF)
This white paper explains how Primavera Systems, a vendor of project portfolio management solutions, turned around its development organization using Scrum and Extreme Programming. -
- When is Scrum not
Scrum?
In this blog posting, Tobias Mayer talks about how some of the Scrum principles originally stated are outdated and it's time to take another look at what practices are more effective. -
- Increased
visibility when using Scrum (excerpt from Agile Software Development with Scrum)
Ken Schwaber and Kane Mar argue that Scrum can be combined with XP engineering practices to generate a significant impact on the productivity of a project team. This article details a project in which this theory was put to work successfully. -
- Book:
Agile Software Development with Scrum
Readers will learn how Scrum cuts through the complexity and ambiguity of complex, emergent requirements and unstable technology to iteratively and quickly produce quality software. -
- Conventional
Software Testing on a Scrum Team (Excerpt from Agile Software Development
Ecosystems)
The Scrum methodology can pose a challenge for software testers who are used to more traditional waterfall-inspired development processes. Jonathan Kohl relates his experiences working on Scrum teams who found some clear advantages in changing their methods.
| Extreme Programming (XP) |
[Return to Table of Contents]
Extreme
Programming (XP) is a pragmatic approach to program development that emphasizes business
results first and takes an incremental, get-something-started approach to building the product,
using continual testing and revision.
- Extreme
Programming (XP) quality
Where does quality fit in XP? Ryan Lowe explains in this blog posting. -
- The quality of requirements
in Extreme Programming
This paper describes and evaluates the quality of requirements generated by an ideal group using XP and discusses how the XP process can assist or hinder proper requirements engineering. -
- Towards
reconciling quality and agility in Web application development
This paper empirically addresses the tension between quality and agility (speed) in Web application development, describing a set of software disciplines that were added to Extreme Programming to improve Web software quality without sacrificing development agility. -
- Case Study: The quest for quality,
an offshore project experience
In this case study you'll see how StarSoft Labs used XP with a twist to bring its defect rate down while keeping good velocity and implementing changes rapidly. -
- Improve competitive quality with extreme
programming
Excellent quality in a software product is a competitive advantage. Citect's adoption of Extreme Programming shows how thinking a new way about managing a project and a team pays off. -
- Embracing fun: Why
Extreme Programming is great for game development
Using XP you can keep projects flexible, which allows you to easily change the direction of a game and find the fun gameplay. -
- An
adventure in Extreme Programming
Learn how a team of IBM developers used XP to deliver a software component for a large middleware product as part of a larger, traditional development project. How XP impacted the success of the project, the deliverables, and the interaction between team members, colleagues, and the customer, are also discussed. -
- Best practices in Scrum project management and XP agile software development (PDF) This white paper explains how Primavera Systems, a vendor of project portfolio management solutions, turned around its development organization using Scrum and Extreme Programming.
-
- Book:
eXtreme Programming eXplained
Kent Beck's eXtreme Programming eXplained provides a high-level overview of the author's Extreme Programming (XP) software development methodology. Written for IS managers, project leaders or programmers, this guide provides a glimpse at the principles behind XP and its potential advantages for small- to midsize software development teams.
| Rational Unified Process (RUP) |
[Return to Table of Contents]
Rational
Unified Process (RUP) is an object-oriented and Web-enabled program development methodology.
According to Rational (developers of Rational Rose and the Unified
Modeling Language), RUP is like an online mentor that provides guidelines, templates, and
examples for all aspects and stages of program development.
- A manager's introduction
to the Rational Unified Process (RUP)
This white paper overviews the Rational Unified Process (RUP), an evolutionary software development process. -
- Rational
Unified Process: Best practices for software development teams (PDF)
Here's another overview of the Rational Unified Process. This one describes six best practices, the various phases, the core workflows, and integration with tools. -
- Fortune
500 title insurance company improves IT quality with the Rational Unified Process
A Fortune 500 title insurance company suffered from increasing maintenance costs for their existing change management and requirements tracking products. To improve things, it adopted the Rational Unified Process (RUP) and Rational Suite and it turned to Amentra to implement and customized development methodology based on RUP and to mentor the company's employees in the use of this methodology. -
- Agile modeling and the
Rational Unified Process (RUP)
This article discusses how agile modeling can be used in conjunction with the various instantiations of the Unified Process (UP), including but not limited to the RUP and the Enterprise Unified Process (EUP). Topics include how modeling works in the Unified Process, how good is the fit between agile modeling and RUP and adopting agile modeling on a UP project. -
- Book: The
Rational Unified Process Made Easy: A Practitioner's Guide to Rational Unified Process
The Rational Unified Process Made Easy will teach you the key points involved in planning and managing iterative projects, the fundamentals of component design and software architecture, and the proper employment of use cases. All team members -- from project managers to analysts, from developers to testers -- will learn how to immediately apply the RUP to their work. -
- RUP in the
dialogue with Scrum
Learn how software development teams can add Scrum ideas to an existing RUP environment.
| Test-Driven Development (TDD) |
[Return to Table of Contents]
Test-driven development (TDD) is
a software development technique that involves repeatedly first writing a test case and then
implementing only the code necessary to pass the test.
- Getting started with
test-driven development
According to this article, the right tools will get you on the right track with TDD. -
- Test-driven development, a
portable methodology
The practice of TDD is becoming so widespread that no developer can afford to avoid learning it. Discover the pros and cons of the methodology and what tools are available. -
- Improving application
quality using test-driven development (TDD) -- Part 1
Learn what test-driven development is, what TDD frameworks and tools are available, and how it can improve software quality. -
- Improving application
quality using test-driven development (TDD) -- Part 2
Part 2 in this series walks you though how to conduct a test using NUnit. Plenty of screenshots and details are included. -
- Is
software becoming more testable?
Software testing and validation hasn't advanced much recently, although test-driven development (TDD) has made software more testable. One innovation in particular, model-based testing, is making waves. -
- Test-driven development in
.NET
This article presents the benefits and techniques for using test-driven development in .NET. -
- Test-driven
development with Visual Studio 2005 Team System
Doug Seven introduces you to test-driven development and shows you how to incorporate this design methodology into you daily coding habits using Visual Studio 2005 Team System. -
- Test-driven development
in Python
Jason Diamond demonstrates test-driven development in Python with PyUnit. -
- Test-driven C#:
Improve the design and flexibility of your project with extreme programming techniques
This article provides a comprehensive description of test-driven development, introduces the NUnit tool and compares TDD with traditional development techniques.
| More Helpful Resources |
| Expert advice on software process models and methodologies Do you have a question about using a certain software development model? Bas de Baar, our site expert on software process models and methodologies may have the answer. Read advice he has given or submit your own questions. |
- Manifesto for Agile Software Development
Learn about the principles of agile software development and the authors of the manifesto. -
- Agile Thoughts Blog
Tobias Mayer, a freelance agile consultant and trainer, offers his thoughts on agile software development. -
- Testdriven.com
This site is dedicated to promoting techniques, tools and general good will in the test-driven community. -
- Scrum Alliance
This nonprofit organization provides articles, news, training information and other resources on Scrum. -
- Scrum Log by Jeff Southerland
Jeff Sutherland, co-creator of Scrum, posts regularly about Scrum software development. -
- XProgramming.com
XProgramming.com is a resource for information about Extreme Programming (XP), featuring articles about the state of XP, techniques, tips, and experience reports.
Send in your suggestions
Are there other topics you'd like to see learning guides on? Send SearchSoftwareQuality.com's
editors an e-mail at editor@searchsoftwarequality.com
and let them know what they are.
This was first published in March 2007