This article is only around the needed patterns for Software Architects, without these patterns no success.
model view - a tool for looking at software from four different perspectives, and with the use case, called scenarios.
abstract data types - data types that are defined by the user rather than the language. Their interactions are driven by their behavior as opposed to their structure.
abstraction - simplifying a concept by ignoring unimportant details.
activity diagram - a flowchart for activities in software.
artifact - a physical result of the development process, such as an executable or config file.
application engineering - the design and development of a specific product, using tools developed in domain engineering.
asynchronous - in request/response messaging, refers to when the client continues processing logic after sending a request. The response is dealt with separately.
ATAM - architectural tradeoff analysis method, a methodology for evaluating system architecture.
availability - the quality of being ready to perform its intended functions.
ball connector - part of a component diagram. Depicts a provided interface. Usually used by a client. Goes with a socket connector.
buffer overflow - when a buffer is being written and the data overflows its bounds, potentially overwriting adjacent memory.
client-host - a machine hosting a client-side process.
client/server - a type of relationship characterized by two roles: a client that requests services and a server which response.
code reuse - the act of reusing parts of code in other systems.
compiler - a tool that converts higher-level code into machine language (in a binary file) and produces an executable file.
component diagram - a diagram that separates a software system into logical groupings (called components) with defined interfaces.
conceptual integrity - the coherency of a system, or the extent to which the parts contribute to the architecture of the whole.
Conway's Law - an observation that systems tend to emulate the organizational structure in which they were produced.
data integrity - the property of ensuring data is persistent and only modified in ways intended by design.
deployment diagram - a diagram that maps software components to deployment targets, either hardware or software executable environments.
data flow architecture - an architecture characterized by flows of data that are processed by filters.
data integrity - ensuring data is consistent and accurate over time.
data persistence - the concept that data persists beyond the execution of a program that uses the data.
database - software that stores and serves data.
deadlock - a situation in which a process is halted while waiting on some other operation in the system, which in turn is waiting on another process.
decomposition - breaking a problem down into distinct components.
deployment target - often a node: the targeted location of a component of the software system.
designers - developers responsible for architectural design.
development view - a view of software components to development resources, tools, or processes.
domain engineering - the design and development of the general parts of a product line or product family.
encapsulation - bundling data and methods into an object and exposing the desired interface to other components.
feedback loop - a common form of process control in which a process is monitored and controlled based on the variable monitored.
feedforward control - a process control technique in which data from an upstream process is used to make decisions in a downstream process.
filter - in data flow architecture, a filter represents some data processing unit. It takes input from the upstream filter(s) and outputs to downstream filter(s).
generalization - allowing for more use-cases by factoring out conceptual commonalities and abstracting them.
hypothesis and test - a method of testing that software fulfills its functions.
interoperability - being able to exchange information with external systems.
interpreter - a tool to translate higher-level code into machine language on-the-fly.
language translation architecture - various strategies for converting high-level language to binary code.
latency - the time it takes to produce an output after receiving input.
layered architecture - an architecture characterized by arranging the separation of responsibilities into layers.
logical view - a view focusing on the functional requirements of the system or a component of the system. Often Class diagram or State diagram.
machine language - the ultimate form of any instruction sent to a device. In the form of binary (ones and zeros).
maintainability - the property of being easily changed.
manifestation - an abstraction relationship wherein an artifact manifests the behavior of one or more components.
modifiability - a measure of the system's ability to change, including changes to functions, new functionality, or removing functionality.
multi-tier architecture - see n-tier architecture.
n-tier architecture - an architecture characterized by separating responsibilities into tiers; similar to a layered architecture.
node - hardware or software execution environment such as an operating system or runtime environment.
object code - code produced by a compiler that the machine can understand.
overhead - computational resources that are used to enforce architecture, rather than the desired activities. Considered a tradeoff.
pers - as opposed to designers, members of the project who were not involved in architectural design.
performance - how well the system responds to commands, errors, and internal events, usually measured by throughput and latency.
physical view - view focusing on the physical deployment of the system.
pipe - in data flow architecture, a pipe represents the passing of data from one filter to the next.
process control - controlling a physical process or system, usually done with software.
process view - a view which focuses on non-functional requirements, usually quality requirements such as availability and concurrency.
product line/product family - a group of products that share characteristics. It can be taken advantage of by developing their commonalities simultaneously.
quality attribute - characteristics of a software system that can be monitored and provide information about the overall quality of a system.
quality attribute scenario - a test designed to examine whether a software system meets quality attribute requirements.
reference architecture - the architecture framework that is planned out for a product family and filled-in, or adapted, for specific products.
request/response - a pattern of messaging in which a client sends a request and a server returns a response.
reusability - the quality of being reusable in different systems.
scenario - a specific use-case shown with the 4 views. Used to validate the views.
script - a formal description of a scenario. Utilizes the views to explain how the scenario is executed.
security - a measure of the system's resistance to unauthorized access and use.
separation of responsibilities - on a software architectural level, sorting components into groups with specialized functions.
server-host - a machine hosting a server-side process.
socket connector - part of a component diagram. Depicts a required interface. Often connected to a server process. Goes with a ball connector.
SQL - structured query language, a common language for managing a database.
subroutines - pieces of logical code called by the main program.
synchronous - in the request/response, this refers to when the client halts processing until receiving a response from the server.
testability - how easy it is to demonstrate errors in the system through executable tests.
throughput - the amount of output produced over time.
tradeoff - the result of design decisions: implies that there are benefits and detriments to every design decision and these must be weighed against each other.
usability - the degree to which the system is easy to use by end-users. It could include intuitiveness, number of user errors, useful user feedback, and other metrics.
virtual machine - an emulation of a computer system.
By: Mutasem Elayyoub