Software engineering relies on the possibility of describing a system at different levels of abstraction. Agent-oriented software engineering introduces a new level of abstraction, that we called agent level, to allow the architect modelling a system in terms of interacting agents. This level of abstraction is not supported by an accepted set of tools and notations yet, even if a number of proposals are available. This paper introduces: (i) An UML-based notation capable of modelling a system at the agent level and (ii) A development framework, called ParADE, exploiting such a notation. The notation we propose is formalized in terms of a UML profile and it supports the realisation of artefacts modelling two basic concepts of the agent level, i.e., the architecture of the multi-agent system and the ontology followed by agents. The choice of formalising our notation in terms of a UML profile allows using it with any off-the-shelf CASE tool. The ParADE framework takes advantage of this choice by providing a code generator capable of producing skeletons of FIPA-compliant agents from XMI files of agent-oriented models. The developer is requested to complete the generated skeletons exploiting the services that ParADE and the underlying agent platform provide.