sexta-feira, 4 de setembro de 2020

Seis Sigma (Six Sigma)

O Six Sigma foi inicialmente adotado para medir defeitos e melhorar a qualidade. Segundo Neefs (2016), Six Sigma “refere-se à aplicação de um método científico estruturado para melhoria de um aspecto em uma empresa, organização, processo ou pessoa”. O autor afirma que o Six Sigma tem dois métodos principais, ambos inspirados no ciclo PDCA de Deming:  DMADV – Define, Measure, Analyze, Design and Verify, usado para criar um novo produto, e DMAIC, usado para melhorar um processo de negócio existente. DMAIC refere-se a:

  • Define (Definir) – Identifica as metas do projeto e os processos.
  • Measure (Medir) –Mede os aspectos-chave do processo existente e coleta dados relevantes.
  • Analyze (Analisar) – Avalia os dados para identificar as relações de causa e efeito e seu impacto no ambiente de negócios.
  • Improve (Melhorar) – Otimiza o processo com base nos dados analisados, aplicando técnicas e até usando modelos matemáticos.
  • Control (Controlar) – Faz o acompanhamento visando garantir que desvios do objetivo sejam corrigidos antes que resultem em problemas ou defeitos.

 

quinta-feira, 3 de setembro de 2020

Ciclo PDCA

O ciclo PDCA (Plan – Planejar, Do – executar, Check – verificar, Act – agir), também chamado ciclo de Deming, é uma ferramenta muito útil.

Este conceito foi criado para abordar qualquer problema na administração ou produção. Parte do princípio de que não existe uma organização ou equipe perfeita, pois todos cometem erros e temos que aprender com nossos erros se quisermos evoluir no aprendizado e na qualidade de nossas atividades. Os erros podem afetar diretamente o desempenho do negócio.

Este ciclo incentiva o constante aprendizado com os erros, não a insistência neles. É um ciclo que entra em uma espiral de atividades que reduz a margem de erros comuns e frequentes.

Quando aplicamos este conceito ao desenvolvimento de software para aumentarmos a eficiência, na verdade estamos sendo ágeis, ou usando modelos ágeis:

  • P (Plan) – Planejamento: Quando estabelecemos metas e definimos métodos de acompanhamento, estamos planejando. Em modelagem ágil, nada é feito sem planejamento adequado. As necessidades do projeto devem ser claramente entendidas e elaboradas. Isto é planejar em modelagem ágil.
  • D (Do) – Executar: Depois de definir um plano de ação, deve-se executá-lo. Isto quer dizer não procrastinar ou ficar infinitamente adiando ou aguardando condições adequadas. Nos modelos ágeis, toda a execução é realizada dentro dos requisitos definidos.
  • C (Check) – Verificar: Constante monitoração ou acompanhamento é necessário para o sucesso de cada atividade.
  • A (Act) – Ação: Eficiência e eficácia são as metas de uma ação bem-sucedida. Em modelos ágeis, você sempre trabalha com planos de ação que focam um objetivo único, o produto.

 Ciclo  PDCA.

Por one photo / shutterstock.com.

De acordo com Deming (1990), na essência do PDCA encontramos 14 princípios:

