- #[[CT216 - Software Engineering I]] - **Previous Topic:** [[Software Processes]] - **Next Topic:** [[SCRUM Roles & Ceremonies]] - **Relevant Slides:** ![Week 3 - Introduction to Agile Methods - Scrum(1).pdf](../assets/Week_3_-_Introduction_to_Agile_Methods_-_Scrum(1)_1663848442133_0.pdf) - - # Software Development Lifecycle - What is the **Software Lifecycle**? #card card-last-interval:: 4 card-repeats:: 2 card-ease-factor:: 2.7 card-next-schedule:: 2022-11-22T18:34:10.895Z card-last-reviewed:: 2022-11-18T18:34:10.895Z card-last-score:: 5 - The **software lifecycle** is an abstract representation of a software process. It defines the steps, methods, tools, activities, and deliverables of a software development project. - The following **lifecycle phases** are considered: - 1. Requirement Analysis 2. System Design 3. Implementation 4. Integration & Deployment 5. Operation & Maintenance - ## SDLC Limitations - Classical project planning methods have a lot of disadvantages: - Huge efforts during the planning phase (requirements + design). - Poor requirements conversion in a rapidly changing environment. - Treatment of staff as a factor of production. - - # Agile - What is **Agile**? #card card-last-interval:: 9.28 card-repeats:: 3 card-ease-factor:: 2.32 card-next-schedule:: 2022-11-23T22:34:56.520Z card-last-reviewed:: 2022-11-14T16:34:56.520Z card-last-score:: 5 - There is no single definition of Agile, but the Agile Manifesto is the closest to a defintion. - Set of principles. - Developed by Agile Alliance. - Agile methods focus on: - Individuals & interactions over processes & tools. - Working software over comprehensive documentation. - Customer collaboration over contract negotiation. - Responding to change over following a plan. - The [Agile Alliance](www.agilealliance.org) is a non-profit organisation promotes agile development. - ## Agile Motivation - Agile proponents argue: - Software development processes relying on lifecycle models are too heavyweight or cumbersome. - Too many things are done that are not directly related to the software product being produced, i.e., design, models, requirements docs, documentation that isn't shipped as part of the product. - Difficulty with incomplete or changing requirements. - Short development cycles (Mobile Apps). - More active customer involvement needed. - There are several Agile methods, including **Scrum** and **Extreme Programming (XP)**. - ## SCRUM - What is **Scrum**? #card card-last-score:: 5 card-repeats:: 4 card-next-schedule:: 2022-12-06T08:19:38.287Z card-last-interval:: 21.53 card-ease-factor:: 2.32 card-last-reviewed:: 2022-11-14T20:19:38.287Z - **Scrum** is an agile project management methodology for managing product development. - It allows us to rapidly and repeatedly inspect actual working software (every two weeks to one month). - The business sets the priorities. The teams **self-manage** to determine the best way to deliver the highest priority features. - Every two weeks to a month, anyone can see real, working software and decide to release it as is or continue to enhance it for another iteration. - ### Characteristics of Scrum #card card-last-score:: 3 card-repeats:: 3 card-next-schedule:: 2022-11-19T18:30:55.633Z card-last-interval:: 8.32 card-ease-factor:: 2.08 card-last-reviewed:: 2022-11-11T11:30:55.634Z - Self-organising teams. - No need for project manager (in theory). - Product progresses in a series of month-long or biweekly **sprints**. - Assumes that the software cannot be well defined and requirements will change frequently. - Requirements are captured as items in a list of **product backlog**. - No specific engineering practices prescribed. - XP, TDD, FDD. - Best approach is to start with Scrum and then invent your own version using XP, TDD< FDD, etc. - ### Daily SCRUM / Standup #card card-last-interval:: 33.64 card-repeats:: 4 card-ease-factor:: 2.9 card-next-schedule:: 2022-12-21T00:50:15.178Z card-last-reviewed:: 2022-11-17T09:50:15.179Z card-last-score:: 5 - Parameters: - Daily. - 15-minutes. - Stand-up. - **Not** for problem solving. - Only team members, Scrum Master, & Product Owners should talk. - Should help to avoid additional unnecessary meetings. - Commitment in front of peers to complete tasks. - ^^Answer 3 questions:^^ - ^^What did you do yesterday?^^ - ^^What will you do today?^^ - ^^Is anything in your way?^^ - The Daily SCRUM is **not** a problem-solving session and is **not** a way to collect information about who is behind the schedule. - It is a meeting in which members make commitments to each other and to the SCRUM Master. - It is a good way for a SCRUM Master to track the progress of the team. -