From The Rational Edge: As a major update of IBM Rational’s six best practices for software development, this summary description articulates a new set of principles that characterize a mature approach to the creation, deployment, and evolution of software-intensive systems.

Adapt the process

  • Benefits: Lifecycle efficiency, open/honest communication of risks.
  • Pattern: Precision and formality evolve from light to heavy over the project lifecycle as uncertainties are resolved. Adapt the process to the size and distribution of the project team, to the complexity of the application, and to the need for compliance. Continuously improve your process.
  • Anti-patterns: Precise plans/estimates, track against static plan management style. More process is better. Always use the same degree of process throughout the lifecycle.

Balance competing stakeholder priorities

  • Benefits: Align applications with business and user needs, reduce custom development, and optimize business value.
  • Pattern: Define and understand business processes and user needs; prioritize projects and requirements and couple needs with software capabilities; understand what assets you can leverage; and balance user needs and reuse of assets.
  • Anti-patterns: Achieve precise and thorough requirements before any project work begins. Requirements focus the drive toward a custom solution.

Collaborate across teams

  • Benefits: Team productivity, better coupling between business needs, and the development and operations of software systems.
  • Pattern: Motivate people to perform at their best. Collaborate cross-functionally across analysts, developers, and testers. Manage evolving artifacts and tasks to enhance collaboration and progress/quality insight with integrated environments. Ensure that business, development, and operations teams work effectively as an integrated whole.
  • Anti-patterns: Nurture heroic individuals and arm them with power tools.

Demonstrate value iteratively

  • Benefits: Early risk reduction, higher predictability, trust among stakeholders.
  • Pattern: Adaptive management using an iterative process. Attack major technical, business, and programmatic risks first. Enable feedback by delivering incremental user value in each iteration.
  • Anti-patterns: Plan the whole lifecycle in detail, track variances against plan. Detailed plans are better plans. Assess status by reviewing specifications.

Elevate the level of abstraction

  • Benefits: Productivity, reduced complexity.
  • Pattern: Reuse existing assets, reduce the amount of human-generated stuff through higher-level tools and languages, and architect for resilience, quality, understandability, and complexity control.
  • Anti-patterns: Go directly from vague high-level requirements to custom-crafted code.

Focus continuously on quality

  • Benefits: Higher quality and earlier progress/quality insight.
  • Pattern: Team responsibility for end product. Testing becomes a high priority given continuous integration of demonstrable capabilities. Incrementally build test automation.
  • Anti-patterns: Postpone integration testing until all code has been completed and unit-tested. Peer-review all artifacts, rather than also driving partial implementation and testing, to discover issues.