The tutorial is concerned with engineering multi-agent systems which operate in open, dynamic and potentially hostile environments; whose components are heterogeneous entities which may act selfishly; and where agent interactions are unpredictable due to the unavailability of access to the internals of the agents. In electronic marketplaces, for example, agents are programmed by different parties with conflicting goals. Therefore, it cannot be assumed that agents will act collaboratively or play by the rules of the game. Agents may also violate the rules due to necessity, as in the case of conflicting rules, or by accident, as in the cases of faulty communication links and software components. Virtual organizations, resource-sharing and digital rights management applications are but a few further examples of competitive systems. This tutorial surveys the state-of-the-art on engineering competitive multi-agent systems, focuses on developing executable specifications of such systems, demonstrates relevant software tools, and examines the open research questions.