Bachelor in Computer Science and Engineering (LEI) | 3rd Year - 1st Semester
This repository contains the documentation and project tracking developed for the Software Engineering (Engenharia de Software) course at the Faculty of Sciences and Technology of the NOVA University of Lisbon (NOVA FCT).
68681 - TomΓ‘s Alves - Alvesss04
65871 - Miguel Carmo - MCCProgrammer
67940 - Francisco Pereira - Loupaaa
68264 - Manuel Figueiredo - ManuFigas
68087 - Francisco Figueiredo - Franiquilador
68231 - Tiago Poeira - tpoeira123
The Software Engineering course focuses on the software development lifecycle, emphasizing agile methodologies, reverse engineering, software architecture, and code quality analysis
The primary objective of this project was to reverse-engineer and extend Mindustry, an open-source tower defense game combined with resource management and Real-Time Strategy (RTS) elements. The team operated as a fictitious company tasked with understanding an unfamiliar, large-scale Java codebase to introduce new functionalities
Development was driven by a Scrum-inspired agile methodology, utilizing weekly sprints, a rotating Scrum Master role, peer-reviewed Git commits, and continuous tracking via Scrumboards and Burndown charts.
- Milestone 1 - Requirements Engineering: Definition of three non-trivial User Stories to extend the game, alongside the initial project management setup.
- Milestone 2 - Software Architecture & Quality: Reverse engineering the existing codebase. This involved creating Use Case diagrams, assessing codebase metrics (using IntelliJ's Metrics Tree), identifying Gang of Four (GoF) Design Patterns, and reporting Code Smells with concrete refactoring proposals.
- Milestone 3 - Implementation & Testing: Writing the Java code to implement the proposed user stories directly into the Mindustry codebase. This phase included adding unit tests, producing detailed Class and Sequence diagrams, and creating a final video demonstration.
- Agile Project Management: Practical application of Scrum methodologies, sprint planning, and backlog management.
- Reverse Engineering: Navigating, understanding, and modifying a large, undocumented open-source Java repository.
- Software Design Patterns: Identifying and analyzing GoF patterns to ensure scalable and maintainable object-oriented architectures.
- Code Quality Assurance: Utilizing software metrics to detect vulnerabilities and actively refactoring code smells.
- UML Modeling: Designing Use Case, Class, and Sequence diagrams to document system behavior, modularization, and exceptions.
- My Personal Contributions: Mod-Mindustry
- Full Team Project: Software-Engineer-Project
Copyright Β© 2026 Alvesss04. All Rights Reserved.