This course introduces students to Agile Software Development principles and processes with an emphasis on Scrum.
This course is intended for students who are new to Agile methodology as well as those who wish to gain a more thorough understanding of the Agile Software Development principles and processes. After a brief overview of traditional approaches to managing software development projects, students explore Agile Software Development principles and processes. The main emphasis is on the Scrum framework: students gain understanding of the core concepts like Scrum roles, events and artifacts, as well as planning and execution of sprints.
Through role playing and class discussions, students explore the characteristics and skills of an effective Scrum Master, Product Owner and Development Team.
While emphasis is on Scrum, the most popular Agile framework currently in use, students additionally learn about several other Agile methodologies and frameworks.
Students are also introduced to a large variety of concepts, ideas and the mindset supporting Agility. Students learn about requirements analysis, modelling and project management in an Agile environment, quality assurance, engineering practices such as continuous integration, servant leadership and management approaches, how to build effective teams and increase performance and Agile culture and common tools.
Course Level Learning Outcomes
By completion of this course, successful students will be able to:
- Understand the Agile Software Development values and principles, concepts, practices and frameworks.
- Understand the Scrum framework, its applicability to software development projects, main roles, events, artifacts and concepts
- Participate in an Agile Software Development team’s planning and execution processes in a variety of roles
Topics of Instruction
- Traditional approaches to software development
- Introduction to Agile concept, values, principles
- Introduction to iterative and incremental development
- Focus on Scrum: theory, values, Scrum Team, roles and responsibilities, events, sprint, artifacts
- Requirements analysis and modelling in an Agile environments
- User stories
- Project management in an Agile environment including gauging progress, realignment, controlling the project, reporting
- Common tools/concepts: Sprint board, burn down/up charts, velocity
- Role of Project Manager on Scrum Team
- Introduction to other Agile/iterative methodologies including Extreme Programming, Kanban/Scrumban, RUP, SAFe, Nexus
- Quality assurance: importance, responsibilities, practices
- Test Driven Development
- Concept and engineering practices: Technical Debt, Continuous Integration, Unit and integration testing
- Leadership and building effective teams, traditional management approaches
- Servant leadership: concepts, practices, criticisms
- Common tools and methods
- Planning and estimation including planning poker
- Moving towards Agility in your organization: impediments, techniques, practices
- ICT 709 Software Development Foundations (completed before course start)
- A minimum of 6 months experience working in software development with any programming language
- Familiarity with software development methodologies and testing