Software life cycle starts when a software product is first conceived and ends when it is no longer in use. It contains aspects such as initial concept, requirements analysis, internal design, functional design, documentation planning, test planning, coding, integration, testing, document preparation, maintenance, updates, retesting, phase-out, and other aspects.