Lecture 8 and 9: Reusability and Client-Server Architecture Flashcards
What are some pros of reusability?
Simplifies design, prevents shortcuts, improves quality
What are some cons of reusability?
Takes extra time, sometimes management primarily rewards ‘visibility’, costs money
What is a framework?
Reusable software that implements a generic solution to a generalized problem
Provides common facilities applicable to different applications
What is a framework slot?
Certain classes or methods are missing
Developer can insert code
What is a framework hook?
Optional functionality, allowance made for developer to provide it
Allow for flexibility without altering the core code
What is a product line?
Set of products built on a common technology base (e.g. Windows 10 Home, Ultimate, Business, etc.)
What is a distributed system? What are the key aspects?
System of discrete networked components, distribute workload across multiple devices
Attributes: Have concurrency, lack a global clock, can encounter independent failure of components, coordinate by passing messages
What is a client-server architecture?
One kind of a distributed application or system
Server: Program that provides a service for other programs
Client: Program that accesses one or more servers to obtain services
Communication Channel: Generally a computer network, client must initially know sever, but not vice versa
What is a basic client-server sequence?
- Server starts running: creates a socket, binds socket to an address, waits/listens for clients
- Client requests something from the server: creates a socket, attempts to connect to the server
- Server accepts connection
- Send and receive data (read and write)
What are the advantages of client-server?
Work can be distributed among different machines
Client can access server from a distance
Client and server can be designed separately, so they can both be simpler
Data can be kept centrally at the server
Server may be accessed simultaneously by multiple clients
What is a thin client?
Client is as small as possible, most of the work is done on the server, the client is easy to download
What is a fat client?
As much work as possible delegated to clients, server can handle more clients