05 dezembro 2008

Guerra de canivetes suícos: Smartphones

A briga dos smartphones (telefones celulares mais avançados) está pegando fogo com a chegada de grandes concorrentes nesta indústria. Conheça as principais tecnologias e sua participação no mercado (dados de 2008).

As chamadas plataformas de celulares são basicamente os Sistemas Operacionais (SO) construidos sobre diferentes tipos de hardware. Os principais SO móveis incluem Symbian OS (45% do mercado[13]), RIM's BlackBerry (17% [14]), Windows Mobile (12%[15]), Familia Linux (7.3%[16]), Palm OS (2%[17]), A Ångström Distribution, e o Darwin (iPhone OS) (0.3%[18]). A Open Handset Alliance's Android é o mais recente smart phone adicionado pelo Google e parceiros como T-Mobile (qual lançou o modelo G1 em 22 de Outubro, 2008). As esperanças do grupo OHA com Android irá obter até 4% de participação do mercado até o final do ano.[19]

As principais tecnologias são:
Novo celular da Nokia - N97

Tem bastante participação de mercado espalhado pelo mundo. A Nokia é lider de mercado exceto no Japão. Nokia tem 52.9% do mercado de smartphones.[23] Symbian no Japão é forte no relacionamento com a operadora NTT DoCoMo. Existem várias implementações de interfaces com usuário sobre Symbian (algumas plataformas como UIQ e a plataforma da Nokia chamada S60) são imcompatíveis. O requisito para uma aplicação funcionar é a mesma ser assinada [26] , o que de certa forma, atrapalha o potencial de aceitação e crescimento como plataforma de aplicações móveis. Tem recebido muitas advertências sobre possíveis virus (atualmente trojan horses).[27]
iPhone da Apple

O iPhone (e iPod Touch) usa um SO chamado iPhone OS, derivado do Mac OS X. Aplicações de terceiros foram habilitadas para serem instaladas através do Installer.app, sendo um tanto que difícil no início. Depois do firmware 1.1.1 para o iPhone e o release do iPod Touch, contudo, um web service permitia a a instalação de aplicações de terceiros. Com o release do iPhone OS 2.0, em Julio de 2008, aplicações nativas agora são habilitadas para instalar e podem ser baixadas via iTunes App Store, embora exista outras "jailbreaking" para instalar aplicações de terceiros ainda disponíveis para iPhone OS.
Obs. Outras fontes recentes atestam que o iPhone já é o primeiro lugar nas vendas geral e que já ultrapassou, inclusive, as vendas do Windows Mobile no mundo.
  • RIM BlackBerry SO (15.2% participação do mercado - vendas Q3 2008)
Este SO é focado para fácil operação e foi originalmente projetado para aplicações de negócios (business). Recentemente ele tem um incremento de aplicações de terceiros e foi aperfeiçoado para oferecer um suporte multimédia .
Windows CE SO junto com Windows Mobile middleware está amplamento utilizado na Asia. A duas variantes de melhoramento deste SO, o Windows Mobile 6 Professional (para celulares com touch screen) e Windows Mobile 6 Standard foram anunciado em Fevereiro de 2007. O Windows Mobile está desfrutando de grande popularidade devido à baixa barreira à entrada de terceiros para desenvolvedores escreverem novas aplicações para a plataforma.
  • Linux SO (5.1% participação de mercado - vendas Q3 2008)
Linux é forte na China onde é usado pela Motorola, e no Japão, usado pela DoCoMo.[28][29] Ao invés de ser uma plataforma de direito próprio, o Linux é usado como base para uma série de diferentes plataformas desenvolvidas por vários fornecedores, incluindo a Motorola e TrollTech, que são na maioria incompatíveis. [30][31] PalmSource está direcionando para rodar uma interface de execução em Linux[32] Outra plataforma baseada em Linux está sendo desenvolvida pela Motorola, NEC, NTT DoCoMo, Panasonic, Samsung, e Vodafone.[33] PalmSource tradicionalmente usou a sua plataforma desenvolvida pela Palm Inc. Access Linux Platform (ALP) é um melhoramento que estava previsto para ser lançado no primeiro semestre de 2007. Ela irá utilizar as especificações técnicas do Linux Phone Standards Forum. A Access Linux Platform irá incluir uma camada de emulação para suportar aplicações desenvolvidas para dispositivos baseados em Palm.
BREW foi desenvolvido nos USA pela Qualcomm, Inc e é conhecida na América do Norte. BREW é uma plataforma de desenvolvimento móvel para aplicações finais (end-to-end) distribuida no ecossitema. BREW recentemente ganhou uma posição na Europa através dos Three Skypephone oferecida pela rede 3.
  • Android do Google e parceiros OHA (Release liberado em 22 Outubro de 2008)

Android - novo competidor

Android que foi desenvolvido pelo Google, ainda tá começando a entrar na "guerra" e possui uma pequena parte de smartphones no mercado devido à sua recente data de libertação. O SO atualmente só tem um o HTC Dream (G1), sendo executado na rede da T-Mobile E.U.A. Android foi desenvolvida como uma plataforma que poderia ser executado em muitos dispositivos. A Sprint também tem planos para vender um telefone Android a partir de fevereiro ou março de 2009. Apesar de já ter outros ai usando Android.


Participação no mercado móvel (dados de novembro de 2008) - fonte


Os smarthphones estão cada vez mais poderosos, mas eles diferem basicamente em duas coisas: como eles são construídos (eis as tecnologias acima, suas plataformas ou SOs) e o que eles podem fazer.

A medida que desenvolvedores tem menos restrições para criar aplicações nesta indústria, a tendência é ter mais aplicações útéis para os seus usuários, tornando-os cada vez mais multi tarefas, como um canivete suíco ai de baixo, mas com a diferença de ser um celular, que acessa a rede, toca música, tira foto, tem GPS, filma, tem agenda, despertador, relógio, ... a sim, e faz as ligações né, quase esqueci! :)

04 novembro 2008

Video ensina como usar MTJ no Eclipse para programar em Java ME

No último post foi divulgado que o projeto MTJ (Mobile Tools for Java), uma ferramenta para unificar e facilitar a programação da plataforma Java ME, possibilitando integrar diferentes SDK (emuladores) através da IDE Eclipse, está disponível e permite aumentar a produtividade. Segue um video com mais informações sobre como usar MTJ.

O video do link permite você aprender a instalar, criar um projeto MIDlet, rodar e depurar aplicações usando o seu emulador com suporte a Java ME, podendo ser o WTK, Motorola, Nokia, etc.

Getting Started with MTJ

This screen cast will guide you through the process of using the Mobile Tools for Java (MTJ) to develop Java ME applications. You will learn how to configure Eclipse and also how to create, run and debug MIDlets using MTJ.

Total running time 11:06 minutes

O link do video é: http://live.eclipse.org/node/614

