# Padronização de entrega de aplicações O objetivo deste documento é definir padrões e boas práticas para a entrega de código fonte de aplicações Web, Mobile e Desktop feitas por desenvolvedores terceirizados ou pela equipe interna de software da Inova. ## Justificativa As aplicações de software integram-se com os equipamentos eletrônicos fabricados pela Inova e tem um alto grau de personalização, por este motivo o código fonte das aplicações é mantido pela Inova para uso em futuras atualizações no software. Para que seja feita a portabilidade do desenvolvimento para novos desenvolvedores é necessário que a tecnologia e os algoritmos utilizados na construção do software sejam documentados e estejam sob o domínio da Inova. ## Definições ### Aplicação Web Uma aplicação web é uma aplicação distribuída executada em um navegador web sem que o usuário necessite instalar o software em sua maquina, este tipo de aplicação possui duas partes principais denominadas Front-End e Back-End * **Front-End** Constitui a parte da aplicação cuja o código é executado no navegador web - Ex: Google Chrome * **Back-End** Parte da aplicação que interage com outros serviços e APIs cuja o código é executado em um servidor remoto --- ### Aplicação Mobile Uma aplicação mobile é um software que é executado em um dispositivo móvel (celulares/tablets) através da plataforma Android ou IOS #### Software Mobile Hibrido Software cuja o código fonte é compartilhado entre as plataformas Android e IOS --- ### Aplicação Desktop Uma aplicação desktop é executada em um computador de mesa (desktop/notebook) através da plataforma Microsoft Windows, Linux ou MacOS #### Software Desktop Hibrido Software cuja o código fonte é compartilhado em mais de uma plataforma Ex: MacOS/Windows --- ### API Uma API é um conjunto de serviços e funcionalidades que atendem a um determinado requisito da aplicação #### API Remota A API remota é executada em um abiente diferente do ambiente da aplicação, normalmente hospedada em um domínio #### API Local Uma API local define um conjunto de classes e métodos utilizados por módulos da aplicação que rodam em contextos separados Ex: [NodeJS API](https://nodejs.org/docs/latest/api/)