14 princípios do PDCA, segundo Deming (1990).
1º princípio Estabeleça constância de propósitos para a melhoria do produto e do serviço, objetivando tornar-se competitivo e manter-se em atividade, bem como criar emprego.
2º princípio Adote a nova filosofia. Estamos numa nova era econômica. A administração ocidental deve acordar para o desafio, conscientizar-se de suas responsabilidades e assumir a liderança no processo de transformação.
3º princípio Deixe de depender da inspeção para atingir a qualidade. Elimine a necessidade de inspeção em massa, introduzindo a qualidade no produto desde seu primeiro estágio.
4º princípio Cesse a prática de aprovar orçamentos com base no preço. Ao invés disto, minimize o custo total. Desenvolva um único fornecedor para cada item, num relacionamento de longo prazo fundamentado na lealdade e na confiança.
5º princípio Melhore constantemente o sistema de produção e de prestação de serviços, de modo a melhorar a qualidade e a produtividade e, consequentemente, reduzir de forma sistemática os custos.
6º princípio Institua treinamento no local de trabalho.
7º princípio Desenvolva liderança. O objetivo da chefia deve ser o de ajudar as pessoas e as máquinas e dispositivos a executarem um trabalho melhor. A chefia administrativa está necessitando de uma revisão geral, tanto quanto a chefia dos trabalhadores de produção.
8º princípio Elimine o medo, de tal forma que todos trabalhem de modo eficaz para a empresa.
9º princípio Acabe com as barreiras entre os departamentos. As pessoas engajadas em pesquisas, projetos, vendas e produção devem trabalhar em equipe, de modo que possam prever problemas de produção e de utilização do produto ou serviço.
10º princípio Elimine lemas, exortações e metas para a mão-de-obra que exijam nível zero de falhas e estabeleçam novos níveis produtividade. Tais exortações apenas geram inimizades, visto que o grosso das causas da baixa qualidade e da baixa produtividade encontra-se no sistema, estando, portanto, fora do alcance dos trabalhadores.
11º princípio Acabe com os padrões de trabalho (quotas) na linha de produção. Substitua-os pela liderança, e acabe com o processo de administração por objetivos. Elimine o processo de administração por cifras, por objetivos numéricos. Substitua-os pela administração por processos através do exemplo de líderes.
12º princípio Remova as barreiras que privam o operário horista do direito de orgulhar-se de seu desempenho. A responsabilidade dos chefes deve ser mudada de números absolutos para a qualidade; remova as barreiras que privam as pessoas da administração e da engenharia de seu direito de orgulharem-se de seu desempenho. Isto significa a abolição da avaliação anual de desempenho ou de mérito, bem como da administração por objetivos.
13º princípio Desenvolva um forte programa de educação e autoaprimoramento.
14º princípio Engaje todos da empresa no processo de realizar a transformação,pois a transformação é da competência de todo mundo.

Além do ciclo PDCA, outra importante ferramenta utilizada no ambiente de desenvolvimento de software é o Seis Sigma, ou Six Sigma.

quarta-feira, 2 de setembro de 2020

Princípios que Sustentam Agilidade

O que é ser ágil?

Ser ágil é saber responder de modo rápido a uma mudança. Pode parecer algo lógico, no entanto, quando olhamos para os desenvolvimentos realizados há poucas décadas, encontramos uma preocupação muito maior com qualidade do que com agilidade. Não que não necessitemos de qualidade, continuamos necessitando dela, mas nesta era globalizada, temos a necessidade de mais agilidade, além da qualidade, claro!

O manifesto ágil é uma declaração de princípios que fundamentam o desenvolvimento ágil de software. De acordo com Beck et al. (2001), o manifesto ágil declara:

Estamos descobrindo maneiras melhores de desenvolver software fazendo-o nós mesmos e ajudando outros a fazê-lo. Através deste trabalho, passamos a valorizar:

  • Indivíduos e interação entre eles mais que processos e ferramentas
  • Software em funcionamento mais que documentação abrangente
  • Colaboração com o cliente mais que negociação de contratos
  • Responder a mudanças mais que seguir um plano

Ainda de acordo com Beck et al. (2001), os modelos ágeis propõem 12 princípios para o software ágil, quais sejam:

12 princípios para o software ágil de acordo com Beck et al. (2001).
1 A maior prioridade é satisfazer o cliente através da entrega contínua e adiantada de software com valor agregado.
2 As mudanças nos requisitos são bem-vindas, mesmo tardiamente no desenvolvimento. Processos ágeis tiram vantagem das mudanças visando vantagem competitiva para o cliente.
3 Deve-se entregar o software funcionando, de poucas semanas a poucos meses, no menor período de tempo.
4 Pessoas de negócio e desenvolvedores devem trabalhar diariamente em conjunto por todo o projeto.
5 Os projetos devem ser construídos em torno de indivíduos motivados. Eles devem ter o ambiente e o suporte necessário e deve-se confiar neles para fazer o trabalho.
6 O método mais eficiente e eficaz de transmitir informações para e entre uma equipe de desenvolvimento é através de conversa face a face.
7 O software funcionando é a medida primária de progresso.
8 Os processos ágeis promovem desenvolvimento sustentável. Os patrocinadores, desenvolvedores e usuários devem ser capazes de manter um ritmo constante indefinidamente.
9 A contínua atenção, a excelência técnica e o bom design aumenta a agilidade.
10 A simplicidade e a arte de minimizar a quantidade de trabalho não realizado são essenciais.
11 As melhores arquiteturas, requisitos e design emergem de equipes auto-organizáveis.
12 Em intervalos regulares, a equipe deve refletir sobre como se tornar mais eficaz e então refinar e ajustar seu comportamento de acordo.

