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
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!