Launch Interceptor Decision System (DECIDE)
A Java implementation of the DECIDE spec, which checks 15 geometric Launch Interceptor Conditions against 2D radar data. Built by a team of 5 with CI and required code reviews.
15
LAUNCH CONDITIONS (LICS)
LIC 0, 6, 11 + helpers
PERSONALLY IMPLEMENTED
2 reviewers + CI
REVIEW GATE
Overview
DECIDE is a well-known exercise in software engineering courses. It describes a made-up anti-ballistic missile system that checks 15 geometric Launch Interceptor Conditions (LICs) against 2D radar data and then decides whether to launch. The spec is very precise and full of small details, so if you start coding before reading it properly, you'll get things wrong.
What I did
- Implemented LIC 0, 6 and 11, plus shared geometry helpers that several conditions use: point-to-line distance, circumradius checks, and angle and area calculations.
- Created the repository and set up GitHub Actions to build and run the unit tests on every push and pull request, starting from day one.
- Helped the team stick to our branch workflow (feature → dev → main). Every merge needed two reviewer approvals and passing CI, and main never broke during the project.
- Pushed for Conventional Commits (
feat:,fix:,test:,docs:) and consistent naming, so the history stayed readable with five people committing.
What I learned
Bugs in geometry code don't crash anything. A bad epsilon or a degenerate triangle just returns the wrong boolean. The way we caught those was by writing unit tests for every boundary case straight from the spec, instead of from what the code already did.
APPENDIX A // MEDIA
IMAGE SLOT · AWAITING UPLOAD