Milestone 4


Due: Monday, November 27th, 09:59 PM

Tuesday, November 28th, 09:59 PM

You will now start the development of the library modules. As part of test-driven design, you should first write the tests of a functionality, and then write the code, based on the API you defined in Milestone 3.

Software Organization

Before any code is written, discuss how you plan on organizing your software package. With the idea of classes/modules in mind, organize your code according to the API identified in milestone 3. This is a more detailed organization and should reflect said API (If you already did this for milestone 3, you may use it for milestone 4 or expand it if you need it).

Describe your choices in the milesone4 document (even if you already wrote it for milestone 3). You have to follow the guidelines shown during lectures.

Licensing

Licensing is an essential consideration when you create new software. You should choose a suitable license for your project. A comprehensive list of licenses can be found here. The license you choose depends on factors such as what other software or libraries you use in your code (copyleft, copyright). Will you have to deal with patents? How can others advertise software that makes use of your code (or parts thereof)? You may consult the following reading to aid you in choosing a license:

Briefly motivate your license choice in the milesone4 document and add a LICENSE file to the root of your project.

Implementation

New features should be developed on independent branches. For this, you will leave the main branch only for the code graded by the teaching staff. The branch dev will contain the code in development. You are free to create as many branches as you need and merge them into dev. Do not delete the branches used to develop new features until the teaching staff review them. Remember that you can also create as many workflows as you want.

Note: You can commit multiple times to your local repository and clean the local history if needed. Push only when you pass the tests.

Steps to complete

  1. In the main branch and within your docs sub-directory, create a file called milestone4. The type of file is up to you and your group. Two acceptable choices are markdown (milestone4.md) or a Jupyter notebook (milestone4.ipynb).
  2. Your milestone4 document submission should be in the following format:
teamXX/
├── docs
│   └── milestone4
├── LICENSE
├── README.md
└── ...
  1. Describe the software organization and licencing in milestone4.
  2. Create branch dev.
  3. Create the branch featurename to implement your module. Replace "featurename" with the name of the module you want to implement.
  4. In that branch, write the tests for the module you want to implement. You should commit them before the writing/pushing any other code.
  5. Write the code for the module you wrote the tests for.
  6. Every test for the modules should pass.
  7. The code coverage must be at least 90%.
  8. Merge the branch into dev.
  9. (Optional) You can implement another feature, following steps 5-10. You are encouraged to develop the main modules as soon as possible, to focus on the integration later on.

Final Deliverables

  1. The docs/ directory should include a document called milestone4 (the extension is up to you, but .md or .ipynb are recommended.
  2. Proper licensing of your project.
  3. Tests and implementation for your module(s).

Grading breakdown

Points Task
4 Software Organization
4 License
15 Implementation
15 (optional) Additional implementation
23(38) Total