Agile Methodology#
In the realm of software engineering, the agile methodology stands as a modern project management and development practice. This guide aims to familiarise students with the agile framework, emphasising its role in fostering adaptable, efficient, and collaborative software development processes.
Understanding Software Development Lifecycles (SDLCs)#
Software Development Lifecycles (SDLCs) outline the phases involved in creating a software system, including planning, development, testing, and deployment. SDLCs are categorised into formal methodologies and Agile methodologies, each with distinct approaches and principles.
Comparison of SDLCs#
SDLC Type |
Methodology |
Description |
---|---|---|
Formal |
Sequential and linear, requiring the completion of one phase before moving to the next. |
|
Formal |
Builds the system in increments, allowing for partial delivery of the product. |
|
Formal |
Emphasises verification and validation processes parallel to each development phase. |
|
Agile |
Focuses on continuous delivery and workflow visualisation. |
|
Agile |
Implements iterative work cycles called sprints, promoting quick adaptations to change. |
|
Agile |
Prioritises customer satisfaction and adaptive planning for rapid changes. |
Attention
While various SDLC methodologies exist, this course will primarily focus on Scrum. The provided links offer additional insights into other methodologies for those interested.
The Agile Manifesto#
The agile manifesto emerged from the limitations of formal methodologies, advocating for flexibility, customer collaboration, and rapid response to change. It underscores:
Individuals and interactions over processes and tools.
Working software over comprehensive documentation.
Customer collaboration over contract negotiation.
Responding to change over following a plan.
The Scrum Framework#
Scrum, a pivotal Agile framework, encourages teams to work collaboratively and iteratively in sprints, focusing on delivering value through concise, manageable tasks.
Key Components of Scrum#
Sprints: Defined, short periods (typically 2-4 weeks) where specific work must be completed and made ready for review.
Scrum Roles: Distinct roles within the team to facilitate project management and execution, including the Product Owner, Scrum Master, and Development Team.
Scrum Roles Explained#
Product Owner: Guides the team towards delivering maximum value, prioritising work based on client needs and project goals.
Scrum Master: Acts as a servant leader, ensuring the team adheres to Scrum practices and addresses any obstacles hindering progress.
Development Team: Executes the project, encompassing all team members actively working on the software’s development.
Scrum Artefacts#
Product Backlog: A prioritised list of project requirements and tasks, maintained by the Product Owner.
Sprint Backlog: Tasks selected for completion in the current sprint, outlining the team’s immediate focus.
Scrum Ceremonies#
Scrum incorporates several key meetings (ceremonies) to ensure continuous communication, progress assessment, and iterative planning.
Ceremony |
Purpose |
Key Activities |
---|---|---|
Sprint Planning |
Kick-off meeting for each sprint. |
Prioritising tasks and planning the sprint’s workload. |
Daily Stand-up |
Quick, daily check-ins. |
Updating the team on progress and addressing any impediments. |
Sprint Review |
End-of-sprint showcase. |
Presenting completed work to stakeholders for feedback. |
Sprint Retrospective |
Reflective meeting post-sprint. |
Discussing what went well, what didn’t, and how to improve. |
Implementing Agile with Scrum#
Adopting the Scrum framework enables teams to embody agile principles, emphasising flexibility, team collaboration, and customer satisfaction. Through iterative development, continuous feedback, and adaptive planning, Scrum empowers teams to deliver high-quality software that meets evolving client needs effectively.
As you embark on your journey with Scrum, remember that the agile mindset is about embracing change, learning from experiences, and continually striving to improve both the process and the product.
Maximising Collaboration and Quality: Your Guide to Software Project Sprints#
As you embark on this software development journey, we’d like to introduce a structured approach to your development sprints that will enhance your learning and collaboration, and lead to a robust final product. This material was initially designed for a subject with 4 Sprints (12 teaching weeks + 2 weeks during exams for handover). You can easily reapply this approach to different subjects.
Here’s our suggestion on how you can tackle each sprint:
Link to this MIRO board: https://miro.com/app/board/uXjVMeLMFHM=/?share_link_id=504982567591
Sprint 1: Mob Programming#
Mob programming is a collective approach where the whole team works on the same task at the same time, in the same space, and at the same computer. This sprint will be your knowledge-sharing powerhouse, where everyone contributes to the requirements elicitation process. It’s all about team synergy—think of it as a brainstorming session where everyone brings their unique perspective to the table.
Sprint 2: Pair Programming to Individual Development#
You should start Sprint 2 with pair programming. This technique involves two programmers sharing one workstation. It’s an excellent way to build confidence with your development environment and technologies. Begin by coding initial tasks together, then, as you gain confidence, transition into individual development, taking ownership of specific components or features.
Sprint 3: Individual Development#
By Sprint 3, you should be well-acquainted with your project and ready to tackle individual development. This is where you can demonstrate autonomy and apply the skills you’ve practiced and improved before. You’ll be responsible for developing and delivering your piece of the project, contributing to the team’s overall progress.
Sprint 4: Pair Programming for Final Release#
In your final sprint, return to pair programming. Here, you’ll review each other’s work, ensuring that everything is ready for the final release. This is your quality assurance phase, where we double-check each feature, fix bugs, refine documentation, and polish your product to perfection.
Throughout this journey, remember that communication and adaptability are key. Always be open to learning from your peers, and don’t hesitate to share your knowledge. By the end of this project, not only will we have a product we’re proud of, but we’ll also have grown significantly as software engineers.