Engenharia da Web
Prof. Ilaim Costa Junior
Engenharia da Web
Engenharia da Web
Engenharia da Web
Engenharia da Web
Engenharia da Web
Engenharia da Web


Versão moderna da Engenharia de
Software
O desafio de sempre


Como definir um processo de software
que implemente o software com os
requisitos do cliente, atendendo prazo,
custo e qualidade?
Como juntar e trabalhar tantas
tecnologias juntas: Web services, Web
semântica, Ontologias, Modelagem
conceitual, Linguagens para a Web, .....
Engenharia da Web



Aplicações Web não são um
problema totalmente novo.
Características novas: estrutura,
dinâmica, navegação, apresentação,
entre outras.
Existem modelos de processos que
atendem às aplicações Web.

Destaque para modelos evolutivos e
ágeis.
Aplicações Web



São desenvolvidas de forma ad-hoc
(processos informais), sem suporte
de modelagem, sem semântica.
É necessário definir a especificação
clara da aplicação, seus conceitos,
para que o restante se junte para
fechar esse “quebra cabeça”.
A definição da semântica da
aplicação é fundamental.
Problemas dos sistemas Web




A maioria dos sistemas são desenvolvidos de
maneira ad-hoc, resultando em sistemas Web
de baixa qualidade.
Problemas como desatualização e
informações irrelevantes dificultam o uso do
site e a busca por informações importantes,
acarretando respostas lentas, pane e quebra
de segurança.
Esses problemas ocorrem porque os
desenvolvedores não priorizam as
necessidades e características dos usuários
em termos de conteúdo, gerenciamento,
manutenção, desempenho, segurança e
escalabilidade.
Muitas vezes os desenvolvedores também
priorizam questões não técnicas como
copyright e privacidade.
Problemas dos sistemas Web



Muitos desenvolvedores de aplicações Web
acreditam que o desenvolvimento de
aplicações Web se resume a simples páginas
usando HTML ou softwares do tipo Front Page
ou Dreamweaver e acrescentando algumas
imagens, alguns hiperlinks e páginas Web.
Apesar de algumas páginas pessoais, de
eventos, brochuras de anúncio entre outra
caiam nessa categoria muitas aplicações Web
são complexas e requerem uma matriz de
requisitos. Isso é muito mais que projeto visual
e interface com o usuário.
Essas aplicações envolvem planejamento,
arquitetura Web, projeto, teste, qualidade,
avaliação do desempenho, atualização
constante e manutenção do sistema.
Engenharia da Web


A Engenharia da Web deve se preocupar
com o estabelecimento e uso de
princípios da engenharia, bem como com
o gerenciamento de técnicas
sistemáticas e disciplinadas para o
desenvolvimento, implantação e
manutenção de sistemas e aplicações
Web de alta qualidade.
Ela deve incorporar alguns dos princípios
bem sucedidos na Engenharia de
Software tradicional, adaptando-os para
a natureza mais aberta e flexível da Web
e de suas aplicações, além de considerar
outros elementos que são específicos do
ambiente Web.
Engenharia da Web