Nas teorias da Administração são encontradas algumas técnicas de gerenciamento que buscam a melhoria contínua e que nos ajudam a entender a necessidade de modelagem ágil.

O que é agilidade?

O nome “Ágil” (ou “Agilidade”) foi escolhido para representar um movimento que surgiu em meados dos anos 1990 em resposta aos pesados métodos de gerenciamento de desenvolvimento de software que predominavam na época, que aqui chamamos de “métodos tradicionais”.

O método tradicional mais conhecido para o desenvolvimento de software é o modelo em cascata, ou waterfall. Esse modelo foi inicialmente descrito por Royce em 1970 e se caracteriza por uma sequência de fases de desenvolvimento, em que cada fase somente se inicia quando a anterior se encerra, e a saída de uma fase é a entrada da fase seguinte, conforme mostrado na figura.

terça-feira, 1 de setembro de 2020

Escopo em Modelos Ágeis

Não podemos falar de escopo em um modelo ágil sem nos referirmos ao conceito de escopo do guia PMBOK. Nele encontramos aspectos interessantes relacionados com as definições de um modelo ágil:

O gerenciamento do escopo do projeto inclui os processos necessários para assegurar que o projeto inclui todo o trabalho necessário, e apenas o necessário, para terminar o projeto com sucesso. Esse gerenciamento está relacionado principalmente com a definição e controle do que está e do que não está incluso no projeto (PMI, 2013, p. 105).

Esta definição pode ser complementada com a informação de que o sucesso do projeto está ligado à quantidade de requisitos captados e definidos.

Por astephan / shutterstock.com.

Os modelos ágeis possuem a mesma característica em seu escopo.

Segundo o Standish Group,a maioria dos projetos de softwares falham por falta de clareza sobre as funções, requisitos e especificações. Isto ocorre principalmente por causa da falta de definição dos responsáveis para acompanhar o projeto (INFOQ.com, 2015).

Por que isto deve ser uma grande preocupação?

Existe uma brincadeira de crianças que explica bem isso: o “telefone sem fio”. Nesta brincadeira uma grande roda é feita e o primeiro fala uma frase para o companheiro ao lado, sem que qualquer outro o ouça. Este faz o mesmo com o companheiro que está ao seu lado, que repete a mesma ação. Isto se repete até dar uma volta completa entre os participantes. Quando a frase chegar à pessoa que iniciou a brincadeira, na maioria das vezes observa-se que a frase está totalmente distorcida. Isto é exatamente o que ocorre quando as ideias e os conceitos não são contextualizados na especificação de um software.

Existe também a questão da falta de detalhamento ao escrever, ou até mesmo o uso da simplificação de palavras de uso cotidiano em símbolos ou notações específicas de uma determinada área de conhecimento. Deve-se evitar que isso ocorra e que barreiras impeçam uma adequada contextualização do problema a ser modelado.

A figura 6 é uma ilustração comumente aplicada em projetos, que ainda continua válida, e também se aplica ao escopo do modelo ágil.

Importância da definição de escopo.

Esta figura mostra a diferença entre o que se deseja, o que se entende e o que se pode criar, caso uma comunicação clara e inequívoca não tenha sido realizada.

segunda-feira, 31 de agosto de 2020

Requisitos na Modelagem Ágil

Considere a seguinte situação: a equipe de desenvolvimento recebe a seguinte solicitação: “Os usuários antigos do sistema devem ser removidos, afinal todos os que não trabalham mais na empresa não precisam estar em nossa base de dados.”

Após ouvir uma solicitação destas, no modelo tradicional, abre-se uma solicitação e possivelmente um programador executará uma rotina para apagar todos os usuários antigos, deixando na base apenas os ativos.

Já em modelagem ágil, esta solicitação será analisada pela equipe, que a classificará dentro da lista de requisitos a serem atendidos pela equipe de desenvolvedores, avaliando sua prioridade e motivo. A equipe estará atenta à solicitação e considerará com o solicitante outros fatores que ele possa desconhecer, avaliando as consequências que tais ações podem desencadear. A equipe considerará, entre outras coisas, que há no sistema um log de movimentação que registra, com base no cadastro de usuário, qualquer alteração ocorrida na base como um todo. Então, vão concluir que o cadastro não pode ser excluído e que basta apenas que se adicione um atributo de ativo ou inativo. A partir disso, podem-se omitir os inativos dos relatórios e das telas, mas nunca perder a informação de quem efetuou a movimentação.

