Agile means responding to change – both technological change and changes in requirements perhaps due to customer demand and market opportunities.
Definition: Agile is a conceptual framework generally centered on iterative and incremental delivery of working software, driven by the customer. The iterative part suggests that we are repeating, or iterating, a complete lifecycle of development over a short, fixed span of time. With each of these iterations, we ship some working subset, or increment, of features.
Traditional software project management techniques have tended to concentrate on “command and control” methods, where an elaborate plan is created and fixed during the inception of the project. In reality this elaborate plan won’t survive. A “command and control” approach makes the implicit assumption that the relationship between the inputs and outputs of a software development process are stable and predictable and that the schedule of outputs will still be relevant by the time they appear.
So the Agile software development is iterative software development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams.
Agile methods generally promote
• A disciplined project management process that encourages frequent inspection and adaptation,
• A leadership philosophy that encourages teamwork, Self-organization and accountability,
• A set of engineering best practices intended to allow for rapid delivery of high-quality software,
• A business approach that aligns development with customer needs and company goals.
Various Agile Methods• Extreme Programming (XP) : Emphasize the values of communication, simplicity, feedback, and courage; use specific technical and collaborative practices, including TDD, refactoring, pair programming, continuous integration, open workspace, and automated acceptance tests
• Scrum: Manage a prioritized list of requires on a product backlog, collaborate through daily standup meetings, exhibit the product upon iteration completion, use retrospectives to correct the process
• Crystal: Emphasize people, gather techniques from other methods, improve communications, adapt the process itself (shrink or grow to fit)
• Feature Driven Development: Center development around the feature, create a domain model with domain experts
• Lean Development: Move closer to customer, shorter cycles, eliminate waste, decide as late as possible, empower the team, build in integrity
• Dynamic Systems Development Methodology(DSDM): Empower the team to make decisions, emphasize frequent product delivery, integrate testing throughout, promote collaboration and cooperation between all stakeholders
In next Blog, I will go through Scrum ..