Please enable JavaScript.
Coggle requires JavaScript to display documents.
Software Architecture Design Space - Coggle Diagram
Software Architecture
Design Space
Types of
Software
Structures
Software Static Structure
A software be described based on runtime dynamic structure, in which the software component instances at execution time.
is implement in multiple files.
This inclues static file types
executable files
library files
binary software component modules
DLLs (dynamic linking libraries
JavaBeans
Enterprise JavaBean
deployment description
orther resource files
At software development time
The main software elements
are source code files
Each modules has assigned functional
and nonfunctional attributes
API defined for modules separates module’s interface and implementation
The connectors at this level are in the form of module dependency Module A is connected to module B, if, A needs to invoke some methods in B during execution.
Static connectors
Direction
Synchronization
Sequence
At deployment time
The elements are binary versions of the project modules and files
Several source code modules may be packaged into the same deployment unit
The connectors in the deployment structures are basically the same as those for the source module structrues
Software Runtime Structure
A structure design be used to describe the project management structure of an architecture design
Elements
Processes
Threads
Web services
Distributed objects
The same element in a code strutrue can implement or support multiple runtime elements
Several code structure elements may implement or support an single runtime element
Connector Properties
inherit attribute from their source-code structure counterparts, with a few extra attributes
Multiplicity
e.g., web service, client-server
Distance and connection media
in the same thread, in the same process, on the same computers or on different computers across a network
Copper/optical
Wired/wireless LAN
decides the system performance and reliability
Universal invocable
Self-descriptive
Software Management Structure
A software architecture design be described in terms of software code units like source/binary code files, software modules, or software component deployment units
Layers
Abstraction for encapsulation
Refinement showing visibility
Kinds of static hierarchical relations
lineare client-server relation
refinement relations
Software Elements
Rule
Reentrant
Handle Bottle-Neck First
Make Things Simple
Software Connectors
Connect ts the modules of a system
Should be refined within the design process
Connector refinement is heavily influenced by a project's deployment environment
Usually determines the quality attributes of a system
Efficiency
Reliability
Availability
Security
Can be classified into many categories
Connector types
Based on Synchronization
Blocking
Non-blocking
Initiator
One Initiator
Two Initiator
Information carrier
variable
environment resource
method
message
Active time
Programmed
event-driven
connector span
local
networked
fan-out
1-1
1-*
Environment
homogeneous
heterogeneous
An Agile Approach to Software Architecture Design
KEY: Iterative Refinement