Professional Documents
Culture Documents
1 of 12
http://www.c-sharpcorner.com/UploadFile/shivprasadk/1234671231200...
Introduction
This article is a quick FAQ of Agile. By reading this you will understand fundamentals of Agile and
different ways of implementing Agile.
Part 1 Agile FAQ :- http://www.c-sharpcorner.com/UploadFile/shivprasadk/612302008101141AM
/6.aspx
Can you explain the concept of refactoring?
If you read the XP life cycle one of the things after we implement the task is code refactoring.
Refactoring the process of changing the software in such a way that it does not change the behavior of
the code but on the other hand improves the internal structure. No code can be perfect with
architecture, coding conventions, high reusability at the first level itself. Normally it improves over the
time. It helps developers to implement the necessary solution today and improve / make the code
better tomorrow. Refactoring is the process of changing the system to improve the internal structure
with out changing what the system does. Below are three major activities performed during
refactoring.
Simplify complex code
XP is all about light-weight and simplicity. This holds true not only for a process but also for coding.
When you see a code can be simplified, discuss the same with your pair developer and implement the
same. For instance below is code which was further simplified in to one equation:
1/12/2009 10:05 PM
2 of 12
http://www.c-sharpcorner.com/UploadFile/shivprasadk/1234671231200...
1/12/2009 10:05 PM
3 of 12
http://www.c-sharpcorner.com/UploadFile/shivprasadk/1234671231200...
Feature is a process which adds value to the end customer and it can be planned. In short it has two
characteristics:
We can plan and schedule a feature.
It should be something that delivers value to the end user.
Figure: - Feature
In short it's not necessary that a feature maps with use case or a user story. It should also be planned
and manageable. Feature are delivered in a given time box (we will discuss this in detail in the coming
sections).
Can you explain the overall structure of FDD project?
FDD is an iterative methodology to deliver projects. Rather than delivering projects in one go manner
we deliver the features with in time limits. So let's understand how the FDD cycle moves. We will have
two views one is the over all flow and one is the detail iteration flow.
Below figure '"Structure of FDD project' shows step by step approach for FDD project.
Identify the features: - In this phase we identify the features in the project. Keep one thing in
mind features are not simple user point of view requirements; we should be able to schedule a
feature.
Prioritize the features: - Big bang theory thinking is bad. Many project managers think deliver
everything at the first step itself, but that's practically difficult. Rather deliver first the most
needed functionalities, then needed and then so called as over the top cream functionalities. To
deliver in feature by feature manner we need to prioritize the feature list from the user's angle.
Define iterations and time boxes: - The first thing which must have clicked your mind is we
should deliver in group of features, but that's not the case in FDD. We deliver according to the
size of iteration. Iteration is based on "timeboxes" so that we know how long iteration is.
Depending on the timeboxes the features can be delivered or not is decided.The below points are
looped for every iteration (below sections are covered in more detail in the coming up section).
Plan Iteration: - At the start of every iteration we need to plan it out, how we are going to
execute the plan.
Create release: - We code, test and deliver according to the plan chalked out in "Plan Iteration"
phase.
If everything is ok we move ahead if not we take the next iteration
1/12/2009 10:05 PM
4 of 12
http://www.c-sharpcorner.com/UploadFile/shivprasadk/1234671231200...
1/12/2009 10:05 PM
5 of 12
http://www.c-sharpcorner.com/UploadFile/shivprasadk/1234671231200...
Next Iteration: - In this phase we analyze what features we have delivered and if not we pass it
on to the next iteration. If everything is fine we take up the next iteration.
1/12/2009 10:05 PM
6 of 12
http://www.c-sharpcorner.com/UploadFile/shivprasadk/1234671231200...
SCRUM is a methodology which believes rapid changes of customer can not be solved by traditional
approach. So it adopts an empirical approach where it believes problem can not be understood or
defined. Rather concentrate on the team's ability to respond to the emerging requirements.
What does product owner, product back log and sprint mean in SCRUM?
Before we understand the SCRUM cycle let's get familiar with some terms regarding SCRUM.
Product Owner is the end customer or the user.
Product back log is a list of prioritized items to be developed for a software project.
Sprint is the task breakup of product catalog. It's the detail task break down for a development
team.
Below figure "Product Catalog and Sprint' shows a typical product catalog broken in to sprint. In the
left hand side of the figure we have shown two items in the product back log "Create Customer" and
"Create Supplier". To complete "Create Customer" the developer need to the following sprint task
"Code Business Logic", "Design UI" and "Prepare Test Plans".
1/12/2009 10:05 PM
7 of 12
http://www.c-sharpcorner.com/UploadFile/shivprasadk/1234671231200...
1/12/2009 10:05 PM
8 of 12
http://www.c-sharpcorner.com/UploadFile/shivprasadk/1234671231200...
1/12/2009 10:05 PM
9 of 12
http://www.c-sharpcorner.com/UploadFile/shivprasadk/1234671231200...
in this phase is maintenance, enhancement and project defect fixes. Maintenance, enhancement
and defect fixing can be viewed as iterative and incremental nature of DSDM.
1/12/2009 10:05 PM
10 of 12
http://www.c-sharpcorner.com/UploadFile/shivprasadk/1234671231200...
1/12/2009 10:05 PM
http://www.c-sharpcorner.com/UploadFile/shivprasadk/1234671231200...
Eliminate waste: - Only deliver what's needed to the end user. Anything more than that is a waste.
In short anything which does not add value is a waste. In short we can by pass tasks and still deliver
then it should be bypassed.
Decide as late as possible: - Software systems are complex. The more they are near to execution
more is the clarity. So delay decisions so that they can be based in facts rather than assumptions. For
instance your team decides to use automation testing, but when you complete execution you come to
know changes are delivered every day by the developer. After execution you conclude manual testing
is the best option. Bad part will be if you have already bought an automation tool, its waste of money.
Deliver as fast as possible: - faster a product is delivered, faster you will get user response and
faster you can improve in the next iteration. The concept is not fast coding, but try to deliver is small
user identified chunks for better understanding.
Motivate team: - Team members are the most important aspect for success of any project. Motivate
them, given them roles; keep your team spirit high and whatever you can do to make them feel good
in the project. A highly motivated team delivers project on time.
Integrity: - Software system should be delivered in loosely coupled components. Every component or
module can function individually and when integrated with the project it works perfectly well. It should
be a plug and play from the end user point of view. This spirit is derived from how actual production
system work. You can assemble a car with wheels from one organization and seats from other
organization.
Can you explain ASD?
ASD (Adaptive Software Development) accepts that change is a truth. It also accepts in principles that
mistakes can happen and it's important to learn from those mistakes in the future. Below figure 'ASD
Cycle' shows three important phases in ASD.
11 of 12
1/12/2009 10:05 PM
12 of 12
http://www.c-sharpcorner.com/UploadFile/shivprasadk/1234671231200...
Figure: - Speculate
Collaborate (coding / execution):-Execute as per the task and test it.
Learn (Review and give feedback to planning):- At the end of iteration see what lessons we have
learnt and apply the same for the next iteration.
Note
From all the methodologies shown above, XP is the most used for Agile. One of the important points to
be noted about all the XP methodologies described above is that every body believes in accepting
change. Principles of all the agile methodologies are more or less same. So do not get confused just
understand what every methodology concentrates on. For instance FDD plans around features, Scrum
uses product owner and catalog for describing a project, DSDM gives importance to RAD. So
understand the main theme of the methodologies but yes the common acceptance is every one
believes on 'Accepting Changes'.
Thank you for using Mindcracker Network
1/12/2009 10:05 PM