Você está na página 1de 51

Engenharia para a Web

Fabricio Breve Universidade Federal de So Carlos UFSCar So Carlos Junho de 2002 Projeto e Gerncia de Sistemas de Software Professoras: Sandra / Rosngela / Jnia

Tpicos
A Evoluo da Web Engenharia para a Web Caractersticas de Aplicativos para a Web Modelo de Processo Formulao Anlise Projeto
Projeto de Arquitetura Projeto de Navegao Projeto de Interface

Testes Gerenciamento
A equipe de desenvolvimento Gerenciamento de Projeto Gerenciamento de Configurao

Concluso

A Evoluo da Web
Tempo levado para chegar a 30% da populao americana (em anos)

Telefone Rdio Televiso Videocassete Computador Internet 4 20 19 26 35

40

No incio:
Contedo esttico e textual Interao limitada Navegabilidade fcil Desempenho no era essencial Sites desenvolvidos apenas por uma pessoa ou por um pequeno grupo

Atualmente:
Escopo e complexidade vm aumentando Sons, imagens, animaes, etc. Navegabilidade complexa Desempenho essencial

Alguns dados...
84% dos sistemas entregues no atendem as necessidades do cliente 79% dos projetos sofrem com atrasos 63% tem custo maior que o previsto 50% dos sistemas prontos tem problemas: so de baixa qualidade e faltam funcionalidades necessrias

O cenrio atual
Sites feitos com pouca disciplina, sem preocupao com tcnicas e mtodos padronizados ou maneiras de controlar a qualidade Muitos desenvolvedores acham que o desenvolvimento para a Web apenas criao de pginas usando HTML, Frontpage ou Dreamweaver Muitos livros e revistas tambm tratam o desenvolvimento para a Web desta maneira

Engenharia para a Web


Processo utilizado para criar aplicativos Web de alta qualidade No igual a Engenharia de Software tradicional, mas compartilham muitos conceitos e princpios fundamentais Incorpora novas abordagens, metodologias, ferramentas, tcnicas e normas para atender os requisitos exclusivos dos sistemas para a Web Desenvolvimento para a Web uma mistura de publicaes impressas e desenvolvimento de software, entre marketing e computao, entre comunicaes internas e relaes externas, e entre arte e tecnologia

reas envolvidas:
anlise de sistemas e projetos engenharia de software engenharia de hipermdia e hipertexto engenharia de requisitos interao humano-computador desenvolvimento de interface de usurio engenharia de informao indexao e recuperao de informaes teste modelagem e simulao gerenciamento de projetos projeto grfico e apresentao

Caractersticas de Aplicativos Web


Uso intenso de recursos de rede Dirigido a contedo Evoluo contnua

Analogia da ponte

Analogia do jardim

Desenvolvimento para a Web X Desenvolvimento tradicional


Imediatismo: o tempo em que um site completo precisa ficar pronto pode ser apenas alguns poucos dias ou semanas Segurana: aplicativos para a Web esto disponveis via rede, difcil ou at mesmo impossvel limitar a populao de usurios que iro acessar o aplicativo Esttica: inegvel que boa parte do apelo dos aplicativos para a Web o seu visual

Tipos de aplicativos Web


Informacional. Contedo apenas para leitura fornecido com navegao simples e links. Download. Um usurio faz o download de informaes dos servidores apropriados Personalizvel. O usurio personaliza o contedo para suas necessidades especficas Interao. Comunicao entre uma comunidade de usurios ocorre em salas de bate-papo, fruns ou mensagens instantneas. Entrada de Usurio. Entradas baseadas em formulrios so os mecanismos primrios para a comunicao necessria. Orientado a transaes. O usurio faz um pedido que atendido pelo aplicativo Orientado a servios. O aplicativo fornece um servio para o usurio. Portal. O aplicativo direciona o usurio para outros contedos ou servios fora do domnio do portal do aplicativo. Acesso a Banco de Dados. O usurio faz uma consulta em um grande banco de dados e extrai informaes. Data warehousing. O usurio consulta uma coleo de grandes bancos de dados e extrai informaes.

