As características e exigências da sociedade moderna e digital transformaram o cenário de desenvolvimento de software e apresentaram novos desafios aos desenvolvedores e engenheiros de software, tais como a necessidade de entregas mais rápidas, mudanças frequentes nos requisitos, menor tolerância a falhas e a necessidade de adaptação aos modelos de negócios contemporâneos. A adoção de práticas ágeis tem permitido às organizações encurtar os ciclos de desenvolvimento e aumentar a colaboração com os clientes. Entretanto, isso não tem sido suficiente.
Algumas iniciativas surgiram com o objetivo de acelerar o processo de desenvolvimento de software e melhorar a conexão entre suas atividades. Por exemplo, a Integração Contínua procura eliminar descontinuidades entre o desenvolvimento e a entrega. Em uma abordagem semelhante, o DevOps reconhece que a necessidade de integração entre o desenvolvimento de software e a operação de software deve ser contínua. Estendendo a necessidade de integração a outros níveis, BizDev defende que a continuidade deve existir não somente no contexto do processo de software, mas também entre o desenvolvimento de software e os processos estratégicos da organização.
Ações contínuas de planejamento, construção, operação, implantação e avaliação são necessárias para produzir produtos que atendam às necessidades e comportamentos dos clientes, para tomar decisões bem informadas e identificar oportunidades de negócios. Assim, as organizações devem evoluir do desenvolvimento tradicional para um desenvolvimento contínuo e orientado a dados, em uma abordagem de engenharia de software contínua.
Engenharia de Software Contínua (ESC) consiste em um conjunto de práticas e ferramentas que apoiam uma visão holística do desenvolvimento de software com o objetivo de torná-lo mais rápido, iterativo, integrado, contínuo e alinhado ao negócio. Ela entende que o processo de desenvolvimento de software não é uma sequência de atividades discretas, realizadas por equipes distintas e desconectadas. Visa estabelecer um fluxo contínuo entre as atividades relacionadas ao software, levando em consideração todo o ciclo de vida do software. É um tópico recente que procura transformar práticas de desenvolvimento discreto em alternativas mais iterativas, flexíveis e contínuas, mantendo o objetivo de construir e entregar produtos de qualidade de acordo com o tempo e os custos estabelecidos.
No artigo abaixo, Monalessa Perini Barcellos propõe um framework para ESC e discute algumas questões de pesquisa relacionadas a esse tópico.
Um caso de transformação ágil no contexto de ESC é apresentado no artigo:
Uma descrição mais detalhada do estudo acima é apresentada em uma versão estendida do artigo, disponível em:
Para auxiliar as organizações a terem uma visão geral das práticas de ESC que adotam e identificar sua posição no caminho evolutivo para implementação de CSE, foi desenvolvido Zeppelin, um instrumento de avaliação que permite às organizações conhecerem o seu grau de adoção de práticas de ESC e identificar áreas que precisam de melhoria. Zeppelin é apresentado no artigo:
Zeppelin consiste de um questionário, organizado em uma planilha, que é utilizado para identificar as práticas de ESC adotadas pela organização e os respectivos níveis de adoção. A planilha com o questionário encontra-se disponível aqui. Zeppelin também inclui um relatório analítico, produzido de acordo com as respostas fornecidas ao questionário. Um planilha contendo alguns exemplos de informações e gráficos que constam no relatório está disponível aqui.
Zeppelin foi utilizado em um survey com 28 organizações de software para investigar a adoção de práticas de ESC. O estudo e seus resultados foram reportados no artigo abaixo.