• Share
  • ?
  • Profiles ▼
  • Communities ▼
  • Apps ▼

Blogs

  • My Blogs
  • Public Blogs
  • My Updates
  • Administration
  • Log in to participate

▼ Tags

 

▼ Similar Entries

Add machine learning...

Blog: IBM and Googl...
MJonker 100000GP4U
Updated
0 people like thisLikes 0
No CommentsComments 0

Doc Buddy updated

Blog: Ingolf's z/VS...
Ingolf24 120000DRN3
Updated
0 people like thisLikes 0
No CommentsComments 0

How do I use the vio...

Blog: Chris's AIX B...
cggibbo 270000TMUJ
Updated
2 people like thisLikes 2
No CommentsComments 0

Combine Power BI wit...

Blog: IBM and Googl...
MJonker 100000GP4U
Updated
1 people likes thisLikes 1
No CommentsComments 0

Watson 如何帮助宾夕法尼亚州立大学...

Blog: developerWork...
developerWorks中国 2700027P1B
Updated
0 people like thisLikes 0
No CommentsComments 0

▼ Archive

  • January 2016
  • August 2015
  • July 2015
  • February 2015
  • September 2014
  • July 2014
  • June 2014
  • May 2014
  • April 2014
  • March 2014
  • February 2014
  • January 2014
  • December 2013
  • November 2013
  • October 2013
  • September 2013
  • August 2013
  • July 2013
  • June 2013
  • May 2013
  • April 2013
  • March 2013
  • February 2013
  • January 2013
  • December 2012
  • November 2012
  • October 2012
  • September 2012
  • August 2012
  • July 2012
  • June 2012
  • May 2012
  • April 2012
  • March 2012
  • February 2012
  • January 2012
  • December 2011
  • October 2011
  • September 2011
  • August 2011
  • July 2011
  • June 2011
  • March 2011
  • December 2010
  • November 2010
  • October 2010
  • September 2010
  • August 2010
  • July 2010
  • June 2010
  • May 2010
  • April 2010
  • March 2010
  • February 2010
  • January 2010
  • December 2009
  • November 2009
  • October 2009
  • September 2009
  • August 2009
  • July 2009
  • June 2009
  • May 2009
  • April 2009

▼ Links

  • Ferramenta para times Agile
  • Dúvida sobre RTC, instalação, tutoriais, tours, etc... acesse este link.
  • Compre online licenças de Rational Team Concert.
  • Caso tenha alguma área de interesse ou desafio de negócio, por favor, não hesite em contatar a Especialista de Vendas de Rational.

▼ Blog Authors

O Mundo depende de Software

View All Entries
Clicking the button causes a full page refresh. The user could go to the "Entry list" region to view the new content.) Entry list

Rumo a Ferramentas mais Inteligentes

MoacyrMello 270001SSVQ | | Tags:  processamento_de_linguage... ferramentas ferramentas_de_software machine_learning rational_tools aprendizagem_de_maquina open_tools tools tool ferramenta nlp ferramentas_inteligentes free_software ‎ | 10,283 Views

O tema ferramentas de software é sempre empolgante, sejam elas visuais, completos suites  ou “free” software,  é comum buscar uma ferramenta melhor para atender a processos que já fazemos, e queremos deixar de fazer. Em geral é assim que é encarada a automação. Mas hoje eu quero conversar sobre ferramentas inteligentes. Quer dizer, quais características poderíamos querer que as ferramentas tivessem para as considerarmos mais inteligentes?

Quando implantamos um RTC (IBM Rational Team Concert) esperamos que ele organize todo o trabalho de equipe, ajudando em planejamento, designação de tarefas, controle de demandas e fontes, etc, etc! É uma enorme variedade de parâmetros e amarrações que definimos para estruturar o armazenamento e o transporte de informações. O modelo de uso da ferramenta vai nos dizer como proceder na sua operação. Isso tudo junto, e funcionando, nos dá uma enorme quantidade de informações. Mas será que aproveitamos tudo isso?

Uma primeira abordagem é tratar os dados e mostrar as informações através de modelos de datawarehouse e datamarts. É o que faz o IBM Rational Insight, criando dashboards e relatórios de dados. (Vejam a referência do Innovate 2013). Essas são informações estruturadas que foram previstas para serem extraídas (nem todas, é verdade). Mas certamente há informações que, em princípio, não foram inicialmente planejadas para captura e não estão em nenhum atributo previamente modelado. São informações escondidas na massa de dados coletada, informações que só existirão se descobrirmos um padrão. Para fazer uso desse tipo de informações podemos utilizar técnicas de aprendizagem de máquina e procesamento de linguagem natural (NLP), somente elas podem ultrapassar a previsão inicial da estrutura de dados do modelo de uso.

