The aim of this module is to provide an understanding of the fundamental software engineering and computer systems issues raised by programming for networked computers. The module will enable learners to develop applications for distributed systems and to understand the networked computer systems support that is desirable and necessary to allow such applications to be developed and implemented.
Introduction
Definition of a distributed system; Making resources accessible; Distribution transparency; Openess; scalability; Pitfalls
Architectures
Architectural sytles; System Architectures (Centralised, Decentralised,and Hybrid Architectures); Architectures Verus Middleware; Self-management in distributed systems
Processes
Threads in distributed systems; Architecture of virtual machines; The role of virtualization in distributed systems; Client-side software for distribution transparency; Managing server clusters
Naming
Names, Identifiers and addresses; Flat naming (Simple solutions, Home-based approaches, Distibuted Hash tables, Hierarchical Approcahes); Structured Naming (name spaces,name resolution, the implementation of a name space); Attribute-based naming (directory services, Hierarchical implementations:LDAP, Decentralised Implementations)
Synchronization
Clock synchronization; Logical clocks; Mutal exculsion; Election algorithms
Consistency and Replication
Reasons for replication; Replication as scaling techniquel; Data centric consistency models; client centric consistenmcy models; Replica management; Consistency Protocols
Security
Security threats, policies, and mechanisms; Secure channels; Secure group communication; Access control; Secure mobile code, Security management
Distributed web-based systems
Architecture; Processes; Communication; Naming; Synchronization; Consistency and replication, Fault tolerance, Security.
Module Content & Assessment | |
---|---|
Assessment Breakdown | % |
Other Assessment(s) | 50 |
Formal Examination | 50 |