Prévia do material em texto
INFORMÁTICA APLICADA A boa gestão de um projeto de aplicação para Web, ou WebApp, é um fator determinante para seu sucesso ou possível fracasso. O projeto de uma WebApp deve ser realizado por meio de uma série organizada de etapas, que são compostas por atividades metodológicas que fornecem as diretrizes (objetivos e metas) necessárias para o desenvolvimento efetivo da aplicação. As aplicações Web tem um caráter mais dinâmico; por isso, seu processo de desenvolvimento deve ser diferenciado, ainda que muitas das técnicas utilizadas nos projetos tradicionais possam ser aplicadas no desenvolvimento de WebApp. Bons Estudos! AULA 8 - PROJETOS DE SOFTWARE PARA WEBAPP Nesta aula, você aprenderá quais são os objetivos de um projeto de WebApp, as características esperadas de uma aplicação Web e os requisitos básicos da adaptação de um modelo tradicional para um modelo de projeto Web. Você também vai verificar quais são e como realizar as etapas do processo de desenvolvimento de uma WebApp e vai analisar como é subdividido um projeto de aplicações Web. Ao final deste desta aula, você será capaz de: • Identificar as necessidades de desenvolvimento de uma WebApp. • Discutir os objetivos de um projeto de WebApp. • Exemplificar o desenvolvimento de uma WebApp. 8 PROJETOS DE SOFTWARE PARA WEBAPP 8.1 Projeto de uma WebApp As aplicações Web, ou WebApp, têm o imediatismo como sua essência; por esse isso, muitos desenvolvedores acreditam que não é necessário colocar esforço a seu planejamento e gerenciamento, deixando as aplicações evoluírem naturalmente. Na verdade, isso funciona para aplicações de pequeno porte, porque seu desenvolvimento é rápido. No entanto, mesmo em aplicações de pequeno porte que pouco se assemelham aos projetos de desenvolvimento tradicionais, você precisa ser capaz de identificar com exatidão quais são as necessidades do projeto, bem como seus riscos. Esse entendimento diminui a possibilidade de falhas no projeto, conforme ensinam os autores Moraes e Werneck (2003) e Pinna e Carvalho (2008). Nesse caso, se o planejamento é indicado para pequenos projetos, ele é essencial para os grandes. A primeira atividade que deve ser realizada no planejamento de uma aplicação Web é responder as perguntas a seguir, conforme orientam Pressman e Maxim (2016). 1. Qual é a motivação da WebApp, ou seja, quais são as necessidades do negócio? 2. Quais são os objetivos que devem ser atendidos pela WebApp? 3. Quem vai usar a WebApp? Para o sucesso, você deve encontrar respostas simples e sucintas para essas questões; a partir delas, você pode especificar os objetivos para o projeto de sua aplicação Web. Geralmente, os objetivos são especificados em dois grupos, como apontam Moraes e Werneck (2003), Pinna e Carvalho (2008) e Pressman e Maxim (2016): 1. metas informacionais, cuja finalidade é o fornecimento de conteúdo específico ou informações ao usuário final; 2. metas aplicativas, cuja intenção é a realização de alguma tarefa dentro da WebApp. Uma vez que as metas tenham sido estabelecidas, você pode definir o perfil de seus usuários. Após ser definido o perfil, você poderá levantar quais são as características mais relevantes para o atendimento das expectativas do usuário da sua WebApp. 8.2 Levantamento de requisitos para aplicações Web Diversas técnicas de levantamento de requisitos da engenharia de software — aplicadas no desenvolvimento de aplicações tradicionais — podem ser 2 Projeto de software para WebApp também aplicadas no desenvolvimento de WebApp. Para isso, basta que os seus objetivos sejam adaptados, conforme apontam Pressman e Maxim (2016), passando a ser os seguintes: • Identificar requisitos de conteúdo; • Identificar requisitos funcionais; • Definir os cenários de interação para diferentes classes de usuários. A obtenção dos requisitos para a aplicação Web pode ser conduzida da seguinte forma: 1. Solicite aos interessados para definirem as categorias de usuários e desenvolverem descrições de cada uma delas. 2. Procure manter uma comunicação ativa com os interessados, para definir quais serão os requisitos básicos da WebApp. 3. Analise a informação coletada e a utilize para realizar conferências com os interessados. 4. Defina os casos de uso, que vão descrever os cenários de interação para cada uma das categorias de usuários Com relação às categorias de usuários, podemos dizer que a complexidade de uma WebApp é diretamente proporcional ao número de categorias de usuários que ela possuirá. Assim como ocorre no início do planejamento da aplicação, para a definição das categorias de usuários que vão interagir com a WebApp, uma série de questões deve ser respondida, conforme orientam Pressman e Maxim (2016). • Qual é o objetivo global do usuário quando ele utiliza a WebApp? A forma mais simples de entender essa questão é exemplificando-a. Imagine que você esteja desenvolvendo um e-commerce. Nesse tipo de sistema, alguns usuários podem querer realizar uma comparação de preços, outros podem desejar visualizar um produto específico, outros podem estar montando uma lista de produtos para a compra. Cada grupo de usuários terá uma necessidade diferente ao navegar pela aplicação. • Qual é o conhecimento e a sofisticação do usuário em relação ao conteúdo e à funcionalidade da WebApp? Caso seja um usuário com conhecimento e sofisticação avançados, então, conteúdo e funcionalidades elementares trarão pouco benefício para ele. Contudo, para um usuário novato, conteúdos e elementos sofisticados podem causar confusão durante a navegação. • Como o usuário chegará até a WebApp? A chegada do usuário ocorrerá de uma forma controlada ou por meio de outra aplicação Web? Entender como o usuário chegará ajuda a definir as regras de navegação. • Quais são as características genéricas da WebApp que poderiam agradar/desagradar ao usuário? Diferentes tipos de usuários têm gostos distintos, mas previsíveis. Assim sendo, é válido buscar determinar o que os usuários gostam ou não. Em alguns casos, esse gosto pode ser determinado perguntando-se ao usuário quais são as WebApp que ele mais gosta e as que menos gosta. Utilizando as respostas obtidas, você deve definir o menor conjunto razoável de classes de usuários. Tendo sido realizada a primeira atividade da coleta de requisitos, pode-se, então, seguir para a próxima, que é a comunicação com os interessados e usuários finais. A maior parte das WebApp tem muitos usuários finais, o que poderia ser um problema se não fossem criadas classes de usuários, que levam em consideração os requisitos mais gerenciáveis. Entretanto, não é aconselhável que se escolha um número muito pequeno de pessoas para a formulação da análise. Nesse ponto do levantamento de requisitos, você pode refinar ou compreender melhor os requisitos já adquiridos por meio de outras técnicas. O processo de comunicação pode ser realizado utilizando-se uma das técnicas elencadas a seguir, conforme lecionam Pressman e Maxim (2016). • Grupos focais tradicionais — nessa técnica, um moderador se reúne com um pequeno grupo de usuários ou interessados no sistema. O objetivo é discutir a WebApp e melhorar o entendimento em relação a seus requisitos. • Grupos focais eletrônicos — semelhante à técnica de grupos focais tradicionais, nesta, os grupos podem ser maiores, e as tecnologias aplicadas geralmente são chats e fóruns. • Levantamentos iterativos — consistem em uma série de levantamentos resumidos e voltados para os usuários e interessados pela WebApp. Apresentam-se em forma de perguntas que conduzem a respostas relacionadas à aplicação Web. • Levantamentos exploratórios — são baseados na Web e estão ligados a uma ou mais WebApp que possuem usuários semelhantes aos que utilizarão a WebApp em desenvolvimento. Nessa técnica, os usuáriosse conectam ao levantamento e respondem a diversas questões. • Construção de cenário — nessa técnica, alguns usuários são selecionados para a criação de casos de uso informais, capazes de fornecer alguma descrição sobre partes específicas da WebApp. Tendo sido concluídos os dois primeiros passos para obtenção dos requisitos, segue-se, então, para a análise da informação coletada. À medida que a informação é coletada, você deve categorizá-la por classe de usuário e tipo de transação; depois, ela deve ser avaliada quanto à sua relevância. Aqui, o objetivo é o desenvolvimento de listas de objetos de conteúdo, operações aplicadas dentro desses objetos em uma transação de usuário específica, funções fornecidas pelas WebApp e outros requisitos não funcionais. Como último passo do processo de coleta de requisitos para uma WebApp, desenvolvem-se os casos de uso. Os casos de uso deverão descrever como uma categoria de usuários vai interagir com a aplicação Web ao realizar uma operação específica (Figura 1). Você não pode esquecer que os casos de uso devem descrever a interação sob o ponto de vista do usuário. Figura 1 – Exemplo de caso de uso de um WebApp Fonte: Adaptado de Pressman e Maxim (2016). O desenvolvimento dos casos de uso pode ser uma tarefa relativamente demorada. Entretanto, os casos de uso são extremamente úteis para: • Ajudar o desenvolvedor a entender como seus usuários perceberão sua interação com a WebApp; • Fornecer os detalhes necessários para que seja possível criar um modelo de análise efetivo; • Proporcionar a compartimentalização do trabalho de engenharia para Web; e • Fornecer diretrizes muito importantes para os que vão testar a WebApp. 8.3 Objetivos de um projeto de WebApp Até agora, foram apresentados alguns passos para iniciar o projeto de uma WebApp. Porém, uma WebApp vai muito além do levantamento de requisitos. Em um projeto de WebApp, também é necessário realizar atividades como análise e modelagem. Algumas características são extremamente importantes e devem ser observadas nesse tipo de aplicação, independentemente do seu tamanho e sua complexidade. Seja qual for o projeto Web que está sendo desenvolvido, as características a seguir serão desejáveis, pois representam os objetivos genéricos de um WebApp, conforme lecionam Moraes e Werneck (2003) e Pressman e Maxim (2016): • Simplicidade: entenda que uma aplicação deve fazer uso moderado de qualquer um de seus recursos, como conteúdo, aspectos visuais, animações, etc. • Consistência: é um objetivo aplicável a qualquer elemento do projeto. O conteúdo deve ser construído com consistência, o design gráfico deve apresentar aspectos semelhantes em todas as partes da aplicação Web, e assim por diante. • Identidade: o design, isto é, a apresentação gráfica de uma aplicação Web deve ser coerente com o domínio da aplicação para a qual está sendo desenvolvida. Uma aplicação de e-commerce certamente terá aspectos diferentes de uma aplicação de e-learning. • Robustez: você deve entender que o usuário espera que o conteúdo da WebApp seja robusto e relevante às suas necessidades. Caso os elementos estejam faltando, ou seja, sejam insuficientes, então, é provável que a WebApp fracasse. • Navegabilidade: a navegação deve ser projetada para ser intuitiva e previsível. Isso significa que o usuário deve saber navegar pela WebApp sem ter que buscar links ou instruções de navegação. • Apelo visual: de todas as categorias de software possíveis, as aplicações Web são inquestionavelmente as mais visuais, dinâmicas e estéticas. Contudo, a beleza de uma WebApp é algo que varia de acordo com a ótica de quem vê; sendo assim, o indicado é o equilíbrio entre os componentes. • Compatibilidade: uma aplicação Web deve ser utilizada em uma variedade de ambientes e deve ser projetada para ser executada perfeitamente em cada um deles. Então, para que os objetivos sejam alcançados, existe uma série de atividades a serem executadas. Ou seja, você precisa realizar um projeto para cada uma das etapas de construção da WebApp, e cada um dos projetos (microprojetos) tem suas próprias características, seus desafios e suas necessidades. 8.4 Desenvolvimento de um projeto de WebApp Para conduzir o desenvolvimento de uma aplicação Web, deve-se realizar os seguintes projetos (ou microprojetos): projeto de interface, projeto estético, projeto de conteúdo, projeto de navegação, projeto de arquitetura e projeto de componente. 8.4.1 Projeto de interface Um dos maiores desafios de um projeto de interface é determinar o ponto de entrada do usuário, ou seja, de onde virá o usuário. Segundo Pressman e Maxim (2016), os objetivos de um projeto de interface são: • Estabelecer uma janela para o conteúdo e a funcionalidade fornecidos pela interface; • Guiar o usuário com uma série de interações com a WebApp; • Organizar as opções de navegação e conteúdo disponíveis para o usuário. 8.4.2 Projeto estético Também chamado de projeto gráfico, trata-se do esforço artístico que complementa os aspectos técnicos do projeto. Com o projeto estético, você deve atrair o usuário para um mundo que envolve elementos físicos e intelectuais. Para desenvolver um projeto estético de qualidade, assuma-o como um requisito, tentando responder a seguinte pergunta: “qual é o visual que os usuários desejam? ”. Segundo Pressman e Maxim (2016), um projeto estético envolve também questões relacionadas ao layout e ao design gráfico, questões muito importantes de serem observadas. Em relação ao leiaute, procure dar ênfase ao conteúdo de sua aplicação, e não aos demais elementos. Procure organizar os elementos da parte superior esquerda para a parte inferior direita, uma vez que as pessoas costumam observar a página assim como leem um livro. Deve-se também agrupar os conteúdos, a navegação e as funções geograficamente dentro de uma página, pois é costume do ser humano buscar por padrões. Evite barras de rolagem — apesar de muitas vezes necessárias, as pessoas ainda preferem abrir uma nova página a utilizar barras de rolagem. Além disso, considere a resolução do dispositivo do seu usuário quando estiver desenvolvendo o seu leiaute, mesmo se estiver desenvolvendo uma página que seja responsiva. Quanto ao design gráfico, leve em consideração a combinação entre as cores, os estilos e os tamanhos do texto, a tipografia e o uso de mídias complementares. Não se esqueça de que tudo deve ser feito com moderação e considere, acima de tudo, o propósito da aplicação. 8.4.3 Projeto de conteúdo Um projeto de conteúdo aborda duas tarefas diferentes de projeto, devendo cada uma delas ser realizada por indivíduos distintos, com habilidades distintas. Primeiro, desenvolve-se uma representação de projeto para objetos de conteúdo e os mecanismos necessários para estabelecer suas relações. Em seguida, criam-se as informações para um objeto de conteúdo específico. No contexto de projetos de WebApp, um objeto de conteúdo possui grande consonância com os objetos de dados de um projeto de software tradicional. Objetos de conteúdo possuem atributos que incluem informações específicas do conteúdo e conteúdo de implementação exclusivo, específico, como parte do seu projeto. Os objetos de conteúdo podem ser representados por diagramas de linguagem de modelagem unificada (UML, do inglês unified modeling language), conforme lecionam Cockburn (2008) e Fowler (2004). Após serem concluídos, todos os objetos de conteúdo devem passar pelos processos de autoria e formatação. A tarefa de autoria consiste na inserção de resumos sobre as informações que estão sendo entregues e sobre os tipos de objetos de conteúdo genéricos utilizados para transmiti-las. 8.4.4 Projeto de arquitetura O projeto de arquitetura está diretamente relacionado aos objetivos estabelecidos para uma WebApp,ao conteúdo que deve ser apresentado, aos usuários que vão visitar a página e à filosofia de navegação que será estabelecida. O projeto de arquitetura do conteúdo tem seu foco na arquitetura geral da hipermídia da WebApp e, embora possa apresentar estruturas personalizadas, as mais comuns são as lineares, a grade, a hierárquica e a estrela. A primeira pode ser subdividida em linear, linear com fluxo opcional e linear com desvios. Um resumo de cada uma dessas arquiteturas pode ser observado no Quadro 1. Quadro 1 – Tipos de Arquitetura de conteúdo Estrutura Característica Esquema gráfico Linear Utilizada quando se pode determinar uma sequência previsível de passos a serem realizados pelo usuário. Um bom exemplo são tutoriais on-line Linear com fluxo opcional Neste caso, o usuário poderá seguir por um fluxo opcional, não obrigatoriamente pelo fluxo predeterminado, como ocorre no caso anterior Linear com desvios Diferentemente da estrutura anterior, os fluxos alternativos ocorrem não (diretamente) por opção do usuário, mas, sim, como consequência de alguma ação por ele realizada. Grade Neste caso, o conteúdo pode ser organizado por categorias com duas ou mais dimensões. É muito utilizada em e-commerce Hierárquica É a estrutura mais comumente utilizada, pois permite que o usuário navegue de forma totalmente orientada, aprofundando-se, sempre que necessário, na arquitetura e retornando à página anterior, quando necessário. Em estrela Os objetos de conteúdo deste tipo de arquitetura são projetados de forma que possam passar o controle para qualquer outro objeto, a qualquer momento. É similar à arquitetura de uma aplicação orientada a objetos. Fonte: Adaptado de Pressman e Maxim (2006) 8.4.5 Projeto de navegação Uma vez que a arquitetura da WebApp está estabelecida, com todos os seus componentes identificados e desenvolvidos, deve-se, então, definir quais serão os percursos de navegação que permitirão que o usuário chegue a uma determinada informação. Isso é feito identificando-se qual será a semântica de navegação para os diferentes grupos de usuários da WebApp, bem como definindo-se a mecânica para obtenção da navegação. Assim como em diversas outras partes do projeto, essa etapa se inicia com a definição da hierarquia dos usuários e dos casos de uso relativos, que permitam ilustrar as diferentes necessidades de navegação de cada grupo de usuários (que podem ser representados por um ator, em um diagrama de casos de uso). À medida que um usuário interage com uma WebApp, surge uma série de novas unidades semânticas de navegação (NSU, do inglês navigation semantic unit), que são conjuntos de informações estruturadas de navegação e que colaboram para o cumprimento de um subconjunto de requisitos do usuário, conforme apontam Kalbach (2009) e Pressman e Maxim (2016). Os elementos que compõem uma NSU são chamados de modos de navegação (WoN, do inglês way of navigation) e representam o melhor percurso de navegação para que se possa atingir uma determinada meta de um usuário específico. Os WoN, por sua vez, são compostos de objetos conhecidos como nós de navegação (navigational nodes), que são interligados por links de navegação, segundo Kalbach (2009) e Pressman e Maxim (2016). À medida que se prossegue com o projeto, é preciso também definir qual será a mecânica de navegação. Essa é uma atividade que envolve a utilização de links, menus, barras, botões, imagens clicáveis e diversos outros recursos capazes de orientar a navegação do usuário pela WebApp. 8.4.6 Projeto em nível de componentes • Conforme afirmam Pressman e Maxim (2016), as WebApp modernas oferecem funções de processamento que são cada vez mais sofisticadas, sendo capazes de: Executar processamento localizado, capaz de gerar recursos de navegação e conteúdo de forma dinâmica; • Fornecer recursos de cálculo ou processamento de dados apropriados para o campo de aplicação da WebApp; • Fornecer consultas sofisticadas e acesso a banco de dados; • Etabelecer interfaces de dados com sistemas corporativos externos. Para alcançar essas capacidades, você precisa projetar e construir componentes de programas que sejam idênticos, em sua forma, aos componentes para softwares tradicionais. Nesta aula, foram apresentadas diversas informações importantes relacionadas ao projeto de aplicações para Web, ou WebApp O conteúdo aqui apresentado permite que você seja capaz de desenvolver aplicações de qualidade, pautadas nos princípios da engenharia de software para Web, reduzindo significativamente as possibilidades de falhas e fracassos de um projeto e aumentando a qualidade de seu produto e a satisfação de seus usuários. Combinando o conhecimento adquirido neste capítulo com as leituras indicadas, as atividades propostas e demais conhecimentos adquiridos ao longo de sua vida acadêmica, certamente você se tornará um grande profissional da área de engenharia de desenvolvimento de WebApp. REFERÊNCIAS BIBLIOGRÁFICA COCKBURN, A. Escrevendo casos de usos eficazes: um guia prático para desenvolvedores de software. Porto Alegre: Bookman, 2008. FOWLER, M. UML essencial: um breve guia para a linguagem-padrão de modelagem de objetos. 3. ed. Porto Alegre: Bookman, 2004. KALBACH, J. Design de navegação Web: otimizando a experiência do usuário. Porto Alegre: Bookman, 2009. MORAES, E. A.; WERNECK, V. M. B. Uma abordagem de avaliação de qualidade de aplicações Web. Cadernos do IME, v. 14, p. 71–78, 2003. PINNA, C. C. A.; CARVALHO, M. M. Gestão de escopo em projeto de aplicações web. Revista Produção Online, v. 8, n. 1, 2008. PRESSMAN, R. S.; MAXIM, B. R. Engenharia de software: uma abordagem profissional. 8. ed. Porto Alegre: AMGH, 2016