Pergunta

Sim, a temida palavra 'M'.

Você tem uma estação de trabalho, controle de origem e meio milhão de linhas de código-fonte que você não escreveu. A documentação estava fora da data no momento em que foi aprovado e publicado. Os desenvolvedores originais são LTAO, no próximo projeto / startup / manicômio e não respondendo a e-mail.

O que você vai fazer?

{} editor favorito e Grep irá ajudar a começar no seu spelunking através das tripas gnarling da base de código, mas o que as outras ferramentas devem estar na caixa de ferramentas engenheiros de manutenção?

Para começar a bola de laminação; Eu não acho que eu poderia viver sem fonte para o insight para spelunking C / C ++. (IMPORTANTE: eu não trabalho para eles).

Foi útil?

Solução

Uma das melhores ferramentas no espaço Net é ReSharper . Esta ferramenta tem economizado tempo me em todos os aspectos do ciclo de vida de desenvolvimento. Eles também me ajudaram a sobreviver quando juntando projetos / soluções sem documentos.

  • refatoração de código
  • Código de Navegação
  • Análise de código

essas são algumas das muitas características que ajuda um executam tarefas demoradas.

Outras dicas

Apenas como comer o elefante - uma mordida de cada vez:)

Às vezes a imagem grande pode ser um verdadeiro demotivator, e você precisa escolher um local e enfrentá-lo peça por peça.

É claro que ainda precisa escolher a pouco para começar em ... Normalmente, isso é impulsionada mais pelos usuários / negócios com superior específico prioridade alterações necessárias (ontem ...), mas se você tiver um pouco de flexibilidade ou de familiarização tempo , métricas são frequentemente úteis. Ferramentas aqui variam de acordo com a tecnologia e linguagem, mas ferramentas como NDepend e JDepend , qualquer construído em código métricas (como no Visual Studio Team System, ou os vários plugins do Eclipse disponíveis) ou uma ferramenta como Simian para começar uma sensação para o tamanho da cópia e cole problema.

Esperamos que o número de testes de unidade e cobertura é maior do que zero, e assim por um bom primeiro passo é sempre o de conseguir tudo o que testes que você pode executar em um ambiente de integração contínua, como uma fundação para a adição de mais testes como você aprende.

E como já foi dito - opções assumindo que estão disponíveis para a língua -. Um bom IDE com navegação de código e refactoring automatizado é uma obrigação (Eclipse, Visual Studio (com ou sem ReSharper)

Um par de livros moralizadora:

Boa sorte:)

motores de busca de código pode ajudar a encontrar seu caminho em torno de uma base de fonte enorme.

Um motor de busca código sensível ao langauge fonte pode ser encontrada em SD Source Code Search Engine . Ele pode lidar com vários idiomas ao mesmo tempo. Pesquisas podem ser realizadas para padrões em um langauge específico, ou padrões nos idiomas (como "identificadores achado envolvendo questões tributárias"). Ao ser sensível a sinais langauge, o número de falsos positivos é reduzida, economia de tempo para o usuário. Ele entende C, C ++, C #, COBOL, Java, ECMAScript, Java, XML, Verilog, VHDL, e uma série de outras línguas.

(eu sou o arquiteto ferramenta).

Eu costumo começar com o Emacs + cscope no Linux. Visual Studio tem algumas ferramentas de inspeção que lhe dão uma capacidade semelhante para Windows. Doxygen pode ser bastante útil também -. Ele irá gerar documentos que podem ser úteis, mesmo que as fontes não tem comentários de documentação

Vou correr alguma ferramenta UML (talvez simples caderno com uma caneta =)) e / ou ferramentas para a construção de classes, chamadas, métodos hierarquias (integrado no IDE). Então eu vou assistir dinâmica com depurador ou testes de unidade simples. Com essas coisas eu vou tentar executar algum tipo de engenharia reversa para descobrir o design.

Em tais situações, eu usaria Compreender para C ++

Sim, bater o prego na cabeça. A unix shell eo bloco de notas à mão ++ é o que eu costumava usar quando eu fiz o trabalho de manutenção no ColdFusion, PHP, Perl etc. bom não mudar editores, e rastrear todas as referências a um nome / param / variável.

Agora eu só clique direito e hit 'Encontrar todas as referências' no Visual Studio, o que parece fazer batota para ser honesto. Os caras PHP são extremamente ciumento, como eles são forçados a usar o vi para a edição. ;)

Eu acho refletor de Lutz útil para isso, especialmente quando você tem uma mistura de código e binários. Você começa chamadas e de dependência gráficos (depende, usados ??por, expostos por, instanciado por, etc.), montagem de gráficos e alguns grandes plugins.

NDepend é uma ferramenta dedicada a re-engenheiro de código legado , especialmente grandes bases de código legado emaranhados Disclaimer: Eu sou um desenvolvedor de ferramentas

Para citar Scott Hanselman que uma vez escreveu em seu blog : " NDepend está me dando uma visão sobre minhas aplicações que eu não tinha antes (...) Depois que eu percebi a profundidade e amplitude da informação que eu estava olhando para ele, eu era como uma criança numa loja de doces. "

características Alguns de NDepend úteis para re-engenharia são:

Você precisa ser capaz de navegação em toda a base de código. Se seu IDE favorito faz permitir isso, então você pode usar um indexador, como Compreender para C ++ (já citado), lxr , ou OpenGrok .

Em uma pressa, você pode confiar grep (1s) ou - melhor - Ack .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top