Ciclo de Vida do Software: Etapas, Modelos e Por que Desenvolvedores Precisam Dominar