Sei sulla pagina 1di 43

Processo de Desenvolvimento

para Aplicações Web

Ricardo de Almeida Falbo

Departamento de Informática
Universidade Federal do Espírito Santo

VIII Jornada Goiana de Engenharia de Software


Agenda
 Introdução
 Qualidade de Software
 Processo de Software
 Aplicações Web: Definição e Características
 Processo de Desenvolvimento de Sistemas de
Informação Web
 Considerações Finais
 Referências

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

Conjunto de características a serem satisfeitas em


um determinado grau, de modo que o software
satisfaça às necessidades de seus usuários.

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

 Humanos, de Software, de Hardware.

 Procedimentos

 Métodos, Técnica, Roteiros, Padrões etc.

7
Exemplo
 Processo de Software
 Processo de Desenvolvimento
 Levantamento de Requisitos
 Análise de Requisitos
 Projeto de Software
 Projeto Arquitetural

 Pré-atividade: Análise de Requisitos

 Insumo: Documento de Especificação de Requisitos

 Produto: Arquitetura do Sistema

 Recurso Humano: Projetista de Software


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

Sistemas de Informação Baseados na Web


 Indicar no processo, método, técnicas, artefatos a
serem produzidos, arquiteturas padrão, frameworks
a serem utilizados etc.
 Acompanhar atentamente a evolução da área e
melhorar continuamente os processos de software.

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