Suponha que você tenha que desenvolver um software de tamanho médio, totalmente por conta própria. Como se fosse um projeto pessoal que você deseja realizar.
Quais metodologias / ferramentas você usaria para definir o que precisa ser desenvolvido, aprendido e ter uma idéia global do que o sistema é também em seus detalhes?
Basicamente, para manter-se na pista e não se perder no caminho.
tools
methodology
Cássio
fonte
fonte
Respostas:
Normalmente, eu apenas uso o Mercurial, se eu quero um recurso, apenas o adiciono e, se não o quero mais, apenas o removo. Além disso, tento escrever bem meus comentários de commit para não me perder.
fonte
Pode crescer facilmente além do alcance de sua atenção. Não é a extensão , a largura .
É difícil considerar muitos elementos ao mesmo tempo .
E então ... torna-se uma montanha-russa de regressão .
Tudo o que você faz quebra as coisas anteriores, e reverter não ajuda.
Para evitar isso, você deve testar agressivamente a regressão .
Automaticamente. (Você não pode fazer isso de outra forma e manter a sanidade)
O teste adicionará uma tensão difícil às suas energias.
Se o projeto é sobre interface do usuário ... você provavelmente está brindando:
Outros problemas:
(Na verdade, não existe como uma condição, é um erro de etiqueta popular que as pessoas atribuem à falta de disciplina )
Se você está acostumado e adora algum tipo de controle de versão , use-o.
Começar a aprender um agora o distrairá .
Representar graficamente suas idéias, como já apontado, pode ajudar.
Eu usei Freemind , Cmaps , XMind , yed , graphviz , e ... outra coisa.
XMind é o menos inútil:
Um lápis e um caderno ainda são muito bons no meu top 10:
Faço muitos pequenos desenhos explicativos.
Como último recurso, você sempre pode preparar powerpoints para seu próprio consumo :)
fonte
Programação alfabetizada.
Se você está escrevendo um artigo (ou livro ou relatório ou documento) sobre o seu projeto, tende a permanecer na tarefa.
Comece com um resumo do que você está fazendo: visão geral do caso de uso, release 1, release 2, release n. Anote um resumo dos casos de uso. Priorize-os. Coloque-os em sprints e lançamentos.
Cada release possui uma visão de caso de uso, lógica, de processamento, de componente e de implementação. Para o sprint, detalhe os casos de uso. Publique o documento HTML para mostrar o que você fará. Depois de detalhar os casos de uso do sprint, escreva o modelo lógico. Escreva um código para suportar isso. Escreva a documentação de processamento. Escreva um código para apoiá-lo. Crie módulos. Escreva a documentação da visualização do componente. Escreva os testes e a documentação de suporte. Publique os resultados da sprint como um documento HTML.
Repita para cada sprint. Revise e edite seu documento periodicamente.
Existem muitas e muitas ferramentas de programação alfabetizadas. Eles podem ajudá-lo a produzir uma fonte que cria a documentação e o código, a partir de um único texto.
Eu uso sphinx e PyLit, mas isso é porque eu sou um programador Python.
fonte
Se você quiser anotar suas idéias, poderá usar uma ferramenta de mapeamento mental, como o XMind ou o FreeMind . Ambas as ferramentas são gratuitas (para indivíduos do XMind) e são ótimas para fazer brainstorming e organizar suas idéias. A coisa sobre essas ferramentas é que você tem menos chances de esquecer alguma coisa.
Eu pessoalmente usei o Freemind antes de iniciar meu último projeto pessoal. Eu não tinha uma metodologia específica em si . Apenas expus minhas idéias durante sessões de uma hora uma vez a cada dois dias. Acho que espaçar as sessões de brainstorming me ajudou a ver melhor o que estava errado, o que não era essencial, mas poderia ser útil nas versões subseqüentes etc.
No meu primeiro commit de código, também salvei o arquivo de brainstorming no repositório de código-fonte (usei o bitbucket ) e o atualizei com as minhas idéias mais recentes.
fonte
Trate-o como um projeto de software real (porque é um). Há apenas algumas coisas que mudam porque o número de desenvolvedores é um. Você ainda precisa de controle de origem. Você ainda precisa de uma maneira de organizar os recursos para adicionar bugs para corrigir. Você ainda precisa de teste automatizado para verificar se não cria regressões no código. Você também deve ter uma maneira automática de compilar o código (se necessário), executar os testes e visualizar os relatórios.
Estou trabalhando em um projeto pessoal, como você descreveu. Estou usando Git, Redmine, JUnit e Jenkins para satisfazer todas as categorias que descrevi. Meu fluxo de trabalho é:
Manter tudo gerenciado e organizado é tão importante quanto quando existem muitos desenvolvedores. Com muitos desenvolvedores, você precisa organizar para que as informações sejam difundidas para todos. Quando é apenas você, você já tem todas as informações, mas é difícil lembrar de todas as partes do sistema. Um sistema gerenciado facilita as tarefas e você pode se concentrar na tarefa em questão.
fonte
Ferramentas:
Sistema de Controle de Versão (mesmo se você for o único desenvolvedor em sua garagem ou PC pessoal em casa): GIT, Mercurial, Tourtoise
Editor com destaque do código-fonte, mesmo se você tiver um IDE (Scintilla, Vim, Bloco de Notas)
Quadro-negro do mundo real, quadro branco, algumas coisas simplesmente não se encaixam no seu Aplicativo de Ferramentas de Designer.
Ferramenta de design: Rational Rose, Umbrello, (UML, ER,) Visio ou "Ferramentas de Designer de Pobres Desenvolvedor", como Power Point, Corel Draw, Open Office Draw
Texto / Código Fonte Ferramenta de comparação de texto, por exemplo, WinMerge
fonte
Depende de como você pode distinguir e lidar com tarefas diferentes, porque precisará dar uma olhada em cada etapa do processo de desenvolvimento.
Eu acho que as ferramentas são úteis apenas se você já sabe como usá-las e um dos piores erros é aprender como uma ferramenta funciona, em vez de aprender o que fazer com ela.
Primeiro, na minha opinião, você deve anotar o que espera que o software faça e, principalmente, o que não fará. Esse é um ponto crucial. O próximo passo é dividir o sistema final em subsistemas inferiores, facilitando o processo de construção. E por último, mas não menos importante, você precisará escolher suas ferramentas. Basicamente, um bom IDE, um VCS e um modelador de dados. Você pode adicionar muitas outras ferramentas para ajudar, mas tome cuidado para não começar no caminho errado.
Bem, o começo não parece tão atraente, mas o processo se tornará divertido ao longo do tempo.
fonte