Software Engineering theory
Skyinformatics.biz projects are software architecture inspired known as
quality-driven architecture, from Software Architecture in Practice "The architecture of a software system is more closely related to its quality attributes such as
fault-tolerance, backward compatibility, extensible, reliability, maintainability, availability, security, usability, and other".
The goal as engineers and developers must have the ability to satisfy the characteristics of this architecture.
In other words to create a prototype that underlies some of the attributes in this theory.
The architecture vision
Every beginning for any project and initial goal to satisfy the elements of architecture:
Reusability: "In software engineering, re-usability is the use of existing assets
in some form within the software product development process; these assets are
products and by-products of the software development life cycle and include
code, software components, test suites, designs and documentation."
Extensibility: "Extensibility is a software engineering and systems design
principle where the implementation takes future growth into consideration. The
term extensibility can also be seen as a systemic measure of the ability to extend
a system and the level of sort required to implement the extension."
Maintainability:"Is defined as the probability of performing a successful
repair action within a given time. In other words, maintainability measures
the ease and speed with which a system can be restored to operational status
after a failure occurs."
Early prototype, quality-driven implementation
We prioritize three attributes and our purpose for this, we must take in account:
- Extensibility opens for future expanding the system. Take in consideration relational,
mapping structure and pattern. In case of adding functionality, it may be as simply
as adding a new function the correct class.
Maintainability in case of faults we must easily detect and correct the error, therefore the use of naming convention
pays of in both time and extensibility.
All future prototypes are expected to have external developers on the project and for that re-usability is important in terms of
conventional variable and function naming. Considering all of these architectural characteristics we can easily satisfy an early prototype.
Modules and patterns
In software engineering, the module pattern is a design pattern used to implement the concept of software modules, defined by modular
programming, in a programming language with incomplete or direct support in the concept system.
Modular implementation both backend and frontend organized in set of maps following concepts design. The pattern is usually of that is compiled internally with minimal access rights, achieving this by using git approach for submodules and containerized environment.
Domain Driven Designs theory
DDDCommunity.org states: "Domain-driven design (DDD) is an approach
to software development for complex needs by connecting the implementation to an
evolving model. Placing the project's primary focus on the core domain and domain
logic. Initiating a creative collaboration between technical and domain to iterative
refine a conceptual model that addresses particular domain problems."
In our case, Domain Driven design solves problems context which are mainly front-end applications and centralized server structure. We take into account the description
the problem context of the project goal/problem and carefully look into the problem, then dividing the context problem the in organizational mappings called domains.