Aplicar técnicas de aprendizagem de máquina podem nos ajudar a descobrir padrões de solicitação de mudanças, por exemplo. As solicitações de mudança são armazenadas no RTC e sempre possuem textos associados, descrição, títulos, comentários, categorias, etc. Os atributos que categorizam as solicitações podem ser considerados a parte estruturada da informação, sendo que e a parte desestruturada da informação está escondida, a espera de ser extraída através de algum algoritmo que processe as palavras contidas nas demandas. 

Por exemplo, se devido a algum padrão emergente, pudermos agrupar as demandas por similaridade, poderíamos detectar a recorrência de certos temas que indicassem necessidade de melhoria no produto. Isto permitiria orientar estratégias de melhoria de qualidade. Na manutenção de software vale a regra dos 80/20, é sabido que 20% dos módulos de um sistema apresentam 80% dos problemas. Mas nem sempre temos dados diretos para esse tipo de investigação. Nessa situação uma clusterização que detecte a baixa qualidade é muito útil. Note que esses temas emergentes não foram previamente idealizados, mas podem ser descobertos por clusterização com um algoritmo de aprendizado de máquina.

Outro exemplo. A similaridade do grupo de demandas pode implicar em similaridade de soluções. Isto implica na possibilidade de reuso da solução, como indicou o colega Quintela e, portanto em economia, talvez com uma melhor alocação de recursos. (Veja a referência DeveloperWorks, onde se utiliza para isso um algoritmo bem conhecido, o K-Means).

Um importante sub-produto de um estudo desse tipo é a montagem de um histórico de medições de esforço para padrões de similaridade no conjunto solicitações-soluções. Uma base de solicitações com um histórico de custo (esforço ou duração), já é um item valioso para a governança do desenvolvimento. Através de alguma manipulação de aprendizagem de máquina pode-se melhorar nossa capacidade de estimativa de custo e trabalho. E isto nos leva à questão das estimativas no assunto requisitos, área de atuação do IBM Rational Requirement Composer, o RRC.

Mas antes de falar em estimativas vamos ver um problema ainda na fronteira entre o RRC e o RTC. Suponha que você tenha 500 tarefas associadas a uma dezena de demandas, que por sua vez estão associadas a uma centena de User Stories. Qual a esperança de otimizar o replanejamento disso quando aparecer novas demandas? Não precisa replanejar? Mas o replanejamento é a essencia do Scrum, sem replanejamento o processo não cumpre a promessa de entregar valor mais cedo ao negócio. Então precisamos replanejar... o que significa repriorizar, ler uma enorme quantidade de texto e comparar User Stories entre si.

 Quem já passou pela experiência de repriorizar um montão de requisitos, sabe que o mais árduo é ler e reler, não é aplicar uma escala de prioridades, essa é a parte relativamente fácil. O replanejamento seria facilitado se tivéssemos os requisitos clusterizados. O aparecimento de padrões emergentes permitiriam isolar Épicos de User Stories, verificar temas repetitivos e assuntos mal definidos. O trabalho do Product Owner poderia ser enormemente facilitado e com ele o de toda a equipe.

O caminho mais comum é aumentar a hierarquia estruturada, mas há um limite prático para a estruturação. Quanto mais “organizamos” nosso conteúdo em árvores (ou pirâmides) mais aparece a necessidade de informações cruzadas. No limite, um enorme emaranhado de rastreabilidade poderia aparecer como resposta à tentativa de continuar a estruturação de informações cruzadas. Por outro lado, se trabalharmos a informação desestruturada, sob demanda, construímos menos coisas e possivelmente atuaremos com mais rapidez na direção do objetivo. Não estamos sugerindo abandonar a estruturação, apenas fazê-la conviver com uma saudável desestruturação...

Para ilustrar, ainda que pobremente, o resultado de uma busca de contexto sobre um escopo desestruturado, considere um simples “concordanciador”. Este é uma função de processamento de linguagem natural, que simplesmente lista as referências a uma palavra ou tema, incluindo o seu contexto. Tradicionalmente apresenta o resultado de uma forma especial:

    ..... que alteraria o status do     cliente preferencial      para aprovado, enquanto......

   ...calculando o bonus para o     cliente preferencial.    Esse bonus deve ser.............

   ........... do sistema1 e incluir     cliente preferencial      no cadastro de clientes.........

   ........12N489 0 Task: Bonus    cliente preferencial:     implementar opção de..........

   ............. se foi alterado para     cliente preferencial.    Quando ultrapassar o valor...

 

