Specification-Driven Development

A scalable methodology for distributed development
Paul Unterberg, TechExcel Inc

• The software ecosystem has grown and become more complex • Teams are distributed • Design and implementation must occur in parallel

Software Development in the 21st Century

A typical software project
•Design •Plan •Coding •QA Testing •Coding •QA Testing

•Design •Plan

• • • • •

Challenges for Modern Development

Growth (new offices, new developers) Need to quantify designs Enforce standards Account for customer feedback Process needs to balance design and implementation • …Is Agile development the solution?

What is Agile Development?
A conceptual framework for undertaking software engineering projects that embraces and promotes evolutionary change throughout the entire life-cycle of the project

The Basics of Agile
• Customers list and prioritize requirements • Development team delivers increments of software to meet specified requirements • Customers can add, delete or re-prioritize requirements at any time • Each increment can be used for project review

Challenges of agile
• Agile mainly implemented with smaller, localized teams
– Growth can happen faster than agile rollout

• Developers may not correctly understand business requirements
– Needed to maintain customer satisfaction

• Dependant on constant communication
– Multiple sites, multiple teams, multiple countries

• SpecDD is a scalable Agile-derivative • SpecDD provides a conceptual framework • SpecDD balances high-level management and design with low level development methodologies • SpecDD promote iterative development techniques coupled with best practices

SpecDD: Specification-driven development

SpecDD Tenants
• Application development is represented by two concurrent processes: Design and Implementation • Business logic always dictates the correct way for software to function • Requirements can be formally represented to form the “Conceptual Product” • The “Conceptual Product” drives and guides the engineering processes to develop, test and finalize the “Implemented Product” • Comparing the “Implemented Product” with the “Conceptual Product” can accurately measure the potential of a product

Managing Design
• SpecDD manages a product design by breaking it down into 3 areas. • Concept: What could we do? • Strategy: What will we do? • Planning: How will we do it?

Managing Implementation
• Implementation focuses on execution of decisions made by the design team. • Development: Architecture Design, Programming, etc. • Validation: Functional Testing, Usability Testing, Bug Fixing, etc. • Delivery: Release Management, Documentation, etc.

The Designed Product
• The designed product evolves through development of three key data elements • Knowledge: Documents, intellectual property, or digital assets • Requirements: Descriptions of how a feature will work, what it will look like, and how it should be built • Specifications: A developmentfriendly summary of a set of

Specifications, Knowledge, and Requirements
New XML Import Layer SSL v. 3.0 Support Tabbed Browsing CSS Layout Editor

Improve Top Level GUI Saved Bookmarks File

Security
Data Exchange Memory Usage

Crash on Reload Button Slow response on Save

User Interface
Menu Settings Navigation User Preferences

Complete Product Design

XML Import Layer Tabbed … Browser

Requirement A Requirement B Requirement C Requirement D Requirement E

Improve Top Level GUI Saved Bookmarks File … Coding Standards Windows API Changes

Reload Button Behavior Slow response on Save Load Preferences …

The Planned Product
• Project managers build a plan based on a set of specifications • Work is broken down into different areas • Resources are assigned to each specification within an area of work • Estimates on time from design are used to for initial duration of each area of work

SpecDD Project Plan

• Work items are created within each area of work as child tasks for a specification • Work items follow a definable, low level development process • Data from the implementation rolls up into the project plan, giving accurate timescales for implementation

Building the “implemented product”

Implementation Tasks and the Open Workflow Lifecycle (OWL) Model• Definable Workflow
States • Definable Transitions (and Who Can Perform) Definable Ownership Rules (Applicable Owners) Definable Field Rules for States and Transitions (Mandatory, ReadOnly, Invisible)

A sample implementation workflow

Implementation Team Representation

Creating a “tested product”
• Regression, usability, and performance tests must be tied to specifications • Test plans must be executed by both manual teams and automated testing tools • Traceability exists through the specifications down to the test plans and test tasks

Specifications allow for disciplined change
• A change to the specification (implementation logic) can occur at anytime within the development process or to its linked requirements (business logic) • Changes include revisions to documents, designs, and diagrams • Changes can be tracked for associated cost, time, and affected development and

Achieving Scalability
• Specifications allow different teams to collaborate
– Core teams provide business logic and technical logic – Implementation teams can execute the technical logic based on business designs – A disciplined change process enables large teams to work together

• Specifications can also be split based on a team’s skill, workload, or effort estimates

Achieving Agility
• Specification-driven Development can solve the problems of Agile:
– “Conceptual product” evolves through each iteration – Results of each iteration can reference conceptual product models – Rapid analysis leads to more effective practices – Enables customers to easily understand revised designs and their implications – More effective face-to-face communication between business and development though knowledge sharing

DevSuite: An implementation of SpecDD

• SpecDD Walkthrough using DevSuite

Thank You
• For more information about SpecDD or DevSuite, visit www.techexcel.com