Modelo de Processo

Atividades do Modelo de Processo


Formulao: atividade que identifica as metas e objetivos do aplicativo e determina um escopo para o primeiro incremento Planejamento: estima os custos do projeto, avalia riscos associados com o desenvolvimento, e define um cronograma bem definido para o primeiro incremento, e um menos definido para os demais Anlise: so estabelecidos os requisitos tcnicos e identificados os itens de contedo que sero incorporados. Requisitos para projeto grfico (esttica) tambm so definidos.

Atividades do Modelo de Processo


Engenharia:
Projeto de Contedo e Produo: projetar, produzir e/ou obter todos os textos, grficos, contedo de udio e vdeo que sero integrados ao aplicativo.

Atividades do Modelo de Processo


Gerao de Pginas: contedo definido na atividade de engenharia fundido com os projetos de arquitetura, navegao e interface para produzir pginas Teste: tenta descobrir erros em applets, scripts e formulrios; e ajuda a garantir que o aplicativo ir funcionar corretamente em diferentes ambientes Avaliao do Cliente: mudanas so pedidas e sero integradas ao sistema no prximo ciclo do processo incremental.

Problemas que normalmente ocorrem:


Inconsistncia das informaes; Manuteno normalmente utiliza muitos recursos e tempo; Falta de escalabilidade; Necessidade de um visual comum; No incio, requisitos so muito vagos; Os requisitos iro mudar consideravelmente durante o desenvolvimento e especialmente quando o aplicativo j estiver em uso; A tecnologia tambm vem mudando muito rapidamente.

Cenrio atual
Grande parte dos desenvolvedores para a Web no utilizam um processo de desenvolvimento bem definido e documentado Dos poucos que esto utilizando processos bem definidos e documentados, apenas alguns esto utilizando modelos padronizados pela indstria de software Na maioria dos casos o processo se foca na Implementao. Anlise de Requisitos e Projeto normalmente esto combinadas no comeo do projeto, e as atividades de Teste so conduzidas em conjunto com a implementao.

Formulao
As seguintes perguntas devem ser feitas: Qual o principal motivo para desenvolvermos este aplicativo? Por que este aplicativo necessrio? Quem vai usar este aplicativo?

Formulao
As respostas destas perguntas serviro para definir: Metas de informao: Indicam a inteno de fornecer contedo especfico e/ou informao para o usurio Metas de aplicativo: Indicam a habilidade de executar tarefas do aplicativo

Formulao
Quando todas as metas de ambos os tipos forem identificadas, um perfil de usurio desenvolvido Quando todas as metas e perfis de usurios estiverem desenvolvidos, a atividade de formulao ir focar a declarao de escopo do aplicativo para a Web

Anlise
Anlise de Contedo: todo o contedo a ser fornecido pelo aplicativo identificado Anlise de Interao: a maneira pela qual o usurio interage com o aplicativo descrita em detalhes Anlise Funcional: os cenrios de uso criados na anlise de interao iro definir operaes que iro ser utilizadas no aplicativo, que implicam outras funes de processamento Anlise de Configurao: O ambiente e a infraestrutura na qual o aplicado reside so descritos em detalhe

Anlise: cenrio atual


especificao detalhada de requisitos raramente feita argumentao mais comum que a evoluo contnua dos aplicativos para a Web torna os documentos de requisitos obsoletos antes mesmo de completar o desenvolvimento

Projeto
O dilema do projetista: O projeto deve resolver os problemas imediatos preciso criar uma arquitetura que comporte uma evoluo rpida

Elementos tcnicos para um projeto efetivo:


