Distributed software engineering Flashcards

(7 cards)

1
Q

What are distributed systems?

A

A distributed system is simply any environment where multiple computers or devices are working on a variety of tasks and components, all spread across a network. Components within distributed systems split up the work, coordinating efforts to complete a given job more efficiently than if only a single device ran it.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What are important design issues that have to be considered when it comes to distributed systems?

A
  1. Transparency: To what extent should the distributed system appear to the user as a single system? When is it useful for users to understand that the system is distributed?
  2. Openness: Should a system be designed using standard protocols that support interoperability, or should more specialized protocols be used?
  3. Scalability: How can the system be constructed so that it is scalable? That is, how can the overall system be designed so that its capacity can be increased in response to increasing demands made on the system?
  4. Security: How can usable security policies be defined and implemented that apply across a set of independently managed systems?
  5. Quality of service: How should the quality of service that is delivered to system users be specified, and how should the system be implemented to deliver an acceptable quality of service to all users.
  6. Failure management: How can system failures be detected, contained (so that they have minimal effects on other components in the system), and repaired?
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What types of attacks must a distributed systems defend itself against?

A

. Interception, where an attacker intercepts communication between parts of the system so that there is a loss of confidentiality.

  1. Interruption, where system services are attacked and cannot be delivered as expected. Denial-of-service attacks involve bombarding a node with illegitimate service requests so that it cannot deal with valid requests.
  2. Modification, where an attacker gains access to the system and changes data or system services.
  3. Fabrication, where an attacker generates information that should not exist and then uses this information to gain some privileges. For example, an attacker may generate a false password entry and use this to gain access to a system.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What are the two types of interactions between a components in a distributed system?

A
  1. Procedural interaction, where one computer calls on a known service offered by another computer and waits for a response. Procedural communication in a distributed system is implemented using remote procedure calls (RPC). In a remote procedure call, one component calls another component as if it was a local procedure or method. The middleware in the system intercepts this call and passes it to a remote component. This carries out the required computation and, via the middleware, returns the result to the calling component. A problem with RPCs is that the caller and the callee need to be available at the time of the communication, and they must know how to refer to each other.
  2. Message-based interaction, involves the sending computer sending information about what is required to another computer. There is no necessity to wait for a response. Message-based interaction normally involves one component creating a message that details the services required from another component. Through the system middleware, this is sent to the receiving component. The receiver parses the message, carries out the computations and creates a message for the sending component with the required results. In a message-based approach, it is not necessary for the sender and receiver of the message to be aware of each other. They simple communicate with the middleware.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What are the layers in a client/server system?

A
  1. Presentation layer is concerned with presenting information to the user and managing all user interaction.
  2. Data layer handling manages the data that is passed to and from the client. Implement checks on the data, generate web pages, etc.
  3. Application processing layer is concerned with implementing the logic of the application and so providing the required functionality to end users.
  4. Database layer stores data and provides transaction management services, etc.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What are the architectural styles that can support critical non funcational requirements?

A
  1. Master-slave architecture, which is used in real-time systems in which guaranteed interaction response times are required.
  2. Two-tier client–server architecture, which is used for simple client–server systems and in situations where it is important to centralize the system for security reasons.
  3. Multi-tier client–server architecture, which is used when the server has to process a high volume of transactions.
  4. Distributed component architecture, which is used when resources from different systems and databases need to be combined, or as an implementation model for multi-tier client–server systems.
  5. Peer-to-peer architecture, which is used when clients exchange locally stored information and the role of the server is to introduce clients to each other. It may also be used when a large number of independent computations may have to be made.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What are some implementation factors of SaaS?

A
  1. Configurability: How do you configure the software for the specific requirements of each organisation? Service configuration includes:

· Branding, where users from each organisation, are presented with an interface that reflects their own organisation.

· Business rules and workflows, where each organisation defines its own rules that govern the use of the service and its data.

· Database extensions, where each organisation defines how the generic service data model is extended to meet its specific needs.

· Access control, where service customers create individual accounts for their staff and define the resources and functions that are accessible to each of their users.

  1. Multi-tenancy: How do you present each user of the software with the impression that they are working with their own copy of the system while, at the same time, making efficient use of system resources?

· Multi-tenancy is a situation in which many different users access the same system and the system architecture is defined to allow the efficient sharing of system resources.

· It must appear to each user that they have the sole use of the system.

· Multi-tenancy involves designing the system so that there is an absolute separation between the system functionality and the system data.

  1. Scalability: How do you design the system so that it can be scaled to accommodate an unpredictably large number of users?

· Develop applications where each component is implemented as a simple stateless service that may be run on any server.

· Design the system using asynchronous interaction so that the application does not have to wait for the result of an interaction (such as a read request).

· Manage resources, such as network and database connections, as a pool so that no single server is likely to run out of resources.

· Design your database to allow fine-grain locking. That is, do not lock out whole records in the database when only part of a record is in use.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly