Implementation and Testing

Prioritizing feature implementation

This is a difficult planning problem

Iteration / Release Planning

Software iterations and releases

An iteration of a project is a planned global step in the development of a piece of software.


A release is a stable iteration released to some users.


Iteration Planning

Iteration plans

For iterations 3-6 of your projects you will need to supply an iteration plan. See Iteration 3 for the specific requirements. The previous project examples show some example iteration plans.

Implementation Principles

Here are some good principles for implementation, many of which are from the Agile school of thought.

Practice Collective Code Ownership

Continuous Integration (CI)

Build the whole system on a regular basis, don't work on a subcomponent in isolation for long

Below we discuss CI services for automating testing of the integration process.

Have a coding standard

Pair Programming

Pair programming is two people programming on one terminal.

Is it good? Bad? Ugly?


Refactoring is an independent future lecture topic. At the root its very simple: sometimes its better to stop adding features and instead redo existing code to be more elegant and more aligned to they way you (now) see you are going.


Testing is a major component of commercial software development.

Testing Hierarchies

We use a simple testing hierarchy that has become common today

Unit Testing

Write small tests for each nontrivial operation

Unit testing in Java with JUnit

Test Coverage

Test Coverage Tools

We will run the IntelliJ code coverage tool on the Todo app test suite.

Degrees of importance of thorough testing

The degree of commitment varies by the size, complexity, and need for correctness of the project. Here are some points on the spectrum.

Acceptance testing

Behavior-Driven Development

BDD is a relatively new approach to acceptance testing

Integration Testing

CI Services for integration (and acceptance) testing

We will show Travis-CI in action running the tests of the simple Todo app.

Things that are harder to test automatically

You need to work harder to get some features automatically tested.