Fui encarregado de liderar o esforço de documentação de um produto de software existente, totalmente não documentado - que recursos existem para me ajudar?

9

Sou desenvolvedor de software em uma empresa de tecnologia. Fui encarregado de liderar o esforço de documentação do produto em que trabalho. O objetivo é produzir documentação interna para o desenvolvedor, e o projeto se espalha para o lado comercial, onde abrange a documentação de requisitos.

Este projeto é desafiador. Especificamente, estou lidando com um produto que: - existe há muito tempo, há pelo menos 6 anos. - não tem outra forma de documentação além de algumas peças pequenas e desatualizadas aqui e ali. - possui comentários no código, mas são técnicos e não transmitem nenhum comportamento geral (mesmo no lado técnico). - em consequência de ter pouca ou nenhuma documentação, muitas vezes é desnecessariamente complexo

Além disso, não nos foi dado muito tempo para trabalhar neste projeto.

Não possuo documentação formal ou formação, treinamento ou experiência em redação. Eu demonstrei alguma habilidade na escrita / comunicação em todo o escritório, e pode ser por isso que fui designado para este projeto.

Compartilhe seu conselho ou recomendação de recursos para me ajudar a preparar e lidar com este projeto. Estou procurando referências a livros / site / fóruns / o que for, para me ajudar a elaborar um plano com marcos, aprender sobre as melhores práticas, delegação de tarefas, modelos, adesão, etc.

Espero especificamente os recursos direcionados ou dando menção especial à introdução de boa documentação para projetos existentes e não documentados .

Ben Rose
fonte
1
Em que está escrito o projeto? Existem muitas ferramentas para extrair informações de cabeçalhos de funções e outras coisas desse tipo. Você não obterá nada diretamente útil deles, mas eles podem ajudar.
21711 David Thornley
Parece o trabalho que eu uso para trabalhar. cerca de 6 anos de código Delphi 7 e cerca de 200 procs / funções / gatilhos armazenados do SQL Server foram agrupados sem documentação.
Earlz

Respostas:

8

Eu costumo usar um wiki e apenas enviar spam por lá enquanto passo pelo processo de descoberta. Wiki porque você obtém pesquisa e histórico, além de funções de edição de equipe. A ferramenta exata é menos importante do que ter uma pesquisa em funcionamento e fazer com que todos a usem. Espere que seja muito duro no início, mas incentive as pessoas a fazerem essas anotações bruscas à medida que avançam, porque isso é tudo que você obterá primeiro.

Algumas coisas que ajudam muito:

  • tem um editor. Você, provavelmente, a princípio, mas se você tiver o orçamento, faça parte do trabalho de alguém. Escolha alguém que seja bom em linguagem, em vez de um gênio técnico. Edite para maior clareza do que perfeição - você deseja incentivar as pessoas a escrever boas entradas, mas precisará orientá-las primeiro.
  • use diagramas, mas determine que uma ferramenta relevante seja usada, a imagem seja gerada e o arquivo de origem anexado à página. Dessa forma, as pessoas podem editar sua imagem usando a ferramenta adequada em vez do MS-Paint. Poucas coisas sugam mais do que um diagrama realmente bom criado no Visio para o qual você não tem mais o documento de origem, apenas um PNG extraído dele.
  • Incentive o rearranjo e a edição. Mesmo que não seja ótimo no começo, você precisa que as pessoas coligam informações e corrijam erros. Orientar as pessoas a fazer isso bem.
  • traga isso à tona nas reuniões semanais da equipe. Pegue a lista de edições recentes antes de elogiar as pessoas que adicionaram algo útil e pergunte por que as que não o fizeram não o fizeram.

Eu comecei com uma imagem de máquina virtual do MediaWiki no passado porque é muito rápido e fácil de começar, para que as pessoas que dizem "é muito difícil" não recebam nenhuma tração inicial.

Se o seu idioma / ambiente o suportar usando ferramentas do tipo JavaDoc / NDoc para extrair os comentários à medida que você os adiciona, é uma boa abordagem de baixo nível. Mas isso é menos útil do que a documentação de alto nível, e mesmo que as ferramentas suportem a adição de itens de nível superior, criá-lo do nada usando apenas essas ferramentas é desnecessariamente trabalhoso.


