-
Notifications
You must be signed in to change notification settings - Fork 12
Development cycle
This page describes the development cycle for the plugins in BoneJ2. The project follows an iterative model: the plugins won't be written one by one from start to finish. Rather features are added little by little over several development cycles. For example, I'm first going to write the core algorithms in the Volume fraction
plugin, and then later on add the option to limit the calculations to ROIs (after that's been implemented in ImageJ2). I acknowledge that this page presents an idealized version of the development. In real life it often won't go so cleanly. For example, some details that need to be in the technical specification are only discovered during programming.
NB Cutting a new version of BoneJ2 for the update site is a separate topic
Repeat for each plugin:
- Update the spec for this iteration. Write down specifications for the functionality that is going to be implemented in this cycle
- Write a list of tasks from the specs with Trello or some such project management tool
- Design the integration tests (DINT) using the specs as a basis
- Create a new branch in the repository for your plugin
- Implement and write unit tests
- Hide the corresponding BoneJ1 plugin if the new plugin is ready to supersede
- Remove code marked
@Deprecated
in the previous cycle - Add
@Deprecated
annotations to code that has now become obsolete* - Perform integration tests (PINT). The tests shall be performed on a real installation of ImageJ.
- Bump POM version (SNAPSHOT)
- Merge with master after tests pass
- Check that Jenkins build succeeds
- Create pull requests for functionality you want to migrate to core modules such as
imagej-common
- Write and publish a release notice for the new POM version
*Code may become obsolete either because it's reimplemented from BoneJ1 (Legacy module) to BoneJ2, or because it's migrated from BoneJ2 to core libraries like imagej-ops