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.