1 / 51

Feature Driven Development using VSTS and Cognizant FDD templates

Feature Driven Development using VSTS and Cognizant FDD templates. Santosh Shindhe Sr. Architect | Cognizant Technology Solutions. Agenda. Software development is not easy Expectations Development model Feature Driven Development Model Cognizant’s FDD Cognizant’s FDD and VSTS. Agenda.

keola
Download Presentation

Feature Driven Development using VSTS and Cognizant FDD templates

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Feature Driven Development using VSTS and Cognizant FDD templates Santosh Shindhe Sr. Architect | Cognizant Technology Solutions

  2. Agenda • Software development is not easy • Expectations • Development model • Feature Driven Development Model • Cognizant’s FDD • Cognizant’s FDD and VSTS

  3. Agenda • Software development is not easy • Expectations • Development model • Feature Driven Development Model • Cognizant’s FDD • Cognizant’s FDD and VSTS

  4. Software development is not easy

  5. Software development is not easy • Software development organization • Many development methodologies • Various infrastructure and tools • Project management • Changing and unclear requirements • Communication challenges • Effort variation • Involves people

  6. Agenda • Software development is not easy • Expectations • Development model • Feature Driven Development Model • Cognizant’s FDD • Cognizant’s FDD and VSTS

  7. Product Manager or Client I would like to see progress constantly & frequently I would like to know what can be shipped tomorrow My budget might allow me to do work for next 6 months My current requirement is different than what I had earlier

  8. Project Manager I have to provide status How can I show constant progress? Can I be more accurate when it comes to estimation? Can I adopt change in requirements? Let me be ready in case developer A is not in office for next 3 days Who can tell me exact status of a feature?

  9. Architect Can we check the response time for application, at least for a scenario? Are the coding guidelines for security standards met? Let me check the code complexity Adhere to the architecture and design guidelines, here is the reference document

  10. Developer When did this requirement come, I did not know I have already performed unit testing, it’s just that I don’t know how can I show it Well, I feel it may take 4 days, not sure though Was I suppose to do it?!!! It may impact component A and B, can I tell you tomorrow?

  11. Tester Every time I have to customize the test report, it’s a along process Wish there was easy way for me to generate test data Wish I could trace this bug to a feature easily Can I automate testing?

  12. Team How can we get better at what we do? Can we repeat the same process again, it has produced good results earlier? I think there are many people and changes in plan and status is not reaching to all. It would be good if I can see the status every day or regular interval without waiting for one to prepare it.

  13. Agenda • Software development is not easy • Expectations • Development model • Feature Driven Development Model • Cognizant’s FDD • Cognizant’s FDD and VSTS

  14. Ingradiants of Model • Process • People • Tools • Infrastructure • Technology • Budget

  15. Inefficient model

  16. Good model

  17. Essentials of good model • Can blend well with organization process • Allows customization • Focuses on repeatability, consistency and predictability • Designed for people and project • Can act as early litmus test to identify failure • Allows correction based on recent on-project experience

  18. Agenda • Software development is not easy • Expectations • Development model • Feature Driven Development Model • Cognizant’s FDD • Cognizant’s FDD and VSTS

  19. Feature Driven Development • Uses small client-valued functions called “features” • Can be implemented in 2-3 weeks • Enables inspection, tracking & reporting, course correction

  20. FDD - Model • Consists of model for the product • Has requirements, use cases and story board at large

  21. FDD – Feature list • Requirements are translated into features • The features are ordered and prioritized for realization • Related features can be grouped in feature-set

  22. FDD – Plan • Delivery plan is based on features • Teams are formed based on feature and technology need

  23. FDD – Design • Features are designed progressively • Design has to ensure existing implementation is not tarnished

  24. FDD – Build • Development happens based on features • Progress is reported based on features

  25. FDD – Delivery • It is iterative process involving delivery of feature in 2-3 weeks span of interval • Delivery aims at shippable product consisting of a feature or a feature set consisting of features

  26. Agenda • Software development is not easy • Expectations • Development model • Feature Driven Development Model • Cognizant’s FDD • Cognizant’s FDD and VSTS

  27. Why FDD? • Development model can be used along with Agile or classic life cycle process • Allows incremental, repeatable and progressive outcomes • Can be applied for small to large scale development teams • Allows traceability of feature against a requirement • Can be customized for custom business software development

  28. Cognizant FDD Extension • The design and implementation of a feature should not upset the overall structure • Component are also based on design, layers, tiers apart from model. These should focus on NFRs as well. • Large scale development teams are usually role based. • In ideal scenario developer need not understand the business extensively (most scalable model)

  29. Cognizant FDD Extension… • Solution more often requires integration with other systems that may not be based on ideal model • Provided a model is defined first, the subsequent development can be iterative and better predictable • Change management and bug reporting is part of development • Additional support for CMM-5 process support and roles

  30. Cognizant FDD Extension…

  31. Definition phase activities

  32. Cognizant FDD Process Flow

  33. Cognizant FDD Process Flow… • Requirements: Functional and non-functional requirements are gathered and used as input for next stage • Feature List: Domain model and functional requirements are the key drivers. Related features may be grouped in to feature-set • Definition: Functional requirements as input for model, NFRs as input for architecture definition. Together result in architecture and high level design. Fundamental framework is ready. • Plan by feature: Similar to any project management, only difference is it’s focused on features

  34. Cognizant FDD Process Flow… • Certify By Feature: QA certifies again functional, NFRs and integration with earlier developed features • Build By Feature: Developer writes code using detailed design along with unit test cases • Design by feature: Details requirement analysis and expansion. Detailed design including method signature and contracts is defined. • Component outside feature are not touched or modified by feature owner • On need basis stubs might be created • Marks the iterative process

  35. Cognizant FDD Process Flow… • Change Request: Unforeseen requirements. These go back to design to ensure integrity • Bugs: Goes back to design similar to change management except the requirements have not changed. • Client Valued Functions: A potentially shippable product, not a prototype. • Release: Multiple features are grouped and are ready for release based on project plan

  36. Cognizant FDD and users • Architect – define architecture and high level component model definition • Domain expert – conduct domain walkthrough and guide developers • Feature owner – translate features to requirements and interact with developers to complete feature • Designer – preparation of high level design for all services and detailed design for features along with code reviews

  37. Cognizant FDD and users… • Developer – implement the application and unit testing • Tester – assess requirements testability, create/manage test plan and test cases. Certify feature qualification for release • Project manager – planning, scheduling, monitoring progress and reporting. Will prioritize requirements based on customer interaction

  38. Agenda • Software development is not easy • Expectations • Development model • Feature Driven Development Model • Cognizant’s FDD • Cognizant’s FDD and VSTS

  39. Why VSTS and TFS? • Infrastructure for development • Easy process and tools blend • Familiar set of tools • Increased Transparency • Collaboration platform • Support for distributed teams • Real time reporting & Risk analysis • End-to-end ALM process customization possibilities including builds and quality

  40. Key technical reasons • Source code manage • Unit testing • Code profiling • Code coverage • Static analysis • Database testing • Test data generation • Manual testing • Web Testing • Load testing

  41. Cognizant FDD on VSTS

  42. Cognizant FDD on VSTS… • Methodology database – repository of all databases • Work items database – work items of Cognizant FDD and attributes • Reports – out of the box common FDD related reports • Team portal – customized process guidance along with templates like architecture, design for reference. • Visual Studio – templates for role based process workflow and messages

  43. New project and Cognizant FDD • Initial tasks • Work item types and behavior (states and transition) • Groups and permissions • Queries • Reporting site • Team portal with document templates, process guidance & web parts for reports • Source control repository

  44. State transition - feature work item

  45. State transition – Change work item

  46. DEMO Work items Code profiling Code complexity Build Feature work item Change work item Reports

  47. VSTS inherent features & FDD • Shelving – in general helps in backing up of code on server without check-in. Used along with FDD can help in reviews by shelving feature code. • Build – automation enables keeping builds ready for verification as well as to create potentially shippable product • Multiple solution files – help in getting only what is required by a feature team • Team project – helps in isolating focused development groups

  48. References • Cognizant FDD http://www.cognizant.com/html/content/microsoft/techfddvsts.asp • Customizing process templates http://msdn.microsoft.com/en-us/library/ms243782.aspx • TFS Guide http://www.codeplex.com/TFSGuide

  49. Feedback / QnA • Your Feedback is Important! Please take a few moments to fill out our online feedback form • Use the Question Manager on LiveMeeting to ask your questions now!

  50. Contact • Email Address santosh.shindhe@cognizant.com

More Related