530 likes | 846 Views
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.
E N D
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 • Software development is not easy • Expectations • Development model • Feature Driven Development Model • Cognizant’s FDD • Cognizant’s FDD and VSTS
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
Agenda • Software development is not easy • Expectations • Development model • Feature Driven Development Model • Cognizant’s FDD • Cognizant’s FDD and VSTS
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
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?
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
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?
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?
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.
Agenda • Software development is not easy • Expectations • Development model • Feature Driven Development Model • Cognizant’s FDD • Cognizant’s FDD and VSTS
Ingradiants of Model • Process • People • Tools • Infrastructure • Technology • Budget
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
Agenda • Software development is not easy • Expectations • Development model • Feature Driven Development Model • Cognizant’s FDD • Cognizant’s FDD and VSTS
Feature Driven Development • Uses small client-valued functions called “features” • Can be implemented in 2-3 weeks • Enables inspection, tracking & reporting, course correction
FDD - Model • Consists of model for the product • Has requirements, use cases and story board at large
FDD – Feature list • Requirements are translated into features • The features are ordered and prioritized for realization • Related features can be grouped in feature-set
FDD – Plan • Delivery plan is based on features • Teams are formed based on feature and technology need
FDD – Design • Features are designed progressively • Design has to ensure existing implementation is not tarnished
FDD – Build • Development happens based on features • Progress is reported based on features
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
Agenda • Software development is not easy • Expectations • Development model • Feature Driven Development Model • Cognizant’s FDD • Cognizant’s FDD and VSTS
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
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)
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
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
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
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
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
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
Agenda • Software development is not easy • Expectations • Development model • Feature Driven Development Model • Cognizant’s FDD • Cognizant’s FDD and VSTS
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
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
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
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
DEMO Work items Code profiling Code complexity Build Feature work item Change work item Reports
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
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
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!
Contact • Email Address santosh.shindhe@cognizant.com