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
Architectural styles categories
- Structure: Object oriented, layered arch., component-based arch.
- Deployment: N-Tier, 3-Tier
- Communication: Service-Oriented Arch. (SOA), Message Bus
Reference Architecture
generic model
acts as a standard on which systems can be built
ref. arch. models can be used as templates
^ are more concrete
UI Layer
presentation of the data
managing the interaction with the user
should not process anything, forward it to appli. layer
Application Layer
handles incoming requests
remember session state and flow of work
rule of thumb: one controller/facade per use case
Domain Layer
contains the domain objects and application logic
very application specific
Facades
- reduce coupling -> facade classes are used
- serves as entry point to a set of related software classes
- servers as the interface to the respective software element
- black-box/information hiding principle
Component-Based architecture
compose software sys. from reusable components
a component is a unit of composition
can be deployed independently
typically feature-oriented
Architectural patterns
codification of prev. discussed archtiectural aspects
pattern -> crosses the boundaries of architectural elements
Software Patterns
patterns are recurring solutions for recurring problems
architec. pat. are software patterns
Terminology - Architectural Style
cross cutting principles (object oriented style, modular style, etc.) independent of application domain
Terminology - Reference Architecture
defines domain concepts, components and subsystems that can be used as a template
Terminology - Architectural Pattern
solution to recurring situation where several forces have to be balanced
Model-View Seperation Principle
different concerns
allows to create several UIs
testing UI is hard, allows to test appli seperatly
appl logic + UI = Smart UI Anti Pattern
Model View Controller MVC Pattern
Model: containts core funcitonality and data
Views: display information to user
Controllers: handle user input
Views + Controllers = UI
Advantages of an Explicit Architecture
Stakeholder communication
system analysis
large-scale reuse
project planning