Session Title Session Sub Title (optional)

Download this Presentation

0

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 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. Feature List: Domain model and functional requirements are the key drivers. Related features may be grouped in to feature-set Plan by feature: Similar to any project management, only difference is it’s focused on features
  • 34.Cognizant FDD Process Flow… 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 Build By Feature: Developer writes code using detailed design along with unit test cases Certify By Feature: QA certifies again functional, NFRs and integration with earlier developed features
  • 35.Cognizant FDD Process Flow… Release: Multiple features are grouped and are ready for release based on project plan Client Valued Functions: A potentially shippable product, not a prototype. 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.
  • 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.Work items Code profiling Code complexity Build Feature work item Change work item Reports DEMO
  • 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
  • 51.