Each architecture style has its advantages, disadvantages, and potential risks. Choosing the right style to satisfy required functions and quality attributes is very important. Quality attributes are identified in the requirement analysis process. Quality attributes can be categorized into the following three groups:
Implementation attributes (not observable at runtime)
Interoperability: universal accessibility and the ability to exchange data among internal components and with the outside world. Interoperability requires loose dependency of infrastructure.
Maintainability and extensibility: the ability to modify the system and conveniently extend it.
Testability: the degree to which the system facilitates the establishment of test cases. Testability usually requires a complete set of documentation accompanied by system design and implementation.