terça-feira, 16 de dezembro de 2014

O que é o open source?

As linguagens de programação como o JAVA, o C++, o C#, o Fortran, o Cobol, entre muitas outras, permitem facilitar o processo de programação dos computadores. Dado que estes funcionam em código máquina, ou código executável, essencialmente composto de "zeros" e "uns", estas linguagens funcionam como que uma ponte de comunicação homem-máquina entre programadores e computadores.
Para converter uma linguagem de programação em código máquina utiliza-se um outro programa a que se chama "compilador". Esse compilador funciona num dado sistema operativo, o programa que controla o funcionamento básico de qualquer computador, como por exemplo o Windows, o Linux ou o Mac OS.
Quando um dado programa, escrito numa dada linguagem de programação, está disponível a todos para consulta ou edição e respectiva compilação, diz-se que é código aberto ou "open source".
O que é normalmente disponibilizado aos clientes de informática (todos nós) é apenas o executável e a respetiva licença de utilização.
O código fonte, escrito numa dada linguagem de programação, fica tradicionalmente na posse do fabricante de software. Por exemplo num programa como o EXCEL (do Office) que todos conhecemos, apenas temos acesso ao executável e licença. O código fonte está na posse exclusiva da Microsoft, o seu fabricante. Neste caso podemos dizer que o código é fechado. Como alternativa temos o Calc (do OpenOffice) onde além do executável podemos ver e alterar o código fonte.

Para ultrapassar a dependência de funcionalidades e prioridades de desenvolvimento que estão fora do controle dos clientes, alguns programadores passaram a disponibilizar-lhes o código fonte das suas aplicações. Assim, além de receberem o executável gerado, os clientes passaram a ter a possibilidade de alterá-lo à sua medida, sem grande dependência dos seus programadores originais nem dos sistemas operativos em que funcionavam.
Dado que muitas destas comunidades de programadores utilizavam o JAVA como linguagem de programação, uma linguagem aberta e multiplataforma, ficou a ideia de que o código aberto ou open source seria um programa feito nessa linguagem de programação. Outra associação que se faz a este tema é que o sistema operativo tem que ser Linux. Outra ainda é que o software aberto é sempre gratuito.
Não é verdade. JAVA ou Linux não quer dizer open source e open source não tem nada a ver com JAVA ou Linux, tal como o facto do software ser aberto não significa que seja tudo gratuito. Há serviços a pagar de adaptação, instalação e manutenção que, por vezes, ultrapassam o preço do licenciamento habitual do software de pacote de fabricante (ou seja aquele que só disponibiliza o código executável).
A ideia de um código aberto a todos é que outros programadores com acesso ao código fonte, com problemas similares, podem submeter correções, otimizações e funcionalidades que eles próprios necessitam. Esta estratégia funciona bem quando existem uma partilha muito grande de funcionalidades que todo um universo de utilizadores necessita. No entanto, em soluções verticais não existem outros programadores dispostos a trabalhar gratuitamente para resolver problemas específicos que não querem partilhar. Nasceu assim o modelo de negócio do open source em que os custos globais passaram a ser calculados em termos dos serviços de adaptação, instalação e manutenção que necessitam de ser contratados, nem sempre competitivos com o modelo de código proprietário tradicional. Além disso colocam-se questões de segurança e privacidade difíceis e até perigosas de gerir.

Outra confusão que se faz sobre este tema é dizer que um código escrito numa dada linguagem de programação proprietária, mesmo que seja disponibilizado a clientes, não se considera aberto porque não pode ser utilizado em todo o tipo de computadores. Não é verdade. Uma linguagem por ser proprietária não deixa de poder ser aberta. 
Melhorando este conceito, a Microsoft disponibilizou recentemente as suas habituais linguagens de programação, incluídas no seu framework de desenvolvimento .NET e no seu produto Visual Studio, reforçando assim o compromisso de proporcionar uma experiência multiplataforma para Windows, Linux e Mac OS, e a disponibilização de código aberto (open source) na versão preview do .NET 2015. Assim podemos ter agora programas em código aberto escritos em C++ ou C#, que podem facilmente gerar programas executáveis em diversos tipos de computadores com diferentes sistemas operativos.
Digamos que este código que já podia ser aberto ficou agora, dentro deste conceito de multiplataforma, ainda mais aberto.

