An Architectural Description Language (ADL) for Ivory programs