This repository contain an implementation of the DECIDE program for Assignment 1. The goal of the assignment is to construct a launch decision system for an anti-ballistic missile interceptor based on radar data.
The decision system evaluates a set of 15 Launch Interceptor Conditions (LIC) and computes the decision using the following pipeline:
- CMV (Condition Met Vector) - evauluates each LIC
- PUM (Preliminary Unlocking Matrix) - combinines LIC results using logical connectors
- FUV (Final Unlocking Vector) - determines whether the interceptor should be launced
The final output of the program is printed as "YES" if the interceptor should be launced and "NO" if it should not.
The project uses practices including structured code organization, issue tracking, unit testing, and collaborative development using Git and pull requests.
Testing:
- Maven: junit:junit:4.13.2
- Maven: org.hamcrest:hamcrest-core:1.3
Option 1: Using IntelliJ IDEA
- JDK 22 (OpenJDK 22.0.1 recommended)
- IntelliJ IDEA (Community or Ultimate Edition)
- Maven version: 3.2.5 (IntelliJ has built-in Maven)
Clone the repository
git clone https://github.com/erik-ol/DECIDE.gitNote: The file structure is required to use Maven successfully.
Note: Make sure pom.xml is located in the root directory.
Test the code
- Open the repository in IntelliJ IDEA.
- IntelliJ will automatically import Maven dependencies.
- To build and run tests:
- Open
pom.xml - Navigate to the Maven toolbar and Run Maven Build
- Open
Execute the code
Run the code by navigating to DECIDE/src/main/java, open Main.java and select Run Main.
Option 2: Using terminal
- Java (JDK) 1.8 (Java 8) (recommended)
- Maven version: 3.2.5
Clone the repository
git clone https://github.com/erik-ol/DECIDE.gitTest the code
Enter the root directory
cd DECIDENote: Make sure pom.xml is located in the root directory. Ensure old builds are removed
Note: The file structure is required to use Maven successfully
Remove any pre-existing builds
mvn cleanNote: Maven will automatically download JUnit 4 and required dependencies.
Compile the code
mvn compileRun tests
mvn testExecute the code
Navigate to the correct directory
cd DECIDE/src/main/javaExecute the code
java MainTesting:
- Maven: junit:junit:4.13.2
- Maven: org.hamcrest:hamcrest-core:1.3
Following this instance of the project the team members have been taught new tools and practices resulting in the current state. Right now all members have gotten a general hang of the tools and practises but still with some minor mistakes. The current state following this instance of the project would be somewhere in between "In Use" and "In Place" in accordance to the Essence standard. In regard to the checklist for Way-of-Working the following notations can be made
- Some tools and practices were not found initially, but instead when the related issue occurred.
- The knowledge gap regarding certain tools was initially established, where, for instance, some members had not used GitHub or JUnit previously.
- The whole team is using the practises and tools to perform their work, but there was a learning faze when certain tools were new where some "mistakes" were made.
- The practices are not fully naturally applied for the whole team yet, the learning phase is still ongoing. At the same time it is notices that all members are tuning their skills constantly.
The tools and practices thus far are then too summarized as
-
GitHub is to be used as the version handling platform
-
Commenting follow the JavaDoc standard in code
-
Naming conventions are to follow camel case
-
JUnit 4 together with Maven is to be used for testing
-
Commits follow the Conventional Commits standard
-
Pull-requests are to be squash-merged with main
-
Everyone is to be available during regular work hours
-
Everyone is responsible for reviewing and approving pull-requests
The key obstacles, in regard to reaching the next state, would then be concluded as
- Making all team members comfortable enough with all tools and practices such that is becomes natural.
- Leaving thorough reviews making it possible to learn from mistakes to then be able to apply tools and practices naturally.
- Increase awareness of the whole teams methods in use to catch mistakes early on.
- Increase communication so the whole team are actively involved in occurring issues, making sure everyone is informed.
| Name | Contribution |
|---|---|
| Josefine "joss2002" Nyholm |
|
| Albin "zzimbaa" Blomqvist |
|
| Erik Olsson "erik-ol" |
|
| Avid "HotFazz" Fayaz |
|
| Chow Pun Chun "MrNoodlez-1227" |
|