Mtodos e Princpios de Projeto: Modularidade eficiente (alta coeso e baixo acoplamento) e outras heursticas da construo de software devem ser utilizadas tambm para a Web. Pode-se utilizar inclusive os mtodos de projetos para sistemas orientados a objetos, pois a hipermdia define objetos que interagem atravs de um protocolo de comunicao que bem parecido com o utilizado na orientao a objetos. Regras de Ouro (Golden Rules): Sistemas para a Web j vm sendo construdos h uma dcada. Neste tempo, os projetistas desenvolveram um conjunto de heursticas que podem ser reaplicadas durante o projeto de novos aplicativos. Padres de Projetos (Design Patterns): So abordagens genricas utilizadas para resolver problemas genricos que podem ser adaptadas para resolverem uma grande variedade de problemas mais especficos. Modelos (Templates): um modelo pode ser utilizado para fornecer um esqueleto para qualquer tipo de padro de projeto que ser utilizado no aplicativo.

Projeto de Arquitetura
Tem foco na definio da estrutura hipermdia do aplicativo, na aplicao de padres e na construo de modelos (templates) para montar a estrutura e permitir reuso A atividade paralela chamada de Projeto de Contedo, deriva a estrutura geral e o esboo detalhado do contedo que ser apresentado no aplicativo Nesta etapa definida a estrutura que ser utilizada

Estrutura Linear

Estrutura de Grade

Estrutura Hierrquica

Estrutura de Rede (Pure Web)

Projeto de Navegao
Objetivo: definir caminhos que permitam ao usurio acessar contedos e servios identificar as semnticas de navegao para diferentes usurios e definir os mecanismos para realizar a navegao

Tarefas do Projeto de Navegao


Definir tipos de usurios Criar uma unidade semntica de navegao (semantic navigation unit SNU) para cada objetivo associado a cada tipo de usurio
SNU composta de um conjunto de sub-estruturas navegveis que podemos chamar de caminhos (ways of navigating WoN) Cada um desses caminhos representar a melhor maneira de navegar para que um determinado usurio atinja sua meta ou sub-meta.

Escolher como os links sero identificados. Dentre as opes esto: textos, cones, botes, etc

Projeto de Interface
Mtodos utilizados na Engenharia de Software podem ser utilizados, porm so necessrias algumas consideraes adicionais Na Web a interface tem um papel fundamental

Recomendaes para construo de uma boa interface:


Erros no servidor, mesmo os menores, podem fazer com que um usurio deixe o site e procure a informao ou servio que deseja em outro lugar; No se deve forar o usurio a ler grandes quantidades de texto, principalmente se for texto explicando como operar o aplicativo ou navegar por ele; Avisos de Em Construo devem ser evitados, so links desnecessrios que causam uma expectativa do usurio que com certeza ir se desapontar; Usurios no gostam de rolar a tela, informaes importantes devem ser colocadas no topo, de forma que aparea logo que a pgina carregada; Menus e barras de navegao devem ser projetados de forma consistente, e devem estar disponveis em todas as pginas que o usurio ir navegar. No se deve contar com as funcionalidades do browser; Opes de navegao devem ser bvias, mesmo para o usurio casual. O usurio no pode ficar procurando pela tela at encontrar o que deseja.

Consideraes
Pessoas gastam horas clicando em um site para encontrar uma simples informao. Surfar na Web muito mais difcil do que parece. Os usurios (potenciais clientes) esto conseguindo navegar no seu site? Por que os humanos tm que se adaptar a tecnologia? Por que a tecnologia no se adapta aos humanos? Sua empresa no o pblico-alvo. Voc deve escrever seu site em uma linguagem que seus usurios compreendam. Grandes erros continuam acontecendo na Web: links quebrados, cores no padronizadas, URLs que mudam e fazem com que links externos para seu site fiquem quebrados. Na Internet, sobrevive o mais fcil de usar. Se o usurio no consegue achar o produto, ele no ir compr-lo. Ateno com a usabilidade aumenta a porcentagem de visitantes que se tornam clientes.

Testes
Assim como na Engenharia de Software, na Engenharia para a Web as atividades de teste tambm visam encontrar erros Na Web o desafio ainda maior, pois os aplicativos podem ser acessados utilizando diferentes browsers, sistemas operacionais, plataformas de hardware, etc

