KEMBAR78
agile modeling in project management.pptx
Lecture 7
Agile Modeling
Agile methods
• Dissatisfaction with the overheads involved in design methods
led to the creation of agile methods. These methods:
– Focus on the code rather than the design;
– Are based on an iterative approach to software development;
– Are intended to deliver working software quickly and evolve this
quickly to meet changing requirements.
• Agile methods are probably best suited to PC products.
09/25/2024 3
Agile Methodologies
• Agile methodologies generally promote a project management process that
encourages frequent inspection and adaptation, a leadership philosophy that
encourages team work, self-organization and accountability, a set of
engineering best practices that allow for rapid delivery of high-quality
software, and a business approach that aligns development with customer
needs and company goals.
• Emphasis on
– Individuals and interactions over processes and tools
– Working software over comprehensive documentation
– Customer collaboration over contract negotiation
– Responding to change over following a plan
• XP, Scrum, Lean Software Development, Feature Driven Development…
09/25/2024 4
Principles behind the Agile Manifesto
• Follow these 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.
• 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.
09/25/2024 5
Principles behind the Agile Manifesto
• Working software is the primary measure of progress.
• Agile processes promote sustainable development. The sponsors, developers, and
users should be able to maintain a constant pace indefinitely.
• 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.
Principles of agile methods
Principle Description
Customer involvement The customer should be closely involved throughout the
development process. Their role is provide and prioritise new
system requirements and to evaluate the iterations of the system.
Incremental delivery The software is developed in increments with the customer
specifying the requirements to be included in each increment.
People not process The skills of the development team should be recognised and
exploited. The team should be left to develop their own ways of
working without prescriptive processes.
Embrace change Expect the system requirements to change and design the system
so that it can accommodate these changes.
Maintain simplicity Focus on simplicity in both the software being developed and in
the development process used. Wherever possible, actively work
to eliminate complexity from the system.
Problems with agile methods
• It can be difficult to keep the interest of customers who are involved in the
process.
• Team members may be unsuited to the intense involvement that
characterizes agile methods.
• Prioritizing changes can be difficult where there are multiple stakeholders.
• Maintaining simplicity requires extra work.
Agile values
09/25/2024 8
Agile Process Models
• Extreme Programming (XP)
• Adaptive Software Development (ASD)
• Scrum
• Dynamic Systems Development Method (DSDM)
• Crystal
• Feature Driven Development (FDD)
• Lean Software Development (LSD)
• Agile Modeling (AM)
• Agile Unified Process (AUP)
09/25/2024 9
Xtreme Programming
• Conventional wisdom in software engineering is to design for change. It is worth
spending time and effort anticipating changes as this reduces costs later in the life
cycle.
• XP, however, maintains that this is not worthwhile as changes cannot be reliably
anticipated.
• Rather, it proposes constant code improvement (refactoring) to make changes
easier when they have to be implemented.
XP Process
Extreme programming practices 1
Incremental planning Requirements are recorded on Story Cards and the Stories to be
included in a release are determined by the time available and
their relative priority. The developers break these Stories into
development Ô
TasksÕ
.
Small Releases The minimal useful set of functionality that provides business
value is developed first. Releases of the system are frequent and
incrementally add functionality to the first release.
Simple Design Enough design is carried out to meet the current requirements
and no more.
Test first development An automated unit test framework is used to write tests for a new
piece of functionality before that functionality itself is
implemented.
Refactoring All developers are expected to refactor the code continuously as
soon as possible code improvements are found. This keeps the
code simple and maintainable.
Extreme programming practices 2
Pair Programming Developers work in pairs, checking each other’s work and
providing the support to always do a good job.
Collective Ownership The pairs of developers work on all areas of the system, so that
no islands of expertise develop and all the developers own all the
code. Anyone can change anything.
Continuous Integration As soon as work on a task is complete it is integrated into the
whole system. After any such integration, all the unit tests in the
system must pass.
On-site Customer A representative of the end-user of the system (the Customer)
should be available full time for the use of the XP team. In an
extreme programming process, the customer is a member of the
development team and is responsible for bringing system
requirements to the team for implementation.
XP and agile principles
• Incremental development is supported through small, frequent system
releases.
• Customer involvement means full-time customer engagement with the
team.
• Change supported through regular system releases.
• Maintaining simplicity through constant refactoring of code.
Pair programming
• In XP, programmers work in pairs, sitting together to
develop code.
• This helps develop common ownership of code and spreads
knowledge across the team.
• It serves as an informal review process as each line of code
is looked at by more than 1 person.
• It encourages refactoring as the whole team can benefit
from this.
• Measurements suggest that development productivity with
pair programming is similar to that of two people working
independently.
Pair Programming Benefits
• Continuous code review: better design, fewer defects
• Confidence to add to or change the system
• Discipline to always test and Refactor
• Teach each other how the system works (reduced staffing risks)
• Learn from partner’s knowledge and experience (enhances technical
skills)

