Guidelines
About the initial report
The workflow described in the rules is aimed to:
- make students aware of what they should do BEFORE doing it
- ease our projects management activities
- prevent the loss of the produced knowledge or code, making your projects potentially useful for the future students.
In particular, the initial report is the most valuable artifact in this phase.
Within the initial report, students must take care of specifying their goals in a clear, precise, undambigous, and incremental way.
- Project assessment will take goals satisfaction into account: it is important that your projects satisfy the goals that you have chosen
Negotiation of the initial report is aimed at helping the students in the selection and formalisation of reasonable goals
- By submitting an initial report students commit to the goals therein described
However, we are aware that issues may arise while working on a project.
For this reason, it is important to describe goals in an incremental way.
In some significant issues arise, students may ask to renounce to the satisfaction of some goals provided that minimal pool of goals has already been satisfied.
About the Git repository
Despite not strictly required for the course, please take care of keep your repository clean.
This involves:
- correctly setting up your .gitignore
- fill up the README.md file in a meaningful and informative way
- avoid tracking binary files, dependencies, or IDE configuration files
Finally, take care of making the last version of your code available on the master or main branches.
About Build Automation
In case your project involves the production of software artifacts, it is strongly suggested to leverage some build automation system.
There are no constraint on the particular build automation system, but keep in mind that each programming platform comes with its preferred build automation systems:
- Maven or Gradle for the Java, Kotlin, Scala
- Sbt for Scala
- NPM for JS projects
- Pip for Python projects
- Make for C
- etc
- It is ok to develop your project in some language different from Java, but in that case it is your responsibility to select the most adequate build automation technology .
Please endow your codebase with adequate unit test suites, possibly runnable with a single command, via the build automation tool of choice.
Setting up a continous integration pipeline running the tests as frequently as possible is strongly encouraged as well.