No matter what we build, there is always a foundation of some sort. In software, the core component architecture provides us that foundation. These are the models or objects that provide the framework for all of the other functions. When you design these core pieces of your solution, it is essential to get them right. When you fail to do this, you will have problems throughout the system.
It Starts With The ProblemOnce again, we refer back to the primary problem or problems we are solving. The solution will require certain pieces of data and functionality that will impact the entire solution. These items may include security, standard functions, critical data elements, and more. The core component architecture is not an MVP for the system. However, it is the collection of items that have to exist and interact to solve the problem. These are the common denominator aspects of your solution. Thus, the decisions made here will percolate throughout your application.
Defining The Core Component ArchitectureThe foundation we are building will become apparent as the pieces of architecture are put into place. There will be functions, features, and data that show up time and time again as you work through the system. That is the nature of the core components. They are the pieces that are "touched" the most as you move through the various processes. Therefore, improvements (or flaws) in these areas will have the most significant impact overall.
Measure TwiceThere is an old saw (pun not intended) about measuring twice and cutting once. This is important to keep in mind as you work on the core component architecture. These may not be the flashiest parts of your application. However, they are the ones that are most important to get right.