Unless you are well acquainted with the world of basic programming, it will be really difficult for you to realize what programming architectures are. So consider the fact that you do not know a lot about programming, I will say that programming is the way or method by which you define some logical things in the language of codes so that the designated compiler can understand it and let it know to the computer for the function to be performed. This is probably the simplest definition of Programming that can be given to a novice. Continuing with what I was saying! There are basically three types of programming: Low level programming, Middle Level Programming and High Level Programming. Interestingly, there are completely different languages and patters for the creation of the three different types of codes. But there is one thing in common with all the programming types.
The thing that is common is all the programming types is the fact that all can perform the same function. Only the way to perform is different which distinguishes the programs. When one program is running it is very easily possible that other programs are also running under the remaining memory space on the device. But what happens if all the programs that are running are also interconnected? Well, that is, the issues which are essentially solved by the architecture of the program. The architecture of a program is the structure in which it is designed. In case of interconnected programs, there are waiting stages for all the programs. The best architecture is considered to be the one that has the least cumulative waiting stage.
Thus, when you are looking to write a program in any language that you prefer, one always has to keep in mind the architecture that the program is followed, In case of linear programs, the issue is such that all the steps are to be followed one by one and this takes the maximum amount of time. On the other hand, when all the steps are running parallel and the addition is done in the last step, the cumulative time required is quite less. But this does not mean that linear is never used and parallel architecture is used always. It is important to know the best possible architectures so that you can easily create an optimized program which suits all the requirements.
2) DCI Vision - (Data, Context, Interaction)
3) DDD/CQRS - Domain-Driven Design
Domain-Driven Design is extremely important for successfully delivering and maintaining CQRS-based systems. DDD works as a strategic approach that allows to break complex problem domains into separate blocks (called bounded contexts), while accounting for things like: different mental models, organizational politics, domain linguistics etc. While doing that, DDD establishes a mental model of bounded context, that is both understandable by business people and can easily be implemented in the code.
CQRS, as a tactical approach, is one of the best ways to implement DDD-modelled domains. In fact, it was born in this world.