Testes
O modelo de contedo revisto para descobrir erros O modelo de projeto revisto para descobrir erros de navegao Componentes selecionados passam por um processo de teste de unidade A arquitetura construda e testes de integrao so conduzidos O aplicativo j integrado testado em sua funcionalidade geral e contedo fornecido O aplicativo implementado em diferentes configuraes de ambientes e testado em sua compatibilidade com cada configurao O aplicativo testado por uma populao controlada de usurios

Gerenciamento
Muitos desenvolvedores acabam optando por pouco ou nenhum gerenciamento por causa do curto perodo de desenvolvimento e da constante evoluo de aplicativos para a Web A combinao de tarefas tcnicas e no tcnicas que ocorrem so um desafio para qualquer grupo de profissionais Para evitar confuses, frustraes e falhas, um planejamento precisa ocorrer, riscos precisam ser considerados, um cronograma precisa ser estabelecido e acompanhado, e mecanismos de controle precisam ser definidos

Equipe de Desenvolvimento
Desenvolvedores e Provedores de Contedo: coleta e gerao de contedo, vem de diversas reas no relacionadas com software Web Publisher: organiza contedo, faz a conexo entre o pessoal tcnico que constri o aplicativo e o pessoal no-tcnico que desenvolve o contedo Web Engineer: se envolve em vrias atividades durante o desenvolvimento (levantamento de requisitos; anlise; projeto arquitetural, de navegao e de interface; implementao; e teste)

Equipe de Desenvolvimento
Especialista de Suporte: sero responsveis por dar continuidade no suporte ao aplicativo para a Web, responsvel pelas correes, adaptaes e melhorias no site Administrador (WebMaster): responsvel pela operao do site no dia-a-dia, incluindo desenvolvimento e implementao de regras para operao do aplicativo; fixao de procedimentos de suporte; implementao de procedimentos de segurana e direitos de acesso; medio e anlise de trfego; coordenao de mudanas de procedimentos; coordenao de especialistas de suporte

Equipe de Desenvolvimento
so normalmente menores que as equipes de desenvolvimento de software tradicional no desenvolvimento de software tradicional as equipes so divididas em unidades menores para resolver diferentes problemas e executar diferentes tarefas no desenvolvimento para a Web, as equipes so divididas em grupos multidisciplinares, que construiro diferentes sees do aplicativo para a Web, mas em geral iro trabalhar em problemas similares

Gerenciamento de Projeto
O desenvolvimento de aplicativos para a Web uma rea relativamente nova e h poucos dados histricos que podem ser utilizados para fazer estimativa At agora, nenhum tipo de mtrica foi publicado e ainda h pouca discusso de como devem ser estas mtricas Estimativas so baseadas apenas em experincias com projetos similares Quase todo aplicativo para a Web quer inovar em alguma coisa, isto acaba fazendo com que estimativas baseadas em experincia com outros projetos, apesar de teis, estejam sujeitas a uma alta margem de erro. Grande parte dos aplicativos na Web construda por terceiros, especializados neste tipo de desenvolvimento

Tarefas da empresa contratante:


Muitas das atividades de anlise devem ser feitas internamente, incluindo a definio do pblico-alvo; dos objetivos; das informaes e servios a serem fornecidos; e das medidas quantitativas e qualitativas que sero utilizadas para medir o sucesso. Um esboo do projeto deve ser criado, pois economizar tempo e custo para o desenvolvedor, que ter uma idia melhor de como dever ser o aplicativo. Um esboo do cronograma deve ser definido e acompanhado. Os nveis de interao entre o contratante e o contratado devem ser identificados, incluindo as responsabilidades de cada um.

Gerenciamento de Configurao
estratgias utilizadas na Engenharia de Software so aplicveis, porm tticas e ferramentas devem ser adaptadas para as caractersticas dos aplicativos para a Web

Limitaes a serem consideradas:


