Develop at Vesperia
The principles and methodology behind how we build software at Vesperia.

Here at Vesperia, we follow a set of principles and methodology to guide our development work. These principles and methodology help us create high-performance, maintainable software that meets our clients' needs.
Principles
Our work is based on the following principles:
SOLID Concepts
- Single Responsibility Principle: "A class should have only one reason to change," meaning that each class should have only one responsibility.
- Open-Closed Principle: "Software entities should be open for extension, but closed for modification."
- Liskov Substitution Principle: "Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it." This principle is closely related to design by contract.
- Interface Segregation Principle: "Many client-specific interfaces are better than one general-purpose interface."
- Dependency Inversion Principle: "Depend on abstractions, not concretions."
DRY Principle
Don't Repeat Yourself is a principle of software development aimed at reducing repetition of software patterns.
Code Reuse
Code reuse involves using existing software or software knowledge to build new software.
Methodology
Our work is based on the following methodology:
Prototyping
Prototyping is an essential step that allows us to discuss future implementation with stakeholders and validate the vision.
Writing Tests
Writing tests involves creating a document that outlines the scope, approach, and schedule of intended testing activities. The primary objective of a test plan is to produce documentation that describes how the tester will verify that the system works as intended. The document should describe what needs to be tested, how it will be tested, and who is responsible for the testing.
Development
Development is where we bring our ideas to life (a.k.a Rock n Roll 🤘).
Code Review
Code review is an essential part of ensuring the quality of our code.
Validation
Validation is a process that involves determining whether our functionality works as expected.