Como iniciar modificação com grandes projetos
-
20-08-2019 - |
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,
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.