Week 8 Flashcards
What are the views in 4+1 architectural view models, and what diagrams are used to represent them?
Logical view - functionality the system provides to users - class & sequence diagrams
Development view - illustrates system from the programmers perspective - component and package diagrams
Process view - dynamic aspects of the system, runtime behaviour etc - activity diagram
Physical view - illustrates the system engineers view - deployment diagram
Scenarios - small set of use cases or scenarios, describing sequences of interactions between objects and processes
What is system architecture?
Fundamental organisation of a system - components, their relationships, the environment etc.
What is an architectural description?
A set of products that document the architecture
What is an architectural view?
Representation of a particular system or part of a system from a particular perspective
What is an architectural viewpoint?
Template that describes how to create and use an architectural view
Includes name, stakeholders, concerns addressed by the viewpoint
What does an architectural style describe?
Types of components
Types of connectors
Topology (constraints on possible compositions)
What are the 4 steps in the processing model of a client-server communication?
Client initiates request
Request passes through network
Server responds
Response returned via network
What properties does client-server communication have?
Transparency - server can be on different machines without affecting the client, client knows the server but not the other way round
Heterogeneity - different machines, operating systems
Redundancy
What are the 4 major forms of redundancy?
Hardware redundancy
Information redundancy (e.g error detection & correction)
Time redundancy
Software redundancy
In MVC, what is the model?
Provides the functionality of the program
In MVC, what is the view?
Presents the data from the model to the user, updating when data has changed
In MVC, what is the controller?
Accepts user input in the form of events. Created by the view
In MVC, what is a propagation mechanism?
Enables the model to inform the view that the data has changed
What two approaches are there for dividing a software system into subsystems?
Layering - levels of abstraction
Partitioning - each subsystem focuses on different aspect
In a layered architecture, what is the difference between closed and open architecture?
Closed - messages can only be sent to the next lowest layer
Open - messages can be sent to any lower layer
In P2P networks, how can peers be found (3 ways)?
Directory service - central server or “rendezvous peer” gives listing of clients
Multicast - peers announce their presence on a communication channel
Neighbour model - peers talk directly to each other
What are 4 advantages of P2P networks?
Very flexible
Evolves with minimal effort
Efficient
Heterogenous
What are 3 disadvantages of P2P networks
Security - almost impossible to authentiate
Duplication
Data corruption (??? wtf idk)
What is the difference between error, fault and failure?
Error - a human mistake in software development
Fault - the result of errors
Failure - dynamic manifestation of faults
What is static validation (3 examples)?
Validation carried out without executing the program
e.g. software inspection, formal verification, static typing
What is dynamic validation (2 examples)?
Validation carried out by executing the program
e.g. testing, defensive programming
2 pros, 3 cons of static validation
+ detection is earlier in the process - need not be complete
+ Correction is easier and cheaper
- Reduced flexibility
- increased bookkeeping
- incomplete
What sort of things does code inspection detect?
Stuff like resharper. Unreachable code, unitialised variables, array bounds, infinite loops
Which conversions between subtype and supertype are permissible with automatic coercion?
subtype to super type
What is the difference between weak typing and strong typing?
Weak: Supporting implicit typing, overloading or both
Strong: coercions only allowed if value is preserved, otherwise cast needed
What is the difference between static and dynamic typing?
Static typing: done by compiler, every name needs type declaration
Dynamic typing: done at runtime, requires dynamic binding between object and type