architecture of distributed software 4938456