Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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,266 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
  • full of colourful moments! i loved it. :)
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

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

×