Monday, August 25, 2014

Test Drive on Driven Development process

Software Development process

•A software development process or life cycle is a structure imposed on the development of a software product.
•Six phases involved 
         - Requirements
         - Design
         - Development
         - Testing
         - Documentation
         - Maintenance

Traditional Development Process



Common misconception:
•TDD/ATDD is NOT about testing!!

Test Driven Development
•Short development iterations
•Based on requirements and unit test cases
•Necessary code to pass the test cases
•Refactor


Benefits-Test Driven Development
•Stability
•Necessary code to pass the test cases
•Refactor
•Cut rework
•Reduce bugs

Drawbacks-Test Driven Development
•Programmers like to code, not to test
•Big time investment
•Additional Complexity
•Effectiveness depends on developers

Behavior Driven Development
•User stories
•Ubiquitous language
•Format:
            - Given[context]
            - When[event]
            - Then[outcome]
•Power of 3
Examples-Behavior Driven Development 
A new frequent flyer starts off with Bronze status.
If she earns 300 points, she becomes a Silver Frequent Flyer. 

BDD solution:

Scenario: New members should start out with Bronze status
Given: Jill Smith is not a frequent flyer member
When: she registers on the frequent flyer program
     Then: she should have a Bronze status

Benefits-Behavior Driven Development 
•Deliver more valuable software
•Faster & Reliable releases
Reduced maintenance costs

Challenges- Behavior  Driven Development
•Writing good scenarios takes practice
Requires high business engagement and collaboration

Feature Driven Development
 Short iterations
•Developing by Feature
•Color coded UML
•Delivers frequent, tangible working results at all steps

Color coded UML
Yellow – Person / Organization
Blue – Description
Green – Place/ Thing
Pink - Time






Benefits-Feature Driven Development
•Bigger Projects
•More novice developers
•Critical projects

Drawbacks-Feature Driven Development
•Not as powerful on smaller projects
•High reliance on chief programmer

Acceptance Test Driven Development
Crystallize acceptance criteria
Develop right product


Example:
As an administrator, I want users creating accounts to be required to choose secure passwords so that their accounts cannot be hacked by someone using a password guessing program.



Benefits- Acceptance Test Driven Development 
 Avoid misunderstood requirements
•Thorough product testing
•Earlier defect detection

Drawbacks-Acceptance Test Driven Development
•Time constraint
•Getting entire team to follow the process
•Project progress may be slow due to additional work

No comments:

Post a Comment