• Nenhum resultado encontrado

De forma geral, o desenvolvimento de software é um processo de criação de programas para quaisquer dispositivos computacionais, capaz de projetar e produzir tarefas automa- tizadas, sistematizadas ou pré-concebidas, para realização de alguma atividade por meio do uso dos recursos de hardware e software existentes.

SegundoPressman(1995), nos últimos 50 anos, o software evoluiu. Passou de um ferramental especializado em solução de problemas e análise de informações para um produto de indústria. Isso porque, com o surgimento da Engenharia de Software, foi possível focar na melhora da qualidade e aumento da produtividade no processo de desenvolvimento de software.

De acordo comBrookshear(2000), o ciclo de desenvolvimento de software clássico compreende as fases de análise, projeto, implementação e teste. Tais modelos, conforme expõeBourque and Dupuis(2004), servem como uma definição genérica das fases que acontecem durante o desenvolvimento de software. Estes modelos são utilizados para descrever as atividades e as formas como elas se relacionam, fornecendo uma visão geral do projeto a equipe de desenvolvimento, porém esses modelos não apresentam definições detalhadas.

3.1. DESENVOLVIMENTO DE APLICATIVOS PARA CELULAR

através de uma série de ondas e tendências. A primeira onda foi caracterizada pelo modelo de ciclo de vida representado pelo modelo cascata e pelos métodos estruturados. A segunda onda é o movimento de maturidade do processo, ou seja, abrange todos os aspectos do processo de desenvolvimento de software e atividades de suporte. A terceira onda, segundoFernandes(2007) apudBergey et al.(1998), impulsionada pelo amadurec- imento do paradigma da orientação a objetos, trás a evolução do desenvolvimento de software para linhas de produção.

Figura 3.1 Camadas da Engenharia de Software (Pressman(1995)).

Conforme Pressman(1995), a Engenharia de Software (ES) é uma tecnologia em camadas (Figura3.1). E a base de todas essas camadas é o foco na qualidade do software desenvolvido. Assim sendo, é interessante estudarmos a ES em suas camadas de Processo, Métodos e Ferramentas.

Este trabalho aborda a problemática com ênfase na camada de Ferramentas, razão pela qual, o desenvolvimento de software para celular é fortemente impactado.

O processo de desenvolvimento de sofware para celular, portanto, tende a ser bastante influenciado pelas escolhas das tecnologias utilizadas, desde a Plataforma de Software de Celular (PSC) e dos seus dispositivos-alvos, conforme abordado no capítulo anterior (Seção2.5), bem como, de ferramentas de desenvolvimento utilizando tecnologias das Plataformas de Desenvolvimento de Celular (PDC).

Essencialmente, uma PDC é uma solução tecnológica para garantir compatibilidades para implementações de software nas PSC (ex. Java ME, Seção 2.3.6). Embora, de maneira geral, portar aplicativos para outras PSC é um processo custosoTarnacha and Maitland(2006);Kurkovsky(2009);Loureiro et al.(2003).

Neste trabalho, adotamos as seguintes nomenclaturas para diferenciar as tecnologias de celular, ilustradas pela Tabela3.1a seguir:

A combinação de pelos menos uma de cada tecnologia citada são necessárias para desenvolver aplicativos em celulares . No entanto, as PDCs não devem ser confundidas com as IDEs (Integrated Development Environments), e os SDK (Software Development

3.1. DESENVOLVIMENTO DE APLICATIVOS PARA CELULAR

Tabela 3.1 Tecnologias de Desenvolvimento de Software para Celular

Sigla Tecnologia Exemplos

IDE Ambiente de Eclipse, NetBeans,

Desenvolvimento Integrado Visual Studio.NET, Motodev Studio SDK Kit de Desenvolvimento Sun Wireless Toolkit,

de Software (emuladores) Openwave, S60 SDK

PSC Plataforma de Software Symbian, Android, Windows Mobile de Celular iPhone, Linux, BREW

PDC Plataforma de Java ME,

Desenvolvimento de Software Flash Lite

Kits), popularmente conhecidos como emuladores de celular.

O desenvolvimento de aplicativos para as PSC podem ser divididos de três diferentes formas, segundoMorimoto(2009):

• aplicações nativas: aplicações voltadas exclusivamente para a PSC;

