Software Design Flashcards
What are the GRASP principles and patterns?
The GRASP principles and patterns are
High cohesion and low coupling
Controller
Creator
What is dependency injection?
Dependency injection is a technique whereby one object (or static method) supplies the dependencies of another object. A dependency is an object that can be used (a service)
What is the common problem that RTTI and dependency inversion attempt to address?
RTTI and dependency inversion define methods that characterize common functionality of related objects
What specific maintainability-related concern do the Laws of Demeter attempt to address?
The Laws of Demeter addresses the concern of avoiding designs that reach “through” one object to another. It does so by limiting the use of inherited and reeferenced content from and classes.
How do the strong and weak laws of Demeter differ?
Strong Demeter limits the use of inherited content. Weak Demeter allows inheritance of any superclass attributes
What is variation inheritance?
Variation inheritance is describing a class in terms of difference with another class. It can be useful for defining a package in terms of an existing version
What is the relationship between tiered computing and the client-server architectural style?
Tiered computing is a multi-layered client server, where an immediate layer preprocesses clients request and or post process the server response
What do the broker and proxy architectural styles have in common and how do they differ?
Broker and Proxy are both forms of tiered computing.
- A broker(host) intercepts an initial request then puts a client in direct contact with a server.
- In a proxy, the proxy handles ALL communication between the client and server
In what ways are the deployment strategies for MVC and MVP the same? How do they differ?
Model View Controller and Model View Presenter are both forms of tiered computing. In MVC, the immediate layer(controller) resides on the server and handles all communication between views and models.
On the other hand, a presenter is used instead of a controller which resided on the client side.
What does it mean for a request to be idempotent?
Simply put, an operation is idempotent if it produces the same result when called over and over. An identical request should return an identical result when done twice, two thousand, or two million times
What is RPC?
RPC stands for Remote Procedural Call. RPC makes a programs modules easy to deploy in a network by making location of a server completely transparent.
What is REST?
REST stands for Represental state transfer. REST decouples UI and datasource which allows for cross-platform.
What is a key difference between REST and RPC?
RPC directs request to procedures / API’s while REST directs request to resources.
What is a key difference between REST and RPC?
RPC directs request to procedures / API’s while REST directs request to resources.
What purpose(s) does an ORM serve in client-server implementation?
An object relational mapper is used to interchange data between code or underlying database.
ORC handles two issues:
1) Creation and realization of schema
2) Creating logic for interchanging data between class and database
What is meant by the term “marshalling” in context of RPC?
Marshalling is the packing of procedure parameters into a message packet.
What is PUT?
PUT creates a new resource
What is POST?
POST updates an existing resource
What is data-first development?
Data-first development affords more control over detail and performance at a cost of additional coding and more expertise. You would want to use data-first when you are expecting a long lifetime of a database.
What is code-first development?
Code-first offers the opposite set of advantages and disadvantages of data first. You would use code first if the database has a short expected life.
Name the six types of cohesion in the Constantine hierarchy
Furry Soft Cats Prefer Tender Love Care
Functional Sequential Communicative Procedural Tempural Logical Coincidental
Describe Coupling
Data Stamp Control External Common Global