M2 Course
Principles, disciplines and techniques of Agile Software Development

Analysts, programmers, team leaders, testers, architects and project managers who already have experience with Agile methodologies. The understanding of application software development process and programming in general, the ability to create, test and run programs (preferably in Java, C #, Ruby or Groovy) is required also.
Course Objectives
The Agile Software Development is a set of disciplines, principles and practices that improve the ability to quickly and effectively build complex, actually working and reusable software.
In any case, the Agile methodologies per se are not a panacea. This course is therefore aimed at programmers, test leaders, team leaders, architects and managers who need to learn new practices in a pragmatic agility.
Software development process
  • Software development processes and current challenges
  • Iterative and incremental process
  • Agile Manifesto and Principles
Agile methodologies
  • Strengths and weaknesses of Agile methodologies
  • Scrum, XP, DSDM, Lean Development, Crystal, FDD and the Unified Process
  • Comparison between the various Agile methodologies
  • Agile Methodology workshop
Software Planning
  • Planning software projects
  • Using User Stories
  • Release Planning and iterations
  • Agile Planning workshop
Design aspects
  • Risk minimization
  • How to validate a design
  • Up Front Design with respect to Emerging Design
  • Agile Design workshop
Test Driven Development and refactoring
  • Tools and techniques for TDD
  • Practical unit tests, Mock Objects
  • Using xUnit and TestNG frameworks
  • TDD Patterns
  • Continuous refactoring code
  • Test Driven Development workshop
Continuous Integration
  • Integrating frequently
  • Automate the building and testing process
  • Beyond unit, integration and functional testing
  • Authomatic acceptance testing: Fit and FitNesse
  • Continuous Integration workshop
Principi di Object Oriented
  • Coupling and Cohesion, Law of Demeter
  • Characteristics of bad design:
    • viscosity, opacity, immobility, weakness
    • unnecessary complexity
  • Characteristics of a good design:
    • Single Responsibility Principle (SRP)
    • YAGNI, DRY ...
  • Open Closed Principle
  • Dependency Inversion Principle
  • Quality metrics
  • Object Oriented workshop
Open Source tools
  • Definition of agile tools
  • Tool to measure progress, quality of design and code
  • Modeling and process tools
  • Open Source Tools design workshop
Agile Development Practices
  • Beyond the basics of the agile development process
  • Develop what the customers really want
  • Feedbacks, debugging and agile collaboration
  • Agile Practices workshop
At the end of the course
Participants will have acquired the following skills:
  • How to apply principles of profits from different agile methodologies.
  • To have a pragmatic approach more than being dogmatic as regards agile principles.
  • To use different metrics and testing tools which can optimize the agile software development.
  • Various techniques for estimating, planning and execution of agile projects.
Training method
Theoretical and practical, or course elements will alternate theoretical illustration of specific cases and demonstration of the various principles, frameworks and agile practices. Delivery will be based on practical-exercises, for which the exercises will be balanced on the basis of the relevance of the topics covered.

5 days full time (9.30 - 13.00)   (14.00 - 17.00)