Contedo: um aplicativo para a Web tpico possui bastante contedo. O desafio organiz-lo em um conjunto racional de objetos e ento estabelecer mecanismos de controle de configurao apropriados. Pessoas: como o desenvolvimento do aplicativo para a Web contnuo, qualquer pessoa pode criar contedo, muitas delas no tm conhecimentos em engenharia de software e desconhecem as necessidades de gerenciamento de configurao. Escalabilidade: as tcnicas e controles aplicados a aplicativos para a Web pequenos no so bem escalveis, comum ver aplicativos crescendo em tamanho e complexidade, e com isso pequenas mudanas acabam tendo efeitos inesperados e problemticos. Poltica. Quem o dono do aplicativo? Esta questo bastante discutida em grandes e pequenas companhias, e a resposta tem impacto significativo nas atividades de gerenciamento e controle.

Concluso
A maneira desordenada com que a maior parte dos aplicativos para a Web so construdos preocupante, principalmente quando analisamos as pesquisas que mostram que a grande maioria dos sites tem problemas de funcionalidade e/ou usabilidade As tcnicas criadas e j consolidadas na Engenharia de Software podem ser utilizadas e isto uma vantagem. Porm, preciso fazer algumas adaptaes, tendo muito cuidado com todas as caractersticas especficas de sistemas para a Web

Concluso
Infelizmente poucos desenvolvedores utilizam as tcnicas de engenharia, e os poucos que utilizam o fazem de forma restrita ou errnea. Este um problema que tambm ocorre na Engenharia de Software, mas na Engenharia para a Web a incidncia ainda maior Os problemas ocorrem principalmente nas reas de Anlise, Requisitos, Testes, Validao e Manuteno, que so reas importantes que ainda no recebem a ateno necessria, pois a maior parte dos desenvolvedores concentram-se apenas na fase de Implementao

Concluso
Os estudos mostram que o uso de tcnicas de engenharia eficaz e eficiente, portanto os esforos devem ser concentrados nesta adaptao das tcnicas utilizadas na Engenharia de Software, incluindo o desenvolvimento de mtricas e tcnicas para o gerenciamento de projeto. Paralelamente precisa haver um trabalho para conscientizar desenvolvedores da importncia do uso destas tcnicas, mostrando como as mesmas poderiam tornar seu trabalho mais eficiente, trazendo tambm melhores resultados

Referncias Bibliogrficas
[BIE98] BIEBER, Michael. Web Engineering. New Jersey Institute of Technology, 1998. <http://www-ec.njit.edu/~bieber/web-engineering.html> [BRE01] BREVE, Fabricio e WELLER, Daniel. Mtodos de Avaliao para Sites de Entretenimento. Universidade Metodista de Piracicaba, 2001. [GIN01] GINIGE, Athula e MURUGESAN, San. Web Engineering: An Introduction. IEEE Multimedia. Janeiro-Maro 2001. [GIN01b] GINIGE, Athula. Engineering A Better Website. University Of Western Sydney. Austrlia, Outubro de 2000. <http://aeims.uws.edu.au/talks/eng-web-sites.pdf> [GIN01c] GINIGE, Athula. Web Engineering in Action. University Of Western Sydney. Austrlia, Outubro de 2000 <http://aeims.uws.edu.au/talks/Webe-in-action.pdf> [MCD01] MCDONALD, Andrew e WELLAND, Ray. The University, Glasgow G12 8QQ, Scotland. 2001. <http://www.dcs.gla.ac.uk/~andrew/webe2001.pdf> [MUR00] MURUGESAN, San. Web Engineering For Sucessful Web Application Development. University Of Western Sydney. Austrlia, Outubro de 2000. <http://aeims.uws.edu.au/Talks/WebApWeb2000.PDF> [NIE00] NIELSEN, Jakob. Designing Web Usability. New Riders Publishing, 2000. [PRE01] PRESSMAN, Roger S. Software Engineering: A Practioners Approach. McGraw-Hill. 5 edio. 2001.