CSS Prepare

optional · CSS study notes

Distributed Software Engineering

CSS CS Optional — Paper-I, Section-B, Topic V.

🔑 Definition

  • Software whose components run across multiple, independent, networked machines.
  • Coordination = message passing, not shared memory.

📌 5 Core Design Issues

  • Transparency — hide distribution from user
  • Openness — built on published, standard interfaces
  • Scalability — add nodes to handle more load
  • Fault tolerance — keeps working / degrades gracefully if a node fails
  • Concurrency — multiple components executing at once (race conditions, sync issues)

📌 Middleware

  • Sits between distributed components; handles communication/naming/coordination.
  • Examples: RPC, message-oriented middleware, CORBA, web services.

📌 Architectural Examples

  • Client-server — simplest case.
  • Peer-to-peer, SOA (Service-Oriented Architecture) — more advanced.

⚠️ MCQ Trap

  • "Transparency" here = user can't tell it's distributed. Not security transparency or code readability.

📜 Past-Paper Questions & MCQs (CSS 2016–2026)

2017 · Paper-I · Q6(b) · 6 marks

Q. Discuss the design issues of task partitioning and task allocation in distributed software engineering.

Ans.

  • Task partitioning means splitting the project into modules or tasks that can be developed in parallel. Task allocation means assigning those tasks to teams or sites.
  • Partitioning issues:
    • modules must be loosely coupled with clear interfaces, otherwise teams block one another
    • dependencies must be identified, and the architecture should follow communication boundaries (Conway's law)
    • the sizes of tasks must be balanced
  • Allocation issues:
    • the skills and experience of each site and team
    • time zones, language and cultural differences
    • communication and coordination overhead, and tools for sharing code and documents
    • trust, ownership and accountability, security and intellectual property
    • cost and workload balance
  • Good practice: a clear architecture, defined interfaces, common tools (version control, CI), regular meetings and shared documentation.