23 outubro 2008

Fim do plugin Eclipse ME e início do MTJ (Mobile Tools for Java)

O plugin mais conhecido do Eclipse para desenvolver aplicações móveis usando a plataforma java me é o chamado EclipseME, ele foi substituido por outro, denominado MTJ (Mobile Tools for Java), que vem para suprir os problemas e limitações do eclipseme. Conheça um pouco sobre esse plugin e como instalar e usar na sua IDE Eclipse.

No desenvolvimento para aplicações móveis em Java uma das ferramentas mais populares são os emuladores/simuladores, tal como o Wireless Tool Kit (fornecido pela Sun Microsystems) e outros SDKs fornecidas por fabricantes de celulares como Motorola, Nokia, etc. As IDEs mais populares são Eclipse e Netbeans (desenvolvedores em geral), sendo que para Eclipse, o plugin desenvolvido por Craig Setera, com ajuda de colaboradores expontâneos se tornou referência. Agora no entanto, o "fim foi decretado" e um novo plugin vem ai: MTJ (Mobile Tools for Java), com apoio e ajuda do próprio Craig Setera.

Além de Craig, temos também dois principais grupos que assumiram o desenvolvimento e evolução do MTJ, a Motorola e a SyBase. Nós aqui do CESAR, que prestamos serviço para a Motorola fazemos parte deste time que mantém o MOTODEV Studio for Java e MTJ. Grande conquista para nós do CESAR. :)

Como instalar o MTJ
Acesso o portal do MTJ e copie a URL para realizar o update:
http://download.eclipse.org/dsdp/mtj/updates/0.9/stable

Figura 1: Acessando a opção de update on-line do eclipse (versão 3.4 ganymede)


Figura 2: sequência de passos para adicionar repositório do MTJ para baixar na internet


São 3 possíveis opções que o usuário pode baixar:
  • Mobile tools for java (default); permite criar os projetos e rodar aplicações.
  • Mobile tools for java documentation; vem com tutoriais.
  • Mobile tools for java SDK; vem com developer guide para entender como extender ou contribuir com o projeto MTJ.

Um exemplo prático
Após baixar e o eclipse via update manager o eclipse vai pedir para reiniciar a IDE. Feito isso, basta criar um projeto MTJ (new MIDlet Project) e fazer uma aplicação Java ME usando as configurações já conhecidas do eclipseme, mas com melhorias na interface e algumas features a mais, tal como wizard para configuração do JAD, opções para rodar aplicações diretamente, etc.

Figura 3: Criando um projeto MTJ


Figura 4: acessando a perspectiva Java ME visualizando a tela de configuração

Uma feature bacana é a tela de configuração (acessada pelo arquivo Application Descriptor na view da esquerda), onde podemos acessar a tela de configurações com vários recursos, tais como as informações do JAR/JAD; opção para empacotar aplicação (distribuir); exportar um build ant; rodar o código atual (usando a configuração da classe MIDlet) ou usando a configuração do JAD atual; depurar a aplicação; escolher qual SDK e o device do mesmo. Além disso, existe abas específicas onde se pode configurar aplicação, com personalização para telefones Motorola e Nokia. :)


Conclusões
Esse projeto vem no momento oportuno e era uma necessidade antiga. O MTJ não é novo, mas ninguém estava assumindo o seu desenvolvimento. Com essa iniciativa, liderada pela Motorola, acredito que vai "deslanchar", pois o MTJ poderá ser adotado por outras plataformas como Android em breve, que já demonstraram interesse. A IDE MOTODEV Studio for Java atual já vem com o MTJ integrado para rodar o seu emulador.

22 outubro 2008

O que são blogs e o que representam?

Tive a honra de ministrar uma mini palestra sobre blogs no curso de pedagogia, da faculdade que trabalho. Lá expus o que penso sobre os blogs e suas influências nos tempos atuais. Será mesmo que os blogs representam uma oportunidade que usuários tem de serem produtores de informação?

O material foi baseado na série conquiste a rede, comentado no post do antigo blog. Para baixar o PDF do livro clique aqui. Créditos para os autores.

View SlideShare presentation or Upload your own. (tags: fazer como)









Foto da turma de pedagogia assistindo aula sobre blogs


Professora Jordélia fala sobre seus trabalhos com blogs.

A turma de pedagogia demonstrou interesse no assunto, apesar do professor deixar alguns alunos com sono :) Bem, mas o que mais agrada, para quem está acostumado dar aulas para um bando de macho, ver esse público de mulheres... :D obrigado pela oportunidade!

20 outubro 2008

Uso da Orientação a Objetos com Java nas aplicações Móveis

Programar para celular usando a orientação a objetos pode prejudicar a performance da aplicação? Essa questão me ocorreu alguns anos atrás (2004-2005), quando os celulares eram bem mais limitados do que hoje. Mas a conclusão era que criar muitas classes poderiam prejudicar o desempenho por questões obvias da pouca memória disponível. Hoje no entanto, os celulares já tem mais recursos computacionais. Mas ainda requer cautela ao projetar tais aplicações usando OO para não abusar do bom senso. A menos que não deseje portar tal aplicação para nenhum outro dispositivo além do seu smartphone. :)

Segundo o wikipédia, "A orientação a objetos, também conhecida como Programação Orientada a Objetos (POO) ou ainda em inglês Object-Oriented Programming (OOP) é um paradigma de análise, projeto e programação de sistemas de software baseado na composição e interação entre diversas unidades de software chamadas de objetos."

Um video interessante sobre Orientação a Objetos que recomendaria para curiosos.


Não dá para sair criando muitos objetos como gostaríamos. :( Neste caso, eu penso que é mais vantagem tentar avaliar o custo de memória que sua aplicação tem e o projeto em si.

Mas como faço isso se não conheço muito bem as práticas de otimização?
Preciso me tornar um JEDI na programação? A resposta é sim. :) Mas se anime, existe algumas coisas que pode fazer e que pode te ajudar. Um site interessante é: http://mr.dev.mobi

Esse site se propõe a testar sua aplicação para saber se está usando as melhores práticas e padrões da indústria móvel. Tem opções de análises gratuítas. Vale a pena dar uma olhada.

De qualquer forma é preciso usar o bom senso quanto ao projeto orientado a objetos para não prejudicar a performance de sua aplicação móvel. Ainda, tentar testar no celular real e procurar avaliar os resultados. É a melhor coisa a fazer na minha opinião.

08 outubro 2008

O futuro da internet está no celular?

Imaginem um tempo onde a Internet se torna parecido com o que a energia elétrica reprenta hoje... alguns chamam de Informaticidade, daí a rede estará sempre presente sem que percebamos. A menos que, por alguma razão, ela fique forá do ar. Seria um Caus a vista? Um tempo onde a Internet existe assim como a energia elétrica é percebida, somente quando ficamos sem. Neste contexto que pretendo falar, um tempo onde a Internet será parte essencial de nossos dias, quer você queira ou não, tal como a energia é. Agora imagine o futuro... o celular... os dois juntos. Pronto. Chegamos a onde quero destacar neste post: visões de futuro da internet.

