Professional Documents
Culture Documents
An alternative to conventional software engineering for certain classes of software and certain
types of software projects.
Deliver successful systems quickly.
Encourages continuous communication and collaboration among developers and customers.
Agile software engineering embraces a philosophy that encourages customer satisfaction,
incremental software delivery, small project teams (composed of software engineers and
stakeholders), informal methods, and minimal software engineering work products.
Agile software engineering development guidelines stress on-time delivery of an operational
software increment over analysis and design
What is agility
Means things are done fast and we are able to respond to changes during project development
Agility is dynamic, content specific, aggressively change embracing and growth oriented [Steven
Goldman et al]
Agile development recognizes that project plans must be flexible
Agility encourages team structures and attitudes that make communication among developers and
customers more facile
Eliminates the separation between customers and developers
Emphasizes on rapid delivery of operational software and de-emphasizes the importance of
having intermediate work products.
Agility can be applied to any software process as long as the project team is allowed to streamline
tasks and conduct planning in way that eliminate non-essential work products
Agility Principles
Highest priority is to satisfy customer through early and continuous delivery of valuable software.
Welcome changing requirements even late in development. Accommodating change is viewed as
increasing the customers competitive advantage.
Delivering working software frequently with a preference for shorter delivery schedules (e.g.
every 2 or 3 weeks) .
Business people and developers must work together daily during the project.
Face-to-face communication is the most effective method of conveying information within the
development team
Working software is the primary measure of progress
Page 1
Build projects around motivated individuals, give them the environment and support they need,
trust them to get the job done
Agile processes support sustainable development; developers and customers should be able to
continue development indefinitely
Continuous attention to technical excellence and good design enhances agility.
Simplicity (defined as maximizing the work not done) is essential.
The best architectures, requirements, and design emerge from self-organizing teams.
At regular intervals teams reflects how to become more effective and adjusts its behaviour
accordingly.
Agile Process
Based on three key assumptions:
1. It is difficult to predict in advance which requirements or customer priorities will change and
which will not.
2. For many types of software projects, design and construction activities are interleaved
(construction is used to prove the design)
3. Analysis, design, construction and testing are not as predictable from a planning perspective as
one might like them to be.
Agile processes must be adapted incrementally to manage unpredictability.
Incremental adaptation requires customer feedback based on evaluation of delivered software increments
(executable prototypes) over short time periods.
Advantages
Customer satisfaction
The software project is visible because we are using increments
Easy to manage its predictability
Page 2
i.
Planning
ii.
Design
iii.
Coding
iv.
Testing
Smoke testing to test what has been implemented. It checks whether the critical
functionalities of the user stories are working fine
The test cases will cover the most functionalities of the user stories
Integration and validation testing done on daily basis using regression testing. It is used to
confirm that a recent code change has not affected existing features
Acceptance tests focus on system features and functions viewable by the customer.
Design
Simple design
Page 3
Refactoring
User stories
Values
Acceptance test criteria
Planning
Iteration plan
Coding
Pair programming
Release
Software increment
Test
Velocity computed
Unit testing
Continuous integration
2. Adaptive
Software
Development
Features
Self-organization arises when independent agents cooperate to create a solution to a problem that
is beyond the capability of any individual agent.
Adaptive cycle characteristics
o Mission oriented
o Component based
o Iterative
o Time boxing
o Risk driven and change-tolerant
Page 4
1)
2)
3)
4)
5)
Page 5
o
o
Demos
o deliver software increment to customer for evaluation (Every 30 days)
i.
ii.
iii.
Page 6
iv.
v.
Agile Modeling
Practice-based methodology for effective modeling and documentation of software systems in a lightweight manner
Page 7
Modeling principles
o Model with a purpose and not just to get things done
o Use multiple models
o Travel light (only keep models with long-term value)
o Content is more important than representation
o Know the models and tools you use to create them
o Adapt locally can change things depending on the situation
Architectural modeling
o
o
Page 8