fonte
2
+1: Wikis são uma ótima ferramenta para isso. Eu usei essa abordagem várias vezes nos últimos seis anos para documentar códigos não documentados de uma maneira evolutiva - e eles são tão fáceis que você também pode conseguir alguns de seus colegas.
Bob Murphy
A melhor coisa dos wikis é que você pode facilmente obter informações diretas das pessoas que usam e desenvolvem o software.
HorusKol 18/02/11
3
E responda as respostas com "ótimo, mas por que isso não está no wiki?". Se sua equipe não estiver acostumada a ter documentação, será um pouco chocante a princípio. O conjunto "acha o desenvolvedor que manteve isso pela última vez e pergunta a ele" é frustrante para todos, mas leva tempo para acostumar as pessoas a pagá-lo adiante.
Wikis também tendem a ser viciantes. Uma vez que você propôs um com informações suficientes e adquiriu algumas pessoas com o hábito de atualizá-las e verificá-las, o wiki pode se transformar em uma fonte de documentação de longo prazo para o projeto.
blueberryfields
4

Se você está documentando o código em si e não está documentando o usuário final, o Doxygen é uma ótima ferramenta se suas linguagens de desenvolvimento forem suportadas. Você o executa no seu código e cria um site listando todas as suas funções, classes, etc. Em seguida, você pode adicionar comentários de código especialmente formatados para agrupar itens e adicionar mais detalhes. É uma ótima maneira de documentar incrementalmente uma base de código.

Bob Murphy
fonte
1
+1 para Doxigênio. Certifique-se de ativar a geração de diagramas de classe e gráficos de chamada. Isso é inestimável ao navegar por um mar de código não documentado.
GavinH
@ GavinH, é um pouco confuso que você tenha adicionado um comentário "+1", mas não há voto positivo nesta resposta.
Péter Török
Uau, vocês não perdem uma batida!
GavinH
2

No que diz respeito à documentação do código, se o Doxygen não atender às suas necessidades, existem muitas ferramentas alternativas disponíveis. A Wikipedia possui uma lista de quase 50 dessas ferramentas e inclui detalhes de suas funcionalidades e suporte a idiomas.

Isenção de responsabilidade: Estou associado a uma das ferramentas, Imagix 4D .

johnblattner
fonte
1

Estas são apenas algumas idéias que podem ser úteis em algum nível:

Você já pensou em que formato essa documentação terá no final: Será um documento do Word, um DVD, um site com uma série de páginas que detalham o aplicativo, uma ferramenta de blog que apenas detalha os detalhes do aplicativo à medida que se mergulha usando algum sistema de gerenciamento de documentos disponível como o Share Point ou algo mais? Obter resultados seria um exemplo de um livro on-line que é uma série de páginas, por exemplo.

Que tipo de controle de versão e processo de edição você deseja que esta documentação seja, é outro problema que vale a pena ponderar antes de você se aprofundar nisso. Como você deseja lidar com atualizações e alterações.

É provável que o feedback seja outra dimensão interessante sobre isso, pois o que você criar, provavelmente haverá mais do que algumas críticas, e quão bem essas mudanças serão priorizadas e otimizadas é outra questão que eu consideraria antes de lançar a primeira versão.

Boa sorte!

JB King
fonte
1

Construir Documentação, como construir todos os outros tipos de software, é um processo inerentemente complexo.

É por isso que os desenvolvedores de software inventaram os métodos Agile.

A documentação é apenas um software sem um compilador. Os mesmos métodos para projetos de software se aplicam a projetos de documentação. Exatamente o mesmo raciocínio.

Ao escrever um software, você começa com casos de uso (ou histórias de usuários). A documentação não é diferente.

Você prioriza os casos de uso com um orçamento aproximado.

Você tem sprints.

Você tem lançamentos.

Você faz garantia de qualidade - teste - revisão - correção e relançamento.

É exatamente como criar software.

Quem são seus usuários? Que problemas eles têm? Como o documento resolverá o problema deles? Prioritizar. Arrancada. Eventualmente, você liberará.

S.Lott
fonte