Skip to content

Latest commit

 

History

History
135 lines (94 loc) · 5.99 KB

LearningOutcomes.md

File metadata and controls

135 lines (94 loc) · 5.99 KB

Learning Outcomes

After studying this code and completing the corresponding exercises, you should be able to,

  1. Use High-Level Designs [LO-HighLevelDesign]
  2. Use Event-Driven Programming [LO-EventDriven]
  3. Use API Design [LO-ApiDesign]
  4. Use Assertions [LO-Assertions]
  5. Use Logging [LO-Logging]
  6. Use Defensive Coding [LO-DefensiveCoding]
  7. Use Build Automation [LO-BuildAutomation]
  8. Use Continuous Integration [LO-ContinuousIntegration]

Use High-Level Designs [LO-HighLevelDesign]

Note how the Developer Guide describes the high-level design using an Architecture Diagrams and high-level sequence diagrams.


Use Event-Driven Programming [LO-EventDriven]

Note how the Developer Guide uses events to communicate with components without needing a direct coupling. Also note how the EventsCenter class acts as an event dispatcher to facilitate communication between event creators and event consumers.


Use API Design [LO-ApiDesign]

Note how components of AddressBook have well-defined APIs. For example, the API of the Logic component is given in the Logic.java

Resources

  • A three-minutes video of designing architecture of and discovering component APIs for a Game of Tic-Tac-Toe.

Use Assertions [LO-Assertions]

Note how the AddressBook app uses Java asserts to verify assumptions.

Resources

Exercise: Add more assertions

  • Make sure assertions are enabled in Eclipse by forcing an assertion failure (e.g. add assert false; somewhere in the code and run the code to ensure the runtime reports an assertion failure).

  • Add more assertions to AddressBook as you see fit.


Use Logging [LO-Logging]

Note how the AddressBook app uses Java's java.util.log package to do logging.

Resources

Exercise: Add more logging

Add more logging to AddressBook as you see fit.


Use Defensive Coding [LO-DefensiveCoding]

Note how AddressBook uses the ReadOnly* interfaces to prevent objects being modified by clients who are not supposed to modify them.

Exercise: identify more places for defensive coding

Analyze the AddressBook code/design to identify,

  • where defensive coding is used
  • where the code can be more defensive

Use Build Automation [LO-BuildAutomation]

Note how the AddressBook app uses Gradle to automate build tasks.

Resources

Exercise: Use gradle to run tasks

  • Use gradle to do these tasks (instructions are here) : Run all tests in headless mode, build the jar file.

Exercise: Use gradle to manage dependencies

  • Note how the build script build.gradle file manages third party dependencies such as ControlsFx.
    Update that file to manage a third-party library dependency.

Use Continuous Integration [LO-ContinuousIntegration]

Note how the AddressBook app uses Travis to perform Continuous Integration.

Resources

Exercise: Use Travis in your own project

  • Set up Travis to perform CI on your own project.

{More to be added}

  • Integration testing
  • System testing
  • Acceptance testing (+dogfooding)
  • Equivalence classes
  • Boundary value analysis
  • Test input combination
  • GUI test automation
  • Design patterns
  • Static analysis
  • Code reviews
  • Code coverage