por que o desenvolvimento em paralelo ágil é · a transformação digital traz novos desafios...

8
SéRIE DE EBOOKS SOBRE DESENVOLVIMENTO EM PARALELO áGIL: Capítulo 1 Por que o desenvolvimento em paralelo ágil é fundamental à sua estratégia de transformação digital

Upload: haxuyen

Post on 11-Nov-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Série de ebookS Sobre deSenvolvimento em paralelo ágil: Capítulo 1

Por que o desenvolvimento em paralelo ágil é fundamental à sua estratégia de transformação digital

Diante das pressões competitivas para inovar e renovar aplicativos com rapidez, organizações como a sua estão adotando estratégias de transformação digital nas quais componentes digitais são incorporados a produtos e serviços existentes (por exemplo, aplicativos móveis, suporte universal para dispositivos, IoT [Internet of Things - internet das coisas], etc.).

Enquanto as empresas tentam desenvolver um ecossistema de valor em torno desses produtos "conectados", a transformação digital produz essencialmente uma nova geração de software e, com ela, as APIs (Application Programming Interfaces - Interfaces de Programação de Aplicativos) necessárias ao seu sucesso neste ambiente de colaboração.

Da mesma forma, o momento é de grandes expectativas por parte dos clientes em obter serviços originais e de alta qualidade; com isso, as organizações de TI se veem obrigadas a repensar a forma como desenvolvem, testam e implantam software de modo a maximizar a rapidez, a eficácia e a confiabilidade e, por fim, atender à demanda do mercado.

A necessidade de rapidez, eficácia e qualidade na economia dos aplicativos

2

até 2016, mais da metade da colaboração b2b ocorrerá por

meio de APIs da web.1

1 Gartner Hype Cycle for Application Development, 2014, Thomas E. Murphy, et al, 29 de julho de 2014.

na atual economia dos aplicativos, os softwares estão remodelando as regras dos negócios.

A transformação digital traz novos desafios para o ciclo de vida de distribuição de software

3

enquanto as organizações ampliam suas metas de distribuição de aplicativos como forma de apoio às iniciativas de transformação digital, os grupos de ti devem enfrentar novos desafios envolvendo o ciclo de vida de distribuição de software (SdlC), e isso inclui:

aumento da ComplexidadeEmbora os modernos aplicativos mais se assemelhem a um amontoado de botões e campos, sua arquitetura compreende um complicado emaranhado de serviços e integrações compostos e todos devem ser levados em conta durante as fases de desenvolvimento e teste. Além disso, grande parte do desenvolvimento envolve a conexão de novos front-ends na interface do usuário (UI) com sistemas legados de registro no back-end, o que resulta em novos desafios de codificação e integração.

reStriçõeS de reCurSoSO trabalho das equipes de TI hoje é desenvolver e implantar cada vez mais rapidamente um número maior de aplicativos, porém são incontáveis os recursos a serem codificados e testados. Quando surgem restrições, as equipes procuram tratar de outros assuntos, em vez de simplesmente esperar acomodadas pela disponibilização dos recursos necessários, pois isso gera ociosidade e atrasos nos prazos de entrega.

integração neCeSSáriaVisto que os modernos aplicativos devem se integrar a serviços complementares e de terceiros, bem como a sistemas internos de registro, é necessário desenvolver e testar APIs com regularidade, porém as equipes de desenvolvimento e teste nem sempre terão acesso a esses recursos fundamentais quando deles precisarem. À medida que tendências como IoT continuam ganhando espaço, as equipes de TI são obrigadas a integrar todo um novo conjunto de objetivos a atributos e exigências exclusivos.

Falta de automaçãoCom a maior complexidade e especificidade dos aplicativos, as organizações geralmente adotam diferentes ferramentas de testes e estas requerem codificação ou tradução manual em diversos segmentos e ambientes. Da mesma forma, se utilizarem métodos Agile entre equipes distribuídas no intuito de agilizar as atividades de desenvolvimento/teste, não será possível testar integralmente os subcomponentes desses aplicativos até a execução dos testes de integração, quando todas as peças se juntam pela primeira vez.

