Technologies and Architecture

Software Engineering theory 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:

  1. 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."
  2. 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."
  3. 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 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."

DDD Implementations

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.