You Will Learn How To
- Deliver adaptable software more quickly using Agile methodologies such as XP and Scrum
- Capture user stories, estimate work and plan iterations, sprints and releases
- Minimise bugs and maximise productivity with test-driven development
- Refactor existing code for easier maintenance and improved design
- Craft quality designs by adopting established coding principles and design patterns
- Facilitate team communication with stand-up meetings, iteration reviews and retrospectives
Course Benefits
Saving time and money on software development is crucial to being competitive. Agile methodologies, including Scrum and XP, reduce cost, increase quality and speed time to market. In this course, you gain a solid foundation in Agile programming principles. Through an immersive case study, you acquire practical knowledge and skills to plan, code and implement an Agile software project using methodologies like XP and Scrum.
Who Should Attend
This course is valuable for anyone working on a software development team including analysts, designers, programmers, testers and technical managers. An understanding of basic software engineering practices and development experience is assumed.

Throughout this course, experiential and PC-based activities immerse you in an authentic Agile programming project simulation. You perform critical tasks, including:
- Meeting with customers to generate user stories
- Estimating and prioritising user stories
- Attending a spike session to learn new technology
- Writing tests and code to bring user stories to life
- Refactoring to remove code smells for elegant design
- Implementing an adaptable architecture through design patterns
- Delivering software in frequent iterations using XP or Scrum
- Conducting sprint reviews and retrospectives to facilitate learning
Course Content
Introduction and Overview
- Adopting the best practices of the Agile Manifesto
- Comparing plan-driven and Agile software methodologies
- Identifying Agile best practices and process steps
Planning an Agile Release
Establishing the Agile project
- Recognising the structure of an Agile team
- Programmers
- Managers
- Customers
- Building cross-functional teams
Developing a foundation with user stories
- Eliciting application requirements
- Capturing user stories
- Recognising good user stories
Estimating
- Defining an estimation unit
- Estimating relative work
- Calculating team velocity
- Refining the budget based on velocity
Planning releases, iterations and sprints
- The planning game
- Establishing an iteration budget
- Prioritising user stories
- Creating product and sprint backlogs
- Managing scope creep
Comparing Scrum and XP
- Scrum Master
- Product Owner
- Scrum Team
Crafting Adaptive Software through Test-Driven Development
Driving the design process with automated testing
- Programming automated tests
- Validating user stories with user acceptance tests
- Writing code based on the tests
Integrating unit testing
- Developing effective test suites
- Drafting unit tests that are simple, isolated and fast
- Isolating classes for effective testing
- Creating mock objects for testing
Refactoring for Elegant Design
Recognising code smells
- Conditional logic
- Code duplication
- Code that needs comments
Cleaning code with refactoring
- Renaming fields and methods
- Extracting methods and base classes
- Designing for simplicity and reuse
Integrating Object-Oriented Programming Principles
Adopting the best practices principles
- Single Responsibility Principle (SRP)
- Open/Closed Principle (OCP)
- Dependency Inversion Principle (DIP)
- Liskov Substitution Principle (LSP)
- Interface Segregation Principle (ISP)
Evolving design from the bottom up
- Delegating class responsibilities
- Achieving polymorphic behaviour
- Preferring composition over inheritance
Simplifying Complex Architectural Problems Using Design Patterns
Defining design patterns
- Creational, Structural and Behavioural patterns
- Guaranteeing the correctness of an adaptable design
Integrating design patterns into the Agile process
- Template Method
- Adapter
- Strategy
- Singleton
- Factory Method
Finishing an Iteration
Reviewing an iteration or sprint
- Delivering the software
- Estimating subsequent iterations
- Adjusting budgets based on actual velocity
Conducting a sprint retrospective
- Brainstorming on what was learned
- Building an action plan to maximise productivity
- Incorporating Agile best practices and tools
|
<< Back to Software Engineering Course List
Related Courses
RealityPlus is a trademark of Learning Tree International.