Como é possível notar, é necessária uma percepção adequada de cada situação apresentada.

Há dois fatores básicos para se alterar os requisitos de um sistema:

  • entender a real necessidade da alteração;
  • manter a equipe ciente do que está acontecendo.

Segundo Cockburn (2001), a novidade nos modelos ágeis não está nos métodos ágeis, mas no envolvimento de pessoas que participam do sucesso do projeto e que estão focadas na capacidade de gestão do negócio.

Normalmente estes modelos ficam expostos à equipe e às pessoas interessadas. É muito comum a utilização de planilhas eletrônicas compartilhadas que contenham todos os modelos em análise ou aplicação.

Há apenas um perigo que se deve considerar quando os modelos ágeis são analisados, que é o excesso de informações desnecessárias.

Imagine um mapa que o guiará para chegar ao seu destino. Se nele você encontrar um número excessivo de detalhes, ele pode se tornar ineficaz. Como, por exemplo, mostrar a quantidade de bueiros, postes, casas ladrilhadas ou não, prédios com elevadores ou não, qualidade das calçadas do trajeto e a quantidade de faixas de pedestres existentes nas proximidades... informações totalmente desnecessárias, não é mesmo? Assim como este excesso de informações torna o mapa ineficaz, o excesso de itens a serem modelados pode tirar a agilidade do modelo. Neste momento, o uso de abstrações torna-se imprescindível.

domingo, 30 de agosto de 2020

Modelagem Ágil

A modelagem ágil pode ser definida como “um framework para o cotidiano”. Esta definição de modelagem ágil é uma realidade para as empresas que necessitam de desenvolvimento eficiente. A modelagem ágil estabelece um conjunto de práticas no desenvolvimento de software que está cada vez mais se tornando habitual. Mas, diferente do que muitos pensam, não existe um modelo predefinido ou um conjunto de regras a serem adotados. Na modelagem ágil, cada equipe, dentro de suas atribuições e características dos projetos da empresa, adota uma forma ágil mais adequada para atender suas demandas.

Modelagem ágil.

 

Por Karashaev / shutterstock.com

Isto quer dizer que, em modelagem ágil, apenas é mostrado o caminho e a equipe adota as práticas mais adequadas dentro do conceito ágil.

Se alguém lhe perguntasse qual a diferença entre lei e princípio, o que responderia?

Uma das respostas possíveis seria: “Leis são escritas em papéis enquanto princípios são escritos em nosso coração e passados de geração em geração por nossos familiares”. O mesmo se aplica à modelagem ágil: você não vai encontrar leis ou definições para o desenvolvimento em modelo ágil, mas encontrará as melhores práticas ou princípios que muitos adotam. Se estas práticas lhe serão úteis ou não, depende exclusivamente de você e de sua equipe de desenvolvimento. Portanto, não há leis preestabelecidas, apenas princípios adotados.

Na área de TI existem muitas regulamentações e recomendações. As regulamentações estão relacionadas às práticas que devem ser seguidas para se obter uma certificação, por exemplo. Já as recomendações são boas práticas que podemos ou não seguir, ou, ainda, seguir parcialmente. Isso não implicaria em uma certificação.

Uma das fases importantes da modelagem ágil são as histórias contadas, geralmente, pelo responsável por representar o cliente dentro da equipe de desenvolvimento. Estas histórias determinarão o caminho ideal a ser seguido na modelagem. Elas são apresentadas nos Story-Writing Workshops, oficinas das quais também costumam participar todos os envolvidos que contribuem para o entendimento do produto.

A modelagem ágil visa colocar em prática o conjunto de valores que o negócio já possui. Vamos imaginar um brainstorm em que todas as ideias são apresentadas e depois são colocadas em uma sequência desafiadora de ações e procedimentos. A modelagem ágil pode começar a ser aplicada desta forma.

Por Rawpixel.com / shutterstock.com.

Talvez neste ponto você esteja indagando: “até agora falamos de desenvolvimento, e nem sequer uma vez falamos de linguagem de programação, como isso é possível? E quando vamos falar deste assunto?”.

