In a software system, a concern is a grouping of logic or functionality that the application is providing. The concerns of the system reflect the requirements. When designing a system, software architects should seek to follow the Separation of Concerns (SoC) principle, which was described in Chapter 6, Software Development Principles and Practices. It is a design principle that seeks to reduce complexity by dividing the software system so that concerns are kept separate.
There are two main types of concerns in a software system:
- Core concern: It represents functionality that is fundamental to the system and is a primary reason as to why the software is being written. For example, the logic related to the calculation of employee salaries and bonuses would be core concerns of a human resource management system. The logic for each core concern is typically...