Software Development Cycle and Approaches