Resumidamente é destas temáticas que falamos quando nos referimos a código aberto ou open source e este é um contributo para gestores e decisores, menos conhecedores destas matérias, poderem decidir melhor.

___________

Exemplo de um pequeno pedaço de código JAVA:

//
// Este é um exemplo de como somar dois numeros
// 
public class Numero {
  public static void main(String args[]) { /* Método principal */
    double x,y; // estes sao numeros reais de dupla precisao
    // System.out.print("x = 2.0"); /* inicializando o "x" */
    x = 2;
    y = 3.0; /* iniciando o y, e fazendo y = y+x; */ y = y + x;
    // escrevendo a soma
    System.out.println("x+y = " + (x+y));
 }
} /* fim de Numero */
é equivalente ao código:

public class Numero {
  public static void main(String args[]) { 
    double x,y; 

    x = 2;
    y = 3.0;  y = y + x;

   System.out.println("x+y = " + (x+y));
 }
}


sábado, 29 de março de 2014

Geração automática de Software e Agilidade

Em todas as indústrias o nível de automação tende a aumentar continuamente de forma a aumentar a sua produtividade e logicamente a sua competitividade e agilidade no mercado em que opera. A indústria automóvel, por exemplo, uma das mais competitivas do mundo, produz constantemente, de uma forma cada vez mais robotizada, novos modelos mais económicos e com mais funcionalidades. O mesmo se passa há muito tempo na indústria informática de hardware e, cada vez mais, também na indústria de software. A geração automática de software permite aumentar a produtividade e a agilidade desta indústria para níveis próximos de 10 vezes mais.
Uma aplicação de gestão gerada de forma automática, com um software que faz software, permitirá criar novas versões como muito maior frequência do que através do processo manual tradicional e, assim, acompanhar melhor a evolução dos processos de gestão. Um gestor que disponha deste tipo de tecnologia dispõe de muito maior agilidade para gerir a sua organização.

Genio - Open Model
Existe uma plataforma de geração automática de software chamada Genio, desenvolvida pela empresa portuguesa Quidgest, que permite, não só, gerar uma nova versão de uma dada aplicação de gestão continuamente (quase diariamente), como gerá-la em diferentes tecnologias. A mesma aplicação gerada para correr em windows, em ambiente cliente-servidor pode ser gerada, com um só clique, sem erros, para correr numa outra tecnologia, por exemplo num browser, em ambiente web. O código fonte gerado é independente da plataforma de geração e, desse modo, pode ser compilado em diferentes sistemas operativos e plataformas de hardware bem como para diferentes bases de dados como MS SQL ou Oracle. Além disso o código fonte pode ser disponibilizado ao gestor por razões de segurança. Num pacote normal de software ninguém tem acesso ao código fonte a não ser em soluções construídas a partir de código open source. Na geração automática de software passa a existir o conceito de open model pois a programação faz-se ao nível do modelo e não da programação manual de código.
A programação tradicional, incluindo o open source, além de ser muito mais lenta e difícil de alterar, afunda os processos de gestão dentro do código, e coloca o gestor numa posição de total dependência do programador. Em muitas organizações (para não dizer a maioria) não é o gestor que controla o sistema de informação, nem por vezes o seu negócio, mas sim o informático interno ou, pior ainda, o fornecedor externo de software.

