Continuous Feature  Development
What is feature ?
“A set of clients expected  functional behaviors”
Feature development ?
“Incrementally building expected functional      behaviors”
Why it is continuous ?•   Client’s expectation changed•   Business changed•   User’s perception changed•   Competitive adv...
Yes! That’s why we callContinues Feature Development
Continuous Feature Development              Challenges ?•   Integrating new feature•   Maintaining existing stability•   M...
How we are managing them ?
we leave the brokensystem  alone and let the    client shout on us.
Really!YES!, due to client’s fault sincethey pushed and wanted faster           release
How about you guys ?  May be ? Not always!
How it should be (buzz words) ?•   Acceptance test driven development•   Test Driven Development•   Behavior Driven Develo...
How we are practicing instead!
#1 Collecting acceptance criteria•   Know what exactly client wants•   Ask lotta questions to get full picture•   Ask for ...
Available tools•   Pivotal tracker – http://pivotaltracker.com/•   You can use any issue tracker•   Trello Board - http://...
#2 Test first development        ’Loginwith valid email and password it should say Login successful it should create user ...
Available PHP solutions• BDD framework  – Cuke4php http://rubygems.org/gems/cuke4php  – Behat http://behat.org/  – PHPUnit...
BDD using Behat 1Feature: ls In order to see the directory structure As a UNIX user I need to be able to list the current ...
BDD using Behat 2class FeatureContext extends BehatContext{  /**   * @Given /^I am in a directory "([^"]*)"$/   */  public...
Unit test using PHPUnitclass ArrayTest extends PHPUnit_Framework_TestCase {   public function testNewArrayIsEmpty() {     ...
#3 Don’t say “Hello it’s done” without           running all tests
Available PHP solutions• Almost all standard IDEs  – PhpStorm  – NetBeans  – Eclipse
#4 Code in feature branch NOT in                    master!• Master (Main code stream)  – Branches     • Fix_bug_with_vali...
Example using GIT• Create new branch  – $ git branch < branch name >• Checkout specific branch  – $ git checkout < branch ...
#5 Code review
Available solutions• Github provides pull request based code  review – http://github.com• Retrospectiva -  https://github....
#6 Maintain production branch         FeaturesMasterFeatures                     Production                     Branch
#7 Use staging server• Deploy in staging server first• Run test suites• If not passes test go through  – Fix again – write...
#8 Continuous Integration                                         CI ser ver                   Code repositor yDevBuild fa...
Available PHP solutions• Jenkins - http://jenkins-ci.org/• phpUnderControl -  http://phpundercontrol.org/• Xinc - http://c...
#9 Ensure revertible deployment
Let’s summarize our talk• #1 Collecting acceptance criteria• #2 Test first development• #3 Don’t say “Hello it’s done”  wi...
I guess that’s all for today !      Thanks for joining us.
Who are we ?nafi ul karim                    nhm tanveer hossainsenior software engineer,        khan (hasan)somewhere in…...
Upcoming SlideShare
Loading in …5
×

Continuous feature-development

2,092 views

Published on

This is about encouraging our audience about known good practices. let them introduced why continuous feature development is essential and why that adds value over following rigid processes.

Published in: Technology
1 Comment
4 Likes
Statistics
Notes
  • full of colourful moments! i loved it. :)
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
2,092
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
33
Comments
1
Likes
4
Embeds 0
No embeds

No notes for slide
  • Explain about client
  • Offline businessOnline businessBranded clothingAll these occurs development
  • Continuous feature-development

    1. 1. Continuous Feature Development
    2. 2. What is feature ?
    3. 3. “A set of clients expected functional behaviors”
    4. 4. Feature development ?
    5. 5. “Incrementally building expected functional behaviors”
    6. 6. Why it is continuous ?• Client’s expectation changed• Business changed• User’s perception changed• Competitive advantages• Rebranding
    7. 7. Yes! That’s why we callContinues Feature Development
    8. 8. Continuous Feature Development Challenges ?• Integrating new feature• Maintaining existing stability• Maintaining new development• Making sure of seamless integration• Managing trust
    9. 9. How we are managing them ?
    10. 10. we leave the brokensystem  alone and let the client shout on us.
    11. 11. Really!YES!, due to client’s fault sincethey pushed and wanted faster release
    12. 12. How about you guys ? May be ? Not always!
    13. 13. How it should be (buzz words) ?• Acceptance test driven development• Test Driven Development• Behavior Driven Development• Continuous Integration
    14. 14. How we are practicing instead!
    15. 15. #1 Collecting acceptance criteria• Know what exactly client wants• Ask lotta questions to get full picture• Ask for mockup• Split story into several acceptance criteria• For example – User wants to login – Which user ? – any user – Requires what ? – user id and password – How many attempts ? – probably 3
    16. 16. Available tools• Pivotal tracker – http://pivotaltracker.com/• You can use any issue tracker• Trello Board - http://trello.com• Trac (or any wiki)• Or notepad
    17. 17. #2 Test first development ’Loginwith valid email and password it should say Login successful it should create user sessionwith wrong email address it should say ‘unsuccessful login it should not create user sessionwith wrong password it should say ’unsuccessful login it should not create user session
    18. 18. Available PHP solutions• BDD framework – Cuke4php http://rubygems.org/gems/cuke4php – Behat http://behat.org/ – PHPUnit http://bit.ly/9McVAs• Unit testing framework – PHPUnit http://www.phpunit.de/ – SimpleTest http://simpletest.org/
    19. 19. BDD using Behat 1Feature: ls In order to see the directory structure As a UNIX user I need to be able to list the current directorys contents Scenario: List 2 files in a directory Given I am in a directory "test" And I have a file named ”file1.txt" And I have a file named ”file2.txt" When I run "ls" Then I should get: """ file1.txt file2.txt
    20. 20. BDD using Behat 2class FeatureContext extends BehatContext{ /** * @Given /^I am in a directory "([^"]*)"$/ */ public function iAmInADirectory($dir) { if (!file_exists($dir)) { mkdir($dir); } chdir($dir); }} Source - http://docs.behat.org/quick_intro.html
    21. 21. Unit test using PHPUnitclass ArrayTest extends PHPUnit_Framework_TestCase { public function testNewArrayIsEmpty() { $fixture = array(); $this->assertEquals(0, sizeof($fixture)); } public function testArrayContainsAnElement() { $fixture = array(); $fixture[] = Element; $this->assertEquals(1, sizeof($fixture)); }} Source - http://www.phpunit.de/manual/3.2/en/writing-tests- for-phpunit.html
    22. 22. #3 Don’t say “Hello it’s done” without running all tests
    23. 23. Available PHP solutions• Almost all standard IDEs – PhpStorm – NetBeans – Eclipse
    24. 24. #4 Code in feature branch NOT in master!• Master (Main code stream) – Branches • Fix_bug_with_validation • Add_xyz_module • Migrate_to_php_5_3
    25. 25. Example using GIT• Create new branch – $ git branch < branch name >• Checkout specific branch – $ git checkout < branch name >• Update branch from master – $ git rebase master
    26. 26. #5 Code review
    27. 27. Available solutions• Github provides pull request based code review – http://github.com• Retrospectiva - https://github.com/dim/retrospectiva• Trac code review module• Crucible - http://www.atlassian.com/software/crucible/ overview• http://code.google.com/p/gerrit/
    28. 28. #6 Maintain production branch FeaturesMasterFeatures Production Branch
    29. 29. #7 Use staging server• Deploy in staging server first• Run test suites• If not passes test go through – Fix again – write supporting test – deploy in staging server - Retest – Human test
    30. 30. #8 Continuous Integration CI ser ver Code repositor yDevBuild failedBuild successful Staging/ test/ qa ser ver
    31. 31. Available PHP solutions• Jenkins - http://jenkins-ci.org/• phpUnderControl - http://phpundercontrol.org/• Xinc - http://code.google.com/p/xinc/
    32. 32. #9 Ensure revertible deployment
    33. 33. Let’s summarize our talk• #1 Collecting acceptance criteria• #2 Test first development• #3 Don’t say “Hello it’s done” without running all tests• #4 Code in feature branch NOT in master• #5 Code review• #6 Maintain production branch• #7 Use staging server• #8 Continuous Integration• #9 Ensure revertible deployment
    34. 34. I guess that’s all for today ! Thanks for joining us.
    35. 35. Who are we ?nafi ul karim nhm tanveer hossainsenior software engineer, khan (hasan)somewhere in… head of technology,nafi@somewherein.net somewhere in… founder, www.khadok.com hasan@somewherein.netpassion – new stuffs,diversity on work,challenges, learning new work for fun!things, open to all languages. Code on rails, java, node.js, php

    ×