This document provides an overview of distributed software engineering. It discusses key topics like distributed systems issues, client-server computing, and architectural patterns. Design issues for distributed systems like transparency, openness, scalability, security, and failure management are also covered. The document explains models of interaction, including remote procedure calls and message passing, and how middleware supports interaction and common services in distributed systems.