50 terms

Chapter 4 - Agile Development

STUDY
PLAY
Agile software engineering
represents a reasonable compromise between the conventional software engineering for certain classes of software and certain types of software projects
Agile development processes can deliver successful systems quickly. True of False?
True
Agile development stresses continuous communication and collaboration among developers and customers.True of False?
True
Describe the five philosophies embraced by Agile software engineering
1. Encourages customer satisfaction
2. Incremental software delivery
3. Small project teams (composed of software engineers and stakeholders)
4. Informal methods
5. Minimal software engineering work products
Agile software engineering guidelines
stress on-time delivery of an operational software increment over analysis and design
What does the Manifesto for Agile Software Development propose?
it may be better to value:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
List the six aspects of Agility
- An agile team is able to respond to changes during project development
- Agile development recognizes that project plans must be flexible
- encourages team structures and attitudes that make communication among developers and customers more facile
- eliminates the separation between customers and developers
- emphasizes the importance of rapid delivery of operational software and de-emphasizes importance of intermediate work products
- 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
What three assumptions are Agile Processes based on?
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 design and construction activities are interleaved
3. Analysis, design, 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. True of False?
True
List 10 Agility Principles
1. Highest priority is to satisfy customer
2. Welcome changing requirements
3. Delivering working software frequently
4. Stakeholders must work together daily during the project
5. Build projects around motivated individuals
6. Face-to-face communication is the most effective method
7. Working software is the primary measure of progress
8. Support sustainable development
9. Continuous attention to technical excellence
10. Simplicity by maximizing is essential
Traits that need to exist in members of agile development teams:
Competence
Common focus
Collaboration
Decision-making ability
Fuzzy-problem solving ability
Mutual trust and respect
Self-organization
Agile Process Models
1. Extreme Programming (XP)
2. Adaptive Software Development (ASD)
3. Dynamic Systems Development Method (DSDM)
4. Scrum
5. Crystal
6. Feature Driven Development (FDD)
7. Agile Modeling (AM)
What is Extreme Programming
A type of agile software development based on an OO approach. It advocates frequent "releases" in short development cycles (timeboxing), which is intended to improve productivity and introduce checkpoints where new customer requirements can be adopted.
What are the key activities of Extreme Programming?
Planning
Designing
Coding
Testing

(user stories created and ordered by customer value)
(simple designs preferred, CRC cards and design prototypes are only work products, encourages use of refactoring)
(focuses on unit tests to exercise stories, emphasizes use of pairs programming to create story code, continuous integration and smoke testing is utilized)
(unit tests created before coding are implemented using an automated testing framework to encourage use of regression testing, integration and validation testing done on daily basis, acceptance tests focus on system features and functions viewable by the customer)
What is Adaptive Software Development (ASD)
is a software development process that grew out of rapid application development (RAD) and replaces the traditional waterfall cycle with a repeating series of speculate, collaborate, and learning cycles.

Emphasizes self-organizing teams, interpersonal collaboration, and both individual and team learning.

Self-organization arises when independent agents cooperate to create a solution to a problem that is beyond the capability of any individual agent
What does "speculate" refer to in ASD?
assumes that all stakeholders are comparably wrong for certain aspects of the project's mission, while trying to define it.
What does "collaboration" refer to in ASD?
the efforts for balancing the work based on predictable parts of the environment (planning and guiding them) and adapting to the uncertain surrounding mix of changes caused by various factors - technology, requirements, stakeholders, software vendors, etc.
What does "learning" refer to in ASD?
challenges all stakeholders, are based on the short iterations with design, build and testing
Adaptive Software Development Phases
Mission-driven
Component-based
Iterative
Time-boxed
Risk driven and change-tolerant
Speculation
Collaboration
Learning
Dynamic Systems Development Method
Provides a framework for building and maintaining systems which meet tight time constraints using incremental prototyping in a controlled environment
Explain what Dynamic Systems Development entail
DSD uses Pareto principle (80% of project can be delivered in 20% required to deliver the entire project)

Each increment only delivers enough functionality to move to the next increment

Uses time boxes to fix time and resources to determine how much functionality will be delivered in each increment
Dynamic Systems Development guiding principles
Active user involvement
Teams empowered to make decisions
Iterative and incremental
All changes made during development are reversible
Requirements are baselined at a high level
Testing integrates throughout life-cycle
Collaborative and cooperative approach between stakeholders
Dynamic Systems Development Life cycle activities
Feasibility study
Business study
Functional model iteration
Design and build iteration
Implementation

(establishes requirements and constraints)
(establishes functional and information requirements needed to provide business value)
(produces set of incremental prototypes to demonstrate functionality to customer)
(revisits prototypes to ensure they provide business value for end users, may occur concurrently with functional model iteration)
(latest iteration placed in operational environment)
What is Scrum
is an agile framework for software development ideally suited for projects with rapidly changing or highly emergent requirements.
Scrum principles
Small working teamed used to maximize communication, minimize overhead, and maximize sharing of informal knowledge

Process must be adaptable to both technical and business challenges to ensure bets product produced

