Pergunta


Eu tenho que fazer melhorias para um projeto existente C ++ com acima de 100k linhas de código.
A minha pergunta é como e por onde começar com esses projetos?
o problema aumenta ainda mais se o código não está bem documentado. Existem algumas ferramentas automatizadas para estudar o fluxo de código com grandes projetos?

Thanx,

Foi útil?

Solução

Há um livro para você: trabalhar efetivamente com Legacy Code

Não se trata de ferramentas, mas sobre várias abordagens, processos e técnicas que você pode usar para melhor compreender e fazer alterações no código. É ainda escrito de uma perspectiva principalmente C ++.

Outras dicas

Use Controle de origem antes de tocar em qualquer coisa!

  • Primeiro estudar a interface existente bem.
  • testes de escrever, se eles estão ausentes, ou expandir as já escritas.
  • Modificar o código-fonte.
  • Executar testes para verificar se a modificação de alguma forma, rompe o comportamento mais velho.

Há um outro bom livro, atualmente disponível livremente na rede, cerca de objeto orientado reengenharia: http://www.iam.unibe.ch/~scg/OORP/

O livro "Código de Leitura" por Diomidis Spinellis contém muitos conselhos sobre como ganhar uma visão geral e aprofundado conhecimento sobre projetos maiores, desconhecidos.

Capítulo 6 é focos sonely sobre o assunto (Tacheando grandes projectos). Também os capítulos sobre ferramentas (cap. 9) e arquitetura (cap. 8) podem conter sugestões agradáveis ??para você.

No entanto, o livro é sobre a compreensão (por leitura) o "código". Ele não aborda diretamente a etapa de manutenção.

A primeira coisa que eu faria é tentar encontrar os requisitos do produto .

É quase impensável que um produto deste tamanho podem ser desenvolvidas sem requisitos.

Ao ler atentamente os requisitos, você vai ser capaz de:

  • ter uma noção do que o produto (e, portanto, o código) é de pelo menos deveria estar fazendo
  • ver o quão bem (ou mal) o código realmente cumpre esses requisitos

Caso contrário, você está apenas olhando para código, tentando adivinhar a intenção dos desenvolvedores ...

Se você é capaz de executar o código em um PC, você pode tentar construir uma callgraph geralmente a partir de uma saída de perfis.

Também ferramentas de referência cruzada como cscope, ctags, lxr, etc, podem ajudar muito. A

Passar algum tempo lendo, construção de diagramas de classe ou mesmo adicionando comentários às partes do código que você levou tempo para entender são passos para se familiarizar com a base de código e se preparando para modificar / estendê-lo.

A primeira coisa que você precisa fazer é entender como funciona o código. Leia o que a documentação que existe e, em seguida, assistir o programa operar sob um depurador. Se você assistir a principal função / loop e depois, lentamente, sua maneira de trabalhar mais profundamente o programa, você pode ganhar uma boa idéia bem como as coisas estão funcionando. Certifique-se de anotar as suas descobertas para outros que seguem depois de ter uma posição melhor para começar.

Running Doxygen com o EXTRACT_ALL conjunto tag para documentar todas as relações na base de código. Ele não vai ajudá-lo com o fluxo de código, mas espero que ele vai lançar alguma luz no que diz respeito à estrutura e design de todo o aplicativo.

Um bom programador austríaco me disse uma vez que, a fim de entender um programa que você primeiro tem que entender os dados-estruturas que os usos do programa.

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