Web Engineering uses scientific,
engineering, and management principles
and systematic approaches to successfully
develop, deploy, and maintain high-quality
Web systems and applications (Murugesan
et al., 1999). It aims to bring Web-based
system development under control,
minimise risks and improve quality,
maintainability, and scalability of Web
applications.
The essence of Web engineering is to
successfully manage the diversity and
complexity of Web application
development, and hence, avoid potential
failures that could have serious
implications.
(Murugesan &
Atributos de aplicações
baseadas na Web

Concentração em redes


Concorrência


Em caso de demora usuário desvia
Disponibilidade


Número de usuários varia muito
Desempenho


Grande número de usuários acessam ao
mesmo tempo
Carga imprevisível


Diversidade de clientes
24x7x365
Voltada a dados

Uso de hipermídia e acesso a bancos de
dados
Atributos de aplicações
baseadas na Web

Sensível ao conteúdo


Evolução continuada


Tempo de desenvolvimento reduzido
Segurança


Cuidado e alimentação contínua
Imediatismo


Determinante da qualidade
Implementação de fortes medidas de
segurança
Estética

Aspecto é fator de atração
Categorias das Aplicações (LEITE, 2002, apud VOLPI & CECHELERO, 2004, p.50).
Categoria
Exemplos
Informacional
Jornais e revistas On line, catálogos de produtos,
classificados on line, livros on line.
Interativos
Formulários de registro, apresentação de informações
customizadas, jogos on line.
Transacional
Lojas eletrônicas, oferecimento de bens e serviços,
bancos online.
Workflow
Sistemas de Gerência, planejamento, acompanhamento
on line, controle de mercadorias.
Ferramentas colaborativas
Sistemas diversos de autoria.
Comunidades on line, lugares de negócios.
Salas de bate-papo, sistemas que recomendam produtos
e serviços, e-marketplace.
Portais
Compras On-line, fornecedores de conteúdo.
Categorias das aplicações web (GINIGE & MURUGESAN, apud LOCATELLI, 2003, p.13).
Características das aplicações Web






Aplicações Web estão em constante evolução
O conteúdo pode envolver textos, gráficos,
imagens, áudio, vídeo, integrados com
processamento procedimental. A forma como
esse conteúdo é apresentado e organizado
influencia o desempenho e tempo de resposta.
A aplicação é desenvolvida para um grupo
diverso de usuários e muitos usuários
anônimos.
A maioria é desenvolvida centrada no
conteúdo o que exige constante atualização
(às vezes de hora em hora).
Muitas vezes a ênfase é na criatividade e na
interface.
O cronograma de desenvolvimento é sempre
apertado.
Características das aplicações Web






Os problemas de funcionamento, em geral,
são mais sentidos que nos sistemas
convencionais.
As equipes, na maioria das vezes, são jovens
e com backgrounds diferenciados, o que
provoca visões diferenciadas da qualidade das
aplicações.
Novas tecnologias estão sempre sendo
lançadas e na maioria das vezes instáveis.
O desenvolvimento Web utiliza diversas
tecnologias e padrões, integra componentes,
incluindo software tradicional e não tradicional,
linguagens de script, HTML, arquivos, bancos
de dados, imagens e outras multimídias.
O meio de disponibilizar a aplicação é muito
diverso e exige portabilidade em termos de
hardware, software e redes.
Segurança e privacidade são mais exigidas.
Engenharia da Web


Diante da busca por metodologias
disciplinadas e por maior sucesso no
desenvolvimento de sistemas direcionados
para a Web, surge a necessidade do
desenvolvimento de técnicas, métodos e
ferramentas para o desenvolvimento,
implantação e avaliação desses sistemas.
Tais modelos devem levar em
consideração as características especiais
que sistemas Web possuem:



Novas mídias e ambientes operacionais;
Os cenários e multiplicidade de usuários;
O tipo, experiência e conhecimento das
pessoas envolvidas no processo de
desenvolvimento.
Engenharia da Web



O processo de desenvolver um sistema Web deve levar
em consideração também que um software deste tipo, é
uma espécie de sistema híbrido e o processo de
desenvolvimento não é somente uma questão
tecnológica, mas também uma questão organizacional,
política e cultural e envolve uma mudança radical na
estruturação e apresentação da informação.
Assim podem ser identificadas características que
diferenciam o processo de desenvolvimento de sistemas
tradicionais dos sistemas Web.
Estas características se agrupam em três categorias:



Navegação
Organização da interface
Implementação.
Atividades de Engenharia da Web

Projeto do conteúdo e produção
Realizadas por membros não
técnicos
 Objetivo de projetar, produzir e ou
adquirir todo o conteúdo de texto,
gráfico, áudio e vídeo




Projeto arquitetural
Projeto de navegação
Projeto de interface
Projeto Arquitetural


O projeto arquitetural de sistemas e
aplicações Web focaliza a definição da
estrutura global de hipermídia da aplicação
Web e o uso de padrões de projetos e
gabaritos construtivos.
Uma atividade paralela, denominada projeto
de conteúdo cria a estrutura global e o layout
detalhado do conteúdo de informação que vai
ser apresentado como parte da aplicação
Web.
Tipos de Estruturas

O modelo de arquitetura é
relacionado a:
Metas estabelecidas
 Conteúdo a ser apresentado
 Filosofia de navegação

Tipos de Estruturas

Estrutura linear
É encontrada uma seqüência de
interações previsível
 A apresentação do conteúdo é
linear e pré-definida.

Tipos de Estruturas

Estruturas hierárquicas



São o tipo mais comum de estrutura
Permite o fluxo horizontal e vertical
Permite navegação rápida, mas pode
causar confusão para o usuário
Tipos de Estruturas

Estrutura em rede



Os componentes arquiteturais podem
acessar qualquer outro componente do
sistema, através de links.
Possuem
alta
flexibilidade
de
navegação.
Podem causar confusão para o usuário.
Tipos de Estruturas

Estruturas compostas


Combinam um ou mais tipos de
estruturas
A meta do projetista de arquitetura é
adaptar a estrutura da aplicação Web
ao conteúdo a ser apresentado e ao
processamento a ser conduzido.
Projeto de Navegação

Uma vez definida a arquitetura
da aplicação e identificados
seus componentes (páginas,
scripts, applets e outras funções
de processamento) o projetista
deve definir caminhos de
navegação que permitam ao
usuário ter acesso ao conteúdo
e aos serviços.
Projeto de Navegação

Para o projeto de navegação o
projetista necessita:

Identificar a semântica de navegação
para diferentes usuários


Em aplicações grandes existirão vários
tipos de usuários
Definir a mecânica (sintaxe) para
realizar a navegação
O projetista deve escolher as ligações
de navegação adequadas ao conteúdo e
consistentes com o projeto de interface
(botões, ícones, texto, etc)
 Devem ser projetados auxílios à

Projeto de Interface



Características gerais de projeto
de interface podem ser
aplicadas
A interface deve ser bem
projetada
Considerar que a primeira
impressão é muito importante.
Projeto de Interface

Diretrizes:







Evitar erros do servidor
Evitar grandes quantidades de material
para leitura
Evitar “em construção”
Não rolar imagem
Menus de navegação e barras de título
devem estar disponíveis em todas as
páginas
A estética nunca deve sobrepujar a
funcionalidade
As opções de navegação devem ser
Processo de Desenvolvimento de
Sistemas Web




O desenvolvimento de um sistema direcionado
para a Web envolve a fase de definição da
equipe de desenvolvimento e a fase de
definição do processo a ser seguido.
O processo de desenvolvimento deve ser
evolucionário.
O RUP (Rational Unified Process) apresenta
características adequadas para o
desenvolvimento de sistemas Web.
Os modelo ágeis enfatizam uma abordagem
de desenvolvimento simples que incorpora
ciclos rápidos de desenvolvimento, por isso
são adeuqdos ao desenvolvimento de algumas
aplicações Web.
Equipe de desenvolvimento


As equipes desenvolvedoras de sistemas para
a Web são multidisciplinares e devem integrar
profissionais especializados em informática,
profundos conhecedores do ambiente Web, e
especialistas no conteúdo.
Entre os profissionais destacam-se:






Desenvolvedor/provedor de conteúdo
Web designer (editor da Web)
Engenheiro da Web (elicitação de
requisitos,modelagem, projeto arquitetural,
navegacional e de interface, implementação e teste)
Especialista no domínio do negócio
Especialista de suporte
Web Master (administrador)
Equipe de desenvolvimento

Considerando que, muitas
vezes a equipe de
desenvolvimento é formada na
verdade por diferentes equipes,
uma coordenação intergrupos
se faz necessário
Etapas de desenvolvimento

As principais etapas que deverão
compor o processo de
desenvolvimento de aplicações
Web:








Definição dos Objetivos
Levantamento dos Requisitos
Análise e Projeto
Planejamento da Interface
Implementação
Avaliação
Validação
Manutenção.
Definição dos objetivos


Como um sistema direcionado para a Web
não dissemina somente informação, como
é o caso dos Websites, mas também
aproxima usuários, processos e suas
tarefas para realização de metas de
negócio é necessário a definição clara dos
objetivos do sistema de acordo com o
propósito do seu uso.
Pode-se identificar três classes de
sistemas para a Web, que apesar de
possuírem características semelhantes,
diferem substancialmente no objetivo, e
nas preocupações e princípios nos quais
se baseiam.
Definição dos objetivos

As classes são:



Aplicações de páginas de informação: este tipo de
software Web é composto basicamente de páginas
de informação. Tem a função de prover/disseminar
informações, priorizando o conteúdo e a forma de
apresentação.
Aplicações centradas em banco de dados: este tipo
de software manuseia dados armazenados em banco
de dados, não possuindo fluxo de processos ou
transações complexas. A prioridade é a organização
do banco de dados e a forma como os dados serão
apresentados.
Aplicações que suportam a realização de transações
de negócio: formado por componentes de software
responsáveis pela execução de algum tipo de
computação que auxilie a realização de negócios,
integrados a páginas de informação. A prioridade
nesta categoria é a definição da arquitetura do
sistema e do software, e o projeto dos componentes
da aplicação.
Levantamento dos requisitos

A etapa de definição de requisitos é
considerada crítica para o desenvolvimento de
sistemas de software, em especial para
sistemas direcionados para a Web, isso por
causa da quantidade e variedade de usuários
e sua distribuição geográfica. Desta forma
pessoas de todo o mundo com os mais
diferentes níveis de habilidades poderão fazer
parte do conjunto de usuários do sistema e
deverão ter suas necessidades sanadas. A
variedade e a distribuição geográfica destes
usuários exigem novas técnicas de elicitação e
interação, fazendo com que tais usuários
façam parte do processo de desenvolvimento.
A utilização da Web como meio de
comunicação e disseminação de informação
acaba por solucionar alguns destes problemas,
através de questionários on-line, fóruns de
discussão e até mesmo chats.
Levantamento dos requisitos

Como os sistemas direcionados para
a Web podem ser classificados em
uma das três classes citadas deve
haver identificação dos requisitos
referentes a cada um dos tipos.
Adicionalmente surgem novas
características e restrições que
devem ser consideradas e elicitadas
que se referem especificamente a
estes tipos de software, tais como,
localização de possíveis usuários na
rede (análise de backbone e
gateways) e plataforma padrão
Análise


A fase de análise constará da definição do escopo do
sistema (conteúdo, contexto, etc), suas funções, objetivos
e desempenho esperado, dados sobre os usuários
(habilidades por exemplo), restrições externas (como
largura da banda passante e distribuição geográfica dos
usuários), limitações do produto e outros fatores
relevantes.
Ainda na fase de análise deve-se considerar estimativas
de esforço necessário para o desenvolvimento do
sistema, tais como recursos de software, humanos e de
hardware, custos e cronograma. Muitos recursos são
necessários para a produção de bom software, sendo
relevante o fornecimento de um ambiente de trabalho
adequado ao desenvolvimento pelas pessoas. Deve-se
ter disponível equipamentos e espaço físico apropriados,
ferramentas e técnicas, além de ser fornecido tempo
suficiente para o trabalho.
Projeto


A fase de projeto é o processo de transformação do
problema em solução. Nesta etapa os requisitos
especificados para a definição do problema serão
usados na construção da solução em forma de
projeto.
O modelo de ciclo de vida a ser utilizado para
sistemas Web é evolutivo, permitindo assim o projeto
de protótipos que devem ser executados em
ambiente similar ao real para a obtenção de dados
realísticos. Estes protótipos permitirão a detecção de
deficiências e/ou falhas no sistema em
desenvolvimento. Sempre que possível este modelo
de ciclo de vida deve considerar a reutilização de
componentes ou artefatos.
Projeto

Devem ser projetados também nesta fase
o conteúdo e a navegação. Com relação
ao conteúdo a informação a ser
apresentada no sistema é determinada
com base na análise do domínio da
aplicação. Já com relação à navegação, o
modelo navegacional é criado com um
conjunto de estruturas navegacionais bem
organizadas que levem em consideração
os papéis e perfis dos usuários em
potencial. A estrutura deve apresentar o
melhor caminho navegacional para que um
usuário com um certo perfil alcance a meta
desejada, e descrever os serviços que o
sistema oferece ao usuário.
Projeto de interface

No projeto de uma interface a forma como
os elementos da interação usuário/site vão
atuar é definida. Isto significa definir de
que forma os diferentes objetos
navegacionais aparecem, quais objetos da
interface ativarão a navegação e outras
funcionalidades da aplicação, e quais e
quando as transformações da interface
ocorrerão. A aparência do sistema é
determinada e o uso padronizado de
componentes gráficos através deste é
garantido.
Projeto de interface


Devem ser considerados os sentidos
visual, táctil e auditivo, os níveis de
habilidade pessoais e as diferenças
individuais entre usuários. Os recursos
devem se basear no uso de recursos
sonoros e visuais, uso de ícones, mouse,
menus, entre outros.
No projeto da interface devem ser
considerados ainda alguns requisitos como
consistência, eficiência no diálogo,
facilidade de ajuda integradas no contexto,
cores adequadas, mensagens de erros
significativas e controle do fluxo de
interação pelo usuário.
Implementação

Nesta etapa deve-se considerar duas
atividades paralelas e complementares: a
implementação da aplicação e a
implementação das páginas de
informação. A construção das páginas de
informação poderia e deveria ser realizada
de imediato, para poder ser disponibilizada
na Web tão logo fique pronta, isto até por
questões de marketing. A construção
dessas páginas pode ser considerada uma
atividade mais adequada para designers
gráficos do que para o pessoal técnico.
Implementação

Em relação à implementação da
aplicação, questões relevantes à
tecnologia de implementação,
devido à plataforma que será
utilizada, devem ser consideradas.
Devido ao cumprimento do
cronograma, deve-se analisar de
maneira exaustiva a possibilidade de
reuso de componentes
implementados por terceiros e até
mesmo componentes de protótipos
desenvolvidos durante o projeto.
Avaliação

Esta etapa visa assegurar que a
qualidade do produto e o
atendimento aos requisitos foram
atingidos. A avaliação do sistema
deve ser feita em duas etapas:


Durante o processo de projeto e
desenvolvimento do sistema, podendo
ser feita pelos desenvolvedores do
mesmo.
Sobre o produto final, por pessoas não
envolvidas na produção do sistema.
Validação

Esta etapa assegura que os
objetivos e metas do sistema
foram alcançados. Garante a
qualidade do modelo
navegacional, da aparência da
interface e da informação
pesquisada.
Manutenção






É importante neste tipo de sistema além da
manutenção corretiva a manutenção evolutiva,
que contemple as mudanças dos requisitos,
notadamente as de ordem tecnológica,
negócios e usuários. Para que esta etapa seja
efetiva, é necessária uma revisão periódica do
projeto. Gerentes e desenvolvedores devem
fazer as seguintes perguntas:
Os objetivos são os mesmos?
As prioridades são as mesmas?
O público alvo é o mesmo?
Existem novos recursos tecnológicos que
podem ser incorporados?
O modelo navegacional precisa ser revisto
para incorporar novos links?
Processo ágil e incremental



PRESSMAM (2006, p.381) afirma que um processo para webE é
frequentemente ágil e incremental. Porém outros modelos existentes
na literatura, dependendo do projeto a ser construído e para a
maioria dos principais projetos de engenharia da web, podem ser
adotados.
As vantagens da utilização de uma metodologia ágil de
desenvolvimento é que estas abordagens incorporam ciclos rápidos.
Desta forma, a característica do imediatismo com que as
informações precisam ser dispostas na rede, pode ser satisfeita. O
desenvolvimento de forma incremental favorece o suporte a várias
modificações e versões, que poderão ser geradas durante o
desenvolvimento deste tipo de aplicação. SOUSA & FALBO (2005,
apud BAGLIONI & SOUZA, 2007, p.56) concordam que é provável
que os modelos de processos sigam o padrão ágil, já que é
necessário atender às exigências ditadas pela forma como as
aplicações web devem comportar e ao mesmo tempo disponibilizar o
sistema em menor período de tempo.
Levando em consideração estes princípios favoráveis à implantação
de um modelo ágil para desenvolvimento de aplicações web,
PRESSMAN (2006, p.384) propõe a definição de um arcabouço
genérico que adota a filosofia do desenvolvimento ágil, enfatizando
uma abordagem simples que incorpora ciclos rápidos de
desenvolvimento. Este arcabouço engloba atividades como:
comunicação, planejamento, modelagem, construção e implantação.
Processo ágil e incremental

As atividades que caracterizam a
fase de projeto da modelagem
antecedem a construção da
aplicação. Estas atividades, guiadas
pelas informações obtidas na fase
de análise, segundo PRESSMAN
(2006, p.430), devem nos levar a um
modelo que combine
adequadamente a estética, o
conteúdo e a tecnologia. A figura 6
retrata os seis tipos de projetos
gerados nesta etapa.
Pirâmide de projeto para webApp ( PRESSMAN, 2006, p.431).
Download

web - Kenai.com