-
Notifications
You must be signed in to change notification settings - Fork 0
System Design
The system is built using a layered architecture consisting of Structures, Services, and Interfaces.
Structures correspond to the domain or data layer in Domain-Driven Design (DDD). They are responsible for holding the application's state and entities, as well as modeling real-world objects, such as domain objects like AssignmentDetails.
Services represent the service layer, containing the business logic of the application. This includes components like the TestRunner, which runs tests for assignments.
Interfaces serve as the abstraction layer, defining abstract contracts that enable loose coupling and provide necessary functionality. For example, the TestRunner interface outlines the required behaviors for any test runner implementation.
This software system was developed using an iterative approach, organized into distinct phases: Development, Testing, and Refactoring.
The Development phase focuses on introducing new functionality through extensions.
The Testing phase ensures the correctness and performance of pre-existing functionality.
The Refactoring phase aims to improve the modularity and extensibility of the codebase.
Development and testing phases can occur in parallel, as long as interfaces are agreed upon and adhered to. Refactoring is typically done concurrently or one at a time, with careful attention to the main branch.
For more details on this workflow, refer to our internal docs.