Process yields frequent increments that can be inspected, adjusted, tested, documented and built on

Development work and people performing it are partitioned into clean, low coupling partitions

Testing and documentation is performed as the product is built

Provides the ability to declare the product done whenever required
What are the main activities in Scrum?
Product Backlog
Sprint Backlog
Sprint
Demo
Explain each Scrum activity
Backlog
(prioritized list of requirements or features to provide business value to customer, items can be added at any time)
Product backlog
(work units required to achieve one of the backlog items, must fir into a predefined time-box, affected backlog items frozen)
Scrum meetings
(15 minute daily meetings) addressing these questions: What was done since last meeting? What obstacles were encountered? What will be done by the next meeting?
Demo
(deliver software increment to customer for evaluation)
What are the three questions asked in every scrum meeting?
What have you done since the last meeting?
What obstacles have you encountered?
What will you do until the next meeting?
What is the Crystal process
Development approach that puts a premium on maneuverability during a resource-limited game of invention and communication with the primary goal of delivering useful software and a secondary goal of setting up for the next game
Crystal principles
Its always cheaper and faster to communicate face-to-face
As methodologies become more formal teams become weighed down and have trouble adapting to project work vagaries
As projects grow in size, teams become larger and methodologies become heavier
As projects grow in criticality some degree of formality will need to be introduced in parts of the methodology
As feedback and communication become more efficient the need for intermediate work products is reduced
Discipline, skills, and understanding counter process, formality, and documentation
Team members not on the critical project path can spend their excess time improving the product or helping people who are on the critical path
Crystal methodologies
Clear (small, low criticality projects)
Orange (larger, moderately critical projects)
Orange Web (typical e-business applications)
What does the Feature Driven Development entail
Practical process model for object-oriented software engineering
Feature is a client-valued function, can be implemented in two weeks or less
FDD Philosophy
Emphasizes collaboration among team members
Manages problem and project complexity using feature-based decomposition followed integration of software increments
Technical communication using verbal, graphical, and textual means
Software quality encouraged by using incremental development, design and code inspections, SQA audits, metric collection, and use of patterns (analysis, design, construction)
FDD framework activities
Develop overall model
Build features list
Plan by feature
Design by feature
Build by feature

(contains set of classes depicting business model of application to be built)

(features extracted from domain model, features are categorized and prioritized, work is broken up into two week chunks)

(features assessed based on priority, effort, technical issues, schedule dependencies)

(classes relevant to feature are chosen, class and method prologs are written, preliminary design detail developed, owner assigned to each class, owner responsible for maintaining design document for his or her own work packages)

(class owner translates design into source code and performs unit testing, integration performed by chief programmer)
Agile Modeling
Practice-based methodology for effective modeling and documentation of software systems in a light-weight manner
Agile Modeling principles
Model with a purpose
Use multiple models
Travel light (only keep models with long-term value)
Content is more important than representation
Know the models and tools you use to create them
Adapt locally
Explain requirements gathering and analysis modelling in agile modeling
Work collaboratively to find out what customer wants to do

Once requirements model is built collaborative analysis modeling continues with the customer
Explain the architectural modeling in agile modeling
Derives preliminary architecture from analysis model
Architectural model must be realistic for the environment and must be understandable by developers
In agile software processes the highest priority is to satisfy the customer through early and continuous delivery of valuable software. True or False?
True
It is not possible to build software that meets the customers' needs today and exhibits the quality characteristics that will enable it to be extended tomorrow. True or False?
True
All agile process models conform to a greater or lesser degree to the principles stated in the "Manifesto for Agile Software Development". True or False?
True
What are the four framework activities found in the Extreme Programming (XP) process model?
planning, design, coding, testing
What are the three framework activities for the Adaptive Software Development (ASD) process model?
speculation, collaboration, learning
The Dynamic Systems Development Method (DSDM) suggests a philosophy that is based on the Pareto principle (80% of the application can be delivered in 20% of the time required to build the complete application). True or False?
True
In Feature Driven Development (FDD) a "feature" is a client-valued function that can be delivered in two months or less. True or False?
False. Feature Driven Development is a client-valued function that can be implemented in two weeks or less
Agile Modeling (AM) provides guidance to practitioner during which of these software tasks?
Analysis and Design
When do you conduct reflection workshops in Crystal family of agile processes?
Before the project begins, during the development activities and after the increment is delivered.
Describe the role of customers and end-users on an agile process team
They both participate as full collaborators on agile process teams. The are the source of information used to create use cases and provide needed information on the business value of proposed software feature and functionality. They also information on operation prototypes during incremental delivery of software increments.
Describe the three key assumptions regarding software projects that every agile software process must address
- It is difficult to predict future requirements and the customer's priorities
- It is difficult to predict how much design is needed before construction can be used to prove the design
- Analysis, design, construction and testing are not always predictable processes
List the key issues stressed by an agile philosophy of software engineering
- The importance of self-organizing teams
- Communication and collaboration between team members and customers
- Recognition that change represents opportunity
- Emphasis on rapid delivery of software that satisfies the customer
YOU MIGHT ALSO LIKE...