agile modeling in project management.pptx

  • 1.
  • 2.
    Agile methods • Dissatisfactionwith the overheads involved in design methods led to the creation of agile methods. These methods: – Focus on the code rather than the design; – Are based on an iterative approach to software development; – Are intended to deliver working software quickly and evolve this quickly to meet changing requirements. • Agile methods are probably best suited to PC products.
  • 3.
    09/25/2024 3 Agile Methodologies •Agile methodologies generally promote a project management process that encourages frequent inspection and adaptation, a leadership philosophy that encourages team work, self-organization and accountability, a set of engineering best practices that allow for rapid delivery of high-quality software, and a business approach that aligns development with customer needs and company goals. • Emphasis on – Individuals and interactions over processes and tools – Working software over comprehensive documentation – Customer collaboration over contract negotiation – Responding to change over following a plan • XP, Scrum, Lean Software Development, Feature Driven Development…
  • 4.
    09/25/2024 4 Principles behindthe Agile Manifesto • Follow these 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. • 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.
  • 5.
    09/25/2024 5 Principles behindthe Agile Manifesto • Working software is the primary measure of progress. • Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. • 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.
  • 6.
    Principles of agilemethods Principle Description Customer involvement The customer should be closely involved throughout the development process. Their role is provide and prioritise new system requirements and to evaluate the iterations of the system. Incremental delivery The software is developed in increments with the customer specifying the requirements to be included in each increment. People not process The skills of the development team should be recognised and exploited. The team should be left to develop their own ways of working without prescriptive processes. Embrace change Expect the system requirements to change and design the system so that it can accommodate these changes. Maintain simplicity Focus on simplicity in both the software being developed and in the development process used. Wherever possible, actively work to eliminate complexity from the system.
  • 7.
    Problems with agilemethods • It can be difficult to keep the interest of customers who are involved in the process. • Team members may be unsuited to the intense involvement that characterizes agile methods. • Prioritizing changes can be difficult where there are multiple stakeholders. • Maintaining simplicity requires extra work.
  • 8.
  • 9.
    Agile Process Models •Extreme Programming (XP) • Adaptive Software Development (ASD) • Scrum • Dynamic Systems Development Method (DSDM) • Crystal • Feature Driven Development (FDD) • Lean Software Development (LSD) • Agile Modeling (AM) • Agile Unified Process (AUP) 09/25/2024 9
  • 10.
    Xtreme Programming • Conventionalwisdom in software engineering is to design for change. It is worth spending time and effort anticipating changes as this reduces costs later in the life cycle. • XP, however, maintains that this is not worthwhile as changes cannot be reliably anticipated. • Rather, it proposes constant code improvement (refactoring) to make changes easier when they have to be implemented.
  • 11.
  • 12.
    Extreme programming practices1 Incremental planning Requirements are recorded on Story Cards and the Stories to be included in a release are determined by the time available and their relative priority. The developers break these Stories into development Ô TasksÕ . Small Releases The minimal useful set of functionality that provides business value is developed first. Releases of the system are frequent and incrementally add functionality to the first release. Simple Design Enough design is carried out to meet the current requirements and no more. Test first development An automated unit test framework is used to write tests for a new piece of functionality before that functionality itself is implemented. Refactoring All developers are expected to refactor the code continuously as soon as possible code improvements are found. This keeps the code simple and maintainable.
  • 13.
    Extreme programming practices2 Pair Programming Developers work in pairs, checking each other’s work and providing the support to always do a good job. Collective Ownership The pairs of developers work on all areas of the system, so that no islands of expertise develop and all the developers own all the code. Anyone can change anything. Continuous Integration As soon as work on a task is complete it is integrated into the whole system. After any such integration, all the unit tests in the system must pass. On-site Customer A representative of the end-user of the system (the Customer) should be available full time for the use of the XP team. In an extreme programming process, the customer is a member of the development team and is responsible for bringing system requirements to the team for implementation.
  • 14.
    XP and agileprinciples • Incremental development is supported through small, frequent system releases. • Customer involvement means full-time customer engagement with the team. • Change supported through regular system releases. • Maintaining simplicity through constant refactoring of code.
  • 15.
    Pair programming • InXP, programmers work in pairs, sitting together to develop code. • This helps develop common ownership of code and spreads knowledge across the team. • It serves as an informal review process as each line of code is looked at by more than 1 person. • It encourages refactoring as the whole team can benefit from this. • Measurements suggest that development productivity with pair programming is similar to that of two people working independently.
  • 16.
    Pair Programming Benefits •Continuous code review: better design, fewer defects • Confidence to add to or change the system • Discipline to always test and Refactor • Teach each other how the system works (reduced staffing risks) • Learn from partner’s knowledge and experience (enhances technical skills)

Editor's Notes

  • #16 http://members.aol.com/humansandt/papers/pairprogrammingcostbene/pairprogrammingcostbene.htm (Alistair Cockburn & Laurie Williams) Partner is a safety net: changing the system is not scary