Visual representations are widely used to describe modern-day software systems, but, in most cases, they lack rigour. This paper addresses the problems of formality, rigour and complexity in visual descriptions of software systems. It proposes a new language, VCL, that is designed sual, formal and modular, and that targets abstract specification at the level of requirements. VCL aims at expressing visually structural and behavioural properties of software systems. This paper presents design of VCL, outlining syntax and semantics of VCL notations of structural, behavioural, constraint, and contract diagrams, together with VCL’s approach to behavioural modelling based on design by contract. VCL’s novelty lies in the fact that contracts are modular units.