Figura 1: informações sobre o edifício apenas por focar nele.



Figura 2: como chegar nele de onde estou...


Figura 3: lendo um jornal (um scanner entra em ação)


Figura 4: o que significa essa palavra mesmo... :) (recursos de touch screen)

Segundo o site, um desejo seria o celular ser a ponte para acessar diferente serviços (transparentes) para os usuários, sem que tenha que decorar endereços e fazer cadastros... A pesquisa da internet futuro seria integrada aos dispositivos móveis, acessando diferentes serviços on-line. Tudo usando interface fácil, interligado com a câmera, com scanner, Wifi, google maps, google Earth, google search, pesquisa de imagem... tudo em um único dispositivo.

São inumeras outras possibilidades vislumbradas e interessantes. Veja outros artigos da série:


Pesquisas recentes pela empresa de pesquisa comScore,⁠ divulgaram dados que atestam que hoje somos quase 6 bilhões e meio de pessoas no mundo, sendo que cerca de 50% já possui celular. No futuro, as pessoas irão querer acessar a Internet dos seus celulares, desque a infra estrutura esteja estabelecida tal como a energia elétrica está hoje (sendo transparente).

Será mesmo que o futuro da internet está no uso de celulares para o seu acesso?

08 setembro 2008

Dicas para programadores Java ME

Após alguns posts aqui no blog, reuni algumas dicas com referências que acho interessante repassar para vocês que querem aprender sobre programação para celulares usando Java e afins.

Série de dicas para iniciantes em programação para java me:

Introdução a programação para celulares com suporte a Java ME - parte 1
http://profdouglas.blogspot.com/2007/02/introduo-programao-para-celulares-com.html

Introdução a programação para celulares com suporte a Java ME - parte 2

Introdução a programação para celulares com suporte a Java ME – parte 3

Introdução a programação para celulares com suporte a Java ME – parte 4


