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.

  • 2
    It sounds like you'd need to go back to whoever set you this task and discuss to find out what their expectations are; Perhaps they also don't understand these concepts themselves and needs the applicability of some of them explaining or wanted you to come to this conclusion? Perhaps that is part of the information they're looking for? (e.g. ruling out GUI implementation patterns as 'Not applicable' for infrastructure/platform issues, because they have nothing whatsoever to do with infrastructure nor platform architecture?). Dec 21, 2021 at 17:41


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.