SE201 · Annotated SlidesChapter 3 — Agile Software Engineering
Chapter 3 · Annotated slides

Agile Software Engineering

Extreme Programming and its practices (user stories, test-first development, pair programming, refactoring, continuous integration), Scrum terminology, roles, sprints and the product backlog, and agile project management.

Slide text Study notes Highlight: key words Tips, tricks & traps Seen again elsewhere How it can come up
Slide 1: Software Engineering
Exam weight Low

    Course Learning Outcome

    CLO1: Recognize Software Engineering principles, life cycle phases, processes, and activities.

    2
    Exam weight Low
      Slide 3: Agile software engineering
      Exam weight Low

        Extreme Programming (XP)

        • The most influential work that has changed software development culture was the development of Extreme Programming (XP).
        • The name was coined by Kent Beck in 1998 because the approach was developed by pushing recognized good practices, such as iterative development, to ‘extreme’ levels.
        • Extreme programming focused on 12 new development techniques that were geared to rapid, incremental software development, change and delivery.
        • Some of these techniques are now widely used; others have been less popular.
        4
        Exam weight Low
        1. XP: an influential agile method taking good practice to the "extreme": very frequent releases, small increments.
        Slide 5: Extreme Programming Practices
        Exam weight Low
        1. XP practices: incremental planning, small releases, simple design, test-first development, refactoring, pair programming, collective ownership, continuous integration, sustainable pace, on-site customer.

        Widely adopted XP practices

        • Incremental planning/user stories – There is no ‘grand plan’ for the system. Instead, what needs to be implemented (the requirements) in each increment are established in discussions with a customer representative. In XP, a customer or user is part of the XP team and is – responsible for making decisions on requirements. User requirements are expressed as user stories or – scenarios. The customer chooses the stories for inclusion in the next – release based on their priorities and the schedule estimates.
        6
        Exam weight Low
          Slide 7: A ‘prescribing medication’ story
          Exam weight Low
          1. User stories: short scenarios from the user’s view; broken into task cards that are estimated.
          Slide 8: Examples of task cards for prescribing medication
          Exam weight Low

            Widely adopted XP practices

            • 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 previous release.
            9
            Exam weight Low

              Widely adopted XP practices

              • Test-driven development Instead of writing code then tests for that code, – developers write the tests first. This helps clarify what the code should actually do. – An automated unit test framework is used to run – the tests after every code contribution.
              10
              Exam weight High
              1. Test-first (TDD): write the test before the code; tests are automated and run on every build.
              🎯 How this can come up · 1 question
              MCQ

              In XP, tests are written:

              Slide 11: Test case description for dose checking
              Exam weight Low

                Widely adopted XP practices

                • Continuous integration As soon as the work on a task is complete, it is – integrated into the whole system and a new version of the system is created. All unit tests from all developers are run – automatically and must be successful before the new version of the system is accepted.
                12
                Exam weight High
                1. Refactoring: improve structure without changing behaviour. Pair programming: two developers at one computer, roles swap.
                🎯 How this can come up · 1 question
                MCQ

                Improving code structure without changing what it does is:

                Widely adopted XP practices

                Refactoring

                Refactoring means improving the structure, readability, efficiency and

                –

                security of a program.

                Conventional wisdom in software engineering is to design for change. It

                –

                is worth spending time and effort anticipating changes and add generality to a program to cope with change, which might reduce costs later in the life cycle.

                XP, however, maintains that this is not worthwhile as changes cannot be

                –

                reliably anticipated.

                All developers are expected to refactor the code as soon as potential

                –

                code improvements are found.

                This keeps the code simple and maintainable.

                –

                13
                Exam weight Low
                  Slide 14: Slide 14
                  Exam weight Low

                    Scrum

                    • The principal responsibility of software project managers is to manage the project so that the software is delivered on time within the and planned budget.
                    • The standard approach to project management is plan-driven: Managers draw up a plan for the project showing what should be delivered, when it should be delivered and who will work on the development of the project deliverables.
                    • Agile project management requires a different approach, which is adapted to incremental development and the practices used in agile methods: Plans always change so anything apart from short-term plans are unreliable.
                    15
                    Exam weight Low

                      What is Scrum?

                      • Scrum is an agile method that focuses on managing iterative development rather than specific agile practices.
                      • There are three phases in Scrum. The initial phase is an outline planning phase where you – establish the general objectives for the project and design the software architecture. This is followed by a series of sprint cycles, where each cycle – develops an increment of the system. The project closure phase wraps up the project, completes – required documentation such as system help frames and user manuals and assesses the lessons learned from the project.
                      16
                      Exam weight Low
                        Slide 17: Scrum Terminology (a)
                        Exam weight Low
                        1. Scrum terms: product backlog, sprint backlog, sprint (2–4 weeks), daily scrum, velocity, potentially shippable increment.
                        Slide 18: Scrum Terminology (b)
                        Exam weight Low

                          Key roles in Scrum

                          19
                          Exam weight High
                          1. Roles: Product Owner (owns and prioritizes the backlog), Scrum Master (coach, removes impediments), Development Team (self-organizing).
                          Exam trapThe Scrum Master is NOT a traditional project manager; the Product Owner prioritizes.
                          🎯 How this can come up · 2 questions
                          MCQ

                          Who prioritizes the product backlog?

                          MCQ

                          Who removes impediments for the team?

                          Key roles in Scrum

                          • The Product Owner is responsible for ensuring that the development team are always focused on the product they are building rather than diverted into technically interesting but less relevant work. In product development, the product manager should normally – take on the Product Owner role.
                          • The Scrum Master is a Scrum expert whose job is to guide the team in the effective use of the Scrum method. The developers of Scrum emphasize that the Scrum Master is not a conventional project manager but is a coach for the team. They have authority within the team on how Scrum is used. In many companies that use Scrum, the Scrum Master also has – some project management responsibilities.
                          20
                          Exam weight Low

                            Scrum and sprints

                            • In Scrum, software is developed in sprints, which are fixed-length periods (2 - 4 weeks) in which software features are developed and delivered.
                            • During a sprint, the team has daily meetings (Scrums) to review progress and to update the list of work items that are incomplete.
                            • Sprints should produce a ‘shippable product increment’. This means that the developed software should be complete and ready to deploy.
                            21
                            Exam weight High
                            1. Sprint: a fixed time-box producing a potentially shippable increment. Sprint planning → daily scrums → review → retrospective.
                            🎯 How this can come up · 1 question
                            MCQ

                            The daily scrum is a short meeting where the team:

                            Scrum Process Flow

                            30/10/2014

                            Chapter 3 Agile Software Development

                            22
                            Exam weight Low
                              Slide 23: Scrum Sprint Cycle
                              Exam weight Low

                                Key Scrum practices

                                • Product backlog This is a to-do list of items to be implemented that is reviewed and updated before each sprint.
                                • Timeboxed sprints Fixed-time (2-4 week) periods in which items from the product backlog are implemented,
                                • Self-organizing teams Self-organizing teams make their own decisions and work by discussing issues and making decisions by consensus.
                                24
                                Exam weight Low

                                  Product backlogs

                                  • The product backlog is a list of what needs to be done to complete the development of the product.
                                  • The items on this list are called product backlog items (PBIs).
                                  • The product backlog may include a variety of different items such as product features to be implemented, user requests, essential development activities and desirable engineering improvements.
                                  • The product backlog should always be prioritized so that the items that have to be implemented first are at the top of the list.
                                  25
                                  Exam weight Low
                                  1. Product backlog: a prioritized list of items (features, bugs, tech work) to do.

                                  Examples of product backlog items (PBIs)

                                  1. As a teacher, I want to be able to configure the group of tools that are available to individual classes. (feature)
                                  2. As a parent, I want to be able to view my children's work and the assessments made by their teachers. (feature)
                                  3. As a teacher of young children, I want a pictorial interface for children with limited reading ability. (user request)
                                  4. Establish criteria for the assessment of open source software that might be used as a basis for parts of this system. (development activity)
                                  5. Refactor user interface code to improve understandability and performance. (engineering improvement)
                                  6. Implement encryption for all personal user data. (engineering improvement)
                                  26
                                  Exam weight Low

                                    Product Backlog Item States

                                    The definition of “Ready”

                                    • Ready for consideration These are high-level ideas and feature descriptions that will be considered for inclusion in the product. They are tentative so may radically change or may not be included in the final product.
                                    • Ready for refinement The team has agreed that this is an important item that should be implemented as part of the current development. There is a reasonably clear definition of what is required. However, work is needed to understand and refine the item.
                                    • Ready for implementation The PBI has enough detail for the team to estimate the effort involved and to implement the item. Dependencies on other items have been identified.
                                    27
                                    Exam weight Low
                                    1. PBI states: ready for consideration → ready for refinement → ready for implementation.
                                    Slide 28: Product Backlog Activities
                                    Exam weight Low

                                      Sprint Activities

                                      • The highest-priority items that are ready for implementation in the product backlog are selected for implementation in the next sprint.
                                      • Team members work together to plan the sprint by analyzing the selected items to create the sprint backlog. This is a list of activities to be completed during the sprint.
                                      • During implementation, the team implements as many of the sprint backlog items as they can in the fixed time period (same for each iteration) allowed for the sprint.
                                      • Incomplete items are returned to the product backlog. Sprints are never extended to finish an incomplete item.
                                      29
                                      Exam weight Low

                                        Managing External Interactions

                                        All development teams, even those working in small start-ups or non-commercial development, have some external interactions. Some interactions will help the team understand what customers require from the software product being developed.

                                        Others will be with company management and other parts of the company, such as human resources and marketing.

                                        In a Scrum project, the ScrumMaster and the Product Owner should be jointly responsible for managing interactions with people outside the team

                                        Source: Ian Sommerville (2019), Engineering

                                        30
                                        Exam weight Low
                                          Slide 31: Managing External Interactions
                                          Exam weight Low

                                            Project management

                                            • In all but the smallest product development companies, there is a need for development teams to report on progress to company management.
                                            • A self-organizing team has to appoint someone to take on these responsibilities. Because of the need to maintain continuity of communication with – people outside of the group, rotating these activities around team members is not a viable approach.
                                            • The developers of Scrum did not envisage that the ScrumMaster should also have project management responsibilities. In many companies, however, the ScrumMaster has to take on project – management responsibilities. – They know the work going on and are in the best position to provide accurate information and project plans and progress.
                                            32
                                            Exam weight Low
                                              Slide 33: Project Management Responsibilities
                                              Exam weight Low
                                              1. Agile PM: the team estimates and commits; the Scrum Master facilitates; transparency through boards and burndown charts.
                                              Slide 34: The Continuum of Life Cycles
                                              Exam weight Low

                                                Summary

                                                • Agile methods are based around iterative development and the minimization of overheads during the development process.
                                                • Extreme programming (XP) is an influential agile method that introduced agile development practices such as user stories, test-first development and continuous integration. These are now mainstream software development activities.
                                                35
                                                Exam weight Low

                                                  Summary

                                                  • Scrum is an agile method that focuses on agile planning and management. Unlike XP, it does not define the engineering practices to be used. The development team may use any technical practices that they believe are appropriate for the product being developed.
                                                  • In Scrum, work to be done is maintained in a product backlog – a list of work items to be completed. Each increment of the software implements some of the work items from the product backlog.
                                                  36
                                                  Exam weight Low

                                                    Summary

                                                    • Sprints are fixed-time activities (usually 2–4 weeks) where a product increment is developed. Increments should be ‘potentially shippable’ i.e. they should not need further work before they are delivered.
                                                    • A self-organizing team is a development team that organizes the work to be done by discussion and agreement amongst team members.
                                                    • Scrum practices such as the product backlog, sprints and self-organizing teams can be used in any agile development process, even if other aspects of Scrum are not used.
                                                    37
                                                    Exam weight Low