Alguns trabalhos de meus alunos na disciplina de laboratório de programação (3 e 4 periodos (2008.1), com video aulas que foram produzidos por eles mesmos:

Tutoriais + video aulas sobre Java ME e SE


Um trabalho no mestrado onde pesquisei com meus colegas o Estado da arte em computação móvel:
Computação Móvel e Sem Fio

PARA QUEM VAI BOTAR A MÃO NA MASSA com Eclipse:

http://profdouglas.blogspot.com/2007/05/retomando-as-dicas-de-java-me.html 


ASPECTOS GERAIS:

http://profdouglas.blogspot.com/2008/02/aprenda-programar-e-torna-se-um-jedi.html 

Dicas sobre configurações p/ o seu celular, entenda um pouco sobre eles:
Arena de celulares: GSMArena

13 agosto 2008

Ambiente para desenvolvedores: plataformas MOTODEV Studio da Motorola

Se você é desenvolvedor de software já deve conhecer ou utilizar uma IDE para aumentar a sua produtividade, mas será que a sua IDE oferece várias ferramentas que você precisa para realizar, estudar, produzir, testar e distribuir (licenciar) o seu software? Neste post, quero dar ênfase no que o fabricante Motorola está fazendo com a sua nova aposta: prover uma suite de ferramentas para o desenvolvedor de software nas suas plataformas, baseada na IDE Eclipse, para integrar um conjunto de ferramentas úteis (potencialmente) ofertando um portefólio de aplicativos para o desenvolvedor realizar softwares - tudo de graça. São as ferramentas chamadas de MOTODEV Studios.

O Eclipse é um exemplo de IDE que oferece diferentes plugins para aumentar a produtividade, mas como saber qual plugin precisamos instalar e como instalar são dúvidas comuns no início de um projeto, principalmente para iniciantes. Além disso, se você é um desenvolvedor que faz aplicações para plataformas de celular, deve ter percebido algumas barreiras tais como a falta de ambientes simuladores/emuladores do hardware alvo (celular), além de um conjunto de ferramentas para simular ambientes reais de utilização, tal como o uso de bluetooth, wireless, tráfigo de mensagens SMS, MMS, acesso ao filesystem do sistema, uso da câmera do celular, etc. Afinal, através dessas ferramentas e ambientes são possíveis a criação das soluções permitindo reproduzir o comportamento do software no ambiente virtual, sem a necessidade de possuir o celular real, o ambiente real, para realizar experimentos, diminuindo custos para empresas e desenvolvedores. Do contrário teríamos que comprar os hardwares diversos.

Ou seja, essas ferramentas existem, mas estão espalhadas e as vezes são específicas e difíceis de usar. Em termos práticos, é desta maneira que o desenvolvedor realiza o seu trabalho, precisa de ferramentas para produzir o seu produto (software). Essas ferramentas são cada vez mais usadas por desenvolvedores, pois a demanda por software mais complexos está aumentando e a complexidade das aplicações também, o que torna a curva de aprendizado mais alta se comparada ao desenvolvimento de aplicações para desktop.

Pois bem, a Motorola está saindo na frente com relação a seus competidores ao prover um conjunto padronizado de soluções para o desenvolvedor, voltado para diferentes plataformas de hardware, os chamados Studios. Essas ferramentas permitem criar, testar e validar nossas aplicações além de oferecerem uma a IDE Eclipse por baixo dos panos. Uma estratégia muito interessante, pois o desenvolvedor já conhece bem a IDE Eclipse e está familiarizando cada vez mais com a tecnologia.

Algumas vantagens:

  • Acesso todas as ferramentas e documentações você precisa num único lugar;
  • Permite criar aplicações para telefones da Motorola para plataforma específica, antes deles ficarem disponíveis para o mercado;
  • Desenvolver linhas de produção, através de um ambiente modular e de simples extensão;
  • Maximizar a produtividade através de configurações mais fáceis, com sistema de gerenciamento de atualizações;
  • Todas os ambientes do MOTODEV Studio são gratuítas para download e instalação, e estão disponíveis para download dos membros do portal.

Conheça os Studios









Facilitar a vida do desenvolvedor de software é uma estratégia muito boa, pois os desenvolvedores poderão aumentar a oferta de soluções computacionais para as plataformas Motorola, podendo aumentar a competição no setor. A curva de aprendizado é menor quando temos ambientes como os Studios.

11 agosto 2008

A motivação no dia a dia: seja lá qual o seu trabalho...

Meus amigos(as),

Hoje eu li no blog do meu colega de trabalho, daqui do CESAR, um post sobre motivação. Muito obrigado caro Edwin, pelas tuas palavras, sem dúvida que compartilhar conhecimentos acaba motivando outras pessoas a agirem. Compartilharei com vocês agora, o que um grande mestre me ensinou. Vale a pena ler o texto, que começa assim:

"pra fazer qualquer coisa a gente tem que trazer, conosco TRES coisas.




1. crenca: se vc nao acreditar que PODE fazer, nao fara; a maioria das coisas que a gente quer fazer sai muito mais bem feita ou as vezes so e possivel porque CREMOS que podemos fazer. e acabamos fazendo algo muitas vezes maior, mais complexo, de maiores e melhores resultados do que as condicoes OBJETIVAS da partida, excluindo a CRENCA, diriam que seria possivel fazer;


2. energia: crer e nao orientar o esforco de que somos capazes para obter os resultado que queremos NAO ADIANTA nada. temos que usar a CRENCA para gerar ENERGIA dirigida ao FOCO dos PROBLEMAS que queremos RESOLVER. sem muitas LINHAS RETAS... sem querer que os planos sejam perfeitos ou cumpridos a perfeicao. tenho 52 anos, comecei a ensinar aos 15 [facam as contas] e ja orientei bem mais de cem alunos [o numero pode passar de duzentos, nunca fiz a conta um a um], entre iniciacao, mestrado e doutorado. e ja vi muita gente se perder [inclusive gente senior!] por nao saber FAZER CURVAS. entender SEU tempo, seu ESPACO, seu CONTEXTO e fundamental pra saber como GERAR e onde colocar sua ENERGIA...


3. competencia: parece a parte mais facil... todos nos temos [ou achamos que temos] um conjunto as vezes impressionante de competencias, que MUITS VEZES ficam por ai, ao leu, simplesmente porque nao CREMOS e nao temos ENERGIA para usa-las nas [e para as] coisas que deveriamos estar fazendo em cada estagio das nossas vidas... e COMPETENCIA e algo DINAMICO: ter hoje nao significa que sera UTIL amanha, que pagara minhas contas. estando ha 34 anos programando computadores [desde 73] aprendi que conhecimento neste nosso negocio e FLUIDO e que nossa MAIOR e MELHOR capacidade e a de DESAPRENDER e APRENDER continuamante. isso e o que define um TRABALHADOR de CONHECIMENTO. por isso que acabei me especializando em ser APRENDIZ, ao recusar qualquer tipo de estabilidade nas coisas que eu faco. deveriamos, acho, viver DAS perguntas e NAS perguntas. elas sao o que descortinam nosso futuro... nossa unuica verdadeira competencia e [ou deveria ser] PERGUNTAR..

...

aos que NAO TEM MOTIVACAO, tentem encontrar. tentem montar a EQUACAO de FAZER MAIS DO QUE E POSSIVEL. porque mais hora, menos hora, AQUI e EM QUALQUER LUGAR, havera alguem que pode fazer MAIS do que voce que NAO esta motivado o suficiente...


abracos calorosos a todos,


silvio m.

04 agosto 2008

Mercado de trabalho: como se preparar?

Aprensetação realizada para os novos alunos do curso de sistemas de informação da FACOL, sobre o mercado de trabalho e como se preparar. Além da troca de experiências...


14 julho 2008

Técnicas para Diminuir o Consumo de Energia nos telefones celulares

Que os celulares de hoje têm maior poder computacional talvez não seja novidade para muitos, pois os aparelhos dispõem de mais processamento, mais memória e mais espaço para armazenamento de dados, quando comparados aos telefones de 5 anos atrás. Por outro lado, em relação as fontes de energia dos celulares - as baterias, temos outra realidade.

Encontrei um artigo muito interessante que recomendo a leitura, principalmente para desenvolvedores de software de celular. Trata-se de um mini curso visto no XXXVIII Congresso da SBC (Sociedade Brasileira de Computação), na Jornada de Atualização em Informática. O artido pode ser lido na integra através do link.

Técnicas para Diminuir o Consumo de Energia em Sistemas Embarcados
Autores: Edward David Moreno e Raimundo da Silva Barreto

"Resumo: O incremento na demanda dos usuários de dispositivos móveis e embarcados requer um incremento equivalente no desempenho do processador, o qual, por outro lado, causa um incremento no consumo de energia desses dispositivos. Assim, este trabalho visa apresentar a importância do consumo de energia e potência, enfatizando e mostrando quais são os componentes críticos em um dispositivo móvel. Depois, foca nas principais técnicas, estratégias e o impacto na diminuição do consumo de energia. As técnicas são apresentadas e discutidas em seis níveis, isto é, circuito, arquitetura, sistema operacional, compilador, comunicação e aplicação. Finalmente, apresenta-se um estudo de caso e uma discussão sobre os desafios futuros nesta área de pesquisa."

Artigo completo: http://www.prodepa.gov.br/sbc2008/anais/pdf/arq0060.pdf

Modelo apresenta o carregador ao lado de um vidro de glicose, que gera energia. (fonte: G1)

Existem projetos alternativos para geração de energia, até a Sony tá se envolvendo. Realmente existe uma grande demanda por bateriais otimizadas e de tamanho reduzido.

Um dos problemas observados: celulares com maior poder computacional aumentam a demanda por consumo de energia. Isso requer tecnologias que não são muito baratas e muita pesquisa na indústria, encarecendo o preço final. Por enquanto, podemos otimizar o uso da bateria seguindo boas práticas.

07 julho 2008

Curso de Segurança em Java: a importância da qualificação

Que o mercado de desenvolvimento de software está em alta não é nenhuma novidade. O problema, segundo especialistas, vai faltar profissionais qualificados nos próximos anos aqui no Brasil. Bom, isso pra mim não é novidade porque tem muita gente que acha que se aprende sem fazer na prática. Isso eu acho difícil, e quando chegam nas entrevistas, não tem nada para comprovar que já mexeu em alguma coisa de verdade.

Por outro lado fica a questão: já que este mercado é tão exigente COMO eu posso me qualificar para ser mais competitivo? Seja mais desenrolado. Ou seja, crie oportunidades e pretextos para estudar e fazer coisas na prática de programação.

Um curso gratuito e bem interessante para fazer coisas são os módulos do JEDI (Java Education and Development Initiative), no qual já falei aqui em post anterior. Pois é um treinamento para programadores. É claro, o sucesso deste curso dependerá de você realmente se dedicar.

Uma dica que costumo dizer em sala de aula é: se estiver estudando alguma teoria nova, seja lá qual for a sua área, coloque em prática o que está estudando. Se não for possível aplicar, então você deveria se questionar o porquê está estudando isso. Se conseguir, o aprendizado "será para sempre". Pelo menos no requisito de experiência.

Olha ai o plano de curso do novo módulo de SEGURANÇA do JEDI.

Lição 1 - Introdução a Segurança
* Conhecer sobre os principais aspectos de segurança
* Aprender boas práticas de segurança
* Observar as práticas de segurança aplicadas à linguagem Java

Lição 2 - Sandbox
* Identificar o modelo de segurança padrão empregado – Sandbox
* Conhecer os componentes da Sandbox
* Realizar as configurações dos componentes da Sandbox
* Definir os domínios de proteção de sua aplicação
* Aplicar a política de segurança, por intermédio das permissões
* Entender como as classes podem ser assinadas (certificação digital)

Lição 3 - Gerenciadores de Segurança
* Compreender a arquitetura dos Gerenciadores de Segurança
* Conhecer os métodos dos Gerenciadores de Segurança
* Construir um Gerenciador de Segurança customizado

Lição 4 - Segurança em Java
* Descriminar o que é Segurança
* Compreender o modelo de Segurança implementado em Java
* Obter mais dados sobre a Sandbox

Lição 5 - Classes de Segurança em Java
* Conhecer as regras e permissões de segurança
* Entender as classes de regras, de permissão e de acesso
* Aprender detalhes sobre exceções associadas a segurança
* Construir uma classe de permissão

Lição 6 - JAAS
* Trabalhar com a tecnologia JAAS
* Identificar as políticas de segurança de JAAS e seus arquivos de configuração
* Conhecer as classes de autenticação e autorização da tecnologia JAAS
* Programar e administrar através da tecnologia JAAS

Lição 7 - Criptografia
* Debater sobre os tipos de algoritmos criptográficos
* Conhecer as classes da arquitetura de criptografia Java

Lição 8 - Class Loaders
* Ter uma visão geral de funcionamento do Class Loader
* Compreender as considerações de segurança sobre o Class Loader
* Entender as classes do Class Loader

Lição 9 - Message Digest
* Conhecer os principais algoritmos de Message Digest
* Identificar os principais usos da utilização de Message Digest
* Empregar a classe MessageDigest em um aplicativo

Lição 10 - Listas de Controle de Acesso
* Conhecer as características da ACL
* Obter maiores informações sobre Java e as Listas de Controle de Acesso


Em resumo, pratique o que estuda, caso contrário, não vai aprender direito.

02 julho 2008

Motorola atualiza IDE Motodev Studio for Java ME e lança IDE para plataforma UIQ / Symbian

Motorola anuncia atualização da IDE Motodev Studio for JavaME bem como divulgou o lançamento da IDE para plataforma UIQ (Motodev Studio for UIQ Beta).


Essas IDEs são na verdade um conjunto de ferramentas baseadas na arquitetura Eclipse para o desenvolvimento de software em plataformas específicas, como Java ME, UIQ (Symbian), Linux for Java, etc. A tecnologia tem em comum uma plataforma base, ou seja, um CORE padrão para todas as IDEs. Isso permite padronização das features para cada plataforma específica, facilitando a personalização e a integração das diferentes ferramentas de cada tecnologia, sendo acoplada numa única IDE padrão do Eclipse, distribuidas de forma diferentes. Ex. Motodev para Java, Motodev para UIQ, ...

O Motodev Studio for UIQ Beta é uma IDE baseada em Eclipse para desenvolvimento de software em plataforma UIQ devices (rodando em SO Symbian). Suporta ambos UIQ 3.1 e UIQ 3.3 beta SDKs, oferece ferramentas para debugging, wizard para criação de pacotes, exemplos de aplicações entre outras funcionalidades.

Os telefones suportados são:
Já a IDE Motodev Studio for JavaME foi atualizada para versão 1.4. Incorpora todas as atualizações anteriores, com ênfase ao suporte para a JSR 248 full (Mobile Service Architecture) e JSR-180 (SIP API for J2ME), bem como provê suporte a novos telefones.

Uma feature interessante é o suporte ao On-Device Debugging, ou seja, pode-se rodar aplicações MIDlets diretamente no dispositivo alvo em tempo real. Essa feature é essencial para testar aplicações, pois permite testar no ambiente prático e não simulado (no caso do uso do emulador). No entanto, atualmente só tem suporte para sistemas operacionais baseados em Motorola OS (P2K). Próximas plataformas suportadas serão Linux for Java. Mais informações pode-se ler o release notes.

Os telefones suportados:

Handsets

Wireless Modules

05 junho 2008

Tutoriais + video aulas sobre Java ME e SE

Eu estava ocupado no último mês escrevendo meu projeto do mestrado. Agora que estou mais aliviado, compartilho com vocês uma lista de video aulas desenvolvidas pelos meus alunos de programação orientada a objetos. Eu selecionei alguns para exibir aqui, mas a lista completa está no final deste post. Obrigado a todos que se envolveram nesse projeto inicial. Para o próximo ano tenho planos de melhorar a qualidade do conteúdo produzido.


J2ME-Video Aula -Consulta a banco de dados via Web
Esta vídeo aula mostrará como realizar uma consulta a um banco de dados via web pelo celular usando a linguagem J2ME. Não só a aplicação em J2ME, mas toda a estrutura necessária para fazer esta conexão.
RECOMENDO (atualizado 17/setembro/2008, obrigado especial a Otávio Dutra)
parte 1
parte 2



Primeiros passos em Java ME
Aqui as pessoas poderão ter uma noção de como dar os primeiros passos para programar para celulares usando Java ME.




Primeiros passos na IDE NetBeans
Visão geral da IDE, da instalação até a operação e criação de um aplicativo em Java SE (básico).



Todos os links estão aqui:



17 abril 2008

Open source e sua influência no desenvolvimento de software – parte 3

No primeiro post desta série falamos sobre o que é open source no contexto da indústria de software. A segunda parte abordou reflexões acerca dos aspectos da engenharia de software tradicional em comparação com algumas práticas open source. Finalmente, nesta terceira e última parte desta série falaremos sobre a influência open source na economia e as conclusões gerais.

Open Source e seus efeitos na economia

Vemos hoje exemplos de sucesso do open source o sistema operacional Linux e o servidor web Apache [Perens 2005], [Garzarelli 2002], com uma forte adesão de novos usuários. Além disso, estudos apontam crescimento de 37% a 45% em setores relacionados com Linux, com movimentação estimada de U$ 35 bilhões em 2008. [Perens 2005]

Por que grandes empresas como IBM estão participando desses projetos? Uma justificativa plausível é que aborda o impacto do open source na cadeia de valor do software [Taurion 2004]. Ainda segundo o autor, a cadeia de valor é a série de atividades relacionadas e desenvolvidas por agentes produtivos para satisfazer às necessidades do mercado (relações com fornecedores, ciclos de produção, vendas e distribuição dos produtos). Os aspectos dessa cadeia são bastante voltados às formas como os negócios se dão. A IBM percebeu essa mudança na cadeia de valor e está direcionando o seu modelo de negócio na área de desenvolvimento.

Outro fator importante é que as empresas precisam construir novos modelos de negócio para continuar lucrando nesses novos mercados, pois veremos mais adiante que os custos para os usuários estão bem acessíveis, isso modifica o sistema de como explorar o mercado de TI. Alguns vêem open source como uma estratégia uniforme para desenvolvimento de software e um estilo de vida próprio, mas alguns também vêem como um novo modelo de negócio. [Riehle 2007]

Hoje a função econômica do software em um negócio é estrategicamente muito importante conforme abordam a maioria dos trabalhos consultados [Perens 2005], [Riehle 2007], [Taurion 2004]. Nem todas as empresas estão no negócio de manufatura de software. No entanto, sem o software, muitas empresas seriam menos eficientes ou seriam impossíveis de operarem. Como exemplos práticos considerem o planejamento financeiro antes das planilhas de computador, a correspondência antes do e-mail, etc.

Hoje necessitamos de software para fazer o negócio. Qualquer negócio com mais de 50 funcionários é provável empregar serviços de programadores. Os software melhoram a qualidade do produto. O modelo open source criou uma nova forma de relacionamento econômico [Riehle 2007], [Perens 2005], [Taurion 2004]. Uma nova forma de relacionamento peer-to-peer com os clientes do software da empresa. Isso permitiu que participantes do processo se envolvessem diretamente na criação do software open source e assimtornando-se colaboradores.

Havia também novos relacionamentos nas vendas do software em projetos opensource, que competiam em outros setores, mas contribuem em projetos de interesses em comum. Mudanças também no relacionamento do cliente-vendedor: o cliente poderia agora participar com o vendedor no desenvolvimento do software. Assim, muitos vendedores poderiam alcançar agora o mesmo código fonte, e suportar assim o produto, havia menos restrições e menos exclusividades neste relacionamento [Perens 2005].

Especialistas sugerem que as empresas podem usar software open source para fazer crescer suas comunidades de usuários e construir um ecossistema sobre seus produtos e serviços [Riehle 2007]. As instituições financeiras começam a observar o open source como prováveis respostas para necessidades ainda não esclarecidas aos fenômenos presentes, tais como:[Perens 2005] o projeto de passatempo de um estudante – resultou o Linux,influenciando as TI das empresas; A IBM, com sua postura tradicional e conservadora deixando de apostar em seu sistema (IBM AIX) para investir dinheiro em projetos open source aliando-se com programadores, cujo líder não tem nenhum poder, mas conquistou respeito de outros; a Microsoft enfrenta seu primeiro concorrente sério em uma década: os programadores open source que vão afastando seu trabalho. Estes eventos parecem absurdos: certamente não cabem no paradigma econômico tradicional da produção de tecnologia. Um fenômeno econômico novo está operando-se, e para explicá-lo segundo o autor, é preciso olhar mais profundamente na economia da produção do software, os seus impactos.

Por que o custo e preço do software open source é muito mais barato do que software fechado?

Para responder esta pergunta é preciso analisar o modelo fechado, seu custo e preço de venda [Riehle 2007]. No modelo de negócio do software fechado o custo do investimento se dá nas primeiras vendas. O lucro começa a ser adquirido com as vendas sucessivas que serão comercializadas. Custos adicionais de vendas e melhorias do produto são relativamente baixos. Os softwares são geralmente instalados através de CDs ou downloads do produto, e incorporam uma licença de usuário, que garante suporte, etc.

O advento do software open source tem reduzido os custos dos aplicativos para os usuários. Isso está mudando o cenário econômico no ecossistema das negociações do software. [Riehle 2007] Empresas não querem pagar por licenças sem ter certeza que a solução contratada atende suas expectativas. Pode-se observar que existe uma queda no número de clientes dispostos a comprarem esses recursos. Quanto mais baixo for o preço dos produtos mais há interesses na compra destes. Além disso, essas mudanças se refletem principalmente em como algumas empresas estão ofertando seus produtos e serviços para os usuários, através da Integração de Sistemas (IS) [Riehle 2007]. Para haver crescimento desse negócio a empresa que provê uma integração de sistemas precisa ao menos cobrir seus custos. Os preços tendem a ficar mais baixos e como conseqüência mais vendas são realizadas, as margens de lucro se estabilizam se as vendas forem contínuas.

Os sistemas integrados estão sendo vistos como uma perspectiva para manter os lucros usando open source. Os sistemas que provem integração de soluções fazem parte de um conjunto de tecnologias de hardware, software e serviços, que são oferecidos de forma transparente e comercializados como produtos [Rieble 2007].

Observam-se mudanças na forma de distribuir softwares, mudanças na economia e na cadeia de valor do software. No entanto, se for oferecido somente serviços como componentes e API e infra-estrutura, é necessário fazer soluções de software para usar aqueles serviços no dia a dia. Logo, os lucros podem ser afetados se não houver clientes interessados neste negócio. O modelo open source pode contribuir neste sentido. Empresas que provem integração de soluções podem alavancar seus produtos incentivando a comunidade open source a usarem seus serviços, reduzindo o custo das suas soluções. Isso pode incentivar empreendedores e empresas a pagarem o uso dos serviços. A cadeia de valor do software open source está bastante consolidada e estável para os clientes e usuários.[ Riehle 2007] Não é muito fácil repassar o custo de produção hoje em dia para os clientes. Há algumas razões: os clientes tendem a incorporar o produto como um todo, melhor do que em componentes individuais. Isso exige fornecer soluções mais complexas que demandam custos mais altos para as empresas. Há também uma competição muito grande no mercado, no qual é preciso investir constantemente em inovação, não é fácil ficar a frente desses novos mercados. Mas se tratando de sistemas de integrações de soluções open source pode-se manter as margens de lucro.

Nas comunidades de software open source não há barreiras de mercado existentes para efetuar vendas de serviços, manutenção e suporte, desde que tenha uma licença que permita explorar a tecnologia [Riehle 2007]. O mercado é bastante competitivo, a fixação de preço se dá pelo pagamento dos custos. Se os lucros são altos, novas companhias incorporarão esse mercado, se os lucros são baixos as empresas deixarão o mercado. Quanto mais maduro o produto mais baixo será o preço total. Os custos variam de empresa para empresa, em geral, os custos são mais altos nas primeiras unidades porque se espera vender um serviço melhor.

Conclusão
Neste artigo abordamos sobre open source e algumas de suas facetas nas áreas da engenharia de software, nos seus processos de desenvolvimento e alguns reflexos na economia da indústria do software. Grandes empresas, tal como a IBM, está sinalizando que open source não é somente discurso filosófico ou ideológico, mas como uma alternativa viável de exploração de mão de obra qualificada e serviços com custos reduzidos. Nesta conjuntura um novo modelo de negócio desenha uma forma de envolver clientes e usuários em torno do produto, que agora passa a ser construído de forma mais participativa.

[Kubota 2006] demonstra essas tendências aqui no Brasil ao atestar que os modelos de open source terão um grande impacto econômico não apenas na indústria de software, mas na sociedade como um todo. Afirma ainda: “os países e empresas que adotarem tecnologias de fonte aberta terão grande vantagem competitiva, e a sociedade em geral poderá se beneficiar de uma adoção precoce. As tecnologias de fonte aberta representam uma mudança no modelo de comercialização tradicional, e sua maior fonte de receita é representada pelas licenças. No novo modelo, o valor das licenças é nulo ou baixo e as receitas advêm principalmente de serviços, o que pode representar oportunidade para as empresas brasileiras de software”.


Referências


  • Perens, B. (2005) The Emerging Economic Paradigm of Open Source, Senior Research Scientist, Open Source, Cyber Security Policy Research Institute, George Washington University.

  • Garzarelli, G., (2002), Open Source Software and the Economics of Organization, Università degli Studi di Roma, 'La Sapienza' Dipartimento di Teoria Economica e Metodi Quantitativi per le Scelte Politiche Piazzale Aldo Moro,Rome, Italy

  • Taurion, C., (2004) "Software Livre: potencialidades e modelos de negócio", RJ: Editora Brasport.

  • Riehle, D. (2007) The Economic Motivation of Open Source Software: Stakeholder Perspectives, Publish ed by the IEEE Computer Society April

    Kubota, L.C., (2006), DESAFIOS PARA A INDÚSTRIA DE SOFTWARE, Brasília,

  • IPEA, TEXTO PARA DISCUSSÃO No 1150,

  • http://www.ipea.gov.br/082/08201008.jsp?ttCD_CHAVE=2480

Créditos desse estudo também se devem aos meus colegas:
Ana Carina M. Almeida, Cleyton C. da Trindade e Marcio M. de Souza

12 abril 2008

Computação Móvel e Sem Fio

Nesta semana apresentamos um seminário sobre computação móvel e sem fio, na disciplina de sistemas distribuídos do mestrado (CIn/UFPE, 2008.1). Foi bastante interessante, trabalhoso e divertido expor o que pesquisamos, onde abordamos temas atuais, desde o estado da arte em computação móvel até visões de futuro. Segue a nossa apresentação.




29 março 2008

Open source e sua influência no desenvolvimento de software – parte 2

No primeiro post desta série falamos sobre o que é open source no contexto da indústria de software. A pergunta principal foi: práticas open source no desenvolvimento de software aumentam a qualidade dos produtos derivados da engenharia de software? A resposta a essa questão ficou longe de se encerrar. Aqui, continuaremos a desenvolvê-la partindo da reflexão acerca dos aspectos da engenharia de software tradicional e compará-lo com algumas práticas open source.

Cenário da guerra do software (open source e sua influência na indústria)

Engenharia de Software Open Source

Desde o seu surgimento, a engenharia de software tem evoluído com o objetivo de construir produtos de maior qualidade, economizando tempo e recursos. Isto não é uma meta fácil de alcançar, pois muitas vezes qualidade está atrelada ao custo. Considerando práticas open source no projeto de software e em relação aos aspectos desejáveis da engenharia de software (otimização de recursos, qualidade e tempo), um projeto Open Source tende a ser organizado em comunidades, influenciando principalmente os seguintes aspectos:

  • Minimizar o custo da produção; pois os membros da comunidade geralmente são voluntários e não há limites para a entrada de novos integrantes, o que normalmente, visam obter alta qualidade no produto final, o que leva conseqüentemente, alta qualidade no código produzido. Estando este disponível, pode ser revisado e alterado por qualquer programador, eliminando a dependência de uma empresa detentora da tecnologia que melhore as funcionalidades do software ou corrija os erros;
  • Variação do tempo de desenvolvimento do software; normalmente os prazos não são bem definidos, pois a maioria do trabalho é voluntária, e dependerá do esforço coletivo e das lideranças envolvidas. No entanto o risco da descontinuidade dos projetos é baixo, pois qualquer desenvolvedor pode assumir e dar continuidade ao projeto [Beline, Menta e Salvi 2005].

Através de projetos distribuídos, a Indústria de software encontra dificuldades semelhantes aos projetos Open Source, por exemplo, problemas de comunicação e cultura entre as equipes que estão geograficamente distribuídas. Na tentativa de minimizar estes problemas é possível notar em [Hogan 2000], a importância do uso de ferramentas, tais como programas de mensagens instantâneas, voz sobre IP e vídeo documentação, no intuito de agilizar a comunicação; já para estreitar os laços culturais, foram criados embaixadores que realizavam intercâmbios entre as equipes.

O Source Forge é um exemplo de espaço compartilhado em projetos Open Source, sendo este o maior site mundial de hospedagem, com o objetivo de valorizar a comunidade oferecendo vários serviços e ferramentas web para o desenvolvimento colaborativo de sistema, suporte ao gerenciamento de projetos e downloads, manipulação de conteúdo, banco de dados, controle de versões e mecanismos de hospedagem e divulgação [Parreiras, Silva, Bastos e Brandão 2004].

Observando as diversas áreas da Engenharia de Software é possível estabelecer uma relação com o Open Source, considerando os seguintes pontos:

  • Gerência de Projetos: Esta área já vem sofrendo modificações nas empresas que realizam projetos distribuídos, pois elas têm de compartilhar os seus recursos entre os projetos e garantir a entrega de um produto no menor tempo possível, dentro das especificações técnicas e orçamentos esperados para garantir a satisfação do cliente. Como os recursos são limitados, a indústria utiliza técnicas, tal como, a corrente crítica, de forma a não prejudicar o tempo de desenvolvimento do projeto [Quelhas e Barcaui 2005]. Entretanto, técnica como a citada anteriormente é colocada em cheque no Open Source, pois há uma abundância de recursos voluntários, dificultando a gestão tradicional (baseada em comandos e hierarquia) [Soares 2002]. Outro ponto delicado na gestão de um projeto Open Source é no caso dos integrantes da comunidade não aprovarem as decisões tomadas e criarem uma nova comunidade a partir dos códigos fontes já desenvolvidos.
  • Teste: Esta área, conceitualmente, tem o objetivo de avaliar se o software se comporta conforme a sua especificação, isto é, através de uma execução controlada. Como o software possui características que possibilitam mudanças, aumento de complexidade e intangibilidade, testar torna-se um processo caro e não trivial [Crespo, Silva, Borges e etc 2004]. Porém, nos projetos Open Souce, geralmente, existem menos defeitos que os proprietários e o tempo entre identificar o defeito e repará-los são mais rápidos, ajudando no crescimento da confiabilidade nos projetos [Paulson, Succi e Eberlein 2004].

    Requisitos: A Engenharia de Requisitos é uma área da Engenharia de Software focada em analisar e documentar os requisitos, incluindo análise de necessidades e especificação de requisitos. Para isto, são fornecidos mecanismos que facilitam as atividades relacionadas [Lopes, Majdenbaum e Audy 2003] No Open Source, as etapas de elicitação, análise, especificação, validação e comunicação dos requisitos são feitos de maneira informal e sem suporte de notações especificas ou documentação formal. Apesar desta informalidade, os membros da comunidade ao utilizar e-mail, sites, fóruns e diretórios compartilhados de código fonte podem facilmente conhecer as exigências do projeto.


Colaborações de projetos open source em processo de desenvolvimento de software

Um processo de desenvolvimento de software se caracteriza por um conjunto de atividades necessárias para criação eficaz de um programa. [Pressman 2004]

Pode-se observar que as comunidades de software livre vivem com processo de desenvolvimento de software bastante simples, com poucas ferramentas, pouca documentação, sem muita preocupação com questões de usabilidade de interface e sem muito formalismo da etapa de testes de sistemas. Segundo [Reis 2004] alguns projetos nem possuem plano de teste.

[Herbsleb e Grinter 1999] terminou o seu artigo com a seguinte pergunta "Se o desenvolvimento distribuído é tão difícil, como é que projetos open source têm êxito, dada a relativa simplicidade do seu processo e das suas ferramentas?" [Barnett 2004] mostra (veja a tabela abaixo) uma comparação entre as fases de um ciclo de desenvolvimento de software de um processo tradicional e de um open source.

Tabela:. Comparação entre processo tradicional e open source.


Tradicional

Open source

Documentação

A documentação significa controle de qualidade e ferramenta para gerência de projeto [Barnett 2004].

Na maioria dos projetos a documentação é escassa devido ao código fonte ser aberto e rico em comentários [Reis, Silva e Fortes 2004].

Requisitos

O analista de negócio transcreve a necessidade do usuário dentro do documento de requisito.

Normalmente os usuários são os desenvolvedores do software [Silveira, S.,(2004)].

Alocação de Pessoas

Os desenvolvedores estão alocados a um único projeto.

Os desenvolvedores estão alocados a projetos distintos com diferentes níveis de envolvimento.

Revisão em par

É aceita, porém não é largamente utilizada.

É uma necessidade e praticada quase de forma universal.

Planejamento dos Releases

Número grande de requisitos e

poucos releases.

Releases muito freqüentes. [Raymond 2000]

Qualidade/Teste

Existe formalismo nesta etapa. O teste de sistema é planejado e executado antes do release formal.

As auditorias de qualidade são feitas durante todo o processo de desenvolvimento de software na maioria dos todos os artefatos gerados.

Diferente do senso comum, não são realizadas muitas atividades de garantia de qualidade ao longo do desenvolvimento. Por exemplo, executar testes periódicos, possuir um plano de testes, um processo de revisão ou regras para integração de alterações no código.

A disponibilização do código publicamente, por meio de
releases alpha, beta e release candidates, visando a execução de testes pelo usuário final, é a principal atividade executada para garantir qualidade.

Distribuição do Trabalho

Diferentes partes do código são atribuídas para diferentes pessoas.

Qualquer pessoa pode modificar qualquer parte do código, porém apenas os
"committers" podem fazer as modificações oficiais.


[Barnett 2004] menciona no seu artigo algumas atividades de um processo open source que podem ser aplicadas a ambientes coorporativos a fim que possam ajudar a produtividade e qualidade dos produtos. É possível exemplificar as seguintes tarefas:

  • Envolvimento do usuário durante todas as fases do desenvolvimento do software. Nos projetos open source normalmente o desenvolver é também o usuário; Este tipo de situação facilita esclarecimento de dúvidas, antecipando correção de especificação.

  • Staffing Model; Os desenvolvedores open source normalmente trabalham em mais de um projeto ao mesmo tempo, apesar de estar mais envolvido em um do que nos outros.
  • Aumentar a transparência do andamento do trabalho para as pessoas que não fazem parte do projeto. Aumentando a transparência pode-se aumentar a responsabilidade e produtividade dos participantes, visto que o trabalho gerado fica disponível para toda comunidade validar.
  • Recrutar alguns usuários para teste beta da aplicação
    para que seja possível detectar erros antes do release oficial.
  • Adoção de processos ágeis, "Release early. Release often and listen to your customers." [Raymond 2000]. Liberando pacotes pequenos do software de forma rápida, é possível validar juntamente com o cliente o que está sendo desenvolvido evitando re-trabalho desnecessário.

A partir destes exemplos, podemos perceber que existem aspectos positivos do processo de desenvolvimento de software livre e se aplicados em um processo tradicional teremos ganhos de qualidade, produtividade e conseqüentemente redução dos custos do projeto.

No próximo post abordaremos o Open Source e seus efeitos na economia.

Referências:

Beline, W., Menta, E., Salvi, R., (2005) "EAD no mundo Open Source: construindo conhecimento com liberdade", II Secomp - Semana de Computação da Universidade Estadual de Londrina, v. 1, p. 1-10

Hogan, B.(2006) "Lessons learned from an extremely distributed project, IEEE Computer Society", agile , pp. 321-326

Parreiras, F., Silva, A., Bastos, J., Brandão, W. "Informação e cooperação nas comunidades de desenvolvimento de software livre: um panorama do cenário

brasileiro". In: CINFORM, Salvador. Anais. Salvador: UFBA

Soares, M. (2002) "O Processo e a (Des)organização da Produção de Software Livre"In: CONGRESSO BRASILEIRO DE COMPUTAÇÃO, Itajaí-SC. Univali

Crespo, A. Silva, O. Borges, C. Salviano, C. Argollo Junior, M. Jino, M., (2004)" Uma Metodologia para Teste de Software no Contexto da Melhoria de Processo.", III

Simpósio Brasileiro de Qualidade de Software, v. 3. p. 271-285

Paulson, J., Succi, G. Eberlein, A. (2004) "An Empirical Study of Open-Source and Closed-Source Software Products", IEEE Computer Society

Lopes, L.; Majdenbaum, A.; Audy, J.(2003) "Uma proposta para processo de requisitos em ambientes de desenvolvimento distribuído de software.", In: WER'03 – Workshop em Engenharia de Requisitos – SBC, Anais do WER'03, v. 1. p. 78-92

Pressman, R. (2004) "Engenharia de Software". 5ª Edição. McGraw-Hill Interamericana do Brasil

Reis, C., Silva, M., Fortes, R., (2004) "Levantamento sobre processo de Software Livre".

Barnett, L., (2004) "Applying Open Source Process in Corporate Development Organizations".

Silveira, S., (2004). "Software Livre – A luta pela liberdade de conhecimento". Editora Fundação Perseu – (Coleção Brasil Urgente).

Raymond, E., (2000). "The Cathedral and the Bazaar". Available at http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/

Barnett, L., (2004) "Applying Open Source Process in Corporate Development Organizations".


Créditos desse estudo também se devem aos meus colegas:
Ana Carina M. Almeida, Cleyton C. da Trindade e Marcio M. de Souza