Vamos voltar a um conceito antigo relacionado à lógica de programação. Os mais experientes se lembram que, antes de começar a se desenvolver um programa, fazia-se um diagrama de fluxo de dados estruturado do sistema, desenhava-se o fluxograma e somente então é que se iniciava a programação em si. Estes profissionais mais experientes entendiam que, se você soubesse passar por estas fases antes da programação, a linguagem de programação era um detalhe. Poderia ser qualquer linguagem, pois a lógica de funcionamento do programa é a mesma. Na modelagem ágil ocorre o mesmo, a linguagem é um detalhe que pode ser pensado e adotado depois do entendimento dos requisitos que o software precisa atender.

Não se tem a intenção, com isso, de menosprezar linguagens eficientes de programação, mas apenas propor uma quebra de paradigma. Esta abordagem tenta voltar aos conceitos antigos, pelos quais o programador programava e o analista fazia a análise de dados. Mas não menospreza um ou valoriza muito o outro. A princípio, todos os profissionais têm condições de atuar com a modelagem ágil, mas devem se desvencilhar de conceitos equivocados que, eventualmente, o ambiente gráfico tenha imposto a eles.

sábado, 29 de agosto de 2020

Fundamentos das Metodologias Ágeis

 O termo “ágil” faz referência à capacidade de adaptação às mudanças de contexto e às modificações de especificações que acontecem durante o processo de desenvolvimento. Quando entendemos a importância da aplicação de um modelo ágil, passamos a ter um comportamento mais profissional, buscando aplicar técnicas de desenvolvimento visando garantir o sucesso do projeto. Apresentaremos os conceitos que fundamentam as metodologias ágeis de desenvolvimento.

Definição de métodos ágeis

Visando melhor entendimento deste tópico, vamos comparar o modelo tradicional de desenvolvimento a um arqueiro que necessita atingir um alvo. Ele tem a relativa tranquilidade de preparar seu arco e flecha, tempo para identificar o alvo e tempo para buscar a concentração necessária para um tiro certeiro.

Por Helder Almeida / shutterstock.com.

No desenvolvimento com modelos ágeis a complexidade, comparada ao arqueiro, aumenta. Identificamos os seguintes componentes: o alvo, que agora é uma maçã posicionada sobre a cabeça de alguém, e um cronômetro, fazendo uma contagem regressiva acusando o tempo que falta para cumprir a tarefa. O sucesso do negócio pode depender exclusivamente do fato de que os desenvolvedores precisam usar métodos ágeis e eficientes, pois os clientes e o mercado precisam ver seu produto/serviço antes que veja os da concorrência. Querer um prazo mais dilatado ou uma segunda oportunidade para o acerto nem sempre é uma opção aceitável. Nesta situação, o uso de modelos ágeis pode ser a única opção aceitável na busca do sucesso.

Segundo o Standish Group, os principais fatores para um número ainda tão alto de projetos que não alcançam seu objetivo estão relacionados a projetos de software que não têm informações claras sobre o papel das pessoas (equipe envolvida no projeto), suas responsabilidades, requisitos e, também, por inabilidade para acompanhar o que ocorre em cada um dos diferentes passos do ciclo de vida da aplicação. (INFOQ.com, 2015)

Para vencer esta inabilidade, o modelo ágil mostra a possibilidade de superação de trauma com a sugestão de quebra de paradigmas. Assim, podemos dizer que os modelos ágeis têm como objetivo vencer as dificuldades enfrentadas no desenvolvimento de aplicativos eficientes dentro de um prazo aceitável. É um conceito associado a formas de desenvolver aplicativos que atendam aos requisitos do negócio. Significa quebrar paradigmas e contribuir para um procedimento eficiente.

O aperfeiçoamento contínuo de técnicas, processos, estratégias e metodologias para o desenvolvimento de projetos em ambientes de extrema incerteza levou o gerenciamento de projetos a um novo patamar, em que é possível encontrar uma solução que eleve o valor de cada iniciativa para a empresa e reduza o tempo de espera pela solução.

Essas soluções são chamadas de Métodos Ágeis, conjuntos de melhores práticas que auxiliam no desenvolvimento de projetos de todos os portes e níveis de complexidade, contribuindo para que se obtenha maior sucesso ao final de cada empreitada.

Conhecer esses Métodos Ágeis e o que eles podem fazer pela sua empresa é fundamental para manter a competitividade e alcançar melhores oportunidades de negócios (MASSIMUS.com, 2016).