Skip to content. | Skip to navigation

Personal tools

Sections
You are here: Home / Developer / Development stages

Development stages

Overview of the various stages of development of Evolvix coding projects.

For a system as complex as Evolvix, different coding projects will be at different stages in the software development lifecycle. It helps to distinguish the following stages of development:

  • Idea: some high-level insight into future needs or opportunities for solving current needs; user stories generated by us or others. Incoming ideas get sorted into postponed ideas and ignored ideas. The former get revisited and will hopefully be implemented some day. The latter are ignored for current planning, until they may get upgraded to postponed ideas.
  • Planning: analyze requirements, check for prior art and existing solutions, set priorities on which ideas to pursue in light of limited resources, flesh out user stories into more detailed use cases, define tests, identify code libraries and tools to use. Write a project proposal to document why this is needed. Review before next stage starts and decide whether research is needed.
  • Research: sometimes planning will highlight the need for further research in maths, statistics or computer science, in order to help decide how to best design a given functionality. Should that be necessary, then do what is needed to write the corresponding paper for publication. This may result in a prototype that can serve as basis for the following steps.
  • Design: take steps to develop an idea to the point where it can be implemented. Get feedback from potential Evolvix end-users before proceeding by asking undergraduate students and professional modelers to comment on potential uses of the proposed design. Technical design steps flesh out the details: class diagrams, proper naming schemes for important concepts, pseudocode for important algorithms, interface design, tests.  Review before implementation starts.
  • Implementation: set up compile environment and automated test cases; write the code with developer documentation inside of the code; test code iteratively and improve test cases. Once a reasonable set of core functionality and test cases is working, a preliminary review may declare this code to be a prototype and invite outside testers to use it.
  • Prototype: working code exists that needs more testing and refining; improve test cases, add integration testing, make sure all tests are fully automated; clean up hacks that should not be in the long-term code;  finish developer documentation in the code and write high-level documentation.
  • Review: once everything is done, all code and documentation and test cases are reviewed and compared with the project proposal; requested changes need to be implemented, tested and reviewed before declaring this code production quality and publishing the sources as such.
  • Production: production grade code that can be recommended for general use and is available for download along with clear documentation and feedback channels to collect suggested improvements and bug reports; bugs get fixed in 'hot-fixes' before potential feature upgrades.
  • Legacy: will need to be spelled out in view of the Evolvix requirement of backwards compatibility. Code produced in research projects can quickly become legacy code once the project is over.

This mix of different stages helps development proceed in an orderly manner, while various capabilities of the system make their way from idea to production quality code. 

Here is a brief overview of which Evolvix coding projects have currently reached what stage in their development.