Following multilayered software architecture, a application should be consist of serveral layers.
(eg: Presentation layer, Business layer, Data access layer, ...)
For instance:
In a MV* application, we said "Presentation layer could see Model layer, but Model layer shouldn't be able to see Presentation layer".
OK, That's right!
But in a actual application (eg: a desktop application), there are some "Bootstrap System" code like: bootstrap application, application lifecycle management, load UI system, init resource, and so on...
It seems that the "Bootstrap System" could see everything in the application whether it is "model" or "presentation".
My quesiton is: Which layer the "Bootstrap System" should be in.
Very thank.
-----------------------Edit this problem-----------------------
Very thanks for @Mark Seemann 's reply.
IMO, "Composition Root" is the application's entry point where we can construct global object (or use DI Container).
Therefore the responsibility of "Composition Root" is composing object graphs.
But my question does not focus on composing object graphs, it focus on "Separation Concerns".
For instance:
In a MV* application, you have a ApplicationManager object which manage the application's lifecycle.
In the application's entry point (eg: Main), we could construct ApplicationManager.
In the same place (the application's entry point), we also construct some other objects (eg: UI Framework, ResourceManager, DB Respoistry, etc).
(Note: we also be able to use DI Container instead of Poor Man's DI, but it just technical details.)
When user click the "Button-Quit" in the view, the presenter will call ApplicationManager.Quit().
Then the application will quit.
Obviously, ApplicationManager.Quit() will release everything whether it is "model" or "presentation", so ApplicationManager could see everything in the application.
My question is Which layer the ApplicationManager should be in. (ModelLayer? Presentation Layer? Composition Root?)
Note: In this case: ApplicationManager is not Composition Root, the Main (or DI Container) is Composition Root.