Software of this project has been developed by following the software engineering development activities:
- Requirements Elicitation
- Analysis
- System Design
- Object Design
- Implementation
- Testing
I worked with a team of 6 and participated in all of these activities. In this repository, I present my own contribution for the implementation and testing of the software.
Here is a list of my own contributions to the deliverable work products of this software:
- UML Use Case Diagrams & Use Case Descriptions
- UML Activity Diagram and its Highlighted Versions
- Interactive Menu Structure Mock-ups
- Introduction
- Purpose of the System
- System Design Goals Criteria & Trade-offs
- High-Level Software Architecture
- Subsystem Decomposition
- Hardware/Software Mapping
- Persistent Data Management
- Access Control & Security
- Global Control Flow
- Boundary Conditions
- Configuration
- Start-up & Shut-down
- Exception Handling
- UML Package Diagram
- UML Deployment Diagram
- UML Component Diagram
- Subsystem Services
- Implementing a GameLogic model and a command-line GameController that lets users play the game from beginning to end. (~900 SLOC)
Challenging features include:
- Connected components graph algorithm to calculate area scoring.
- Polymorphic terrain adjacency algorithm for given shipping value.
- Testing the GameLogic classes with automated JUnit tests with approximately 80% code coverage. (~400 SLOC)
- It requires Java JDK 11 and can be installed via brew:
brew install java11
- Clone the repository:
git clone https://github.com/canmergenci/terra-mystica.git
- Enter the directory of the repo:
cd terra-mystica
- Remove the test files:
rm src/com/TerraMystica/GameLogic/Test*.java
- Compile the source code:
javac -d ./build src/com/TerraMystica/GameLogic/*.java
- Make a .jar file:
jar cvmf MANIFEST.MF TerraMystica.jar -C ./build /com
- Execute .jar file and play the game:
java -jar TerraMystica.jar