de modo geral, esses desafios impedem que as equipes de ti executem práticas paralelas de desenvolvimento e teste com sucesso.

Muitas organizações de TI tentam contornar as restrições nas práticas de desenvolvimento e testes codificando stubs e simulações manualmente. Por exemplo, quando um desenvolvedor precisa acessar determinado sistema ou API não disponível, ele pode criar um bit de código capaz de simular o comportamento da restrição e dar a resposta necessária para seguir adiante. O problema das simulações e stubs é que, embora possam lidar com restrições específicas em certas emergências, podem também gerar problemas maiores com potencial de colocar em risco a transformação digital.

Por exemplo, os desenvolvedores deveriam maximizar o tempo codificando o aplicativo propriamente dito em vez de desperdiçá-lo com simulações e stubs que implicam suas próprias limitações de manutenção, consistência e dados. Embora as equipes criem esses ativos para fins de testes específicos, por fim são obrigadas a descartá-los, desperdiçando tempo e esforços valiosos.

Há também um problema de dimensionamento. Mais intricados e complexos no back-end, os modernos aplicativos compostos requerem um número cada vez maior de simulações e stubs personalizados para simular peças integrantes. Acima de tudo, cada nova simulação ou stub representa uma chance de introduzir o erro humano na equação, algo capaz de retardar a movimentação do aplicativo ao longo do ciclo de vida de distribuição de software, bem como prejudicar a qualidade geral.

Portanto, em vez de superar desafios, as simulações e stubs criam na verdade trabalho extra (e retrabalho) para os desenvolvedores e os testadores. Além disso, roubam tempo de atividades mais produtivas relacionadas a codificação e possibilitam a introdução de falhas e erros adicionais no aplicativo.

A falácia das soluções alternativas de simulação e stub

4

dos executivos de linha de negócios sentem-se pressionados a lançar novos aplicativos mais rapidamente, citando "demanda dos clientes" e "ações competitivas" como seus dois principais direcionadores.2

94%2 CA e Vanson Bourne, Pesquisa sobre a economia dos aplicativos, 2014.

5

outra forma pela qual algumas organizações estão lidando com os desafios da transformação digital é o uso de metodologias de desenvolvimento agile.

A meta original do Agile era dividir as lentas e monolíticas práticas de desenvolvimento do passado em seções menores; dessa forma, desenvolvedores, testadores e desenvolvedores de negócios poderiam trabalhar de forma simultânea e introduzir mais rapidamente novos recursos no mercado. Contudo, mesmo nas melhores das intenções, muitos grupos de TI não conseguem colocar os aplicativos em produção com a rapidez e qualidade que gostariam e isso pode ser explicado por alguns motivos comuns.

Em certos casos, os grupos seguem as práticas Agile no desenvolvimento, mas deixam todos os testes para o fim, isto é, transferem os gargalos para uma fase avançada no ciclo de vida de distribuição de software; com isso, erros e falhas surgem em um estágio em que sua identificação se torna mais difícil, e a correção, mais dispendiosa.

Em outros casos, as equipes de TI são restringidas pela limitada quantidade de recursos de desenvolvimento e testes a seu dispor. Isso as obriga a equilibrar seus esforços, em vez de trabalhar em paralelo, o que reduz a rapidez e a eficácia esperada dos seus métodos Agile em termos de aprimoramento e prejudica a colocação de aplicativos em produção.

As diferenças entre "fazer com agilidade" e "ser ágil"

Pergunte-se: "Estamos de fato oferecendo releases de alta qualidade com maior rapidez para o mercado e a custos mais baixos para as empresas?"

Se a resposta for "Não", então você está deixando de explorar o real valor do desenvolvimento Agile.

6

Os benefícios do desenvolvimento em paralelo ágil

reduzir a Complexidade simulando uma variedade de ambientes de teste

