Agile (Adaptive) model

From apppm
Revision as of 23:28, 20 February 2022 by S175382 (Talk | contribs)

Jump to: navigation, search

Contents

Abstract

The agile (Adaptive) model is known from software development, where technology and customer demands change continually [1] . The agile way of thinking is slowly gaining a foothold in physical product development, especially in projects where the customer needs changes frequently, and there is a need for fast and adaptive response [2].

Agile methodologies differ in many ways from traditional methods like waterfall. The main difference is that instead of dividing the process into phases, the agile model works in sprints. Instead of focusing on all aspects of the project at once, every sprint deal with one only feature. A sprint is usually a couple of weeks long, and every sprint goes through design, develop, integrate, test, and deploy phases, and ends up with a minimum viable product (MVP). Ideally, an agile team should be small and cross-functional to minimize communication delays. The team must constantly collaborate with the customers to understand their needs and eventually changes of needs. [1]

It is important to point out that agile methods are not better than traditional methods and the other way around. But it is important as a product developer to understand when to use which kind. An agile way of thinking is ideal when the market frequently changes, where a more traditional workflow should be preferred if market conditions are stable. If it is a complex problem where the scope is unclear agile would be a good solution, but if the scope is clear and the team has done something similar before, traditional methods are a good choice. Therefore, it should be discussed before starting every new project whether to use an agile or a traditional workflow. [1]

Big Idea

The Agile Manifesto

Back in February 2001 seventeen people gathered at The Lodge at Snowbird ski resort in Utah over three days to get mutual understanding and to uncover a better way to develop software. The people gathered was independent thinkers about software development, and they named themselves “The Agile Alliance”. The result of the conference was the Agile “Software Development” Manifesto: [3]


"Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan" [3]


Besides the manifesto the Agile Alliance agreed upon twelve principles of agile software which they would follow:[3]


  • 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.
  • 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.

Agile (Adaptive) vs. Waterfall (Predictive)

[4]

When to use what

Hybrid product development process

Software vs. Hardware Development

[5]

Application

There are several different agile methodologies such as: Feature-Driven Development, DSDM, Extreme Programming, Adaptive Software Development, Pragmatic Programming, and Crystal [3]. But one of the most commonly used agile methodologies is SCRUM.

Scrum

[6] [7]

Scrum Events

Scrum has several different events to structure the process. The different events are designed to make transparency and share knowledge within the Scrum Team. To reduce complexity, the different events should optimally be held at the same time and place each time.

Sprints

One of the events is the Sprints. The Sprints are only focusing on one feature and typically end up with some MVP [1]. The Sprint is fixed to a certain length at events not exceeding one month [6]. Sprint Planning, Daily Scrum/Stand-up, Sprint Review, and Sprint Retrospective are all events happening within the Sprints. A new Sprint starts right after the conclusion of the Sprint beforehand.

Sprint Planning
Daily Stand up
Sprint Review
Sprint Retrospective

Scrum Artifacts

Project Backlog
Sprint Backlog
MVP

The Scrum Team

In each Scrum Team, there should be one Project Owner, one Scrum Master, and several Developers. When using the Scrum framework, it is important to have a small cross functional team. Meaning that the team members together should have all the skills necessary to complete the work in each sprint. The Scrum Team should be able to manage all types of tasks like research, development, maintenance etc. The team should be small enough to manoeuvre quickly and have good communication, but big enough to complete the job in each sprint. A rule of thumb is that the team should not exceed the number of 10 people. If the number exceeds 10 people, it is possible to divide the team into two Scrum Teams working on the same project but sharing Project Owner and Project Backlog to ensure that they are not doing the same work twice.[6]

Scrum Master

The Scrum Master is one person and is the leader within the team. The Scrum Master is accountable for setting up the Scrum Framework and ensuring that everyone in the team understands the Scrum theory and practice. In addition, the Scrum Master is accountable for:


  • Helping the Scrum Team choose and focus on high-value increments.
  • Remove obstacles in the Scrum Team’s process and improve the practices.
  • Make sure that all events within the Scrum framework take place and are productive to keep it within the scheduled time.
The Project Owner

In a project, there can only be one person as the Project Owner. The Project Owner (PO) is, in the end, the person who is responsible for the product and responsible for getting the most value out of the job done. The PO has mainly two tasks to be accountable for, the overall project goal and the Product Backlog. The PO’s task is:


  • Developing a clear project goal.
  • Creating and communicating tasks for the Product Backlog.
  • Priorities tasks in the Product Backlog.
  • Ensure the Product Backlog is well understood.


It is okay for the PO to delegate the tasks above, but it would always be the PO who is responsible for the tasks. If any other person wants to change anything in the Product Backlog, they have to convince the PO.

Developers

The Developers are those who work on reaching the sprint goal in each sprint. There is usually up to 8 Developers in a Scrum Team. A Developer can have a broad variety of tasks depending on the project and on the sprint. But there are some tasks that the Developer always are accountable for:[6]


  • Creating the sprint backlog.
  • Evaluate when a task is done.
  • Adapting and adjusting the plan each day to reach the sprint goal.

Limitations

Big organization -Need of documentation

References

  1. 1.0 1.1 1.2 1.3 Darrell K. Rigby, Steve Berez, Greg Caimi and Andrew Noble. (2016). Agile Innovation. Bain & Company. URL:https://www.bain.com/insights/agile-innovation/
  2. Nicola Garzaniti, Clément Fortin, Alessandro Golkar. (2019). Toward a Hybrid Agile Product Development Process. Product Lifecycle Management in the Digital Twin Era
  3. 3.0 3.1 3.2 3.3 https://agilemanifesto.org/
  4. Thomke, S. and Reinertsen, D. (1998) ‘Agile Product Development: MANAGING DEVELOPMENT FLEXIBILITY IN UNCERTAIN ENVIRONMENTS’, California Management Review, 41(1), pp. 8–30. doi: 10.2307/41165973.
  5. P. M. Huang, A. G. Darrin and A. A. Knuth, "Agile hardware and software system engineering for innovation," 2012 IEEE Aerospace Conference, 2012, pp. 1-10, doi: 10.1109/AERO.2012.6187425.
  6. 6.0 6.1 6.2 6.3 https://scrumguides.org/scrum-guide.html
  7. N. Garzaniti, S. Briatore, C. Fortin and A. Golkar, "Effectiveness of the Scrum Methodology for Agile Development of Space Hardware," 2019 IEEE Aerospace Conference, 2019, pp. 1-8, doi: 10.1109/AERO.2019.8741892.
Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox