Lesson 3 - Agile development and agile process models (video, ch 5) Flashcards
- It is difficult to predict in advance which requirements or customer, priorities will change and which will not
- for many types of s/w design and construction activities are interleaved (construction is used to prove the design)
- analysis, design, and testing are not as predictable from a planning perspective as one might like them to be
Key assumptions associated with agile development
Agility principles
highest priority is to satisfy customer through _____ and _____ delivery of valuable software
early and continuous
Agility principles
welcome changing _____ even late in development, accommodating change is viewed as increasing the customer’s competitive advantage
requirements
Agility principles
delivering working s/w _____ with a preference for shorter delivery schedules (e.g. every 2 or 3 weeks)
frequently
Agility principles
business people and developers must __________ daily during the project
work together
Agility principles
build projects around _____ individuals, given them the environment and support they need, trust them to get the job done
motivated
Agility principles
face-to-face communication is the most _____ method of conveying information within the development team
effective
agility principles
working s/w is the primary _____ of progress
measure
agility principles
agile process support sustainable development, developers and customers should be able to _____ development indefinitely
continue
agility principles
continuous attention to technical excellence and good design enhances _____
agility
agility principles
simplicity (defined as _____ the work not done) is essential
maximizing
agility principles
the best architectures, requirements, and design emerge from __________ teams
self-organizing
agility principles
at regular intervals teams reflects how to become more effective and _____ its behavior accordingly
adjusts
Extreme programming (XP), Scrum, dynamic systems development method (DSDM), agile modeling (AM), agile unified process (AUP)
Agile Process Models
- relies on object-oriented approach
- values
- communication (informal between developers and stakeholders)
- simplicity (design for cuurent needs, not future)
- feedback
- courage (design for today not tomorrow)
- respect (stakeholders and tm mbrs for the s/w product)
- Key activites
- planning (user stories/ordered by customer values)
- design (simple design)
- coding (continuous integration and smoke testing)
- testing (unit tests created before coding are implemented using automated testing framework…)
Extreme Programming
- Scrum principles
- Small working team 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
- Process patterns defining development activities
- Backlog (prioritized list of requirements or features the provide business value to customer, items can be added at any time)
- Sprints (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)
- – What was done since last meeting?
- – What obstacles were encountered?
- – What will be done by the next meeting?
- Demos (deliver software increment to customer for evaluation)
Scrum
- Provides a framework for building and maintaining systems which meet tight time constraints using incremental prototyping in a controlled environment
- 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
- Guiding principles
- Active user involvement
- Teams empowered to make decisions
- Fitness foe business purpose is criterion for deliverable acceptance
- Iterative and incremental develop needed to converge on accurate business solution
- 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
- Life cycle activities
- Feasibility study (establishes requirements and constraints)
- Business study (establishes functional and information requirements needed to provide business value)
- Functional model iteration (produces set of incremental prototypes to demonstrate functionality to customer)
- Design and build iteration (revisits prototypes to ensure they provide business value for end users, may occur concurrently with functional model iteration)
- Implementation (latest iteration placed in operational environment)
Dynamic Systems Development Method
- Practice-based methodology for effective modeling and documentation of software systems in a light-weight manner
- 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
- Requirements gathering and analysis modeling
- Work collaboratively to find out what customer wants to do
- Once requirements model is built collaborative analysis modeling continues with the customer
- Architectural modeling
- Derives preliminary architecture from analysis model
- Architectural model mist be realistic for the environment and must be understandable by developers
Agile Modeling
- Adopts classic UP phased activities (inception, elaboration, construction, transition) to enable team to visualize overall software project flow
- Within each activity team iterates to achieve agility and delivers meaningful software increments to end-users as rapidly as possible
- Each AUP iteration addresses
- Modeling (UML representations of business and problem domains)
- Implementation (models translated into source code)
- Testing (uncover errors and ensure source code meets requirements)
- Deployment (software increment delivery and acquiring feedback)
- Configuration and project management (change management, risk management, persistent work product control)
- Environment management (standards, tools, technology)
Agile Unified Process