On this book (Software Architecture, 10th Edition by Ian Sommerville, ISBN: 9781292096131), the following architectural patterns are presented (Chapter 6, 6.3, p175):
- MVC
- Layered
- Client-server
- Repository
- Pipe and filter architecture
My question is: Is it possible to make an objective comparison between MVC, client-server and layer architectures, with the aim of choosing one architecture exclusively over the others?
The book presents these different architectures by listing their cons and pros, and I have been assigned a task to select one of these architectures for a system over the others, and write a justification that includes a comparison with 1 or 2 other architectures. We are expect to select ONE pattern, not to come up with some hybrid.
Based on my limited knowledge, I do not see the above as being mutually exclusive, where you would choose one over another and there will always be some level of hybrid one way or another. For starters, any web-based application is layered (at least 2 layers) and it is also a client-server. On top of that the application could be MVC or MVVM.
Yet I have been asked to compare these different architectures taking the following points into consideration: Availability, Reliability, Testability, Scalability, Security, Fault tolerance, ...
From where I am standing, this feels like asking to compare a bascule bridge VS a suspension bridge. These are not mutually exclusive. Tower Bridge in London for example, is both.
I wonder if there is some fundamental, academic concept that I am missing here when asked to consider, for example. the Availability and Fault tolerance of MVC vs Client-server vs layered.