[UNIVERSITY-10: Create draft architecture for software architecture cousework]

ApplicationDataContext has been generalised by using ImmutableTuple