Writing software is not only to achieve functional requirements, but also has portability, expansibility and maintainability, which extends the requirements of software layering. If it is not layered, it is a headache to transplant, expand and maintain.
After the software is layered, it is necessary to transplant the platform and change the driver layer; If you need to add an application, expand it.
The advantage of layering is that the main frame does not move, and the interface between layers will use abstraction.