Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Software Architecture Fundamentals

Software Architecture Fundamentals

Henrique Silvério

April 12, 2022
Tweet

More Decks by Henrique Silvério

Other Decks in Programming

Transcript

  1. Behavior Vs. Architecture Developer: "Do you want to be able

    to make changes?" Manager: "Of course! But… functionality is more important than later flexibility…"
  2. Behavior Vs. Architecture Manager: "Hey! We need to add this

    'little button' to the screen!" Developer: "Ok! We gonna need {insert unaffordable high cost here} to make it." Manager:
  3. What is architecture? "The architecture of a software system is

    the shape given to that system by those who build it." "Low-level details and high-level decisions are part of the whole design." — Robert C. Martin
  4. Architecture goals "The purpose [...] is facilitate the development, deployment,

    operation, and maintenance of the software system" "The ultimate goal is to minimize the lifetime cost of the system and to maximize programmer productivity." "The strategy behind that facilitation is to leave as many options open as possible, for as long as possible." — Robert C. Martin
  5. Design Principles SRP: Single Responsibility Principle OCP: Open-Closed Principle LSP:

    Liskov Substitution Principle ISP: Interface Segregation Principle DIP: Dependency Inversion Principle
  6. Dependency Inversion Principle High-level modules should not depend on low-level

    modules. Both should depend on abstractions. Abstractions should not depend on details. Details should depend on abstractions. — "Agile Software Development, Principles, Patterns, and Practices", Robert C. Martin