Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Development
A scalable methodology for
distributed development
Paul Unterberg, TechExcel Inc
Software Development in the
21st Century
• The software ecosystem has grown
and become more complex
• Teams are distributed
• Design and implementation must
occur in parallel
A typical software project
•Design •Coding
•Plan •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: Specification-driven
development
• 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 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 development-
friendly summary of a set of
Specifications, Knowledge, and
Requirements
Requirement A
XML Import Layer Requirement B
Tabbed Requirement C
…
Browser Requirement D
Requirement E
Coding Standards
Reload Button Behavior
Slow response on Save Windows API
Load Preferences Changes
…
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
Building the “implemented
product”
• 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
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, Read-
Only, 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