Smartsourcing
A forma mais fácil e rápida de ter acesso a esta avançada tecnologia de geração automática evolutiva é através do recrutamento de técnicos certificados em Genio e do aluguer de uma licença dessa aplicação. Para desenvolver uma nova aplicação de software não vai ser necessário recrutar um analista e 10 programadores numa dada tecnologia, como no caso do outsourcing tradicional, mas apenas um analista certificado em Genio. Para se perceber melhor o conceito é como se em vez de recrutar 10 pessoas para lavrar um terreno, bastasse recrutar apenas uma pessoa com um tractor agrícola. 
Estão em desenvolvimento acções de formação generalizadas de Genio para lançar no mercado novos recursos humanos qualificados capazes de construir rapidamente complexas aplicações de gestão sem terem que programar uma única linha de código.

APTO - Actualização de Plataformas Tecnologicamente Obsoletas
Muitas organizações possuem aplicações críticas a funcionar nas suas organizações completamente obsoletas do ponto de vista tecnológico e que ficaram paradas no tempo, com custos elevados de manutenção e um elevado risco de "avaria" e prejuízo económico. A geração automática permite estabelecer um plano de cópia desse tipo de aplicações para correr em tecnologias mais recentes e, depois de devidamente testada, para garantir que realiza, sem erros. exactamente as mesmas funções que a versão obsoleta, poderá evoluir fácil  rapidamente para novas funcionalidades, com custos de manutenção até 10 vezes menores.



quinta-feira, 27 de março de 2014

Web 2.0 e Saúde

A Internet e os respectivos serviços associados, vieram dar, nas últimas décadas, um grande impulso aos chamados serviços de Saúde nas sociedades modernas e muito irá ainda melhorar nos próximos anos. A desmaterialização dos documentos de apoio à actividade clínica veio acelerar processos e melhorar muito a qualidade dos serviços prestados. Desde a marcação de consultas até à emissão e verificação de receitas ou à visualização digital dos meios complementares de diagnóstico, passando pela tele-medicina ou pelos serviços de emergência médica, tudo ficou muito mais fácil, mais rápido e mais fiável.
A quantidade de informação hoje disponível à distância de um clique bem como a quantidade de amigos disponíveis nas redes sociais para partilhar connosco as suas experiências, permite um maior conhecimento dos processos de tratamento de inúmeras patologias, nomeadamente nas doenças mais aceites socialmente (gripes, obesidade, diabetes, alergias, dores cronicas,...) ou na área da saúde emocional e psicológica (depressões, dependências,...). 

Saúde ou combate à doença?
Gostava, no entanto, ao falar de Saúde, de separar dois conceitos importantes que muitas vezes se confundem, pois uma coisa é falar de Saúde e outra é falar de combate à doença. Quando se fala do sistema nacional de saúde ou de sistemas de saúde em geral, o que vem à ideia são médicos, clínicas, medicamentos, cirurgias e urgências hospitalares e, para mim, isso é apenas uma pequena fracção do que é a Saúde. Tudo o que chamamos de sistemas de saúde estão preparados para atender situações de emergência de cura rápida de doenças agudas. Partem do pressuposto que somos seres altamente vulneráveis ao meio que nos circunda, que ficamos doentes por tudo e por nada, que os nossos 50 triliões de células não têm um sistema de auto-cura e regeneração molecular e, por isso, tem que existir um sistema exterior que repare as avarias de cada um. A raça humana resiste há milhões de anos aos presumíveis ataques do meio ambiente e nunca houve tanto hospital com tanta tecnologia como há hoje nos países mais avançados do mundo. É verdade que há novas doenças ainda incuráveis que criam grandes desafios à biologia, à química e à ciência médica mas também é verdade que há uma profunda crença que só os medicamentos das farmácias e as cirurgias é que são capazes de nos curar de tudo.
Só que a população está a envelhecer e as doenças são cada vez mais do tipo crónico do que agudo. As doenças crónicas e as doenças raras não têm uma resposta adequada neste tipo de sistemas de saúde. Só com planos de prevenção, nutrição, exercício físico e estilo de vida se conseguem gerir patologias como a diabetes, a hipertensão, incontinência, osteoporose ou mesmo depressão. Até as doenças mais graves como o cancro, as degenerativas como o Alzheimer ou Parkinson  ou as raras como o autismo, podem ser geridas de forma a criar a melhor qualidade de vida para o paciente.

