Durante as atividades de manutenção de software, sejam elas corretivas, adaptativas ou perfectivas, gerentes ou líderes de projetos geralmente realizam a distribuição de tarefas com base na relação que cada desenvolvedor possui com o código fonte associado a cada uma delas, ou seja, quando maior a relação entre um determinado desenvolvedor e o código fonte associado à tarefa que deverá ser executada, maior será a probabilidade desse desenvolvedor assumir a responsabilidade de executá-la. Contudo, é comum que gerentes de projetos não tenham uma noção mais aproximada de como está a relação entre desenvolvedores e o código fonte relacionado à cada tarefa a ser desenvolvida. Em um estudo anterior, foi proposto um método baseado em Mining Software Repositories (MSR) para obter a familiaridade de código dos desenvolvedores a partir da mineração de dados de um dos repositórios de software mais utilizados atualmente: o Sistema de Controle de Versão (SCV). O cálculo da familiaridade é feito considerando a perspectiva de módulo ou arquivo. Neste trabalho, é proposta uma abordagem baseada no método descrito anteriormente, para inferência da familiaridade de desenvolvedores considerando também uma nova perspectiva: funcionalidade de software. O objetivo final é a realização de uma análise comparativa da inferência da familiaridade de código considerando as perspectivas de módulo e funcionalidade. Para alcançar esse objetivo é apresentado também um método baseado em Reverse Engineering (RE) para identificar funcionalidades de software e unidades computacionais (arquivos de código) que compõem cada funcionalidade identificada. Neste estudo foi realizado também, um Mapeamento Sistemático da Literatura (MSL) que apresenta um overview da área de inferência da familiaridade e outros tipos de relação entre desenvolvedor e código fonte por meio de técnicas baseadas em MSR. O método para identificação de funcionalidades foi avaliado em sistemas de software reais, incluindo um sistema privado de médio porte. Os resultados obtidos foram validados junto aos desenvolvedores responsáveis por cada sistema analisado. O método se mostrou eficaz na identificação de funcionalidades, bem como no mapeamento dos componentes computacionais que compõem cada uma delas.