Software Architecture in Practice

Read this section to learn about the main elements, patterns, quality attributes, and principles of software architecture, including encapsulation, polymorphism, and dependencies. Pay attention to design patterns and their importance in software design.

9. The Process of Defining an Architecture

Understanding the Software Architecture Concerns 

1. What are the components in the system, the interactions, and the relationships? 

2. How do the components model after the business or domain that you're building for? 

3. What are some technologies or frameworks that promote the architecture attributes? 

4. How will you operate and deploy the software?

Software Architecture Quality Attributes 
  • Security - what security measures do we need? 
  • Privacy - what do we have to do to protect the information of our users? 
  • Portability - how deployable it is to our servers? 
  • Extensibility - how quickly can a module be added? 
  • Reliability - what is the expected uptime of the system? 
  • Performance - how quickly does our service need to respond to requests? 
  • Compatibility - what does our architecture have to be compatible with? 
  • Supportability - how supportable is the application?

Quality Attributes are Determined by Stakeholders 

Gathering your top most quality attributes 

  • Stakeholders - nd out what is important to them 
  • Business goals - what quality attributes are required to satisfy the business goals 
  • Constraints - is there an architecture in place that is difficult to navigate


Quality attributes are often at odds with each other so there are often trade-offs that need to be made 

For example, if something is expected to be highly reliable, it may sacrifice performance because you need to store data in redundant locations.