# Design and Research of a Virtual Laboratory for Coding Theory
## 2 Materials and Methods
### Methodology for Designing and Implementing a Virtual Laboratory on Coding Theory  
Applying a structured software process to the development of a software product allows for systematic planning, design, development, and testing of the lab environment, which not only minimizes the risk of errors but also ensures that the software meets the needs of the users. By implementing different methodologies, the developer can respond quickly to changing requirements and perform regular iterations that improve functionality and user experience. Furthermore, following good software engineering practices facilitates the maintenance and future expansion of the virtual lab, which is key to the long-term success and effectiveness of the learning process [24].  
The _phase model_ was chosen as the most suitable for the implementation of the virtual laboratory. This model is characterized by two varieties: the _stepwise_ model (_step-by-step_, _incremental_) and the _iterative_ model.  
_The step-by-step development phase model_ is not carried out all at once, but in separate steps, with the individual functionalities of the system being provided at the end of each step. For this purpose, the functional requirements of the system are first prioritized, and those with the highest priority are implemented in the initial steps. During the development of a given step, the requirements for it cannot be changed, but the requirements for later steps, on which work has not yet started, can be changed [25].  
The _iterative phase model_, unlike the step-by-step model, provides a complete software system from the very beginning but with primitive functionalities. At each subsequent iteration, the system evolves with more advanced functionalities [25].  
Some of the main _advantages_ of phase models are as follows [25]:  
* Delivery of part or full functionality of the system after each step enables operation and testing by the customer before the entire product is ready;
* The result of the initial steps can serve as a prototype to facilitate the formulation of the requirements for developments in the following steps;
* Due to the incremental nature of development, errors and malfunctions can be fixed at early stages, which reduces the risk of failure of the entire project;
* The most important functionalities implemented in the initial steps are tested the most, as multiple system testing is performed after each step.
* As _disadvantages_ that can be observed with the phase models, we can point out [25]:
* The need for active participation of the client during the implementation of the individual steps of the process may lead to a delay in the implementation of the project;
* The ability to achieve a good level of communication and coordination is of great importance; otherwise, a problem may occur during development;
* Additional informal requirements for system improvement after a completed step can lead to confusion;
* Carrying out too many steps (iterations) can increase the scope of the application without the process being convergent.  
From the mentioned two varieties of the phase models, a variant is chosen in which both forms are applied for the development of the virtual laboratory. Figure 2 gives the general form of the proposed hybrid methodology. In the first step of the phase model, the structure (skeleton) of the web-based system with the corresponding pages is implemented, in which case _the iterative variant of the phase model_ is more appropriate. In each subsequent step, the planned program models for solving tasks according to the relevant codes are designed and implemented, applying _the step-by-step phase model_.