Fundamentals of Software Architecture Notes

Chapter 1

    Here the book tries to do some difficult definitions about the role of a software architect. The difficult part comes from the ever-changing landscape of technology, with each breakthrough the possibilities of software architecture change and so what the role does can change as well.

    Also there is an important point that the systems are no longer designed to be set in stone, where a change or update can be costly, but to accept changes easily.

    The software architecture is a combination of different parts:

  • the structure, which is basically a typical style to write systems, like microservices, layered and microkernel
  • the characteristics it’s the non-functional requirements that are extremely important, like Scalability, security and agility.
  • the decisions they define the constraints of the individual parts.
  • the design principles are guides of how things should be implemented but not as a hard-and-fast rule.

    Defining the role is hard, as mentioned before, but the expectations are a little easier, here are the main ones:

  • Make architecure decisions
  • Continually analyze the architecture
  • Keep current with latest trends
  • Ensure compliance with decisions
  • Diverse exposure and experience
  • Have business domain knowledge
  • Possess interpersonal skills
  • Understand and navigate politics