2 Software Architecture Basics Flashcards
Design mode
- contains several diagram types, incl. interaction, package and class diagrams
- conecptual classes are needed
- -design classes show definitions of software artifacts
- -design model describes static and dynamic facets
architectural design
early stage of system design process
link beetween analysis and design
Divide & conquer
complex systems need to be partitioned variety of terms: -packages -components -subsystems -layers -tiers
Cohesion & couplin
cohesion: zugriffe innerhalb einer partition
coupling: zugriffe zwischen partitionen
good architecture -> high cohesion, low coupling
Architectural views
Functional/logical view Code/module view Development/structural view Concurrency/process/thread view Physical/deployment view User action/feedback view Data view
What constitues a software architecture
Logical view: organization of the software classes into software elements (packages etc); describes logical partitioning of the system into partitions and relationsships among htem
Deployment architecture view: distribution of software elements on computational resources and coomu. among them
Typical system layers
UserInterface /Presentation Layer
Application logic and domain layer
technical services layer
Distributed Systems
Architectural models:
- client-server architectures
- multi-tier architectures
- distributed object architectures
Pros of distrib.sys
Pro:
- resource sharing
- openness
- concurrency
- scalability
- fault tolerance
- transparency
Cons of distrib.sys
- complexity
- security
- manageability
- unpredicatbiliy
- testability
Client-Server architecture
set of standalone servers that provide specific services
set of clients who call those servers
network that allows access
Thin client deployment model
- application processing and data management is carried out by the server, client just resp. for data presentation/UI
- often used when legacy systems are migrated to client-server architectures
- places heavy processing load on the server and network
Fat client deployment model
the server just manages the data
client software implements application logic and presentation/UI
3-Tier deployment architecture
each architectural tier executes on seperate machine
tiers = physical nodes
client server (appl. process.) server (data)
better scalability
Architectural styles
set of architectural constraints
that restrict the roles/features of architectural elements
and the allowed relationships among those elements