Software Development Methodology
An Insight into “Agile” and “XP”
Software Development Methodology
Current Challenges
Rapid Changes in the technology – availability of frameworks, tools
technologies etc
“Change is constant” - Frequent Changes in client requirements
Increasing customer awareness about software development and
tools & technologies
Traditional methodologies (like waterfall) not scaling to changes, focus
on documentation and are predictive & prescribed
heavily regimented, regulated and micromanaged.
Software Development Methodology
Goals of Software development Organization
Responsiveness to changes
Being competitive with quality and timeliness
Sustenance and Growth
Profitability
Establish ROI
Software Development Methodology
Importance of choice of methodology
The software development methodology can be thought of mechanism to
meet challenges simultaneously achieving goals
TCO (total cost of ownership) can be said to be largely depending on
methodology chosen
Different methodologies have different efficiencies (Efficiency can be
decided by the quality of ultimate software product, the number of bugs
and the development time consumed)
Software Development Methodology
Agile (Philosophy & Characteristics)
Adaptive
Iterative
Incremental
Fundamental issue is communication and not documentation
Document the stable things, not speculative things.
Evolutionary approach to documentation development (seeking and
acting on feedback)
Software Development Methodology
Agile (Philosophy & Characteristics)
Preference to executable work products such as customer test over static
work products such as plain old documentation
Concise documentation – product overviews/road maps preferred over
detailed documentation (describing more than nitty-gritty)
High quality source code and test suite – needing a lot less system
documentation
Documentation shall be barely just good enough.
Software Development Methodology
Agile (Philosophy & Characteristics)
Primary goal is developing software , secondary goal is to enable next
development efforts
The benefit of having documentation must be greater than the cost of
creating and maintaining it.
Create documentation only when you need it at the appropriate point in
the life cycle.
Software Development Methodology
Agile (Philosophy & Characteristics)
Update documentation only when it hurts
It is recognized that documentation is an intrinsic part of any
system, the benefits should outweigh the increased burden on
the team. It’s important to note that sometimes the benefits are
received by someone else other than the people experiencing
the costs, e.g. the development team is impacted by the costs of
creating system documentation that the maintenance
developers benefit from.
Software Development Methodology
XP (Philosophy & Characteristics)
Enough design Up front
On-Site customer
Pair Programming
Coding Standards
Simple design
User stories, CRC cards, sketches, test suite, acceptance tests
Concrete experiments
Software Development Methodology
XP (Philosophy & Characteristics)
If you need it to do it – simple artifacts (documents etc)
Collective Ownership
Travel light
Communication – open and honest communication
Software Development Methodology
Summary
Traditional software development methodologies were inherited from
hardware manufacture and strategies. In these methodologies, the
production cycle progresses sequentially. The basic belief is that the
considerable time spent in initial design effort would help correcting bugs
in advance. These were successfully implemented by many organizations
but the software industry has experienced the limitations of these
methods such as low ability to embrace changes, overall quality not in
correspondence with initial design efforts and overall cost & efficiency.
Software Development Methodology
Summary
Rise of new methodologies like Agile which represents the agility and
adaptability have given new direction to software development.
Efficiency of these methodologies have been established to be
better than traditional and also its resulting in better client
communication and satisfaction. Of course all such methodologies
have benefits and limitations and many a times the combination of
these methodologies could serve the purpose.
Software Development Methodology
Conclusion
Given the dynamics of current businesses, frequent changes,
increased competitiveness and awareness, the agile (and XP)
methodologies can be the best bet which would give ability to
remain ahead of the curve. Such methodologies can adapted to
specific environments and some characteristics from traditional
methodology can be combined to find a good match and
suitability. Employing such methodologies would have impact on
organization structures, architectures and employees and of course
the business.
Software Development Methodology
References
Wikipedia
IBM - resources
Software Development Methodology
Big Thanks

Agile and XP

  • 1.
    Software Development Methodology AnInsight into “Agile” and “XP”
  • 2.
    Software Development Methodology CurrentChallenges Rapid Changes in the technology – availability of frameworks, tools technologies etc “Change is constant” - Frequent Changes in client requirements Increasing customer awareness about software development and tools & technologies Traditional methodologies (like waterfall) not scaling to changes, focus on documentation and are predictive & prescribed heavily regimented, regulated and micromanaged.
  • 3.
    Software Development Methodology Goalsof Software development Organization Responsiveness to changes Being competitive with quality and timeliness Sustenance and Growth Profitability Establish ROI
  • 4.
    Software Development Methodology Importanceof choice of methodology The software development methodology can be thought of mechanism to meet challenges simultaneously achieving goals TCO (total cost of ownership) can be said to be largely depending on methodology chosen Different methodologies have different efficiencies (Efficiency can be decided by the quality of ultimate software product, the number of bugs and the development time consumed)
  • 5.
    Software Development Methodology Agile(Philosophy & Characteristics) Adaptive Iterative Incremental Fundamental issue is communication and not documentation Document the stable things, not speculative things. Evolutionary approach to documentation development (seeking and acting on feedback)
  • 6.
    Software Development Methodology Agile(Philosophy & Characteristics) Preference to executable work products such as customer test over static work products such as plain old documentation Concise documentation – product overviews/road maps preferred over detailed documentation (describing more than nitty-gritty) High quality source code and test suite – needing a lot less system documentation Documentation shall be barely just good enough.
  • 7.
    Software Development Methodology Agile(Philosophy & Characteristics) Primary goal is developing software , secondary goal is to enable next development efforts The benefit of having documentation must be greater than the cost of creating and maintaining it. Create documentation only when you need it at the appropriate point in the life cycle.
  • 8.
    Software Development Methodology Agile(Philosophy & Characteristics) Update documentation only when it hurts It is recognized that documentation is an intrinsic part of any system, the benefits should outweigh the increased burden on the team. It’s important to note that sometimes the benefits are received by someone else other than the people experiencing the costs, e.g. the development team is impacted by the costs of creating system documentation that the maintenance developers benefit from.
  • 9.
    Software Development Methodology XP(Philosophy & Characteristics) Enough design Up front On-Site customer Pair Programming Coding Standards Simple design User stories, CRC cards, sketches, test suite, acceptance tests Concrete experiments
  • 10.
    Software Development Methodology XP(Philosophy & Characteristics) If you need it to do it – simple artifacts (documents etc) Collective Ownership Travel light Communication – open and honest communication
  • 11.
    Software Development Methodology Summary Traditionalsoftware development methodologies were inherited from hardware manufacture and strategies. In these methodologies, the production cycle progresses sequentially. The basic belief is that the considerable time spent in initial design effort would help correcting bugs in advance. These were successfully implemented by many organizations but the software industry has experienced the limitations of these methods such as low ability to embrace changes, overall quality not in correspondence with initial design efforts and overall cost & efficiency.
  • 12.
    Software Development Methodology Summary Riseof new methodologies like Agile which represents the agility and adaptability have given new direction to software development. Efficiency of these methodologies have been established to be better than traditional and also its resulting in better client communication and satisfaction. Of course all such methodologies have benefits and limitations and many a times the combination of these methodologies could serve the purpose.
  • 13.
    Software Development Methodology Conclusion Giventhe dynamics of current businesses, frequent changes, increased competitiveness and awareness, the agile (and XP) methodologies can be the best bet which would give ability to remain ahead of the curve. Such methodologies can adapted to specific environments and some characteristics from traditional methodology can be combined to find a good match and suitability. Employing such methodologies would have impact on organization structures, architectures and employees and of course the business.
  • 14.
  • 15.