In our daily engagement with technology we interact with software in many aspects, rendering software engineering field a very robust area with a lot of dynamism. In this paper we have comprehensively surveyed on software engineering approaches for designing knowledge based systems. First we looked at knowledge based systems in detail, then at software engineering basics, and finally match the various software engineering approaches that have been used in the field of knowledge based systems in the current research and surveys. Some of the current approaches in knowledge approaches that we surveyed include: case-based approach, software reuse approach, Model driven software engineering approaches, ontology based approach, Open metadata approach, cloud based approach, agile approach, Traditional integration approach, Automatic software generation code approach, process based approach, and the Knowledge based system approach.