S5 Flashcards
(28 cards)
What is System Decomposition and what are its 3 key principles
Breaking down a complex system into smaller more manageable components
the key principles are :
Modularity, abstraction and encapsulation
Explain Modularity, Abstraction and Encapsulation
Modularity : divide and conquer - Little problems are easier to solve than big ones
Abstraction : Don’t re-invent the wheel
Focus on creative parts, if something already exits reuse it
Encapsulation : Separation of concerns
Support flexibility and future evolution by decoupling unrelated parts so each and grow separately
What is software architecture
Software architecture refers to the set of high level decisions that determine the structure of the software solution
parts of the system and relationships between parts
Why is Software Architecture important to get right early
It affects large parts of the system and it is a decision that is made early in the design process
what are some key architectural decisions
System decomposition :
how do you break this bitch up and how does shit interact and what dalas what
Cross-cutting concerns:
Non-functional requirements that my affects multiple thing s
Conceptual integrity:
Does the system make sense?
Architecture vs Design
Architecture focuses on non functional requirements and on the
decomposition of a system
Design focuses on implementing functional requirements
What is an architectural style :
AKA Architectural pattern is a general reusable solution to a commonly occurring problem in software architecture within a given context, related to design patterns
What are some Architectural styles
- Monolithic
- Client-Server
- Peer-to-Peer
- Multi-Tier
- Pipe and Filter
- Database-Centric
- Event-Driven
- Microservices
- Microkernel
- Representational State Transfer (REST)
- Service-Oriented
- Space-Based
How do we describe the components of a system and how
they interact?
Each component must be identified, and its interface described.
Interfaces must be:
- Fully documented
- Semantics, not just syntax
- Understandable
- Unambiguous
- Precise
Adding semantics: - Informal description
- Design models (UML diagrams)
- Pre/Post conditions
What are architectural views
Views are different kinds of “blueprints” created for the system-to-be
Like how the plumbing is done in a building
What makes up the 4 + 1 View Model
Logical View :
State and Class Diagram
Development View:
Component Diagram
Process View:
Activity and Sequence Diagram
Physical View:
Deployment Diagram
Scenario View:
Use Case Diagram
What is the logical view and what does it do and so on
This is concerned with the functionality provided to users
Decompose into classes and objects
UML : Class and State Diagrams
What is the development view and what does it do
The development view is concerned with software administration from the point of view of the programmer
This focuses on components, modules of classes that represent independent systems with the ability to interface with the rest of the system
UML : component diagrams
what do component diagrams show
Component diagrams show how different components in a system
interact.
Ball
provided interface
Socket
required interface
format of the development view
- Rectangles = components
- Symbol in top right corner
- Type and name at the top Squares = ports
- Squares = ports
- Sometimes used to mark interfaces
- Ball = provided interface
- Socket = required interface
What is the process view
This view is concerned with the dynamic aspects of the system, explaining the system processes and how they communicate , they focus on the runtime behaviour of the system
UML : sequence / activity diagrams
what do activity diagrams show
They show the workflow of a system
structure of the activity diagram
Activity diagrams show the workflow of a system
Blocks represent actions
Diamonds represent decisions
Bars represent forks/joins of concurrent
activities
Circle represents start
Outlined circle represents end of process
Similar to state diagrams, but show system activities
rather than object states
What do sequence diagrams show
Sequence diagrams show how components/objects in a system
interact over time , associated with the logical view
how are sequence diagrams made
- Box on top represents an object/component
- Stick figure on top represents an external actor
- Dotted vertical line represents lifeline of system
- Blocks along lifeline represent processes
- Solid arrows represent communications
(method calls) - Dotted arrows represent returns
- Large box represents loops
- Loop conditions in top left corner
- Text above/below lines indicates methods and
parameters
What is the physical view and how does it work
The physical view is concerned with the physical distribution of the system , as well as the physical connections between distributed parts
This depicts the system from a systems engineers point of view
UML : deployment diagrams
what are deployment diagrams
model the physical deployment of artifacts (software components) on nodes (hardware components)