Better Software Magazine Articles

Incremental and Iterative Development

People get wrapped around the axle trying to understand the difference between incremental and iterative development. The Unified Process authors in the 1990s didn't help by indiscriminately calling everything iterative development. The two are different and must be managed differently. Successful teams do both at the same time, usually without thinking about it. Then someone starts thinking about it and does one without the other. Bad news follows.

Alistair Cockburn's picture Alistair Cockburn
Learning the Hardware Lessons

Systems and software aren't just about correctness; they are also about solving problems for people. According to the context-driven software testing movement, a problem isn't solved if the product doesn't work. Michael's experience in a hardware store drives that lesson home.

Michael Bolton's picture Michael Bolton
How Much Is Enough?—Exploring Exploratory Software Testing

Exploratory testers design and execute tests in the moment, starting with an open mission and investigating new ideas as they arise. But how do we know when to stop? The first step is to recognize that we can't know when we're done, because any approach to answering the stopping question is necessarily heuristic.

Michael Bolton's picture Michael Bolton
What's In a Word?

Evolution of a word's meaning through common misuse is a reality of human communication. In the software industry, by using the phrase quality assurance to refer to what is more properly called quality control (i.e., testing), we may have lost our ability to answer the question "does our process work?"

Antony Marcano's picture Antony Marcano
Mind the Gap

The requirements composition table is an effective technique comprising six steps that will help you assess an application's test coverage and identify gaps in your test suite even if you don't have any software requirements specifications.

Yuri Chernak's picture Yuri Chernak
Software Development Worst Practices

While some debate which, if any, industry practices deserve the designation "best practices," this tongue-in-cheek look at the horrors of some of software's "worst practices" drives home the value of the good ones and may help us improve the quality of our software.

Gregory pope12's picture Gregory pope12
The Other Side of Complexity

Software development has always been an exercise in managing complexity because there appears to be no end to the problems to which we can apply automatic computation. It has progressed as a discipline as good minds have created abstractions that transform that complexity into simplicity.

Chuck Allison's picture Chuck Allison
Designing Reusable Software

For software to be reusable, it must be usable in a variety of contexts, and an important attribute of reusability at the code level is genericity. Learn more about defining for reuse and using generics.

Chuck Allison's picture Chuck Allison
The Hawthorne Effect

Ever wondered what productivity experiments on factory workers in the early twentieth century have in common with today's adoption of agile practices? Lee sheds some light on the "process of process" and the importance of retrospectives as catalysts for change.

Lee Copeland's picture Lee Copeland
New and Improved: Get User Buy-In on Process-Improvement Initiatives

When these information architects were assigned to a team that was struggling to achieve CMMI Level 2, they found little user buy-in for the new processes. Find out how introducing user-centered design to the project got everyone involved in the design process and increased the users' satisfaction in the end product.

Ember R. DeBoer's picture Ember R. DeBoer


AgileConnection is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.