Ontology Driven Software Engineering: A Review of Challenges and Opportunities Ontologies are formal representations of knowledge about a given domain. Based on them, it is possible to create more expressive knowledge bases that can be shared, extended and reused in different scenarios. In software engineering, ontologies can contribute in many different ways to improve the models, methods, techniques and processes of software development. Nevertheless, the use and benefits of ontologies and Semantic Web technologies in Software Engineering is spread across several articles and books available in the literature. In this context, this paper aims at compiling and presenting the research findings and potential benefits when applying ontologies to address three major challenges in software engineering: (1) difficulty in communicating and sharing information; (2) effective management of software development phases; and (3) development techniques and environments to support the production of semantic software through an interdisciplinary approach. We believe that the review of the literature and discussions presented in this work can contribute to disseminate best practices of using ontologies in software development as well as to give directions about this field of research, its challenges and opportunities.