Key Principles For Business-Driven Development
The Principles herein characterize the industry's best practices in the creation, deployment, and evolution of software-intensive systems. Each Principle is described by providing a Pattern of application, summarizing its Benefits and warning against opposite strategies or Anti-Patterns.
Relationships
Main Description

Software development is a team sport. Ideally, the activity involves well-coordinated teams working within a variety of disciplines that span the software lifecycle. But it's not science, and it isn't exactly engineering, either -- at least not from the standpoint of quantifiable principles based on hard facts. Software development efforts that assume you can plan and create separate pieces and later assemble them, like you can in building bridges or spacecraft, constantly fail against deadlines, budgets, and user satisfaction.

In the absence of hard facts, we must therefore rely on software development techniques we call best practices, the value of which we have demonstrated repeatedly in our customer engagements. Rather than prescribing a plan-build-assemble sequence of activities for a software project, they describe an iterative, incremental process that steers development teams toward results.

The Rational Unified Process six tried-and-true best practices have been the basis for the evolution of our Rational's tools and processes for more than a decade. Today, as software development is becoming a key business capability, our best practices are maturing within the larger context of business-driven development. The following principles re-articulate our best practices for the broader lifecycle of continuously evolving systems, in which the primary evolving element is software. They are:

Each page included herein presents one of the above principles, emphasizing:

  • The benefits derived from applying the principle,
  • The pattern of behavior that best embodies the principle, and
  • The most recognizable "anti-patterns" or behaviors contrary to the  principle, that can harm software development projects.