Mesmo que o uso desse recurso seja manual, já percebemos as possibilidades com a clusterização contextualizada. Observe que não respeitamos as fronteiras entre as ferramentas. Há inúmeras possibilidades de aproveitar uma informação de contexto como essa. A mais simples seria instrumentalizar o Product Owner com uma verificação de contexto.

Agora falando de estimativas. Uma das necessidades do desenvolvimento é alguma forma de estimar o esforço envolvido numa unidade de escopo. Mesmo os processos que adotam apenas a perspectiva da priorização, também estimam em algum momento. Veja, por exemplo, a necessidade de identificar um Lead Time médio para planejamento (novamente a referência Innovate 2013).

Como o assunto é delicado (se fosse fácil em 50 anos de desenvolvimento de software a solução definitiva já teria aparecido), procuramos alternativas paliativas. A estimativa feita com a escala de de fibonacci, que se usa frequêntemente junto com o Scrum, é uma das formas mais simples. Essa forma de estimar produz uma avaliação relativa, uma User Story é pontuada relativamente às outras, do mesmo sistema.

Esse procedimento de estimativa poderia ser facilmente melhorado se houvesse um filtro automático para pré-clusterizar o conjunto, antes da aplicação do trabalho manual. Isto se tornaria viável se identificarmos elementos de similaridade nos textos das User Stories. Algoritmos de aprendizagem de máquina são capazes, portanto, de facilitar nossa vida também na estimativa e, talvez, até gerar avaliações aproximadas do trabalho, dependendo da profundidade de coleta dos dados estruturados e não estruturados.

Um assunto que está se desenvolvendo a passos largos é a “análise de sentimento”, uma aplicação de aprendizado de máquina para identificar e classificar conteúdos de sentimentos, emoções e opiniões, presentes nas unidades de texto. No que isto poderia ser útil para introduzir inteligência nas ferramentas?

Suponha que o levantamento de requisitos para o seu novo sistema corporativo esteja em curso. A necessidade de priorizar características e módulos é encarada racionalmente, mas é uma tarefa grande e desgastante. Fica pior quando há conflito entre stakeholders do projeto. Porque não analisar a questão da priorização com uma abordagem massiva de clusterização dos documentos e do volume de correspondência trocado?

Textos, que pela abordagem racional seriam descartados, através de uma abordagem de processamento de linguagem natural poderiam fornecer informações complementares ou subsidiárias. Expressões como “alta qualidade”, “fazer economia”, “racionalização de recursos”, significam alguma coisa, apesar de que, numa respecificação técnica de requisitos, teriam pouco valor definitório. Na análise de sentimentos, porém, essas expressões podem nos ajudar a pontuar prioridades, inicialmente criando um resumo, e, com um pouco mais de trabalho, uma lista de prioridades ordenadas.

O assunto fica ainda mais interessante se ampliarmos esse cenário para a web. Nesse caso, se o seu produto de software for destinado para o público externo, é ainda mais relevante garimpar opiniões de sentimento em blogs, tweeters, avaliadores especializados, etc. Boa parte das características de seu produto podem ser confirmadas, ou despriorizadas, com informações coletadas dessa forma. Por exemplo, num feedback sobre aspectos do produto podemos desencavar requisitos de facilidade de uso, movimento de tela, tipos de botões, quantidade de memória, etc. Mesmo que alguns aspectos estejam sendo vistos negativamente, isso não importa.

Enfim, ferramentas inteligentes devem abranger essa nova tendencia que são os algoritmos de Big Data e capacidade de aprendizagem de máquina, só assim poderemos fugir da tarefa interminável de modelagem das estruturas de categorização. Os dados estruturados não desaparecerão, mas há muito o que se descobrir na parte desestruturada da vida...

 

 Referências

Innovate 2013 – Improving Predictability and Efficiency with Kanban Metrics using Rational Insight. Luiz Augusto de Souza, Paulo Cezar Lacerda Neto e Marc J. Nehme.

DeveloperWorks - Benefits of applying clustering algorithms to finding change request patterns. Luis Carlos Quintela.

Moacyr  Mello é IBM Certified IT Specialist,  tem 28 anos de experiência em tecnologia de informação e atua nas áreas de processos e requisitos na IBM Rational desde 1999. É Engenheiro Eletricista pela Escola Politécnica da USP, com especialização em gestão de projetos pela FGV.

Modified on by MoacyrMello 270001SSVQ
  • Add a Comment Add a Comment
  • Edit
  • More Actions v
  • Quarantine this Entry
Notify Other People
notification

Send Email Notification

+

Quarantine this entry

deleteEntry
duplicateEntry

Mark as Duplicate

  • Previous Entry
  • Main
  • Next Entry
Feed for Blog Entries | Feed for Blog Comments | Feed for Comments for this Entry