Agile Technical Practices

 

Course Description

This course teaches students some of the technical practices that are commonly used on an Agile project.  It is a hands-on course, with examples and exercises to illustrate and reinforce the key points made in the lecture.

 

Prerequisite 

As there are numerous programming exercises in this class, a knowledge of Java is required.  This course also presumes a familiarity with Scrum.
 

Duration

2 Day

 

Course Objectives

Upon completion of this course, students will be able to:

  1.   Identify at least three code smells that indicate existing code needs to be refactored;

  2.   Use common refactoring techniques, such as Extract Method and Extract Interface, to refactor a code sample; and

  3.   Explain the SOLID principles, and give examples of each.

 

Detailed Course Outline
I.  Programming by Intention
  1.   Visualizing the code you wish you had

  2.   Using helper methods

  3.   Delegating

  4.   Preview of Extract Method and Extract Interface refactoring techniques
     

II.  SOLID Design Principles
  1.   Single Responsibility principle

  2.   Open / Closed principle

  3.   Liskov Substitution principle

  4.   Interface Segregation principle

  5.   Dependency Inversion principle
     

III.  Architecture and Agile
  1.   Onion Architectures

  2.   Evolving Architectures
     

IV.  Refactoring
  1.   Code smells

  2.   Refactoring Techniques

  3.   Refactoring Case Study

V.  Test Driven Development
  1. Test first vs Test Driven Development

  2. Driving Development with tests

VI.  Acceptance Test Driven Development
  1. Business readable tests

  2. Executable Specification
     

V.  Continuous Integration
  1. Branches and Merges

  2. Integration complexity

  3. Continuous Integration

  4. CI environments