Melhores Ferramentas para Manutenção de Software Engenharia
-
02-07-2019 - |
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).
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:
- Michael C. Penas: Trabalho Efetivamente com Legacy Code
- Martin Fowler: Refactoring: melhorar o projeto de código existente
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 ++
Usando um href="http://c2.com/doc/SignatureSurvey/" rel="nofollow noreferrer"> processo de pesquisa
O software de rastreamento de bugs, especialmente se ele liga-se ao seu software de controle de origem será de valor inestimável, como poderia lhe dar algumas dicas para que algumas decisões erradas foram feitas. Isto é ainda mais importante se os planos programador de manutenção em fazer alguma refatoração bem. log A escrita é também útil, para que você possa documentar o sistema como você vá junto.
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. ;)
A ferramenta crítica seria algo que permite navegar (e editar) da base de código para ajudar a sua compreensão.
É muito útil ter algo que pode exibir a relação de classe (se usando a linguagem OO). A capacidade de exibição (estáticos) árvores de chamada também é muito útil quando você quer medir o impacto de uma mudança que você estará fazendo.
Você menciona fonte-insight. Um projeto de código aberto de longa duração é fonte navegador . Parece que o desenvolvimento começou novamente depois de estar estagnada por um tempo.
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:
- Dependência Matrix / gráfico de dependência , para entender a estrutura do código.
- regra de código sobre LINQ consulta (CQLinq) para pedir o código base para dar me seu melhor segredo. Mais de 200 regras de código de são propostos por padrão.
- Diff na base de código , para ver o que foi adicionado / refatorado / removido entre quaisquer 2 versões do código.
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 .