A web2.0 desafia permanentemente as verdades
As redes sociais, as bibliotecas electrónicas e todos os outros serviços que constituem a web 2.0 vêm criar enormes desafios a todas as áreas profissionais e económicas como por exemplo ao jornalismo, pois hoje, cada um de nós, pode editar os seus artigos e notícias e disponibilizá-los em todo o mundo em poucos minutos ou segundos, mostrando uma opinião diferente da veiculada pelos meios de comunicação tradicionais. Nestes novos desafios, a Saúde não é excepção. Hoje os doentes têm à sua disposição uma gigantesca informação que, bem gerida e assimilada, poderá vir a substituir muitos dos serviços médicos e farmacêuticos actuais. Por exemplo um doente hoje pode verificar, através do seu telemóvel, se existe um medicamento mais económico do que aquele que o seu médico ou farmacêutico lhe está a receitar. Um doente hospitalizado pode hoje estar em contacto permanente com os amigos e até, nalguns casos, continuar a trabalhar. Os medicamentos de venda livre podem ser adquiridos e administrados com eficácia, apenas pelo doente, utilizando a sua experiência passada e a informação disponível na web, que inclui a experiência de outros doentes. Mesmo em patologias mais complicadas os computadores desempenham um papel de aconselhamento médico. Há já hoje sistemas que, por exemplo em doenças oncológicas específicas, compilam toda a informação existente na web e sugerem ao médico o plano de tratamento estatisticamente mais eficaz. Esse plano pode contradizer o plano que ele tinha pensado inicialmente e até validado com outros colegas da especialidade e traz um novo desafio deontológico: o de prescrever algo receitado por uma máquina. Onde estará a verdade?
O software e as bases de dados ocupam um papel de destaque nesta matéria e os novos dispositivos móveis abrem novas possibilidades de gestão da informação, tanto a global e estatística como a informação pessoal. A segurança e o sigilo dos dados são ainda assuntos de difícil consenso.
Mas o grande desafio da web 2.0 vai estar sobretudo ao nível da partilha de experiências de saúde, aquilo a que se vem chamando de wellness, estilo de vida, nutrição, exercício físico e mental, etc., e não propriamente de combate à doença. 
As experiências descritas e a infinidade de novas evidências científicas sobre cura, desde a acupunctura, o yoga, ou outras mais estranhas como o Reiki, a água de dupla hélice, ou o efeito placebo, estão disponíveis online, quase imediatamente após as suas realizações, estudos ou descobertas.

Algumas ideias para projectos futuros
As novas tecnologias web como a web 2.0, a cloud, o big data e outras abrem novas possibilidades de projectos e negócios no sector da Saúde que ainda estão por imaginar e explorar. Aqui vão algumas ideias para projectos futuros, alguns já planeados ou em desenvolvimento:
- Alerta de incompatibilidade de medicamentos ao dispor do cidadão, através da leitura dos códigos de barras da receita ou da suas embalagens.
- Gestão clínica integrada com disponibilização controlada e segura de dados online aos profissionais médicos ou administrativos e aos utentes e familiares.
- Estado de equilíbrio do corpo ao longo do dia, lido por sensores colocados na roupa e sugestão de plano de correcção (com nutrientes, exercício, tratamento natural, descanso, ...)
- Grupos de partilha de doenças raras e análise de eficácia dos planos de tratamento
- Grupo de partilha de investigação em determinadas experiências de cura e sua eficácia
- Apoio domiciliário remoto de rotina via tele-consulta
- Sistema de alarme e prevenção de surtos epidémicos (gripe, dengue, malária, etc.) em determinadas geografias e estações.
- Sistema de apoio ao doente que acompanha um dado tratamento através de uma determinada app instalada no seu samartphone.
- Sistema automático móvel de tradução semântica de linguagem médica e farmacêutica para quem se desloca por diversos países, línguas e culturas com diferentes sistemas de saúde e diferentes catálogos de medicamentos.