labs / tiddlywiki / tiddlers / content / labs / lab02 / _Labs_02_Issue Driven Development.tid
@sbis202 sbis202 on 14 Jul 2020 1 KB Typofixes
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.

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 makes 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.

1. Add another issue to remind yourself to create a data entry form for the product domain class to allow users to enter the details for a product.