Skip to content
Snippets Groups Projects
architecture.md 1.24 KiB
Newer Older
Udo Eisenbarth's avatar
Udo Eisenbarth committed
# Software architecture

This chapter discusses the overall software structure of the OPOSSUM system.

y.zobus's avatar
y.zobus committed
In the first version, we want to concentrate on a framework providing the necessary entities (i.e. structs and traits) in order to model optical systems as [previously described](./optical_model.md). This system would simply require a `main` function calling the necessary structs. For better debugging purposes, we should already implement an export system to the `graphviz` package (dot-files) for visualization of the graph structures.
Udo Eisenbarth's avatar
Udo Eisenbarth committed

y.zobus's avatar
y.zobus committed
In a further step, a command line tool should be developed to accept a data file containing the model. This requires a proper serialization / deserialization system to be implemented. For this, we would propose a very well-established standard crate `serde` which can then read and write data in various formats such as JSON or YAML.
Udo Eisenbarth's avatar
Udo Eisenbarth committed

y.zobus's avatar
y.zobus committed
For future extension steps, the possibilities of modular design should be investigated in detail. This approach helps to keep the basic framework simple and might improve the integration of external code contributions. Hence, the possibilities of a plugin architecture should be considered.
Udo Eisenbarth's avatar
Udo Eisenbarth committed

y.zobus's avatar
y.zobus committed
A topmost-level view could look like this:
Udo Eisenbarth's avatar
Udo Eisenbarth committed

![Toplevel architecture](./images/overall_architecture.svg)