Escolar Documentos
Profissional Documentos
Cultura Documentos
Departamento de Informática
Universidade Federal do Espírito Santo
2
Introdução
Problemas típicos do desenvolvimento de software:
Custos e prazos estimados são ultrapassados;
Produto final não atende às necessidades dos usuários;
etc.
A Engenharia de Software procura prover
abordagem para tratar esses problemas, visando à
qualidade de software.
3
Qualidade de Software
Desenvolvedores
Usuários Usuários
Finais Indiretos
4
Qualidade de Software
Qualidade:
é um conceito relativo;
está fortemente relacionada à conformidade com
requisitos;
diz respeito à satisfação do cliente.
Qualidade do produto de software não se atinge
de forma espontânea.
A qualidade do produto deve ser construída ao
longo do seu desenvolvimento e, portanto,
depende fortemente da qualidade do processo de
software adotado.
5
Processo de Software
Um conjunto coerente de políticas, estruturas
organizacionais, tecnologias, atividades,
procedimentos e artefatos necessários para
conceber, desenvolver, implantar e manter um
produto de software.
Processos de Software devem estabelecer:
atividades a serem realizadas durante o processo, sua
estrutura e organização (decomposição e precedência);
artefatos requeridos e produzidos por cada uma das
atividades do processo;
procedimentos (métodos, técnicas, roteiros e padrões)
a serem adotados na realização das atividades;
recursos necessários (humanos, hardware e software)
para a realização das atividades.
6
Estrutura de Processo de
Software
Processo de Software
Sub-processos
Atividades
Sub-atividades
Pré-atividades
Artefatos
Insumos
Produtos
Recursos
Procedimentos
7
Exemplo
Processo de Software
Processo de Desenvolvimento
Levantamento de Requisitos
Análise de Requisitos
Projeto de Software
Projeto Arquitetural
Ferramenta de Software: Ferramenta CASE de
Modelagem UML
Técnica: Modelagem de Objetos
Projeto Detalhado
Implementação
Testes
8
Processo de Software
Um bom processo não garante que os produtos
produzidos são de boa qualidade, mas é um
indicativo de que uma organização é capaz de
produzir bons produtos.
Motivação para a adoção de Processos:
Aumento da qualidade do produto;
Diminuição de retrabalho;
Maior produtividade;
Redução do tempo para atender o mercado;
Maior competitividade;
Maior precisão nas estimativas;
etc.
9
Processo de Software
A implantação de um Programa de Qualidade
começa pela definição e implantação de um
processo de software.
O processo de software deve ser documentado,
compreendido e seguido.
Como definir? Apoio de Normas e Modelos de
Qualidade de Processos de Software.
ISO/IEC 12207: 2008
CMMI Dev v1.2 (2006)
MPS.BR (2007)
10
Processo de Software
Processos têm de ser definidos caso a caso,
levando-se em consideração as características
específicas do projeto em questão: equipe, domínio
de aplicação, tipo de software, tecnologias a serem
adotadas, restrições de negócio (cronograma,
custo, qualidade) etc.
Processo Padrão: Conjunto de ativos de processo
(atividades, artefatos, recursos e procedimentos)
que devem ser aplicados a quaisquer processos de
software da organização.
11
Definição de Processos de Software
Normas e Modelos de
Qualidade, Definição
Cultura
Organizacional
Processo Padrão
Tecnologia de
Desenvolvimento, Especialização
Domínio do Problema
e
Paradigma
Processo Processo
Especializado 1 Especializado n
Particularidades do Instanciação
Projeto (definir modelo
de ciclo de vida a ser
adotado) Processo de Processo de
Projeto 1 Projeto m
12
Aplicações Web
O termo “Aplicações Web” abrange um amplo
espectro de sistemas construídos para serem
acessados via Web.
Informacional: provê conteúdo apenas de leitura, com
navegação e links simples;
Download: permite que seus usuários “baixem” informações
do servidor apropriado;
Interação: provê serviços de comunicação entre uma
comunidade de usuários via salas de bate-papo, mensagens
instantâneas etc;
Sistema de Informação Web: sistema de informação
disponível na Web;
Portal: ponto de entrada geral, de um tema específico ou de
uma organização, provendo acesso a diversos serviços;
etc.
13
Características de Aplicações
Web
Intensidade de rede: uma Aplicação Web opera
em uma rede, que pode ser a Internet, uma
Intranet ou uma Extranet, e deve atender às
necessidades de uma comunidade diversa de
clientes;
Concorrência: um grande número de usuários
pode acessar uma Aplicação Web ao mesmo
tempo;
Carga imprevisível: o número de usuários de
uma Aplicação Web pode variar por ordens de
magnitude, indo de algumas dezenas em um dia
até milhares em outro;
14
Características de Aplicações
Web
Desempenho: se um usuário tiver de esperar muito
tempo por um serviço, ele pode decidir buscar esse
serviço em outro local. Considerar variação de
usuários, condições da rede etc;
Disponibilidade: meta 24 horas por dia, 7 dias da
semana, 365 dias do ano, especialmente quando se
considera que os seus usuários potenciais podem
estar ao redor de todo o mundo, em fusos horários
diferentes.
Orientação a dados: aplicações Web devem lidar de
maneira adequada com os dados envolvidos
(textos, gráficos, áudio, vídeo, bases de dados);
15
Características de Aplicações
Web
Sensibilidade ao conteúdo: a qualidade do
conteúdo é um fator determinante para a
qualidade de aplicações Web;
Evolução contínua: aplicações Web evoluem
continuamente, em intervalos de tempo que
podem chegar à casa dos minutos, de modo que
seu conteúdo e sua forma atendam sempre aos
interesses dos usuários;
16
Características de Aplicações
Web
Imediatismo: muitas vezes, uma aplicação Web,
precisa ser produzida e disponibilizada em
questão de dias ou semanas;
Segurança: por estarem disponíveis por meio de
acesso a uma rede, para um grande número de
usuários, são necessárias políticas de segurança
bem planejadas para garantir a integridade de
aplicações Web;
Estética: a característica visual de uma aplicação
Web é um fator crítico para seu sucesso, tanto
quanto suas características técnicas.
17
Características de Aplicações
Web
A importância de cada uma dessas características
varia de aplicação para aplicação. (Qualidade é um
conceito relativo).
18
Características de Aplicações
Web
Impactos no Processo de Software:
Evolução contínua: Processos de Gerência de Projeto,
Gerência de Configuração, Manutenção, dentre outros.
Imediatismo: Processo de Gerência de Projetos, Processo
de Desenvolvimento (diversas fases).
Sensibilidade ao conteúdo: Processo de Desenvolvimento
(sobretudo fase de análise)
Intensidade de rede / Concorrência / Carga imprevisível /
Desempenho / Disponibilidade / Orientação a dados /
Segurança / Estética: Processo de Desenvolvimento
(sobretudo fases de projeto, implementação e testes).
19
Sistemas de Informação Web
Sistemas de Informação: têm por objetivo
automatizar ou prover apoio automatizado a
processos organizacionais em vários níveis
(processos de negócio em nível operacional,
estratégico e tático, apoiando a tomada de
decisão), fazendo uso de Tecnologia de Informação.
Sistemas de Informação Baseados na Web:
provêem esse apoio através da Web.
Paradigma OO é o dominante, com destaque para
tecnologias Java.
20
Processo de Desenvolvimento de
Sistemas de Informação
Levantamento de Requisitos
Análise de Requisitos
Projeto de Sistema
Projeto da Arquitetura
Projeto Detalhado
Implementação
Testes
21
Processo de Desenvolvimento de
Sistemas de Informação Web
Levantamento e Análise de Requisitos: visam tratar
“o quê” o sistema deve fazer e não “como”.
Portanto, o fato de ser um desenvolvimento para a
Web não deve ter impactos significativos.
Características de Aplicações Web que têm grande
impacto nessas atividades: Evolução Contínua e
Imediatismo.
Modelos de Ciclo de Vida Evolutivos / Incrementais devem
ser adotados.
Princípios de Desenvolvimento Ágil devem ser adotados,
sobretudo da Modelagem Ágil.
22
Modelagem Ágil: Princípios
Modele com um propósito.
Utilize múltiplos modelos.
“Viaje com pouca bagagem” (mantenha só os
modelos realmente necessários).
Conteúdo é mais importante que apresentação.
Conheça os modelos e as ferramentas que você
usa.
Adapte-se localmente (às necessidades
específicas daquela equipe / projeto).
23
Aplicando a Modelagem Ágil
Levantamento de Requisitos: Diagramas de Casos
de Uso é essencial. Simplificar as Descrições de
Casos de Uso, sobretudo de casos de uso
custodiais.
Análise de Requisitos: O único diagrama essencial é
o Diagrama de Classes. Analisar a utilidade de
Diagramas de Estados, Atividade e de Seqüência.
Projeto de Software: Diagramas de Pacotes e de
Classes são essenciais. De maneira geral, a
construção de versões de projeto dos demais
diagramas pode ser dispensada.
24
Processo de Desenvolvimento de
Sistemas de Informação Web
Maiores impactos ocorrem na fase de Projeto.
Plataforma de implementação tem grande influência
no Projeto.
Atualmente há muitos frameworks disponíveis que
apóiam a atividade de implementação e, por
conseguinte, têm impacto no projeto de sistemas.
Algumas das características de aplicações Web
tornam o Projeto de Interfaces com o Usuário uma
atividade mais complexa e mais importante do que
usualmente.
25
Engenharia Web
Estabelecimento e uso de princípios de engenharia
e abordagens disciplinadas para o desenvolvimento,
implantação e manutenção de aplicações baseadas
na Web.
Há um grande número de métodos no contexto da
Engenharia Web:
Object Oriented Web Solution – OOWS
UML-based Web Engineering – UWE
Metodologia de Conallen
FrameWeb
etc
26
Linguagens de Modelagem para a
Web
Assim como há vários métodos de Engenharia Web,
há diversas linguagens de modelagem que
procuram prover elementos para representar as
particularidades de sistemas Web.
Web Modeling Language – WebML
Linguagem de Modelagem de OOWS: extensão da UML
Web Application Extensions – WAE (Metodologia de
Conallen): extensão da UML
UML-based Web Engineering – UWE (método de mesmo
nome): extensão da UML
Linguagem de Modelagem de FrameWeb: extensão da UML
etc
27
Modelos Específicos para Engenharia
Web
Projeto de Navegação: dada a importância do
Projeto de IU e a necessidade de se definir a
navegação em um sistema Web, muitos métodos
preconizam a elaboração de um modelo de
navegação.
Object Oriented Web Solution – OOWS: Modelo de
Navegação
UML-based Web Engineering – UWE: Modelo de espaço de
navegação e Modelo de estrutura de navegação
Metodologia de Conallen: Modelo de Experiência do
Usuário;
FrameWeb: Modelo de Navegação
28
Arquitetura de Sistemas de
Informação Web
De modo geral, Sistemas de Informação Web
seguem um estilo arquitetural muito similar.
29
Frameworks
Visando dar agilidade na fase de implementação,
diversos frameworks têm sido desenvolvidos para
tornar mais fácil a implementação de sistemas Web.
Um framework pode ser visto como um artefato de
código que provê componentes prontos que podem
ser reutilizados mediante configuração, composição
ou herança.
Quando combinados, esses frameworks permitem
que sistemas Web de grande porte sejam
construídos com arquiteturas de múltiplas camadas
sem muito esforço de codificação.
30
Frameworks
Tomando a plataforma Java como exemplo,
podemos, dentre outras, organizar frameworks nas
seguintes categorias principais:
Frameworks MVC (Controladores Frontais): WebWork,
Struts, Struts2, Spring MVC.
Frameworks Decoradores: SiteMesh, Tiles.
Frameworks de Mapeamento Objeto/Relacional: Hibernate,
Java Data Objects – JDO, Oracle Toplink.
etc
Frameworks integrados
Ex.: JBoss Seam
31
Framework Controlador Frontal
32
Framework Decorador
33
Framework de Mapeamento Objeto-
Relacional
34
Testes de Aplicações Web
O processo de teste de engenharia Web começa
com testes que exercitam o conteúdo e a
funcionalidade da interface imediatamente visível
aos usuários finais.
À medida que a fase de testes prossegue, tópicos
do projeto de arquitetura e de navegação são
exercitados.
Por fim, o foco desloca-se para testes que
exercitam capacidades tecnológicas que nem
sempre são aparentes aos usuários finais (infra-
estrutura, instalação etc).
35
Testes de Aplicações Web
Teste de conteúdo: analisa erros de conteúdo
estáticos e dinâmicos.
Erros sintáticos devem ser analisados por um revisor
humano, pois ferramentas automáticas ainda não são
suficientemente eficientes.
A estrutura e a organização da arquitetura de conteúdo
também são testadas, o que inclui testes de integração
entre a aplicação Web e um sistema de banco de dados.
Teste de Interface com o Usuário: exercita os
mecanismos de interação e valida aspectos
estéticos.
Verificar, dentre outros, links, formulários, processamento
de scripts no cliente etc.
36
Testes de Aplicações Web
Teste de componente: exercita as unidades de
conteúdo e funcionais da aplicação Web.
Cada função da aplicação Web é um módulo de software e
pode ser testada por meio de técnicas caixa-preta ou
caixa-branca.
Teste de navegação: exercita cada caso de uso com
base no projeto de navegação para garantir que
quaisquer erros que impeçam a finalização do caso
de uso sejam identificados e corrigidos.
Começam durante o teste de interface.
Mecanismos de navegação são testados: links,
redirecionamentos, mapas de site etc.
37
Testes de Aplicações Web
Teste de configuração: visa descobrir erros
específicos em um particular ambiente cliente ou
servidor.
Consiste em testar um conjunto de prováveis
configurações do lado do cliente e do lado do servidor.
Do lado do servidor, são projetados testes para verificar se
a configuração pode suportar a aplicação Web sem erros
(sistema operacional, sistema de arquivos, configuração
distribuída, banco de dados, scripts).
Do lado do cliente, os testes se concentram mais na
compatibilidade da aplicação Web com hardwares
específicos, sistemas operacionais, navegadores,
componentes de interface com o usuário etc.
38
Testes de Aplicações Web
Teste de segurança: testes projetados para
explorar a vulnerabilidade na aplicação Web e em
seus ambientes.
No lado do cliente, procurar erros preexistentes em navegadores
e softwares de comunicação, bem como acesso não autorizado a
cookies colocados no navegador.
Na comunicação entre cliente e servidor, verificar se os dados são
vulneráveis a entidades mal-intencionadas que interceptam a
comunicação para obter dados confidenciais.
No lado do servidor, verificar a ocorrência de ataques e execução
de scripts mal-intencionados que podem ser passados para o lado
do cliente ou usados para danificar as operações do servidor.
Como proteção a essas vulnerabilidades são utilizados elementos
de segurança, tais como firewalls, autenticação, criptografia e
autorização.
39
Testes de Aplicações Web
Teste de desempenho: usado para descobrir
problemas de desempenho e avaliar o tempo de
resposta.
Dois diferentes testes de desempenho são conduzidos:
teste de carga e teste de esforço.
O objetivo do teste de carga é determinar como a
aplicação Web e seu ambiente vão responder a várias
condições de carregamento.
O objetivo do teste de esforço é exceder os limites
operacionais utilizando as mesmas variáveis do teste de
carga.
40
Considerações Finais
A quantidade de propostas para a área de
Engenharia Web é bastante vasta, o que mostra
ainda não há uma metodologia ou linguagem de
modelagem padrão para o desenvolvimento de
aplicações Web.
Uma abordagem potencial:
Definir um processo padrão organizacional
Especializá-lo para um paradigma
Especializar o processo especializado para aplicações Web
Especializar novamente para tipos de aplicações Web
41
Considerações Finais
Exemplo:
Processo Padrão Organizacional
Processo Especializado para o Desenvolvimento OO
Processo Especializado para o Desenvolvimento OO de
42
Referências
Relacionadas à Qualidade de Software:
Rocha, A.R., Weber, K., Maldonado, J.C., Qualidade de Software:
Teoria e Prática. Prentice Hall, 2001.
Koscianski, A., Soares, M.S., Qualidade de Software, Editora
Novatec, 2006.
Relacionadas à Engenharia Web:
Pressman, R.S., Engenharia de Software. 6a edição, McGrawHill,
2006.
Conte, T., Travassos, G. H., Mendes E., Revisão Sistemática
sobre Processos de Desenvolvimento para Aplicações Web.
Relatório Técnico ESE/PESC – COPPE/UFRJ, 2005.
Souza, V.E.S., FrameWeb: um Método baseado em Frameworks
para o Projeto de Sistemas de Informação Web, Dissertação de
Mestrado, Mestrado em Informática, UFES, 2007.
43