labs / tiddlywiki / tiddlers / content / labs / lab02 / _Labs_02_Issue Driven Development.tid
created: 20200702091026430
modified: 20200707005526287
section: 3
tags: lab02
title: /Labs/02/Issue Driven Development
type: text/x-markdown

We have mentioned *issue driven development* a few times.  This is the idea of using an issue management system as a 'to do list' to drive your development.  Issues help you to give your commits more context and make it easier for yourself and other developers to find the code for a particular feature or bug.  Issues also help to form part of the documentation for the system, particularly since developers can add comments to issues to elaborate on decisions or provide clarification for problems and bugs.

Using issues is also a good way of ensuring that your commits make sense --- work on a single issue and then commit before starting on the next issue.  If you do this then your commit history will be focused around your issues, and assuming your issues are based on features, bugs, and other logical work units (which they should be), then your commit history will make sense, and will be useful to you and your team mates in the future.

Let's create an issue:

1. On the GitBucket web page for your repository, click the <<menu "Issues">> link in the menu on the left.

   Click the <<menu "New Issue">> button on the right.

1. One of the first things you will need to do in the course project is to create the domain classes.  Add an issue with the title 'Create domain classes'.  You can also add a description explaining which domain classes you will need (`Product`, `Customer`, `Sale`, and `SaleItem`).

   Think of this issue as an item on your 'to do list'.  It should have enough detail that it should still make sense to you in several days/weeks time.

   When you are happy, click <<menu "Submit new issue">>.

1. Click the <<menu "Issues">> menu item on the left again.  This is effectively your to do list for this repository.

   There is another <<menu "Issues">> link at the top of the page.  This one will show you your issues for all of your repositories.