Skip to content

erik-ol/DECIDE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

97 Commits
 
 
 
 
 
 
 
 

Repository files navigation

DECIDE REPORT

Project description

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.

Dependencies

Testing:

  • Maven: junit:junit:4.13.2
  • Maven: org.hamcrest:hamcrest-core:1.3

Build instructions

Option 1: Using IntelliJ IDEA

Requirements

  • 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.git

Note: The file structure is required to use Maven successfully.

Note: Make sure pom.xml is located in the root directory.

Test the code
  1. Open the repository in IntelliJ IDEA.
  2. IntelliJ will automatically import Maven dependencies.
  3. To build and run tests:
    • Open pom.xml
    • Navigate to the Maven toolbar and Run Maven Build
Execute the code

Run the code by navigating to DECIDE/src/main/java, open Main.java and select Run Main.


Option 2: Using terminal

Requirements

  • Java (JDK) 1.8 (Java 8) (recommended)
  • Maven version: 3.2.5

Clone the repository

git clone https://github.com/erik-ol/DECIDE.git
Test the code

Enter the root directory

cd DECIDE

Note: 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 clean

Note: Maven will automatically download JUnit 4 and required dependencies.

Compile the code

mvn compile

Run tests

mvn test
Execute the code

Navigate to the correct directory

cd DECIDE/src/main/java

Execute the code

java Main

Dependencies

Testing:

  • Maven: junit:junit:4.13.2
  • Maven: org.hamcrest:hamcrest-core:1.3

Way of working

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.

Statements of contributions

Name Contribution
Josefine "joss2002" Nyholm
  • LIC-2, angle verification for three consecutive data points
    • Implemented LIC-2 logic in lic2() within LaunchInterceptorConditionParameters.java
    • Implemented relevant test methods in accordance to JUnit 4 and Maven corresponding to LIC-2 within MainTest.java
  • LIC-9, angle verification for three consecutive data points separated by C_PTS and D_PTS
    • Implemented LIC-9 logic in lic9() within LaunchInterceptorConditionParameters.java
    • Implemented relevant test methods in accordance to JUnit 4 and Maven corresponding to LIC-9 within MainTest.java
  • LIC-11, verification for two consecutive data points separated by G_PTS
    • Implemented LIC-11 logic in lic11() within LaunchInterceptorConditionParameters.java
    • Implemented relevant test methods in accordance to JUnit 4 and Maven corresponding to LIC-11 within MainTest.java
  • CMV, constructed the CMV based on the LICs
    • Implemented CMV logic in initConditionsMetVector() within AntiBallisticMissileSystem.java
    • Implemented relevant test methods in accordance to JUnit 4 and Maven corresponding to the CMV within MainTest.java
Albin "zzimbaa" Blomqvist
  • LIC-5, verification for two consecutive data points such that X[j] - X[i] < 0
    • Implemented LIC-5 logic in lic5() within LaunchInterceptorConditionParameters.java
    • Implemented relevant test methods in accordance to JUnit 4 corresponding to LIC-5 within MainTest.java
  • LIC-8, verification for three data points separated by A_PTS and B_PTS that cannot be contained within or on a circle of radius RADIUS1
    • Implemented LIC-8 logic in lic8() within LaunchInterceptorConditionParameters.java
    • Implemented relevant test methods in accordance to JUnit 4 corresponding to LIC-8 within MainTest.java
  • LIC-13, verification for three data points separated by A_PTS and B_PTS that cannot be contained within or on a circle of radius RADIUS2
    • Implemented LIC-13 logic in lic13() within LaunchInterceptorConditionParameters.java
    • Implemented relevant test methods in accordance to JUnit 4 corresponding to LIC-13 within MainTest.java
  • FUV, calculating the Final Unlocking Vector based on the the Preliminary Unlocking Matrix and Preliminary Unlocking Vector
    • Implemented FUV logic in calculateFuv() within AntiBallisticMissileSystem.java
    • Implemented relevant test methods in accordance to JUnit 4 corresponding to FUV within MainTest.java
Erik Olsson "erik-ol"
  • LIC-1, verification for three consecutive data points that cannot be contained within or on a circle of radius RADIUS1
    • Implemented LIC-1 logic in lic1() within LaunchInterceptorConditionParameters.java
    • Implemented relevant test methods in accordance to JUnit 4 corresponding to LIC-1 within MainTest.java
  • LIC-3, verification for three consecutive data points that are the vertices of a triangle with area greater than AREA1
    • Implemented LIC-3 logic in lic3() within LaunchInterceptorConditionParameters.java
    • Implemented relevant test methods in accordance to JUnit 4 corresponding to LIC-3 within MainTest.java
  • LIC-4, verification for Q_PTS consecutive data points that lie in more than QUADS quadrants
    • Implemented LIC-4 logic in lic4() within LaunchInterceptorConditionParameters.java
    • Implemented relevant test methods in accordance to JUnit 4 corresponding to LIC-4 within MainTest.java
  • LCM & PUM, calculating the Preliminary Unlocking Matrix based on the operations in the Logical Connector Matrix
    • Implemented LCM logic in evaluateLogicalConnectorMatrix() within AntiBallisticMissileSystem.java
    • Implemented relevant test methods in accordance to JUnit 4 corresponding to LCM within MainTest.java
Avid "HotFazz" Fayaz
  • LIC-6, verification for N_PTS consecutive data points where at least one point lies a distance greater than DIST from the line joining the first and last of these points
    • Implemented LIC-6 logic in lic6() within LaunchInterceptorConditionParameters.java
    • Implemented relevant test methods in accordance to JUnit 4 corresponding to LIC-6 within MainTest.java
  • LIC-10, verification for three data points separated by E_PTS and F_PTS that form a triangle with area greater than AREA1
    • Implemented LIC-10 logic in lic10() within LaunchInterceptorConditionParameters.java
    • Implemented relevant test methods in accordance to JUnit 4 corresponding to LIC-10 within MainTest.java
  • LIC-14, verification for three data points separated by E_PTS and F_PTS that form a triangle with area greater than AREA1 and another set with area less than AREA2
    • Implemented LIC-14 logic in lic14() within LaunchInterceptorConditionParameters.java
    • Implemented relevant test methods in accordance to JUnit 4 corresponding to LIC-14 within MainTest.java
Chow Pun Chun "MrNoodlez-1227"
  • LIC-0, verification for at least one pair of two consecutive data points needs to be more than LENGTH1 apart
    • Implemented LIC-0 logic in lic0() within LaunchInterceptorConditionParameters.java
    • Imeplemnted relevant test methods in accordance to JUnit 4 corresponding to LIC-0 within MainTest.java
  • LIC-7, verification for at least one pair of points separated by K_PTS number of points in between exclusively that is more than LENGTH1 apart
    • Implemented LIC-7 logic in lic7() within LaunchInterceptorConditionParameters
    • Implemented relevant test methods in accordance to JUnit 4 corresponding to LIC-7 within MainTest.java
  • LIC-12, verification verification for at least one pair of points separated by K_PTS number of points in between exclusively that is more than LENGTH1 but less than LENGTH2 apart
    • Implemented LIC-12 logic in lic12() within LaunchInterceptorConditionParameters
    • Implemented relevant test methods in accordance to JUnit 4 corresponding to LIC-12 within MainTest.java

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5

Languages