Jonathan Kohl relates an intriguing experience with a slippery bug that convinced his team of the value of exploratory testing: simultaneous test design, execution, and learning.
At the surface, user stories appear to have much in common with use cases and traditional requirements statements. However, there are many subtle differences among them and many advantages to user stories, especially for agile development projects.
Agile development sounds great; what could go wrong? Matt Heusser examines some of the myths, mysteries, and classic mistakes in Agile development, including some things to consider before jumping into Agile with both feet.
Agile software development is based on "telling stories." In this sample chapter, you'll learn about user roles, role modeling, user role maps, and personas. You'll also find out how taking these initial steps leads to better stories and better software.
This chapter describes seven properties set up by the best teams. Crystal Clear requires the first three. Better teams use the other four properties to get farther into the safety zone. All of the properties aside from osmotic communication apply to projects of all sizes.
So what does it feel like to develop software according to plan-driven or agile methods? In this chapter we try to portray the activities in a typical day on a software development project as performed by a plan-driven, PSP/TSP-trained team and by an agile, XP-trained team.
The testing phase of software development often gets short shrift by developers and IT managers. Yet testing is the only way to determine whether an application will function properly before it is deployed. In this article, Sue Hildreth offers an overview of the why and how of software testing.
There are always exceptions to the rule, right? In Java, those exceptions allow a clean break from normal program flow in the event of an exceptional situation. They're not used for program flow interruption, but for program flow branching, which can sometimes lead to difficult-to-maintain code. Marcus Zarra walks you through several best practices for using exceptions in Java.
There are five main constraints in software development management people, time, functionality, budget, and resources which all must be protected from uncertainty. Uncertainty manifests itself when the unplanned happens. David J. Anderson explains how a system can absorb uncertainty with the provision of buffers, and how and when these buffers should be used.
Iterative and evolutionary development is a foundation not only of modern software methods, but of methods used as far back as the 1960s. Agile methods are a subset of iterative and evolutionary methods. This chapter summarizes key practices of iterative and evolutionary software development.
This chapter provides helpful information on using aspect-oriented programming to develop security components for distributed applications. The effectiveness of AOP technology is demonstrated with two application-level security problems that illustrate the utility of this technology.
Throughput Accounting can be generally applied for the management, control, and reporting of any system. Throughput Accounting is appropriate for managing general systems because it focuses on Throughput, which is the desired adaptive behavior of the system.
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.