Graduado em Matemática pela Universidade do Estado do Rio de Janeiro, mestre em Ciência da Computação pela Universidade de Brasília e doutor em Ciência da Computação pela Universidade de Oxford, no Reino Unido. Atua na área da tecnologia da informação desde 1976, tendo exercido várias funções como programador de computador, analista de sistemas e coordenador de projetos de diversos tamanhos e características. É professor do Departamento de Ciência da Computação da Universidade de Brasília desde 1997, tendo como área de interesse a engenharia de software, com ênfase em engenharia de requisitos, orientação a objetos e verificação e validação de sistemas e processos de desenvolvimento.