Documente Academic
Documente Profesional
Documente Cultură
Agile Methodologies
The crushing weight of corporate bureaucracy The rapid pace of information technology change The dehumanizing of detailed plan-driven development Originally called lightweight methodologies Sounds not serious/robust enough A weekend in February 2001 at Snowbird, Utah.
Agile Alliance
Agile Methodologies
eXtreme Programming (XP) SCRUM Dynamic Systems Development Method (DSDM) Feature-Driven Development (FDD) Adaptive Software Development (ASD) Crystal Clear Agile Modeling ......
Agile Principles
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
Agile Principles
Business people and developers must work together daily throughout the project. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. Working software is the primary measure of progress.
Agile Principles
Continuous attention to technical excellence and good design enhances agility. Simplicity the art of maximizing the amount of work not done is essential. The best architectures, requirements, and designs emerge from self-organizing teams. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Ongoing Debate
Criticism
Hacker Interpretations
e.g., responding to change over following a plan Great! Now I have a reason to avoid planning and to just code up whatever comes next.
http://agilemanifesto.org/
B. Boehm. Get Ready for Agile Methods, with Care. IEEE Computer, January 2002.
Agility
The ability to respond quickly to change & environment The adaptability to suite new or unexpected challenges
Agile methodologies derive much of their agility by relying on the tacit knowledge embodied in the team, rather than writing the knowledge down in plans.
Developers
Agile Methodologies
put a premium on having premium people critical people factors: amicability, talent, skill and communication invest in life-cycle architectures and plans use these to facilitate external reviews
Plan-Driven Methodologies
Customers
Agile Methodologies
Plan-Driven Methodologies
avoid tacit knowledge shortfalls via documentation avoid onsite-customer shortfalls via architecture review boards and independent expert project reviews
Requirements
Agile Methodologies
Plan-Driven Methodologies
determined in advance
including via prototyping with change rates with <1% per month
Architecture
Agile Methodologies
emphasizes simplicity: maximizing the work not done designed for current requirements YAGNI
Plan-Driven Methodologies
emphasizes heavyweight architecture and design documentation designed for current and forseeable requirements
Refactoring
Agile Methodologies
assumes that refactoring is essentially free (with great developers and small systems)
Plan-Driven Methodologies
assumes that refactoring effort increases with the number of requirements (with less-than-great developers or very large systems) the 20% problems (causing 80% rework) come largely from architecture-breakers
Size
Agile Methodologies
are suitable for small teams (< 15 or 20 people) scale better to larger (million-line) projects
Plan-Driven Methodologies
Primary Objective
Agile Methodologies
Plan-Driven Methodologies
B. Boehm. Get Ready for Agile Methods, with Care. IEEE Computer, January 2002.
Risk Management
RE = P(L) x S(L)
REQuality + RESpeed
REQuality is caused by inadequate plans RESpeed is caused by delays (market share erosion)
B. Boehm. Get Ready for Agile Methods, with Care. IEEE Computer, January 2002.
What are the aspects of software development that all agile methodologies share?
(A) User involvement is vital to success. (B) Build and release software in small increments. (C) Attention to quality and excellence. (D) Conformance to standards.
Video