Continuous Integration no desenvolvimento de aplicações iOS - Silva, Ricardo Jorge Lopes da (2017)
As práticas de desenvolvimento de software têm como propósito orientar os programadores no desenvolvimento de aplicações com qualidade e sem grandes dificuldades. Porém, dificilmente tudo corre de acordo com o planeado porque as práticas podem não estar adaptadas ao processo de desenvolvimento do projecto. Nos dias que correm, em particular na área móvel, é possível desenvolver uma aplicação sem muito esforço, bastando, para o efeito, ter um repositório de controlo de versões onde cada programador tem uma cópia do mesmo. Assim, durante este processo de desenvolvimento, o programador vai implementando tudo o que for necessário para cumprir a sua tarefa, até que terá que integrar o seu código com o repositório. Posto isto, poderá suceder uma de duas situações: o repositório encontra-se sem alterações desde a última cópia e a integração sucede sem problemas, ou, ao invés, o repositório encontra-se com alterações podendo, deste modo, dar origem a conflitos difíceis de corrigir. Este tipo de prática, denominada integração tradicional é, normalmente, realizada perto do fim do ciclo de desenvolvimento, propiciando riscos desnecessários aquando da distribuição da aplicação ao cliente, o que poderá dar origem a incumprimento de prazos e de requisitos. O Continuous Integration contribui para mudar as regras do jogo, uma vez que as suas práticas contribuem para o aumento da qualidade das aplicações sem qualquer esforço extra por parte dos elementos da equipa, mudando a forma de pensamento de todo o processo de desenvolvimento e, mantendo o foco na redução do risco através de várias integrações e práticas diárias. Estas têm por base a automação contínua, onde se procede à compilação, testes e inspecções de código sem necessidade de qualquer acção humana, o que permite obter rapidamente feedback de cada integração. Tendo como base estes motivos, foi proposto à Present Technologies, a implementação deste conceito através de um sistema Continuous Integration. Para o efeito, o trabalho desenvolvido seguiu, numa primeira fase, dois caminhos em paralelo: um primeiro caso prático, onde foi desenvolvida uma aplicação móvel na plataforma iOS sem integração com o sistema e realizada uma investigação acerca do conceito. Como resultado, foi possível estabelecer sinergias: foram identificados problemas para os quais a Continuous Integration poderia contribuir e aplicadas algumas práticas ao caso. Na segunda fase, e após a implementação do sistema na empresa, foi desenvolvido um segundo caso prático com outra aplicação, também iOS, de forma a demonstrar que os problemas que surgiram no primeiro caso foram resolvidos ou mitigados pela utilização desta prática e do sistema. Como resultado foi possível disponibilizar um sistema em produção, acessível a qualquer integração de um novo projecto independentemente da tecnologia, plataforma e linguagem de programação