Briefly describe the System Development Life Cycle (SDLC) and discuss the predictive and adaptive approaches to SDLC, evaluate the usefulness and limitation of each approach as well.