TomasKopunec / comp0101-ief

Impact Engine Framework
5 stars 1 forks source link

Identify architecture of the decided on project #23

Open jimbou opened 12 months ago

jimbou commented 12 months ago

We have decided on the following project: Parameter Optimization model using Search-Based software engineering Try to explain which architectural type will be used for the project and why (pipeline type??)

read the following first: https://medium.com/@bonnotguillaume/software-architecture-the-pipeline-design-pattern-from-zero-to-hero-b5c43d8a4e60 https://airspeed.ca/when-to-use-the-pipeline-architecture-style/

mosalehio commented 12 months ago

When choosing the architectural styles, there are various factors we must take into account:

The Impact Engine Framework works as a pipeline that consists of models that each do one thing and work together. Each model takes as input the outputs of the previous model in the pipelines. At the beginning of the pipeline, the developer inputs the source inputs. Each model will take the output of the previous model, carry out its task using this and then output a result for the next model to use. Some models will run calculations whereas other models could enrich the input with metadata required for the other models.

Considering how the Impact Engine Framework works (one-way processing), a suitable architecture type for our project would be the monolithic pipeline style which consists of pipes and filters. This works with pipes forming a one-way communication between filter.

Pipes (communication between our models):
The pipes in our system architecture are the communication channels between each model. These are one-way channel and will be used by the model to accept the output of the previous model and to direct their output to the next model. It is unlikely that an extremely large amount of data will be sent across this channel so this architecture should be able to perform well.

Filters (the models): Each model is independent from the other models, and in our case each filter is stateless. Each model will be performing one task only, and if there are multiple tasks that need to be done, we will split these tasks across multiple models.

Types of Filters in our Architecture: There are 4 main types of filters in the pipeline architecture: producer, transformer, tester, and consumer. Currently, our model is designed to fit into the middle of the pipeline where it will accept input from the previous model, transform the data, and output this to the next model. This would make our model a transformer.

The advantages of this architecture style include simplicity and modularity. It won't have any of the complexities associated with distributed architecture styles. And any of the filters can be modified or replaced without affecting the other filters and how they are intended to work.

Diagram of the overall architecture: image