Quais papeis fundamentais em um projeto de software?