Software engineering is a knowledge-intensive task. Software development organisations depend on the knowledge they have at their disposal to develop high-quality software and become competitive in the software industry. Knowledge held by employees and in the organisation's repositories, routines and processes is important in the software development process. A literature review was conducted to investigate knowledge management (KM) practices, their benefits and challenges in software engineering. Four main areas of KM research were discovered: KM in software organisations, KM in the software development process which includes KM in development teams, KM in testing, and KM in development methodologies, KM in mitigating risk and the role of KM in fostering learning in software development organisations. KM benefits and tools were also discovered in the literature review. Software organisations and teams create, share, acquire, store and share knowledge during software development. KM activities such as knowledge sharing, storage and reuse are applied in software development risk mitigation. A strong link between KM practices and learning in software development was found. The conclusion drawn from the literature review is that KM activities have improved product quality and delivery time, and execution of tasks. However, there are gaps that were identified too. The literature does not identify KM challenges in software engineering, it does not state all the phases of the systems development lifecycle (SDLC) these KM activities occur, and does not tell us if KM practices have helped mitigate risk in software development.