Mostrando postagens com marcador LatinoWare. Mostrar todas as postagens
Mostrando postagens com marcador LatinoWare. Mostrar todas as postagens

Desarollando Software Libre com Scrum

Palestra na LatinoWare do Diego Martin Lima, Desarollando Software Libre com Scrum. Scrum é um método ágil para desenvolvimento iterativo e incremental de software, bastante conhecido mas ainda pouco utilizado, requer uma equipe de desenvolvedores experiente.

Na realidade, este (equipe experiente) é o principal ponto que todas as metodologias de desenvolvimento esquecem, se você possui uma boa equipe, qualquer metodologia servirá e o software será bom, agora se a equipe for ruim, não adianta culpar a metodologia, apesar que algumas metodologias são melhores do que outras dependendo do tamanho da equipe e do tamanho e duração do projeto. Este foi o tema de uma outra grande palestra da LatinoWare, do Fábio Akita, a Semente não Entendida de Todas as Metodologias Ágeis, que parte do pressuposto que todas as metodologias envolvem pessoas, então, este é um fator primordial. Abaixo os slides dessa outra palestra, aproveite para pensar/refletir sobre alguns pontos de engenharia de software.


Tem um vídeo no Youtube também, não cheguei a olhar, mas se for a mesma palestra vale a pena, vou olhar mais tarde... http://www.youtube.com/watch?v=wvKHU7pA02c

Bom, voltando as anotações, minha opinião é que uma das melhores coisas do SCRUM é a reunião diária, máximo 15 minutos, em pé, onde cada um fala o que fez no dia anterior, ou se não fez fala qual foi o impedimento e diz o que vai fazer no dia atual. Nessa reunião todos vão se sentir parte do grupo, todos vão saber o que cada um está fazendo e caso algum não esteja trabalhando como deve, logo a equipe vai perceber através das reuniões e pode tomar alguma atitude.

Alguns problemas comuns:

 - Começar do zero
 - Não ter informações prévias, capacidade da equipe, dificulta previsões de tempo
 - Não realizar Scrum Diário
 - Não manter corretamente gráfico burndown
 - Más adaptações da metodologia


Processo SCRUM (Wikipedia, 2011)


Durante a palestra anotei um modelo para SCRUM rapidamente, refiz no Astah UML na forma de um diagrama de atividades pra facilitar, gostaria de postar os slides originais também mas está difícil de encontrar.

Modelo que rabisquei durante a palestra...

Processamento Linguagem Natural com PHP

Palestra do Ivo Nascimento na Latinoware sobre processamento de linguagem natural no PHP, isto não existe, e seu projeto de criar algo semelhante com nltk.org (Python?), no github.com/iannsp/texta, o Text Analizer.

TF-IDF: Term Frequency - Inverse Document Frequency: calcula a importância de um termo em um texto.
 - Tokenizacão: no PHP seria um explode, guarda um array
 - Normalizacao: correcão portugues, maiúsculas e minúsculas, ...
 - Stop-words: e, de, mas, o, a .... tirar palavras que não interessam
 - Aprendizado: % das palavras positivas vs negativas

#Hashtags: semântica

N-GRAM: Conjuntos de termos, tokens. Bigram, Trigram, ...
  - Análise: Filtro Bayesiano, Coef. Dice, Qui-quadrado, Coeficiente de Jaccard, coef. Relacão Pearson, Distância Euclidiana...

Last.fm e Grooveshark usam algumas dessas fórmulas matemáticas como Pearson e Dist. Euclidiana para identificar as pessoas semelhantes e sugerir as músicas que elas gostaram uma para outra.

Problemas! Homógrafos, como: Quem casa quer casa... A mesma palavra com sentidos diferentes.

Ele sugeriu o PIP, Python em PHP caso queira usar PHP com o NLTK, também ficou de levantar os slides no slideshare.net/ivonascimento, vamos aguardar.

TDD - Desenvolvimento dirigido por testes

De volta da Latinoware, agora publicar anotações, começando pela palestra assertTrue($tdd); do Alexandre Gaigalas.

Segundo a Wikipedia: Test Driven Development (TDD) ou em português Desenvolvimento dirigido por testes é uma técnica de desenvolvimento de software que baseia em um ciclo curto de repetições: Primeiramente o desenvolvedor escreve um caso de teste automatizado que define uma melhoria desejada ou uma nova funcionalidade. Então, é produzido código que possa ser validado pelo teste para posteriormente o código ser refatorado para um código sob padrões aceitáveis. Kent Beck, considerado o criador ou o 'descobridor' da técnica, declarou em 2003 que TDD encoraja designs de código simples e inspira confiança[1]. Desenvolvimento dirigido por testes é relacionado a conceitos de programação de Extreme Programming, iniciado em 1999,[2] mas recentemente tem-se criado maior interesse pela mesma em função de seus próprios ideais.[3] Através de TDD, programadores podem aplicar o conceito de melhorar e depurar código legado desenvolvido a partir de técnicas antigas.[4]

Após esta breve definição, vamos as minhas anotações. Como você faz pra testar JS ou PHP? Toda vez abre o navegador, preenche trocentos campos validando CPF, data etc e clica em enviar pra ver está funcionando? Há muita perda de tempo nisso, é muito escroto, programador gosta de programar e não gosta de perder tempo fazendo testes, então, por que não criar um software para testar o software?

Método antigo de teste: var_dump($user);
Agora: // var_dump($user);  :D

Os métodos de teste evoluíram muito nos últimos anos, Breakpoints (usava muito isso no Delphi), Watchers, ... chegando ao TDD.

PHPUnit criado por Sebastian Bergman, uma boa ferramenta.

TDD (Test) + BDD (Behavior) + CI (Integração Contínua) = :D

O TDD foi feito para os desenvolvedores, para facilitar a vida deles e melhorar muito a qualidade do software.

Cuidar com Dependency Injection, não conecta ao banco real para testar.

Abaixo os slides da palestra, veja os gráficos dos tempos sem TDD e com TDD, formas de convencer seu chefe a mudar, etc. Confira também o texto do próprio autor em http://php5.net.br/tdd