e desenvolvimento, serviços e comportamentos: quando e onde forem necessários

eliminar reStriçõeS que impedem desenvolvimentos e testes paralelos; assim,

você poderá acelerar a colocação de produtos no mercado e aumentar

a qualidade geral dos seus aplicativos

SimpliFiCar a integração e a colaboração por meio de terceiros acelerando a criação de protótipos de

APIs e seu gerenciamento

automatizar teSteS no início do ciclo de vida de distribuição

de software, reduzindo a necessidade de testes manuais demorados

e aumentando a qualidade geral dos aplicativos

Com o desenvolvimento em paralelo ágil, é possível:

7

ETAPA 1: remover as restrições

ETAPA 2: antecipar os testes

ETAPA 3: desenvolver em paralelo

Desenvolvimento em paralelo ágil em três etapas

Remova as restrições de tempo, dados, disponibilidade e custos simulando sistemas dependentes e comportamentos do cliente na forma de serviços virtuais: quando e onde forem necessários.

Explore os serviços virtuais e os ativos de teste de modo a automatizar os testes no início do ciclo de vida de distribuição de software (quando é possível detectar e corrigir as falhas mais rapidamente gastando menos) e aprimore a qualidade e a estabilidade dos seus aplicativos de produção.

Ao simular os sistemas, serviços e ativos de teste necessários (de acordo com a necessidade) e automatizar os testes, é possível aumentar drasticamente a produtividade do desenvolvedor e capacitar as equipes a trabalhar em paralelo.

Fonte: Lyon, Dan, "Systems Engineering: Required for Cost-Effective Development of Secure Products", The SANS Institute, 2012.

Custos da correção de falhasuS$ 14.272

uS$ 7.136

uS$ 4.05792% de redução de custos resolvida

produção

teste de sis

tema

teste de aceita

ção

teste de in

tegridade

teste de unidade

Codificação

uS$ 5.596

uS$ 2.517uS$ 977

uS$ 16 mil

uS$ 14 mil

uS$ 12 mil

uS$ 10 mil

uS$ 8 mil

uS$ 6 mil

uS$ 4 mil

uS$ 2 mil

uS$

tempoSemana Semana 3 Semana 51Semana 2 Semana 4 Semana 6 Semana 7

deSenv. 1

deSenv. 1

deSenv. 1

deSenv. 1

deSenv. 1

deSenv. 2

deSenv. 2

deSenv. 2

deSenv. 2

deSenv. 2

deSenv. 3

deSenv. 3

deSenv. 3

deSenv. 3

deSenv. 3

aplic. 1

aplic. 2

aplic. 3

aplic. 1

aplic. 2

aplic. 3paralelo

Sequencial

deSenv. 1 deSenv. 2 deSenv. 3

© Copyright CA 2015. Todos os direitos reservados. Este documento é apenas para fins informativos e não representa nenhum tipo de garantia. Todas as marcas comerciais, nomes de marcas, marcas de serviço e logotipos aqui mencionados pertencem às suas respectivas empresas.

CS200-127705-1

A Ca technologies (NASDAQ: CA) cria software que acelera a transformação das empresas e permite que elas aproveitem as oportunidades da economia dos aplicativos. O software está no cerne de todas as empresas, em todos os setores. Do planejamento ao desenvolvimento e do gerenciamento à segurança, a CA está trabalhando com empresas de todo o mundo para mudar a maneira como vivemos, fazemos negócios e nos comunicamos: usando dispositivos móveis, as nuvens privada e pública e os ambientes distribuídos e de mainframe. Obtenha mais informações em ca.com/br.

no capítulo 2 da nossa série de ebooks, analisaremos detalhadamente os diversos tipos de restrições ao longo do ciclo de vida de distribuição de software, seu impacto sobre os negócios e o que as equipes de desenvolvimento e teste podem fazer para eliminá-los.

Para obter mais informações, visite ca.com/br/agiledevelopment.

O que vem a seguir?