Desenvolvimento de software: uma revisão histórica até os dias atuais
O desenvolvimento de software (DS) possui características definidoras desde sua origem até os dias atuais. Desde o início, o mundo do desenvolvimento de software foi dividido em duas categorias: desenvolvimento de software livre e de código aberto e desenvolvimento de software proprietário e de código fechado.
E tudo isso, por sua vez, desencadeou uma corrida em cada mundo de Sistemas Distribuídos (SD) para produzir tipos semelhantes de software, levando eventualmente a diversos tipos de aplicações. Assim, os SD deram origem ao primeiro e ainda atual Software de Sistema (SS), depois ao Software de Programação (SP) e, finalmente, ao Software de Aplicação (AS). E essas últimas aplicações, por sua vez, variam desde as tradicionais Aplicações Nativas — isto é, instaláveis e específicas para cada Sistema Operacional (SO) — até as inovadoras Aplicações Distribuídas que rodam pela Internet em uma Blockchain.

Software
Quase ao mesmo tempo em que surgiram os SS, que eram basicamente o próprio SO e englobavam drivers de dispositivo, utilitários de sistema e todas as ferramentas usadas para o controle específico das características do computador, ou seja, todos os programas que facilitavam o gerenciamento dos elementos de hardware (HW), como memória, discos, portas, dispositivos e periféricos, também surgiram o SP e o SA.
Os pacotes de software (SPs) incluem produtos de software usados por programadores para desenvolver outros programas de computador usando diferentes linguagens de programação e/ou bancos de dados. Os SPs geralmente incluem editores de texto, compiladores, interpretadores, linkers e depuradores. Eles também incluem Ambientes de Desenvolvimento Integrado (IDEs), que são pacotes de software que agrupam todas as ferramentas necessárias, mencionadas acima, em um único ambiente (geralmente uma interface gráfica do usuário, ou GUI) para abranger todo o ciclo de vida do desenvolvimento de um programa.
E a categoria SA engloba o software usado pelos usuários (finais) para realizar uma tarefa. SA geralmente inclui suítes de escritório, softwares de design gráfico ou multimídia, softwares de contabilidade ou administrativos, para citar apenas uma pequena fração de todas as categorias de aplicativos que podemos encontrar nesta categoria. Portanto, SA, ou simplesmente um aplicativo, é sobre
Qualquer programa que permita a um usuário final realizar diferentes tarefas em um computador, laptop, tablet, celular ou outro tipo de equipamento ou plataforma tecnológica.

Aplicativos
Nos primórdios da computação, os aplicativos (apps) caracterizavam-se pela necessidade essencial de instalação para uso, e apenas dentro de um único sistema operacional nativo específico. Contudo, com o tempo e o avanço da ciência da computação e da tecnologia, os aplicativos evoluíram, adquirindo características como portabilidade, compatibilidade multiplataforma, modularidade e escalabilidade. Assim, hoje temos muitos tipos de aplicativos, desde os tradicionais aplicativos nativos até os inovadores aplicativos distribuídos.
Início
Os aplicativos nativos, desenvolvidos especificamente para um determinado sistema operacional, geralmente utilizando um Kit de Desenvolvimento de Software (SDK), foram os primeiros a serem criados. A principal característica desses aplicativos é a sua completa integração com as funcionalidades e recursos do dispositivo ou plataforma, resultando em uma melhor experiência do usuário. Portanto, eles tendem a ter melhor aparência e desempenho em seu ambiente nativo, além de serem executados de forma mais fluida e confiável. No entanto, geralmente apresentam um custo de desenvolvimento mais elevado, caso seja necessário um novo aplicativo para cada versão do sistema operacional nativo.
Com o avanço da tecnologia, surgiram os aplicativos web, também conhecidos como WebApps . Esses aplicativos são executados incorporados a uma página ou site da web por meio de um navegador de internet. Portanto, podem ser executados em praticamente qualquer navegador e em qualquer tipo de computador, dispositivo ou plataforma. E praticamente tudo o que pode ser feito em seu formato web pode ser feito em seu formato de aplicativo nativo instalável.
Os aplicativos híbridos surgiram da combinação das duas abordagens anteriores. São aplicativos desenvolvidos usando linguagens típicas de aplicativos web, permitindo seu uso em diferentes plataformas , mas com a capacidade dos aplicativos nativos de acessar grande parte dos recursos de hardware do computador, dispositivo ou plataforma em que são executados. Em outras palavras, eles aproveitam ao máximo a versatilidade do desenvolvimento web e a adaptabilidade de hardware dos aplicativos nativos.
Atualidade
Atualmente, estão sendo desenvolvidos os Progressive Web Apps (PWAs). Essencialmente, são páginas web que utilizam Service Workers e outras tecnologias, comportando-se mais como aplicativos nativos e menos como aplicativos web. Embora os Service Workers e outras tecnologias sejam executados em segundo plano, o aplicativo em si é executado dentro do navegador web.
Por fim, os aplicativos atuais estão migrando para o formato de Aplicativos Distribuídos, também conhecidos como Aplicativos Descentralizados (DApps). Esses aplicativos descentralizados utilizam uma plataforma blockchain para permitir que os usuários interajam diretamente e realizem transações (acordos) sem a mediação de uma entidade central que gerencie o serviço. Consequentemente, em um DApp, cada usuário é um nó em uma rede descentralizada onde todos os nós atuam coletivamente como um cartório global de qualquer transação realizada na plataforma.
Conclusão
O mundo do desenvolvimento de software, imerso no âmago da ciência e da tecnologia, está em constante evolução e avanço. Assim, a partir de softwares instaláveis (aplicativos nativos), surgiram muitas outras formas de aplicativos (web, híbridos, progressivos, distribuídos).
As formas atuais certamente darão lugar, em breve, a novas e inovadoras formas de aplicativos, que serão impactadas pelo uso de tecnologias atuais e em constante evolução , como Big Data, Deep Learning, Inteligência Artificial e tecnologias ainda em desenvolvimento, como Computação em Nuvem e Blockchain.