• aplicações intermediárias: voltada para PDC;

• aplicaçoes Web (widgets): rodam dentro dos navegadores web dos dispositivos.

Os aplicativos nativos, são tecnicamente mais complexos de desenvolver, e são dependentes da tecnologia da PSC. Por exemplo, aplicações nativas de Symbian devem usar a linguagem Symbian C++, e o seu conjunto de bibliotecas disponíveis. Em geral, a vantagem é que todos os recursos do celular podem ser utilizados sem quaisquer restrições. Porém, a principal desvantagem recai sobre a curva de aprendizado das PSC específicas, bem como, a dificuldade de portabilidade futura.

As aplicações intermediários são voltados para as PDC, propondo melhorar a portabil- idade e compatibilidade das aplicações desenvolvidas nas diferentes PSC. Por outro lado, existem dificuldades para acessar todos os recursos do dispositivo, uma vez que cada fabricante oferece uma implementação de suporte para a PDC, sensivelmente diferentes ou específicas para um conjunto de hardware de seu portfólio. Isso acaba por restringir as possibilidades que um aplicativo poderia explorar, diante das aplicações nativas. O maior benefício deve-se à boa curva de aprendizado por parte dos desenvolvedores.

De acordo comMorimoto(2009), as limitações dos navegadores e o tamanho das telas fazem com que a maior parte dos aplicativos intermediários fiquem inutilizáveis. Ou seja, alguns tipos de aplicações como Gmail continuam acessíveis, enquanto que serviços como Google Talk, não.

3.1. DESENVOLVIMENTO DE APLICATIVOS PARA CELULAR

Já os software que rodam dentro de navegadores (web), são conhecidos como widgets, e podem incluir serviços como Gmail, Meebo1, entre outras, e são voltados para as PSC. Alguns exemplos bastante utilizados são widgets para iPhone e Opera Widgets2.

Os widgets são, em geral, aplicativos simples, que exibem algumas informações específicas. Alguns widgets, embora rodem dentro do navegador, substituem as funções e até mesmo, a aparência de aplicativos nativos, mas não permitem ir muito longe em termos de programação. A principal vantagem é a portabilidade, pois basta o celular ter um navegador compatível. Porém, será necessário conexão com a internet, pois os widgets são projetados para interações com serviços na web. De forma geral, para tarefas mais complexas, a melhor opção, segundoMorimoto(2009), é desenvolver um aplicativo nativo.

O desenvolvimento de serviços e aplicações para celular, de acordo comLoureiro et al.

(2003), são baseados em arquiteturas específicas, usando componentes não-reutilizáveis. Em razão disso, faz-se necessário considerar a PSC, o celular-alvo e, ferramentas de desen- volvimento específicas. Além disso, conformeTarnacha and Maitland(2006);Kurkovsky

(2009), por conta da grande variedade de dispositivos, há uma grande diversidade de plataformas e, consequentemente, diferentes ferramentas de desenvolvimento.

O desenvolvimento de uma aplicação para celular, segundoTarnacha and Maitland

(2006);Karvonen and Warsta(2004), possui algumas dependências e representa inúmeros desafios para os desenvolvedores. As dependências técnicas existentes são a principal fonte dos problemas, e estão presentes na cadeia de valor de uma aplicação de celular. Ou seja, tipicamente uma aplicação de celular é restrita para uma combinação específica de PSC, o dispositivo de celular, além da rede da operadora. A Figura 3.2 ilustra as dependências no desenvolvimento de aplicativos e conteúdos, de acordo comTarnacha and Maitland(2006).

Primeiramente, temos várias PDC que são suportadas por diferentes fabricantes de dispositivos e operadoras de celulares. Por exemplo, BREW3é suportado pela operadora Verizon Wireless (EUA) e, nos vários pontos de venda, são comercializadas por diferentes tefelones celulares com BREW habilitado. Não obstante, em segundo lugar, devido ao rápido avanços tecnológicos nas funcionalidades dos aparelhos, versões adicionais de PDC são criadas para inúmeras versões, sendo usadas por diferentes celulares.

Para contornar esse problema, segundo Tarnacha and Maitland (2006), os desen-

1Meebo: um aplicativo para mensagens instantâneas, suportando múltiplos clientes como: Yahoo! Messenger, GTalk, MSN. . .

2http://widgets.opera.com/