Architecture Flashcards
architecture
way of organizing code
information hiding
the less a part of a program knows about other parts of a program, the easier it is to change. Basis of architecture.
encapsulation
idea of designing self-contained abstractions with well-defined interfaces that separate different concerns in a program.
programming languages offer encapsulation support through things like
functions and classes, which encapsulate data and functionality together.
scoping
another programming language encapsulation method; hides variables and other names from other parts of program outside a scope.
cross-cutting concerns
things like features and functionality that span multiple different components of a system, or even an entire system. A big ball of mud or spaghetti code.
cross-cutting concerns can lead to
difficulties in program comprehension and long-term design degradation, all of which reduce productivity and increase the risk of defects.
technical debt
the degree to which an implementation is out of sync with a team’s understanding of what a product is intended to be.
Unified Modeling Language (UML)
series of notations for expressing the architectural design of a system before implementing it.
architectural styles
patterns of interactions and information exchange between encapsulated components.
client/server
data is transacted in response to requests.
pipe and filter
data is passed from component to component, and transformed and filtered along the way.
Model-view-controller (MVC)
data is separated from views of the data and from manipulations of data.
Peer to peer (P2P)
components transact data through a distributed standard interface.
Event-driven
components “broadcast” events and others “subscribe” to notifications of these events.