Escolar Documentos
Profissional Documentos
Cultura Documentos
ESCOLA POLITCNICA
DEPARTAMENTO DE ELETRNICA E DE
COMPUTAO
Autores:
Orientador:
Examinador:
Examinador:
DEL
Dezembro de 2005
Resumo
O trabalho desenvolvido realizou uma iterao sobre um processo de desenvolvimento de
uma aplicao Web j em fase de produo, adicionando novos requisitos e considerando a
orientao a objetos.
Ao longo do trabalho so discutidas boas prticas no processo de Engenharia de Software e
problemas, limitaes e vantagens ao adotar a orientao a objetos para uma aplicao Web.
Os resultados obtidos foram um conjunto de telas e classes de negcio e auxiliares que
implementam os novos requisitos e esto prontos para serem incorporados ao restante do
sistema.
Palavras-chave
Engenharia de Software, UML, World Wide Web, Orientao a Objetos, Aplicao Web
ndice
1Introduo............................................................................................................................... 1
2CAPTULO II - Conceitos bsicos........................................................................................ 3
2.1Sistema Web bsico..........................................................................................................3
2.1.1Aplicao Web x Site Web.........................................................................................4
2.1.2HTTP (HyperText Transfer Protocol).........................................................................4
2.1.3HTML (HyperText Markup Language)......................................................................4
2.1.4Formulrios................................................................................................................. 5
2.1.5Aplicaes Web.......................................................................................................... 6
2.2Gerenciamento do estado do cliente...............................................................................6
2.2.1Cookies........................................................................................................................7
2.2.2Sesso..........................................................................................................................7
2.2.3Tecnologias de Ativao.............................................................................................8
2.3Clientes Dinmicos.........................................................................................................11
2.3.1Document Object Model (DOM)..............................................................................13
2.3.2Script......................................................................................................................... 15
2.3.3Objetos JavaScript.....................................................................................................15
2.3.4Eventos......................................................................................................................16
2.3.5Alternativas: Applets Java e ActiveX/COM.............................................................18
3CAPTULO III - O processo de desenvolvimento de uma aplicao Web......................20
3.1Representao do processo de desenvolvimento de software.................................... 23
3.1.1Atividades do Caso de Uso Desenvolvimento de Software..................................24
3.1.2Atividades do Caso de Uso Iterao de Software..................................................25
3.2Artefatos Gerados.......................................................................................................... 27
3.2.1Modelos.....................................................................................................................27
3.2.2Conjunto de gerenciamento de projeto..................................................................... 28
3.2.3Conjunto de domnio.................................................................................................29
3.2.4Conjunto de requisitos.............................................................................................. 30
3.2.5Conjunto de anlise...................................................................................................31
3.2.6Conjunto de projeto...................................................................................................33
3.2.7Conjunto de implementao......................................................................................34
3.2.8Conjunto de teste.......................................................................................................34
3.2.9Conjunto de implantao.......................................................................................... 37
4CAPTULO IV Principais Documentos Gerados........................................................... 38
4.1Documento de Viso...................................................................................................... 38
4.1.1Descrio do problema..............................................................................................38
4.1.2Lista das partes interessadas envolvidas no projeto e suas vises do sistema..........38
4.1.3Esboo do escopo do projeto.................................................................................... 38
4.1.4Esboo da soluo de software................................................................................. 39
4.1.5Segurana..................................................................................................................39
4.1.6Ambientes de cliente suportados...............................................................................39
4.2Documento de Requisitos.............................................................................................. 40
4.2.1Coletando requisitos..................................................................................................42
4.2.2Priorizando requisitos............................................................................................... 42
4.3Documento de Caso de Uso........................................................................................... 44
4.4Documento de Anlise................................................................................................... 47
4.4.1Estrutura....................................................................................................................47
4.4.2Elementos estruturais................................................................................................ 48
I
6.6.2.1Diagramas de Seqncia..................................................................................137
6.7Classes Auxiliares.........................................................................................................139
6.8Diagrama de Desdobramento..................................................................................... 143
7Resultados............................................................................................................................145
8Concluso.............................................................................................................................146
9Bibliografia.......................................................................................................................... 149
IV
Introduo
O trabalho desenvolvido a seguir tem como objetivo discorrer a respeito de como aplicar os
preceitos da Engenharia de Software com o paradigma orientado a objetos no
desenvolvimento de aplicaes Web.
Atualmente existe uma grande corrente que conduz a indstria de software para repensar a
maneira como os programas so feitos e distribudos aos seus clientes. Cada vez mais se
escuta falar sobre software como um servio, hospedagem de aplicaes, etc. Por mais
que estas definies sirvam para denominar diferentes abordagens de utilizao do software,
todas elas possuem em comum o fato de utilizarem a Web como canal de comunicao entre
um sistema e seus usurios.
Esta maior demanda por sistemas na Web implica em softwares que atendam requisitos cada
vez mais complexos e que se comuniquem com uma srie de outros sistemas externos,
dependendo do contexto da aplicao.
Percebendo toda esta movimentao, a pergunta que surge : como desenvolver e gerenciar o
desenvolvimento de aplicaes Web utilizando as ferramentas de que dispe-se hoje? A UML
permite a modelagem de software em nveis de abstrao condizentes com cada fase do
projeto. Porm, como a UML trataria as especificidades que uma aplicao Web possui? Cada
tela da aplicao representaria um subsistema prprio? E caso esta mesma tela abra uma outra
cujo estado depende da primeira? Como realizar a interao entre o usurio que utiliza o
navegador e o servidor que executa a aplicao? E as interaes do usurio com o sistema que
no passam pelo servidor?
Por conta destas questes, foi utilizada uma extenso da UML chamada WAE (Web
Application Extension) para conseguir modelar de forma adequada uma aplicao Web com
todas as suas caractersticas prprias. A WAE representa um conjunto de prottipos de
classes e relacionamentos UML especficos do ambiente Web, tais como a pgina do servidor
e scripts do cliente.
Como exemplo de sua utilizao, foi realizada uma iterao sobre um projeto baseado em
uma Intranet com o objetivo de inserir o paradigma orientado a objetos em alguns requisitos
de uma aplicao Web existente e sua eficcia ser discutida.
Alm desta introduo, o projeto pode ser dividido em quatro partes principais:
-
Captulo II, onde so apresentados os conceitos bsicos que cercam uma aplicao
Web;
Captulos III e IV, que explica o processo de desenvolvimento de uma aplicao Web,
seus fluxos de trabalho e principais artefatos gerados;
Captulos VII e VIII, que resumem as principais concluses extradas ao longo de todo
o projeto
Neste captulo ser apresentada uma srie de conceitos e definies sobre o ambiente Web e
suas especificidades. De carter introdutrio, o seu contedo serve para melhor compreenso
dos captulos subseqentes.
2
2.1
2.1.1
Existe uma sutil diferena entre Aplicao Web e site Web. Uma Aplicao Web um
sistema que permite que seus usurios executem as regras de negcio atravs de um
navegador Web, com uma interface de um site Web. Desta forma, os usurios da aplicao
podem afetar, via entrada de dados, o estado do negcio. E justamente isto alterar o estado
do negcio que um site Web no realiza.
2.1.2
2.1.4
Formulrios
Os elementos de formulrio da HTML distinguem um site Web de uma aplicao Web. Ser
atravs dos campos do formulrio que o usurio poder digitar e/ou alterar valores.
O formulrio e seu contedo so submetidos ao servidor Web como parte de outra solicitao
de pgina Web. O servidor Web recebe a solicitao para uma pgina Web especial ou um
mdulo executvel, que capaz de ler os valores dos campos do formulrio e process-los no
servidor. O resultado final a gerao de uma nova pgina HTML enviada de volta para o
navegador.
Geralmente, este processamento dos dados dos campos do formulrio envolve comunicao
com objetos no servidor ou com bancos de dados.
Os dados do formulrio podem ser enviados ao servidor por dois mtodos: GET e POST.
Quando GET usado, os valores de todos os campos so anexados ao URL como parmetros.
Quando o mtodo POST utilizado, o navegador ir empacotar os valores de cada campo em
uma seo especial da solicitao chamada corpo de dados (data body).
O parmetro mais comum o <input>, que possui como tipos mais comuns os seguintes
elementos:
Aplicaes Web
O fato das comunicaes entre cliente e servidor serem sem conexo no torna fcil o controle
do servidor das solicitaes dos clientes e associ-las entre si, uma vez que toda solicitao
estabelece e logo em seguida interrompe um conjunto novo de conexes.
Imagine um cenrio de utilizao do sistema. de se esperar que o usurio navegue por
algumas pginas Web. Se no existir um mecanismo de gerenciamento de estado do cliente,
todas as informaes inseridas anteriormente devero ser fornecidas para cada nova pgina,
tornando o processo cansativo e custoso. Um exemplo deste provvel transtorno seria a
obrigao de se inserir seu login e senha para cada pgina do seu servio de WebMail.
O W3C props um mecanismo de gerenciamento de estado http, conhecido como cookie
2.2.1
Cookies
Um cookie um fragmento de dado que um servidor Web pode pedir a um navegador para
manter e retornar cada vez que ele fizer uma solicitao subseqente de um recurso http para
esse servidor. O tamanho do dado pode alcanar at 4K.
Inicialmente, o cookie enviado de um servidor para o browser adicionando uma linha ao
cabealho HTTP. Se o browser estiver configurado para aceitar cookies, a linha ser aceita e
armazenada em algum lugar na mquina do cliente (isto varia de navegador para navegador).
Quando um cookie enviado ao cliente, ele pode ter at 6 parmetros preenchidos, que so:
Parmetro
Name
Obrigatrio?
Sim
Restries
No deve conter
Definio
Nome do cookie
Value
Sim
blank, , e ;
No deve conter
Valor do cookie
Expiration
No
blank, , e ;
-
date
Path
No
informao
Utilizado para organizar os cookies dentro do
Domain
No
domnio
Utilizado para indicar para quais servidores ou
Require a
No
secure
segura
connection
2.2.2
Sesso
7
Uma sesso representa um uso coesivo e nico do sistema. Normalmente, uma sesso envolve
muitas pginas Web executveis e bastante interao com a regra de negcio no servidor de
aplicao.
O estado da sesso em uma aplicao Web pode ser mantido de quatro maneiras comuns:
1. Colocar todos os valores do estado em cookies;
2. Colocar uma chave nica no cookie e usar um dicionrio ou mapa gerenciado pelo
servidor;
3. Incluir todos os valores de estado como parmetros em cada URL do sistema;
4. Incluir chave nica como um parmetro em cada URL do sistema e usar um dicionrio ou
mapa gerenciado pelo servidor.
Os dois primeiros mtodos sugeridos, baseados em cookies, tm o inconveniente da
dependncia do cliente estar com o browser aceitando cookies.
Os dois ltimos mtodos sugeridos se baseiam na idia que todos os URLs do sistema sero
dinamicamente contrudos para incluir parmetros que contenham todo o estado da sesso ou
apenas uma chave para um dicionrio no servidor.
Porm, esta soluo poder se tornar cara se a manuteno do dicionrio na memria nunca
expirar. Para contornar este problema, a maioria dos dicionrios de sesso so removidos
quando o usurio da aplicao Web termina o processo ou pra de utilizar o sistema por um
determinado perodo de tempo.
Um valor de timeout da sesso geralmente utilizado o de 15 minutos.
2.2.3
Tecnologias de Ativao
8
As tecnologias de ativao so, em parte, o mecanismo pelo qual as pginas Web se tornam
dinmicas e respondem entrada do usurio.
A mais antiga tecnologia de ativao envolve a execuo de um mdulo separado por um
servidor Web. Em vez de solicitar uma pgina HTML formatada do sistema de arquivos, os
navegadores deviam solicitar o mdulo, que o servidor Web interpreta como uma solicitao
para carregar e executar o mdulo. A sada do mdulo normalmente uma pgina HTML
formatada adequadamente, mas poderia ser qualquer outro dado.
O mecanismo original para processar a entrada do usurio em um sistema Web o Common
Gateway Interface (CGI). Os mdulos CGI podem ser escritos em qualquer linguagem,
podendo ser ainda em forma de script.
Os dois grandes problemas ao utilizar CGI so que ele no proporciona automaticamente
servios de gerenciamento de sesso e que cada execuo do mdulo CGI requer um processo
novo e separado.
Hoje j existem solues que resolvem o problema do multiprocesso do CGI. Ao adicionar
plug-ins ao servidor Web, permite-se que o servidor web se preocupe apenas com o servio de
solicitaes HTTP padro e transfira as pginas executveis para outro, j executando o
processo.
Os dois principais enfoques para as tecnologias que ativam a aplicao Web so: mdulos
compilados e scripts interpretados.
Os mdulos compilados so uma soluo eficiente e adequada para aplicaes de alto volume.
As desvantagens recaem sobre o desenvolvimento e manuteno, uma vez que geralmente
estes mdulos combinam regra de negcio com a construo de pgina HTML, tornando a
leitura difcil para o programador. Alm disso, a cada nova atualizao a aplicao Web tem
de ser fechada e o mdulo descarregado.
Enquanto o mdulo compilado parece um programa de lgica do negcio que ocorre para
emitir HTML, as pginas baseadas em script parecem uma pgina HTML que ocorre para
processar uma lgica do negcio.
Estas pginas possuem scripts que sero interpretados e iro interagir com objetos no
servidor. Feito isto, finalmente iro produzir uma sada HTML.
Normalmente, a extenso do arquivo determina ao servidor Web qual servidor de aplicao
dever ser usado para pr-processar a pgina. Exemplos: JavaServerPages, Microsofts Active
Server Pages e o PHP.
Clientes Dinmicos
11
baseadas em script
compiladas
Esto associadas uma pgina Web e podem acessar e modificar seu contedo;
necessrio;
-
Vale ressaltar que a utilizao da lgica de negcio por parte do cliente deve ser incentivada
sempre que ela acesse apenas recursos no cliente. Uma lgica de negcio que requer recursos
no servidor no uma candidata a migrar para o cliente.
A lgica de negcio que implementada no cliente precisa se concentrar no tratamento de
dados na pgina Web propriamente dita.
2.3.1
O documento contm os scripts que utilizam a interface DOM. Ele tambm possui
referncias aos mdulos compilados, que tambm utilizam interface DOM.
J o navegador responsvel pela apresentao do documento HTML dinmico e pela
implementao da interface DOM dos scripts e programas para modificar o documento
HTML.
13
Como a sigla DOM demonstra, os documentos so tratados como objetos possuindo dados e
comportamento. A colaborao entre esses objetos constitui a estrutura do documento. Como
um documento uma coleo de objetos, ele pode ser representado por um modelo de
objetos:
Body
Paragraph
UnOrderedList
List item
14
Script
Objetos JavaScript
O DOM, que a fonte principal de objetos para JavaScript, coloca uma interface de objeto
tanto no documento HTML quanto no browser. O JavaScript pode interagir com o browser e dele extrair informaes como o seu histrico ou com outras pginas de um frameset.
O objeto principal utilizado no trabalho sobre o contedo de um documento o objeto
document, cuja referncia pode ser alcanada pela propriedade document do objeto window,
existente em qualquer funo JavaScript.
15
A figura abaixo mostra a hierarquia DOM disponvel para scripts em uma pgina:
2.3.4
Eventos
A tabela a seguir mostra um resumo dos eventos a que um documento HTML pode
responder, valendo ressaltar que nem todos os elementos do documento HTML podem
responder a todos os eventos:
Evento
Aplica-se a
Ocorre quando
Manipulador
Abort
Imagens
O usurio aborta a
de evento
OnAbort
boto Stop.
O usurio remove o
elementos de formulrio
foco de entrada da
OnBlur
janela, quadro ou
elemento do
Botes, botes de opo, caixas de
formulrio
O usurio clica no
elemento do
Change
Reset, links
Campos de texto, reas de texto,
formulrio ou link
O usurio altera o
OnChange
Error
listas de seleo
Imagens, janelas
valor do elemento
A caraga de um
OnError
Click
OnClick
documento ou imagem
Focus
causa um erro
O usurio d o foco
elementos de formulrio
OnFocus
ou elemento de
Load
Corpo do documento
formulrio
O usurio carrega a
OnLoad
Mouse
reas, links
pgina no navegador
O usurio move o
OnMouseOut
Out
ponteiro do mouse
para fora de uma rea
mapa de imagem do
Mouse
Links
Over
cliente ou link
O usurio move o
OnMouseOver
ponteiro do mouse
sobre um link
Reset
Formulrios
O usurio redefine um
OnReset
formulrio: clica em
Select
um boto Reset
O usurio seleciona
OnSelect
17
um campo de entrada
do elemento do
Submit
Boto Submit
formulrio
O usurio submete um
OnSubmit
UnLoad
Corpo do documento
formulrio
O usurio sai da
OnUnLoad
pgina
Desta forma, a programao no cliente voltada para o evento. Quando esta programao em
JavaScript usada para executar a lgica de negcio ela deve ser idealizada durante a fase
de design, e possivelmente, nos modelos de anlise. Quando ela visa apenas melhorar a
apresentao ela deve ser pensada durante a modelagem dos modelos de interface e na
criao dos prottipos. Estes tpicos sero melhor abordados e esclarecidos no decorrer do
trabalho.
2.3.5
</OBJECT>
Um ponto positivo o fato de os applets Java, aps terem sido descarregados para o cliente,
no sero carregados novamente quando forem chamados posteriormente. Cada vez que a
pgina Web que contm o applets revisitada, o browser verifica se o applet j foi
descarregado e se certifica que possui a verso correta. Se houve alterao de verso ou se
no existir mais no cliente o applet em cache, o applet descarregado novamente.
J os controles ActiveX, ou objetos COM, so a soluo da Microsoft para dar dinamismo ao
cliente, da mesma maneira que os applets Java. Trata-se de um mdulo executvel completo
que acionado pelo navegador.
19
21
Vale ressaltar que ser utilizada a notao dos diagramas UML para sintetizar graficamente
alguns dos fluxos de trabalho, como generalizado acima. No haver, neste momento,
nenhum compromisso em se manter fiel s determinaes que a linguagem UML impe.
Fluxo de trabalho o conjunto de atividades levantamento de requisitos, anlise,
projeto, codificao, teste e manuteno que ao final produz um resultado tangvel e
observvel.
Atividade o conjunto de procedimentos que os operadores executam para gerar os
artefatos de sada do fluxo de trabalho.
Artefato qualquer parte de informao persistente ao projeto produzida pelos operadores
durante suas atividades. Podem envolver modelos, elementos de modelo, documentos e
cdigo-fonte.
Operador um papel executado por uma pessoa durante o processo de desenvolvimento
de software
22
3.1
23
<<include>>
Parte interessada
Desenvolvimento de Software
Iterao de software
(f rom Actors)
3.1.1
Desenvolver modelo
de domnio
Analisar negcio e
problemas percebidos
Analisar o
problem a
Gerenciar verses
de artefatos
Desenvolver
documento de viso
desenvolver plano
de projeto
Diagrama de
atividades
para Caso de
Uso Iterao
de software
Reiterar
Critrios de aceitao
Implantar
sistema
Atualizar
sistema
24
25
NewState
Rever e refinar
plano de iterao
Requisitos
Arquitetura
Anlise
Desenvolver
Ambiente
Projeto
Desenvolver
Projeto
Gerenciar
Alteraes
Implementao
Teste
26
Como descrito na figura anterior, a caracterstica mais marcante deste caso de uso que
vrios os fluxos de trabalho ocorrem em paralelo. Alm disso, recomendvel que o gerente
da equipe consiga ditar um ritmo constante ao processo, seja atravs de reunies de status
semanais, relatrios de testes da manh ou qualquer outra. Isto ir manter a equipe
concentrada no desenvolvimento dos artefatos pretendidos e diminuir a sensao de pnico
quando algum problema ocorrer.
Ao longo da iterao sobre todos os artefatos, devem ocorrer as atividades de rever e refinar
o plano de iterao, rever o progresso com as partes interessadas (atividade importante para
manter investimentos e mostrar o progresso ou estagnao do status do projeto) e tambm
avaliar a iterao ao seu final e ajustar o prximo plano.
3.2
Artefatos Gerados
3.2.1
Modelos
Durante a confeco dos diferentes artefatos que iro compor o sistema, os modelos de
sistema se situam entre os principais, por serem um excelente canal de comunicao entre os
membros da equipe, e tambm por auxiliarem no gerenciamento da complexidade do sistema
em construo.
Os modelos recomendados para desenvolvimento so os seguintes:
-
Modelo de domnio
Modelo de anlise/projeto
Modelo de implementao
Modelo de processo
Modelo de segurana
27
Cada um destes modelos, ainda que possuam um enfoque particular, devem ser consistentes
entre si. Ser esta consistncia que permitir que a equipe consiga visualizar a interao entre
os diversos componentes e tambm prever o impacto que uma alterao em algum deles teria
sobre todo o sistema ou parte dele.
Todos os artefatos principais podem ser agrupados em conjuntos que iro interagir uns com
os outros. Neste momento definem-se estes conjuntos, seus atores e fluxos de trabalho
necessrios para a construo de cada um dos artefatos pretendidos.
3.2.2
Plano de projeto
Gerente de projeto
1..*
Plano de iterao
Equi pe de
arquitetura
Gerenciar iterao
28
3.2.3
Conjunto de domnio
Glossrio
Equi pe de
requisitos
Desenvolver glossrio
Modelo de domnio
Objeto de domnio
Operador
Entidade
29
3.2.4
Conjunto de requisitos
Parte interessada
(f rom Ac tors)
Analista de
sistemas
Viso
Criar declarao de viso
Arquiteto de
informao
Desenvolver especificao de
experincia de usurio
Equipe de
arquitetura
Fluxo Principal
1
Gerente de projeto
Diagrama de seqncia
Elemento
0..*
1
1
Equipe de
requisitos
Diagrama de atividade
Especificao
Especifi car caso de uso
Negcio
Recurso
Poltica de segurana
Arquitetnico
Desempenho
Disponibilidade
Mecanismo de segurana
30
Um requisito uma declarao do que o sistema deve executar. Ele dever especificar uma
soluo de sistema independente da arquitetura do sistema, apenas do ponto de vista de como
gostaramos que o sistema se comportasse.
O documento mais importante deste conjunto o documento de viso. Ser ele que ir
determinar a meta global do sistema a ser desenvolvido e o contexto em que est definido.
Geralmente ele criado antes do projeto mas deve permanecer estvel ao longo de todo o
ciclo de vida do projeto.
J os casos de uso possuem um modelo UML, meramente simblico, e sua especificao com
termos do domnio para que possam ser bem compreendidos por todas as partes interessadas.
Sero eles os principais elos entre o domnio e o mundo tcnico do sistema.
No caso especfico de aplicaes Web, o documento de experincia do usurio ganhou
notvel importncia. Este documento ir definir a aparncia destinada para a aplicao. Ele
faz uma combinao entre o tcnico e o criativo, na medida em que descreve mecanismos de
navegao ao mesmo tempo que folhas de estilo e esquemas de cores. Maiores detalhes sero
apresentados na seo Experincia do Usurio UX.
3.2.5
Conjunto de anlise
31
desenvolver documento de
arquitetura de software
Especificao de subsistema
Equipe de
arquitetura
Projeto de subsistema
Fluxo principal
Diagrama de seqncia
Equi pe de anli se
Classe de anlise
Controle
Diagrama de estado
0..1
Limite
Entidade
Roteiro
1..*
Desenvolver roteiros e fluxos de
Equipe de UX
navegao
Tela
1..*
Diagrama de colaborao
1..*
32
3.2.6
Conjunto de projeto
Viso do processo
Equi pe de
arquitetura
Encadeamento
Subsistema
Projetar subsistema
Equipe de projeto
Processo
Elemento do componente
Classe de projeto
Pgina Web
Equi pe de UX
Tambm sero gerados os modelos de processo, que iro definir em quais camadas da
aplicao Web, cliente, dados, etc os ciclos de vida do objeto iro residir.
Tambm h preocupao com a definio de classes ao nvel de projeto, as assinaturas de
seus mtodos e as associaes entre elas para satisfazer o comportamento do negcio
desejado.
Alm disso, ocorre a colaborao entre a equipe de experincia do usurio com a equipe de
projeto para se definir como estaro dispostas as pginas Web
33
3.2.7
Conjunto de implementao
3.2.8
Conjunto de teste
34
Isto ainda pode piorar, na medida que a equipe esteja com um ciclo de desenvolvimento
pequeno o que tornar as alteraes uma constante.
Cabe aqui mencionar os tipos de teste que podemos realizar sobre um artefato desenvolvido,
sendo cada um possuidor de um enfoque particular. So eles:
-
requisitos, esto implementadas corretamente (ele geralmente parte da anlise dos casos de
uso).
-
pudessem ter sido efetuadas. Ele tenta evitar que alteraes realizadas posteriormente no
adicione falhas a outros pontos do sistema no detectados atravs do rastreamento dos casos
de uso.
As figuras abaixo demonstram os fluxos de trabalho que envolve o conjunto de testes e
tambm suas associaes e rastreamentos:
35
Plano de teste
Desenvolver pl anbo de teste
Procedimento de teste
Projetar procedimento de teste
Equipe de teste
Script de teste
Automatizar teste
Equi pe de
arquitetura
(f rom Use Cas es)
Testar sistema
Resultados de teste
Avaliar teste
Equi pe de
impl antao
(f rom Use Cases)
Plano de teste
Script de teste
<<trace>>
Elemento do caso de uso
Procedimento de teste
<<trace>>
<<trace>>
Requisito no-funcional
Caso de teste
Negcio
Arquitetnico
(f rom Us e Cases)
36
3.2.9
Conjunto de implantao
O fluxo de trabalho do conjunto de implantao tem como objetivo maior definir o plano de
desenvolvimento, que dever ser bem estudado e construdo muito antes da produo do
sistema.
Dependendo do contexto, o plano de desenvolvimento pode ser simples (uma aplicao
Intranet) ou bastante complexo (aplicao Internet com alta demanda e segurana
imprescindvel). Tratar situaes como migrao de aplicaes (um sistema herdado sendo
gradualmente substitudo), componentes comprados de terceiros, conexes de Internet
redundantes so alguns dos exemplos que demonstram a importncia de um estudo prvio e
cauteloso sobre o desenvolvimento do sistema em si.
Plano de implantao
Desenvol ver plano de implantao
Componente binrio
Empacotar componentes
Arquivo de implantao
Equi pe de
impl antao
Procedimento armazenado
Folha de estilo
37
4.1
Documento de Viso
O documento de viso representa a viso geral de todo o projeto e funciona como a origem
de toda a anlise do que conduzir a equipe de desenvolvimento durante todo o processo.
O documento de viso possui alguns elementos principais. So eles:
4.1.1
Descrio do problema
Este elemento fundamental para que a equipe de desenvolvimento possa compreender para
quem o sistema est sendo criado e quais so as suas reais necessidades e expectativas
individuais. As partes interessadas podem compreender odesde os usurios finais do sistema
at departamentos ou organizaes inteiras.
4.1.3
A grande parte dos projetos bem-sucedidos so aqueles que possuem escopo limitado. Nunca
ser possvel que todos os problemas do negcio sejam resolvidos por um sistema de
software. A equipe deve elencar o menor conjunto de necessidades das partes interessadas
que deve ser plenamente atendido, e nunca as necessidades da equipe de desenvolvimento.
Uma idia inicialmente discutida sobre recursos disponveis e intervalo de tempo tambm
contribuem bastante para um bom documento de viso.
4.1.4
Segurana
Deve-se esboar o nvel de segurana do sistema de modo geral e apontar a(s) rea(s) onde
ela assume um papel mais crtico. Pode-se tentar estabelecer o impacto que a segurana
dever ter sobre funcionalidades e desempenho do sistema.
4.1.6
39
Ao fim, vale ressaltar que o documento de viso, por ser confeccionado com grande
facilidade de compreenso, bastante usado para se obter financiamento. Por isso, e para
garantir finaciamenos futuros, o documento deve conter vises realistas, e nunca futuristas ao
ponto de no se concluirem dentro do prazo e modo estipulados e causar frustrao. Estipular
critrios de sucesso efetivos e tangveis de fato tambm em muito contribuem para sua boa
aceitao.
4.2
Documento de Requisitos
executar
-
40
41
4.2.1
Coletando requisitos
A equipe de requisitos ser a responsvel por coletar os requisitos exigidos pelo sistema. A
participao de todos os seus membros fundamental neste momento, pois neste momento
ocorre a udana de foco entre o mundo do problema (o seu domnio) e o campo da soluo (o
mundo do sistema de software). Ser ao realizar esta transio que algumas informaes
podem ser negligenciadas ou at mesmo erroneamente transformadas.
importante que a equipe de requisitos possua como membro pelo menos um representante
da comunidade de usurios ou das partes interessadas e um membro tcnico da equipe de
desenvolvimento.
Cada requisito dever possuir uma identificao nica dentro do documento, sendo o seu
contedo auto-explicativo. Ao longo do projeto, cada elemento do modelo dever atender a
pelo menos um desses requisitos, para que sua existncia seja justificada.
4.2.2
Priorizando requisitos
42
Um caso de uso consiste em uma declarao textual da interao entre um ator e o sistema.
Todo caso de uso possui uma descrio textual de um cenrio de utilizao do sistema,
contendo a entrada de dados por parte do ator e o sistema, em resposta, exibindo uma sada
observvel.
Todo caso de uso possui um cenrio denominado cenrio principal. Ele poder possuir
diversos cenrios alternativos, que geralmente iro capturar a interao ator / sistema quando
ocorrem excees durante o cenrio principal.
Um caso de uso deve expressar o que o sistema deve fazer, sem se preocupar em como ir
fazer. Ele deve descrever o comportamento do sistema quando observado pelo lado externo.
O esforo da equipe neste momento ser focar no comportamento de entrada e sada do
sistema, deixando os detalhes de arquitetura e projeto para um momento posterior.
Para uma correta declarao de caso de uso, alm de sua descrio textual de cenrio e de um
nome que reflita objetivamente sua finalidade, ele tambm dever conter:
-
caso de uso. Bastante til durante o rastreamento de casos de uso e durante a sua prpria
confeco, uma vez que a equipe poder questionar se as aes contidas no caso de uso esto
de fato contribuindo para suportarem o objetivo pr determinado.
43
Autores: til para entrar em contato caso alguns pontos exigirem maiores explicaes
Questes importantes / Observaes : Indica uma coleo de itens que precisam ser
definidos antes do caso de uso ser utilizado nas etapas de anlise e projeto.
Como o caso de uso utilizado para melhor descrever os requisitos funcionais, eles devero
estar escritos - assim como os requisitos na linguagem do domnio. Como ser visto a
seguir, o modelo de caso de uso da UML uma ferramenta bastante til no s para a
comunicao entre os membros da equipe, mas tambm entre a equipe e as partes
interessadas. E neste momento a linguagem do domnio se faz imprescindvel.
4.3
A UML nos auxilia a dar uma interpretao grfica dos casos de uso e dos atores que
interagem com o sistema:
44
<<communicate>>
Listar Promoes
Usurio
(f rom Actors)
Os relacionamentos entre ator (no exemplo Usurio) e caso de uso (Listar Promoes)
indicam que o ator poder requisitar o caso de uso especificado.
Os principais relacionamentos entre casos de uso so os do tipo <<include>> e <<extend>>.
Ambos representam uma relao de dependncia entre casos de uso. O relacionamento
<<include>> entre casos de uso indica que um ir chamar o outro pelo menos uma vez
quando requisitado. J o relacionamento <<extend>> indica que o caso de uso pode - ou no
estender o dilogo entre com o sistema ao chamar o outro caso de uso.
<<incl ude>>
Cliente
Pagar Fatura
Pagar taxa
O modelo de caso de uso mostra um relacionamento estrutural entre os casos de uso, sem
mostrar os relacionamentos dinmicos ou fluxos de trabalho. Para tal, a equie deve utilizar
deveremos os diagramas de seqncia, atividade e colaborao.
Sero os diagramas de atividade que iro mostrar claramente todos os cenrios o principal e
os alternativos durante cada caso de uso. Eles tambm esclarecem a natureza dos
relacionamentos <<include>> e <<extend>>. Basta notar no diagrama de atividades se
possvel que o ator v da atividade inicial final sem chamar o caso de uso extendido.
45
Tambm til gerar diagramas de seqncia para cada cenrio de caso de uso. Eles iro
auxiliar a equipe a identificar as declaraes mais importantes no texto do caso de uso. Ao se
deparar com casos de uso prolixos esta atividade ser muito bem-vinda.
Usurio
Sistema
Entrar na rede
Vale ressaltar que estes diagramas de seqncia sero constitudos apenas pelo ator e uma
instncia do sistema, cabendo s etapas de mais baixo nvel a tarefa de expandir as
mensagens entre os dois em mensagens concretas entre instncias de classes determinadas.
46
4.4
Documento de Anlise
Estrutura
O modelo de anlise de nvel superior deve considerar a diviso de pacotes realizada durante a
atividade de definio dos casos de uso:
Preo Promocional
Usurio
Emprstimo
Mesmo sendo um bom ponto de partida, este modelo inicial pode falhar ao tentar definir a
viso estrutural do sistema, que so as classes. Isto ocorre porque provvel que alguns
objetos participem de muitos casos de uso e pacotes e logicamente no podem ser atribudos a
um nico pacote de caso de uso.
Por isso, aconselhvel que, ao partir do modelo de anlise de nvel superior, se v a nveis
mais baixos e consigamos dividir cada pacote principal em menores. Desta maneira, a equipe
conseguir gerenciar melhor o modelo de anlise e agrupar os futuros objetos semelhantes, e
no os comportamentos.
Em resumo, ao definir pacotes a equipe de anlise dever se preocupar em garantir que eles
sejam:
Compreensveis;
Hierarquicamente
superficiais
poucos
nveis
hierrquicos
reduzem
Elementos estruturais
48
Usuario do
sistema
Fronteira
Controle
Entidade
(f rom Actors)
Experincia do Usurio UX
49
Artefatos do modelo UX
Roteiro
1..*
1..*
Equipe de UX
Diagrama de colaborao
Tela
1..*
O conceito de tela no pode ser confundido com pgina Web, que so os mecanismos que
criam e produzem as telas. Desta forma, a tela representa estritamente o que apresentado ao
usurio.
Cada tela de uma aplicao Web dever possuir um contedo esttico geralmente fornecido
pelo sistema de arquivos do servidor - e um contedo dinmico construdo a partir da
interao com os componentes do lado do servidor.
Alm destas propriedades, a tela tambm possui:
Nome e descrio;
50
Nome da Tela
Como em qualquer modelo, nem todas as propriedades de uma tela so adequadas para serem
capturadas por ele, que representa uma simplificao, uma abstrao da realidade.
O contedo esttico da tela e a sua estrutura (layout) no devem ser capturados pelo
modelo. J o contedo dinmico arquitetonicamente significativo e deve ser representado
pelo modelo da equipe de UX. A representao da associao entre a tela e o contedo
dinmico igual a todas as classes UML. No exemplo abaixo, a tela de promoo possui
como contedo dinmico o nome do artigo, da loja e uma lista contendo linhas de preo
promocional:
Preo Promocional
Tela de Promoo
Nome do Artigo
Nome da Loja
0..*
Preo : Currency
Inicio : Date
Fim : Date
IncluirPromocao()
4.5.2
51
Promoo
Data inicial : TextBox
Data final : TextBox
Preco : textBox
Documento de Arquitetura
Desse modo, compreensvel que o documento de arquitetura tente abranger diversos pontos
de vista do sistema. Cada ponto de vista ou viso ser uma projeo dos modelos da
aplicao Web.
Num primeiro momento esta atividade pode parecer redundante, uma vez que cada modelo
criado a partir de uma abstrao diferente do sistema. Porm, o documento de arquitetura ir
focar apenas no que arquitetonicamente significativo. Um requisito arquitetonicamente
significativo aquele que possui um profundo impacto no desenvolvimento do resto do
sistema.
52
As vises iro compreender, assim, os requisitos, os modelos de projeto UML viso lgica e
de processos a realizao do sistema (quais sero os mecanismos de comunicao? H
limites de desempenho?) e as estratgias e estruturas de teste.
4.6.1
Atividades da Arquitetura
Ao priorizar os casos de uso, deve-se buscar aqueles que apresentam maior risco, que
envolvam uma tecnologia nova e/ou desconhecida para a equipe ou que exija um alto grau de
desempenho. Desta maneira, a equipe estar evitando surpresas desagradveis durante o
desenvolvimento da aplicao.
Ao definir uma arquitetura candidata para uma aplicao Web, deve levar em considerao os
requisitos significativos e tambm os aspectos culturais da empresa destinada a realizar o
sistema. Assim, as experincias anteriores e as habilidades dos profissionais envolvidos so
determinantes para a deciso da arquitetura candidata.
4.6.2
Um padro arquitetnico tem como objetivo nos ajudar a compreender as formas bsicas de
camadas de apresentao em uma aplicao Web.
Os trs padres mais comuns so:
Internet. Se caracteriza por um pouco controle sobre a configurao do cliente. Toda a lgica
do negcio executada no servidor.
executada no cliente, utilizando HTML, applets e controles ActiveX. A aplicao ainda utiliza
o protocolo HTTP para comunicao com o servidor.
53
scripts e applets;
Pgina dinmica: pginas Web que processam algo do lado do servidor, sendo
implementadas como pginas com script (ASP, JSP, PHP, etc)e processadas por um servidor
de aplicao;
servidor;
54
<<Apresenta>>
Pgina Web
Script
Applet
Servidor de Banco de dados
Navegador
DOM
Servidor de Aplicao
HTTP
Servidor Web
Recurso de pgina
Pgina Dinmica
Pgina Esttica
Sistema de Arquivos
4.7
Projeto
Desse modo, as classes se tornam mais definidas, com atributos totalmente qualificados
nome e tipo e mtodos contendo assinaturas perfeitas. Nesta fase de projeto surgem as
classes auxiliares e de implementao. Ao final, temos um modelo que pode ser mapeado
diretamente para o cdigo, que de fato o vnculo entre as regras de negcio abstratas e a
realidade do software.
55
Alm disso, durante a fase de projeto a equipe tambm dever separar os objetos entre
camadas - cliente, servidor e outras que possam ser identificadas e definir interfaces com o
usurio por meio das pginas Web.
Neste momento, nota-se a importncia das pgina Web. A pgina Web atua como um
continer generalizado de interface com o usurio, unindo o navegador com o restante do
sistema. Para a modelagem de aplicaes Web, ento, vital capturar as pginas e representlas com a mesma preocupao concedida s classes e componentes do restante do sistema.
Partindo deste conceito a pgina Web um objeto como outro qualquer a modelagem de
pginas Web levanta questes referentes a como representar a dinmica de scripts que rodam
no servidor e outros scripts que rodam no cliente. Ou seja, temos comportamentos
completamente distintos dependendo da camada onde a pgina estar sendo processada.
A simples utilizao dos conceitos da UML no consegue representar de forma adequada esta
nova realidade. Por isso, os criadores da UML criaram uma maneira de estender a linguagem
de forma controlvel: a extenso de aplicao Web (WAE).
56
4.7.1
A extenso de aplicao Web permite que se represente pginas Web e outros elementos
significativos do ponto de vista arquitetnico do modelo, juntamente s classes normalmente
utilizadas para todos os sistemas de software.
A seguir, sero apresentados os principais esteretipos, valores com tags e restries que
compem esta extenso da UML.
4.7.1.1 Viso Lgica
A WAE define trs esteretipos de classe principais:
Pgina do Servidor
Representa uma pgina Web dinmica, que contm scripts que so executados pelo servidor,
interagindo com recursos do lado do servidor, como bancos de dados, componentes de lgica
do negcio, sistemas externos, etc.
Server Page
Pgina do Cliente
Representa uma pgina Web formatada em HTML com uma mistura de dados, apresentao e
lgica. Elas so apresentadas pelos navegadores, podendo conter scripts interpretados tambm
pelo navegador.
As pginas do cliente podem se associar a outras pginas do cliente e do servidor.
57
Formulrio HTML
Representa uma coleo de campos de entrada que so parte de uma pgina do cliente, sendo
mapeada diretamente para a tag <form> da HTML.
HTML Form
As relaes bsicas entre os elementos estereotipados WAE podem ser observadas abaixo:
Client Page
Form
<<buil d>>
Server Page
<<submit>>
58
<<build>>
<<submit>>
<<redirect>>
<<object>>
<<include>>
<<forward>>
Pgina Esttica
59
Representa um recurso que pode ser solicitado diretamente pelo navegador do cliente. Ela
produzida diretamente do sistema de arquivos para o cliente.
Pgina Esttica
Pgina Dinmica
Representa um recurso que pode ser solicitado pelo navegador do cliente. Quando estiver
apontado pela associao <<forward>>, ocorre o processamento do lado do servidor. Os
resultados podem alterar o estado do servidor para construir algum HTML a ser transmitido.
Pgina Dinmica
<%
%>
Raiz Fsica
Representa uma abstrao de uma hierarquia de arquivos que contm recursos disponveis
solicitao. Ele nos remete diretamente para um diretrio do sistema de arquivos do servidor
Web. Para isto, seus valores de tag Web Location (ex: www.projetofinal.com.br ) e
Project Directory (ex: www.projetofinal.com.br/LucasAlenquer) so utilizados.
Raiz Fsica
4.7.2
60
Cabealho
WctHeader.ascx
Tela Home
WpgHome.aspx
Elementos do modelo UX
Cabealho
WctHeader.ascx
<<forward>>
Tela Home
<<build>>
WpgHome.aspx
FormulrioHome
WpgHome.html
FormHome
Desta forma permitiremos que as duas equipe possam trabalhar de forma relativamente
independente. A equipe de UX pode desenvolver o HTML e supor que o acesso a
determinado contedo estar disponvel. J a equipe de engenharia ir trabalhar com esboos
das pginas Web bastante simples, apenas para testar o seu funcionamento.
62
Neste captulo esto reunidos os artefatos gerados durante a realizao de uma iterao sobre
o sistema Livraria, onde novos requistos so introduzidos e o projeto ser orientado a objetos.
5
5.1
5.1.1
Uma livraria com lojas espalhadas pela cidade necessita realizar um correto gerenciamento
sobre seus processos, principalmente os que interferem no preo praticado dos artigos venda
e, conseqentemente, nos seus estoques.
Neste contexto, necessrio armazenar e acessar dados sobre as transaes que os
funcionrios das lojas esto envolvidos, como a definio/alterao de promoes nos preos
praticados e emprstimo de artigos para clientes, bem como limitar o acesso de alguns
funcionrios a partes do sistema cujas tarefas no lhe competem.
5.1.2
importante ressaltar que a soluo de software a ser desenvolvida compreende uma nova
iterao sobre um sistema j existente e em fase de evoluo. Desta forma, alguns requisitos
e seus posteriores casos de uso j foram implementados e os requisitos abaixo mencionados
sero adicionados ao sistema.
Os requisitos bsicos os quais o sistema se destina so:
O sistema ser uma aplicao ASP.NET que ir permitir que o usurio edite preos
promocionais, gerencie emprstimos de artigos e realize cadastro e alterao de dados dos
usurios do prprio sistema.
Para realizar tais tarefas, sero utilizados os seguintes recursos:
1.
2.
3.
4.
5.
O sistema ser composto por uma pgina central, que ir conter links para as pginas que iro
realizar os casos de uso desejados.
64
Cada pgina ter a responsabilidade de garantir a consistncia dos dados visualizados pelo
usurio atravs da conexo com o Banco de Dados, se utilizando de artefatos previamente
armazenados (Stored Procedures , Funes e Views) para capturar as informaes que
desejar.
Os scripts do lado do cliente tero como finalidade bsica poupar o servidor da aplicao de
requisies desnecessrias, realizando tarefas tais como verificao de dados de entrada do
usurio e outras que no necessitem de interao com o servidor.
Haver uma pgina que receber uma identificao do artigo especificado. Conhecendo o
artigo, surgir uma listagem com os valores e os perodos de validade dos preos
promocionais anteriormente registrados.
Haver um formulrio para entrada de dados referentes a um novo preo promocional ou a um
j existente (neste caso uma modificao de informaes).
Gerncia de Emprstimo
O usurio acessar uma pgina contendo uma listagem com os clientes que possuam
emprstimos realizados em cada loja. Cada nome de cliente, quando clicado, funcionar como
um link para uma nova pgina que mostrar os detalhes do emprstimo do cliente e na loja
especificados.
Cadastro de Usurio
O usurio acessar uma pgina contendo uma listagem com os usurios do sistema
cadastrados. Haver um link para uma nova pgina que ir conter um formulrio para entrada
de dados de cadastro de um novo usurio. Caso o usurio clique sobre o nome de um usurio
da listagem, a nova pgina que contem o formulrio ir surgir com o mesmo j preenchido
com os dados mais recentes do usurio escolhido.
65
5.2
Artigo Qualquer item que esteja venda em qualquer uma das lojas existentes.
Cliente Pessoa Fsica ou Jurdica que se envolve em qualquer tipo de operao com a
empresa
Devoluo Movimento de entrada de estoque que se caracteriza quando o cliente ou
funcionrio retorna o(s) artigos(s) emprestado(s) loja de origem.
Emprstimo - Movimento de sada de estoque que se caracteriza quando o cliente ou
funcionrio obtm um ou mais artigos sob emprstimo junto loja de origem.
Funcionrio Qualquer pessoa que esteja contratada pela livraria em qualquer uma das lojas
existentes.
Loja Qualquer estabelecimento comercial que esteja em funcionamento sob a marca da
livraria.
Preo Promocional Preo de venda praticado para um determinado artigo em uma
determinada loja, tendo um valor expresso em moeda local e um perodo de validade prdefinido.
Produtor Pessoa jurdica responsvel pela produo de um artigo.
Usurio Qualquer pessoa fsica ou jurdica que possua acesso ao sistema da livraria e dele
se valha para executar tarefas ou obter informaes sobre a livraria.
66
5.3
Requisitos Funcionais
Cada artigo poder possuir um preo promocional diferente em cada loja da livraria.
As datas de incio e de trmino devero ser formatadas na ordem dia / ms / ano.
O preo promocional dever ser formatado como nmero real com duas casas decimais e com
a parte decimal separada por vrgula.
67
5.3.1.1.1 Requisito
O sistema dever permitir que o usurio visualize, dentre uma lista de artigos, aquele que
deseja programar um preo promocional.
Critrio de sucesso: O sistema deve mostrar o nome e o produtor do artigo escolhido.
5.3.1.1.2 Requisito
O sistema dever permitir que o usurio escolha a loja para qual deseja programar o preo
promocional do artigo selecionado.
Critrio de sucesso: O sistema deve mostrar uma lista com os dados das ltimas
programaes do artigo na loja selecionada: datas de incio e de trmino, preo de venda
programado e o nome do autor da programao
5.3.1.1.3 Requisito
O sistema dever permitir somente a entrada de preos promocionais cuja data de incio(dia
ms e ano) seja posterior data corrente. Caso contrrio, o usurio dever ser informado.
Critrio de sucesso: O sistema mostrar mensagem de confirmao de entrada do preo
promocional e mostrar a lista com os dados das programaes (datas, preo de venda
programado e o nome do autor da programao) j incluindo a nova entrada.
5.3.1.1.4 Requisito
O sistema dever permitir a entrada de quantos forem os preos promocionais programados,
desde que um perodo no se sobreponha a outro existente.
Critrio de sucesso: O sistema mostrar mensagem de confirmao de entrada do preo
promocional e mostrar a lista com os dados das programaes (datas, preo de venda
programado e o nome do autor da programao) j incluindo a nova entrada. Caso contrrio,
o usurio dever ser informado.
68
5.3.1.1.5 Requisito
O sistema dever permitir que se altere o valor de um preo promocional somente enquanto
sua data de entrada em vigor no tiver sido alcanada.
Critrio de sucesso: O sistema dever atualizar a lista com os dados dos preos promocionais
programados (datas, preo de venda programado e o nome do autor da programao). Caso
contrrio o usurio dever ser informado.
5.3.1.1.6 Requisito
O sistema dever permitir que o usurio altere as datas de incio e de trmino do preo
promocional programado, desde que o novo perdo no seja anterior data corrente e tambm
no seja posterior data de incio de um eventual prximo preo promocional.
Critrio de sucesso: O sistema dever atualizar a lista com os dados dos preos promocionais
programados (datas, preo de venda programado e o nome do autor da programao). Caso
contrrio o usurio dever ser informado.
5.3.1.1.7 Requisito
O sistema dever permitir que o usurio cancele uma programao de preo promocional cujo
perodo seja posterior data corrente.
Critrio de sucesso: O sistema dever atualizar a lista com os dados dos preos promocionais
programados (datas, preo de venda programado e o nome do autor da programao). Caso
contrrio o usurio dever ser informado.
5.3.1.2 Gerncia de Emprstimo
O sistema escolher um determinado artigo e permitir o armazenamento de dados
referentes a um emprstimo a um funcionrio em uma determinada loja, bem como o de sua
posterior devoluo.
O sistema dever informar o saldo da quantidade e valor dos artigos que o cliente possui sob
emprstimo no momento.
69
70
5.3.1.2.4 Requisito
O sistema dever permitir que o usurio insira a devoluo de um item por ele especificado,
bem como sua quantidade.
Critrio de sucesso: O sistema mostrar mensagem de confirmao de entrada da nova
devoluo e mostrar a lista atualizada com os dados dos movimentos, j incluindo a nova
devoluo.
5.3.1.2.5 Requisito
O sistema dever permitir que o usurio visualize apenas os artigos que o funcionrio ainda
est por devolver.
Critrio de sucesso: O sistema mostrar uma lista contendo apenas os artigos cujo saldo no
sejam iguais zero.
5.3.1.3 Gerncia de Usurio
O sistema dever tratar da insero e edio de informaes dos usurios do sistema, que
permitiro a sua entrada atravs de um login identificador e uma senha pessoal.
Cada usurio possuir um login composto por caracteres alfanumricos e senha de at 7
caracteres alfanumricos.
A senha do usurio dever ser criptografada e ento armazenada no sistema.
Cada usurio poder informar, alm de login e senha, seu nome, e-mail para contato e
telefone.
71
72
5.3.2
Requisitos No Funcionais
5.3.2.1 Usabilidade
O sistema no dever se utilizar de elementos frame de HTML.
O sistema deve permitir que o usurio execute uma funo do sistema em no mximo quatro
cliques.
5.3.2.2 Desempenho
O sistema dever levar no mximo 8 segundos para executar suas funes e carregar suas
pginas no navegador do cliente.
5.3.2.3 Rotina
A manuteno do sistema dever ocorrer uma vez por semana quando em funcionamento
normal.
A correo de possveis falhas dever ocorrer uma vez por semana, porm nunca s sextasfeiras, por se tratar da vspera de fim de semana perodo de maior movimento nas lojas da
livraria.
O backup do sistema dever ocorrer todos os dias, ao trmino do horrio comercial.
73
A equipe dever possuir no mximo 12 horas para executar todas as tarefas mencionadas
anteriormente.
5.3.2.4 Segurana
Alm do controle de acesso ao sistema atravs de login e senha pessoal criptografada, o
sistema no ir exigir outras medidas preventivas, por se tratar de um sistema de Intranet que
no estar exposto a outros sistemas externos.
5.3.2.5 Hardware
As mquinas dos clientes devero possuir no mnimo 256MB de memria RAM e o
navegador Internet Explorer instalado. O servidor de banco de dados dever possuir no
mnimo 8GB de espao em disco.
5.3.2.6 Implantao
Todos os membros da equipe devero seguir o mesmo processo de alterao do
sistema. As atividades ocorrero na seguinte ordem:
1-
Gerar um script com todos os objetos da base de dados que foram criados /
apresentao do sistema;
74
5-
novo executvel;
6-
Enviar e-mail para a equipe contendo todos os arquivos do sistema e objetos da base
7-
Durante a fase de testes: caso surja algum problema, retornar com o sistema
5.4
Neste documento estaro relacionados todos os casos de uso gerados para implementar os
requisitos descritos para a iterao de desenvolvimento de software do sistema Livraria.
5.4.1
<<include>>
Usuari o
<<incl ude>>
(f rom Actors)
75
Suposies: Nenhuma
Usurio
Sistema
Exibir pgina
Selecionar
Loja
Exibir Preos
Promocionais
76
especificada.
-
alterao.
-
77
Usurio
Sistema
Validar dados
de entrada
[Erro]
Exibir mensagem
de Erro ao alterar
[Ok]
Atualizar Preo
Promocional
Listar Preos
Promocionais
loja especificada.
-
excluso.
-
Usurio
Sistema
Solicitar
cancelamento
Exibir mensagem de confirmao
de cancelamento
[Ok]
Apagar Preo
Promocional
[No]
Listar Preos
Promocionais
especificada.
-
Suposies: Nenhuma
Usurio
Sistema
Validar dados
de entrada
[Erro]
[Ok]
Exibir mensagem
de Erro
Listar Preos
Promocionais
5.4.2
Gerncia de emprstimo
<<incl ude>>
Inserir Emprstimo
<<incl ude>>
Usuari o
Inserir Devoluo
Listar Em prstimos
(f rom Actors)
80
Suposies: Nenhuma
conhecidos.
-
81
Usurio
Sistema
Exibir pgina
Selecionar
Viso
[Pendentes]
Exibir Apenas
Pendentes
[Histrico]
Exibir Histrico
82
Suposies: Nenhuma
conhecidos.
-
Usurio
Sistema
Validar dados
de entrada
[Erro]
[Ok]
Exibir mensagem
de Erro
Inserir Novo
Emprstimo
Listar
Emprstimos
83
Suposies: Nenhuma
Usurio
Sistema
Validar dados
de entrada
[Erro]
[Ok]
Exibir mensagem
de Erro
Inserir Nova
Devoluo
Listar
Emprstimos
84
5.4.3
Gerncia de Usurios
<<include>>
Cadastrar Usurio
<<include>>
Usuari o
Alterar Usurio
Listar Usurios
(f rom Actors)
Suposies: Nenhuma
85
Usurio
Selecionar pgina
Sistema
Exibir pgina
Selecionar Critrios de
Filtro: Nome, Login, Loja, etc
Exibir Usurios
86
Suposies: Nenhuma
1 O usurio digita e envia os dados cadastrais do usurio (nome login, senha, lojas, etc);
2 O sistema valida os dados de entrada. Em caso afirmativo, o sistema ir inserir o usurio
e chamar o caso de uso Listar Usurios. Do contrrio, ir para a atividade 2.1
2.1 O sistema exibir uma mensagem de erro.
Usurio
Sistema
Validar dados
de entrada
[Erro]
[Ok]
87
Suposies: Nenhuma
alterao
-
88
Usurio
Sistema
Validar dados
de entrada
[Erro]
[Ok]
Digitou Senha?
Exibir mensagem
de Erro ao alterar
Listar Usurios
5.5
Sim
No
Atualizar Senha
Atualizar
Usurio
Documento de Anlise
Diagrama de classes
89
Usurio
CodUsuario : Guid
Login : String
Senha : By te [7]
Nome : String
E-mail : String
Telef one : String
Pri vilgio
0..*
0..*
1..*
1..*
Loja
CodLoja : Guid
Nom e : String
New()
New()
Atualizar()
1
1..*
Funcionrio
Departamento
CodDepart amento : Integer
Nome : String
InserirEmprestimo()
GetSaldo()
<<Feito numa...>>
0..*
0..*
0..*
Emprstimo
0..*
new()
GetQtd()
GetValor()
Preo Promocional
Artigo
Quantidade : Integer
Data : Date
CodArtigo : guid
Nom e : String
Produtor : String
MostrarProm oes()
Preo : Currency
Inicio : Date
Fim : Date
0..*
GetDados()
0..*
Devoluo
Quantidade : Integer
Data : Date
new()
5.5.2
Caminhos de navegao
Este documento visa ilustrar os possveis caminhos que o usurio pode tomar ao navegar para
executar as funcionalidades do sistema descritas durante a iterao do desenvolvimento do
sistema Livraria.
90
Tela de procura
de Artigo
<<link>>
Tela Home
<<link>>
Tela de c adastro de
Preo Prom ocional
<<link>>
Tela de Gerncia
de Emprstimos
<<link>>
<<link>>
Tela de Gernci a
de Usurios
<<link>>
Tela de cadastro
de movi mento
T ela de Cadastro
de Usurio
5.5.3
Diagramas de Seqncia
91
: Tela de cadastro de
Preo Promocional
: Artigo
: Preo
Promocional
: Usuario do
sistema
ReceberDadosEntrada
InserirPromocao
new
ExibirPromocoes
Seq-Listar
Promoo
92
: Tela de cadastro de
Preo Promocional
: Artigo
: Preo
Promocional
: Usuario do
sistema
CancelarPromocao
MensagemConfirmacao
DeletePromocao
destroy
ExibirPromocoes
Seq-Listar
Promoo
: Tela de cadastro de
Preo Promocional
: Artigo
: Preo
Promocional
: Usuario do
sistema
ReceberDadosEntrada
EditarPromocao
update
ExibirPromocoes
Seq-Listar
Promoo
94
: Tela de cadastro de
Preo Promocional
: Artigo
: Preo
Promocional
: Usuario do
sistema
EscolherLoja
GetPromoes(Guid)
GetDados( )
ExibirPromocoes
95
: Tela de Gerncia
de Usurios
: Usurio
: Usuari o do
sistema
DadosFiltragem
GetDados
ExibirUsuarios
96
: Tela de Cadastro de
Usurio
: Usurio
: Tela de Gerncia de
Usurios
: Usuario do
sistema
AtualizarUsuario
Update
Seq-ListarUsuarios
97
: Tela de Cadastro de
Usurio
: Usurio
: Tela de Gerncia de
Usuri os
: Usuario do
sistema
InserirUsuario
New
Seq-ListarUsuarios
98
: Tela de Gerncia de
Emprstimos
: Usuario do
sistema
: Funcionrio
: Emprstimo
CarregarEmprestimosPendentes
InserirEmprestimo(Guid, Guid, Integer, DateTime, Guid)
GetQtd(Loja)
GetValor( )
99
: Tela de cadastro de
movimento
: Funcionrio
: Emprstimo
: Usuario do
sistema
SelecionaVisao
ListarMovimentos
GetDados
ExibirMovimentos
100
: Tela de cadastro de
movimento
: Funcionrio
: Emprstimo
: Usuario do
sistema
InserirEmprestimo( )
new( )
ExibirMovimentos
101
: Tela de cadastro de
movimento
: Funcionrio
: Emprstimo
: Devoluo
: Usuario do
sistema
InserirDevolucao( )
new( )
new( )
ExibirMovimentos
102
5.6
Documento de arquitetura
Arquitetura candidata
Partner
A aplicao Web .NET define a pgina Web como a responsvel por manipular todos os
eventos do lado do cliente. A pgina MinhaPagina.aspx ser modelada como uma classe
<<server page>> associada a uma classe oculta MinhaPagina.vb, que ir possuir os cdigos
que manipulam os eventos e interagem com os objetos do negcio. Desta forma, o arquivo
MinhaPagina.aspx escrito quase todo em HTML, se preocupando apenas com a criao da
tela para o cliente.
A manipulao dos eventos do lado cliente poderia ser implementada no prprio arquivo
aspx, porm no recomendo esta prtica. No projeto, prefiro associar atravs do esteretipo
<<include>> o arquivo MinhaPagina.aspx a um arquivo Javascript MinhaPagina.js, cabendo
ao aspx fazer apenas as chamadas s funes do script.
A aplicao Web .NET tambm permite que se crie arquivos definidos como controles do
usurio user control. Estes arquivos (com a extenso ascx) so basicamente trechos de
pginas aspx, possuindo seus prprios controles e elementos HTML no cliente, bem como seu
cdigo oculto que manipula seus eventos. Desta forma, o arquivo ascx possui uma interface
com o cliente tanto quanto a pgina aspx. Porm, ele necessita da pgina aspx para ser
utilizado pelo usurio, bastando que no arquivo aspx exista a referncia ao user control,
quantas vezes o desenvolvedor julgar necessrio.
O esquema bsico de modelagem de pginas Web .NET a ser utilizado mostrado a seguir.
Nele, temos os relacionamentos existentes entre a pgina Web WpgHome.aspx com um user
control chamado WctHeader.ascx:
104
<<include>>
f(){
}
WctHeader.ascx.vb
WpgHome.js
<<buil d>>
WpgHome.html
WctHeader.ascx
<<submit>>
Formulri oHome
5.6.1
WpgHome.aspx.vb
WpgHome.aspx
Estratgia de reutilizao
Para usar da melhor forma a reutilizao no .NET, deve-se levar em conta que no pode haver
herana entre os arquivos .ascx e os .js. Porm, haver funes de script no lado do cliente
que sero utilizadas por grande parte das telas e sero, portanto, candidatas a serem agrupadas
em um prprio arquivo Javascript.
A reutilizao dos user controls se dar na medida em que a equipe identifique um trecho
de interface com funes bem definidas que se repetir na tela do usurio com freqncia.
Este trecho de interface ter, obviamente, uma representao HTML prpria e seus objetos de
interface iro disparar eventos tambm. Desta forma, este trecho ser candidato a ser
encapsulado em um arquivo ascx.
J as pginas Web .NET geradas pela ferramenta herdam de uma classe do framework
denominada Page, que j possui encapsulados diversos mtodos que facilitam a troca de
informaes entre o seu formulrio e o servidor. Porm, a pgina aspx no pode
105
simplesmente herdar de uma outra pgina aspx, pois cada elemento inserido na pgina aspx
possui uma representao nica em HTML, e no momento da construo do HTML da tela
as tags dos objetos da classe pgina herdada no sero encontradas.
Para que haja a reutilizao de pginas aspx, a equipe dever criar uma classe intermediria
que herde da classe Page. Esta classe intermediria dever ser herdada por todas as classes
das pginas Web aspx criadas durante o desenvolvimento. As pginas aspx devero conter
apenas seus elementos - de servidor e HTML e seus user controls, sem a presena de tags
<html>, <form>, etc.
A classe intermediria dever apenas conter mtodos, sem representao HTML. Estes
mtodos sero responsveis por construir o documento HTML a partir dos elementos
inseridos na pgina filha, retirando assim uma funo que caberia normalmente a prpria
pgina Web aspx.
A classe da pgina aspx, apesar de parecer acfala durante sua construo, permanecer
realizando a comunicao com os objetos do negcio, como se pode observar na figura
abaixo:
Usuario do
sistema
Interface
Controle
Entidade
Pgina Intermediria
(f rom Actors )
<<communicate>>
Pgina HTML
Pgina Aspx
Objetos de Negcio
Pgina Aspx.vb
<<communicate>>
<<communicate>>
Banco de Dados
Pgina aspx:
Duplo Papel
Imposio de
Projeto
Note a presena da pgina aspx na fronteira entre a interface e o controle do sistema. Isto se
deve ao fato da pgina aspx exercer o duplo papel de agregar os elementos de servidor e
106
Consideraes Finais
A aplicao Web nos impe alguns limites. E um deles nos faz considerar o trafgo de rede e
uma utilizao de banda eficiente que no prejudique os demais usurios da aplicao. Ao
requerer um objeto de negcio, a pgina aspx.vb ir fazer com que a classe v at a base de
dados e instancie o objeto. Isto dever ocorrer inmeras vezes durante a interao entre
usurio e sistema. At este momento nada de novo.
Dependendo do contexto da pgina Web, porm, o simples fato de instanciar um objeto pode
ser muito custoso. Imagine, por exemplo, uma tela de busca que apresente como resultado os
dados dos artigos da livraria que possuam a letra a no seu ttulo. Uma query bem formulada
ao banco de dados nos dar a resposta em pouco tempo. Em contrapartida, aguardar que o
sistema identifique os artigos retornados e os instancie - um a um - para ento exibi-los, alm
de exigir inmeras conexes ao banco retardar demais o tempo de carregamento da pgina
HTML resultante.
Levando tudo isto em considerao, a equipe dever identificar em quais momentos a pgina
dever conhecer ou informar ao usurio informaes que remetam a um todo (ou conjunto)
e a uma parte (elemento especfico). Provavelmente, as telas que necessitem de muitos
dados como a de resultado de busca sero fundamentalmente de consulta.
Desta maneira, o projeto no se enquadrar completamente no paradigma orientado a objetos
porque:
-
dados durante toda a execuo do sistema. Haver classes de suporte que iro fornecer dados
que remetem a um todo.
108
Neste captulo sero apresentados os modelos de classe e seus relacionamentos com todos os
detalhes.
6.1
Privilgio
CodPriv ilegio : Int eger
Nome : String
1..*
0..*
0..*
1..*
Usurio
Loja
1
Funcionrio
1..*
Departamento
0..*
1
Preo Promocional
0..*
<<Feito numa...>>
0..*
0..*
Artigo
Emprst imo
0..*
Usurio
CodUsuario : Guid
Login : String
Senha : Byte [7]
Nome : String
E-mail : String
Telefone : String
Departamentos : Collection
Lojas : Collection
Privilegios : Collection
Status : StatusUsuario
dr : SqlDataReader
CommandSQLServer : SqlCommand
SelectQuery_spUsuario_Select : String
SelectQuery_spListaDepartamentoUsuario : Stri ng
SelectQuery_spListaPrivilegioUsuario : Stri ng
SelectQuery_spListaLojaUsuario : String
Departamentos_Usuario : Collection
_TBDepartamentos : DataTable
_Privilegi os : Collection
_TBPrivilegios : DataTable
_Lojas : Collection
_TBLojas : DataTable
_IndStatus : Stri ng
Sql : InterfaceSQLServer
Coder : Codificacao
_DataSetUsuario : ClsDataSetUsuario
_AtualizaDataSet : DadosDeUsuario
_Privilegi oUsuario : DadosDePrivilegioUsuario
_DepartamentoLojaUsuari o : DadosDeDepartamentoLojaUsuario
New()
New()
New()
CarregarDadosUsuario()
CarregarPrivilegiosUsuario()
CarregarDepartamentosUsuario()
CarregarLojasUsuario()
PossuiPrivilegio()
PossuiPrivilegio()
InserirNovoUsuario()
AtualizarUsuario()
InserirPrivilegiosUsuario()
AtualizarPrivilegioUsuario()
InserirUsuarioDepartamentoLoj a()
AtualizaUsuarioDepartamentoLoja()
Gravar()
Departamentos()
110
Departamento
CodDepartamento : Integer
Nome : String
Natureza : NaturezaDepartamento
UnidadeCobertura : String
dr : SqlDataReader
_sql : InterfaceSqlServer
SelectQuery_spDepartamento_Select : Stri ng
Loja
CodLoja : Guid
Nome : String
EhMatriz : Boolean
dr : SqlDataReader
_sql : InterfaceSQLServer
SelectQuery_spGetLoja_Select : String
new()
CarregaDadosDepartamento()
New()
Funcionrio
_Nome : String
_telefone : String
_CodFuncionario : Guid
_Numero : String
_dr : SqlDataReader
_CommandSQLServer : SqlCommand
_SelectQuery_spGetDadosCliente : Stri ng
_SelectQuery_spListaEmprestimos : String
_SelectQuery_spListaEmprestimosLOJA : Stri ng
_InsertQuery_spCli enteMovimento_Insert : String
_TBEmprestimos : DataTabl e
_Sql : InterfaceSQLServer
Nome : String
CodFuncionario : Guid
Telefone : String
Numero : String
Emprestimos : Coll ection
SaldoDevedor : Integer
new()
CarregarEmpresti mos()
CarregarDadosFunci onario()
InserirEmprestimo()
InserirDevolucao()
Emprstimo
_Qtd : Integer
_Data : Date
_CodFunci onario : Guid
_CodArtigo : Guid
_CodLoja : Guid
_Saldo : integer
_Devolucoes : Collection
_dr : SqlDataReader
_sql : InterfaceSQLServer
_SelectQueryFnSaldoArti goMovimento : String
Saldo : Integer
new()
GetSaldoEmprestimo()
GetValor()
Artigo
CodArtigo : guid
Nome : String
Produtor : String
MostrarPromoes()
New()
111
Preo Promocional
Preo : Currency
Inicio : Date
Fim : Date
_DeleteQueryspArtigoPrecoVenda_Promocao_Delete : String
_SelectQueryspArtigoPrecoVenda_Promocao_Select : String
_ChangeQueryspArtigoPrecoVenda_Promocao_Change : String
_ComandoSQLGravarDados : SqlCommand
_Sql : InterfaceSQLServer
_dr : SqlDataReader
_Artigo : Artigo
_Loj a : Loja
_DataInicio : DateTime
_DataFim : DateTime
_Valor : Double
Artigo : Arti go
Loja : Loja
Valor : Doubl e
DataInicio : String
DataFim : String
New()
New()
PreparaComandoSQL()
Existe()
GravarNovosDados()
Excluir()
112
6.2
Caminhos de navegao
T ela de procura
de Artigo
Tela de c adastro de
Preo Promocional
Tela de
Confirmao
<<link>>
<<link>>
Tela Home
<<link>>
<<link>>
Tela de Gerncia
de Emprstimos
Tela de Gerncia
de Usuri os
<<link>>
<<link>>
Tela de cadastro
de movimento
Tela de Cadastro
de Usuri o
113
6.3
Pacote Login
6.3.1
Pagina
(f rom Analy sis Model)
WpgLogin.aspx.vb
<<Certifica>>
Usurio
(f rom Analy sis Model)
WctHeader.ascx.vb
(f rom Analy sis Model)
WpgLogin.aspx <<forward>>
WctHeader.ascx
(f rom Analy sis Model)
<<link>>
114
CertificaUsuario
(from Analysis Model)
WpgLogin.aspx.vb
(f rom Analy sis Model)
txtUID : TextBox
txtPWD : TextBox
btnOK : Button
<<Certifica>>
DefinirScript()
btnOK_Click()
Command : SqlCommand
Tabela : DataTable
Usuari oExistente : Boolean
CodUsuario : Guid
NomeUsuario : String
New()
Encode()
Decode()
Usurio
(f rom Analy sis Model)
Codificacao
(f rom Analy sis Model)
Encode()
Decode()
New()
6.3.2
Diagramas de Seqncia
115
Login OK
: WpgLogin.aspx.vb
: CertificaUsuario
: Usurio
: WpgHome.aspx.vb
btnOK_Click(Object, EventArgs)
New(String, String)
Usurio Existente
New(Guid)
Redirect
116
Login Falho
: WpgLogin.aspx.vb
: Certifi caUsuario
btnOK_Click(Object, EventArgs)
New(String, String)
"Usurio Invlido"
117
6.4
6.4.1
Pacote Usurio
Relacionamentos Tela de Gerncia de Usurios
WpgUsuarios.aspx.vb
DgUsuarios
<<Preencher>>
Lista_de_Usuarios
WctOrdenaCol una.ascx
<<link>>
WctOrdenaCol una.ascx.vb
WpgUsuarios.as <<communicate>>
px
CodUsuario=
WctOrdenaCol una.ascx
(from Analysi s Model)
<<forward>>
WctHeader.ascx.vb
WpgUsuario.aspx
WctHeader.ascx
118
Listar Usurios
: WpgUsuarios.aspx.vb
: ListagemUsuarios
: WctOrdenaColuna.ascx.vb
CarregaDataGrid(Boolean)
Clear( )
Os dados esto no
atributo Listagem
ReceptorPreparaNovoSort( )
6.4.2
119
WpgUsuario.aspx.vb
(from Analysis Model)
txtNome : TextBox
txtLogin : TextBox
txtMail : TextBox
txtSenha : TextBox
txtRepitaSenha : TextBox
txtTelefone : TextBox
CheckBoxList_Loja : CheckBoxList
CheckBoxList_Departamento : CheckBoxList
CheckBoxList_Privilegio : CheckBoxList
LabelAviso : Label
chkPrivIrrestrito : CheckBox
chkUsuarioAtivo : CheckBox
lnkSalvar : LinkButton
lnkVoltar : LinkButton
Page_Load()
Salvar()
GeraListaMarcados()
TodosForamMarcados()
NenhumFoiMarcado()
lnkVoltar_Click()
lnkSalvar_Click()
chkPrivIrrestrito_CheckedChanged()
GetchkUsuarioAtivo()
CarregarListagens()
CarregarDadosUsuario()
MarcarLojasDoUsuario()
MarcarDepartamentosDoUsuario()
TentarMarcarPri vilegioIrrestrito()
MarcarPrivilegiosDoUsuario()
NovoUsuarioDi gitouLoginExistente()
NovoUsuarioDi gitouSenhaCorreta()
HouveProblemaAoAlterarSenha()
SenhaFoiDigitada()
<<communicate>>
Usurio
Os relaciomentos entre
a tela e WctHeader o
mesmo
120
WpgUsuarios.aspx.vb
Usurio
<<redirect>>
WpgUsuario.aspx.vb
DadosDeUsuario
DadosDePrivilegioUsuario
DadosDeDepartamentoLojaUsuario
ListagemPrivilegios
ListagemLojas
ListagemDepartamentos
(from Analysis Model)
ListagemLojas
_SelectQuery_VwLoja : String
_SelectQuery_spLi staLojaUsuario : String
_TBVwLoja : DataTable
_Sql : InterfaceSQLServer
Listagem : DataView
New()
New()
Clear()
ListagemDepartamentos
SelectQuery_Departamento : String
_TBDepartamento : DataTable
Sql : InterfaceSQLServer
Listagem : DataView
New()
ListagemPrivilegios
SelectQuery_Privilegio : Stri ng
_TBPrivil egio : DataTable
Sql : InterfaceSQLServer
Listagem : DataView
New()
121
DadosDeDepartamentoLojaUsuario
_CodUsuario : Guid
_DatAdapter_Usu_Dep_Loja : SqlDataAdapter
_DataSetUsuario : ClsDataSetUsuario
_Sql : InterfaceSQLServer
spUsuarioDepartamentoLoja_Select : SqlCommand
spUsuarioDepartamentoLoja_Insert : SqlCommand
spUsuarioDepartamentoLoja_Update : SqlCommand
spUsuarioDepartamentoLoja_Delete : SqlCommand
New()
CarregaTabelaUsuarioDepartamentoLoja()
DefinicaoDeParametros()
AtualizarDadosDepartamentoLojaUsuario()
GravarDadosDepartamentoLoja()
_DatAdapter_Usu_Dep_Loja_RowUpdating()
DadosDeUsuario
_CodUsuario : Guid
_DatAdapter_Usu_Privilegio : Sql DataAdapter
_DataSetUsuari o : ClsDataSetUsuario
_Sql : InterfaceSQLServer
spUsuarioPrivilegio_Select : SqlCommand
spUsuarioPrivilegio_Insert : SqlCommand
spUsuarioPrivilegio_Update : SqlCommand
spUsuarioPrivilegio_Delete : SqlCommand
_CodUsuario : Guid
_DatAdapter_Usuario : SqlDataAdapter
spUsuario_Sel ect : SqlCommand
spUsuario_Insert : SqlCommand
spUsuario_Update : SqlCommand
spUsuario_Del ete : SqlCommand
Coder : Codi ficacao
_Senha As String
New()
CarregaTabelaUsuarioPrivilegio()
DefinicaoDeParametros()
InserirPrivilegios()
AtualizarPrivilegioUsuario()
GravarDadosUsuarioPrivilegio()
_DatAdapter_Usu_Privilegio_RowUpdating()
New()
CarregaT abelaUsuario()
InserirDadosDeNovoUsuario()
Atuali zaDadosDeUsuario()
GravarDadosPessoaisUsuari o()
_DatAdapter_Usuario_RowUpdati ng()
DadosDePrivilegioUsuario
122
Inserir Usurio
: WpgUsuario.aspx.vb
: Usurio
: WpgUsuarios.aspx.vb
GeraListaMarcados(CheckBoxList)
InserirPrivilegiosUsuario(Collection)
InserirUsuarioDepartamentoLoja(Boolean, Bool ean, Collection, Collecti on)
Gravar( )
Redirect
123
Atualizar Usurio
: WpgUsuario.aspx.vb
: Usurio
: WpgUsuarios.aspx.vb
GeraListaMarcados(CheckBoxList)
Gravar( )
Redirect
124
6.5
6.5.1
Pacote Promoo
Relacionamentos Tela de Promoes
125
DgArtigoPromocao
<<Preencher>>
WpgArtigoPromocao.aspx.vb
WpgArtigos.aspx
?CodArtigo=
Artigo
WpgArtigoPromo
cao.aspx
0..*
Preo Promocional
<<link>>
WctHeader.ascx.vb
ListagemArtigos
WctHeader.ascx
126
WctTextBoxData.ascx.vb
WpgArtigoPromocao.aspx.vb
WctTextBoxDouble.ascx.vb
(from Analysis Model )
WpgArtigoPromoc
ao.aspx
Artigo
<<build>>
ListagemLojas
Preo Promocional
ListagemPrecosPromocionais
(from Analysis Model)
WpgArti goPromo
cao.html
<<incl ude>>
WpgArtigoPromocao.js
<<link>>
imgCancelar_OnClick()
WpgDialogo.aspx
ListagemPrecosPromocionais
_SelectQuery_spListaPrecoVendaPromoArtigo : String
_TBspListaPrecoVendaPromoArtigo : DataTable
_Sql : InterfaceSQLServer
Listagem : DataView
New()
Clear()
ListagemArtigos
_SelectQuery_VwArtigo : String
_TBVwArtigo : DataTabl e
Sql : InterfaceSQLServer
Listagem : DataView
New()
Clear()
127
6.5.2
Diagramas de Seqncia
Listar Promoes
: ListagemPrecosPromocionais
: WpgArtigoPromocao.aspx.vb
cmbLojas_SelectedIndexChanged(Object, EventArgs)
CarregaGrid(String)
128
Cadastrar Promoo
: WpgArtigoPromocao.aspx.vb
: Preo
Promocional
lnkAtualizaPromo_Click(Object, EventArgs)
ShowMessage(Integer)
CarregaGrid(String)
ListarPreos
Promocionais
Alterar Promoo
: WpgArtigoPromocao.aspx.vb
: Preo
Promocional
ShowMessage(Integer)
CarregaGrid(String)
ListarPreos
Promocionais
129
Cancelar Promoo
: WpgArtigoProm ocao.html
: WpgArtigoPromocao.js
imgCancelar_OnClick( )
:
WpgDialogo.aspx
: WpgArtigoPromocao.aspx.vb
: Preo
Promocional
Window.open
ret = "S"
Page_Load(Object, EventArgs)
New(String, String, DateTime)
Excluir( )
CarregaGrid(String)
ListarPreos
Promocionais
6.6
6.6.1
Pacote Emprstimo
Relacionamentos Tela de Gerncia de Emprstimos
130
Wpgemprestimos.aspx.vb
Page_Load()
CarregaGridClientesPendentes()
DgEmprestimos_ItemDataBound()
WctOrdenaCol unaReceptor_OrdenacaoPermiti da()
DgEmprestimos_PageIndexChanged()
chkFiltrar_CheckedChanged()
WctButtonLink1_Cl ick()
DgEmprestimos
1..*
WctOrdenaColuna.ascx
WpgEmprestimos.
aspx
WctHeader.ascx.vb
WctHeader.ascx
131
WctOrdenaColuna.ascx.vb
(from Analysis Model)
Wpgemprestimos.aspx.vb
WctButtonLink.ascx.vb
ListagemEmprestimosPendentes
(from Analysis Model)
Artigo
(f rom Analy sis Model)
ListagemEmprestimosPendentes
_SelectQuery_spListaClientesEmprestimoPendente : String
_TBspListaClientesEmprestimoPendente : DataTable
_Sql : InterfaceSQLServer
Listagem : DataView
New()
New()
New()
Clear()
WctButtonLink.ascx.vb
lnkButton : LinkButton
Text : String
Wi dth : Unit
Height : Unit
Cli ck()
132
Listar Emprstimos
: Wpgemprestimos.aspx.vb
: ListagemEmprestimosPendentes
: WctOrdenaColuna.ascx.vb
CarregaGridClientesPendentes(Boolean)
New(Usuario, Boolean)
ReceptorPreparaNovoSort( )
DgEmprestimos_ItemDataBound(Object, DataGridItemEventArgs)
6.6.2
WctOrdenaCol una.ascx.vb
Funcionrio
ListagemArtigosClienteDevedor
(from Analysis Model)
WpgEmprestimo.aspx.vb
Artigo
(f rom Analy s is Model)
WctComboSearchTable.ascx.vb
(from Analysis Model)
ListagemLojas
(f rom Analy sis Model)
Loja
(f rom Analy sis Model)
WctTextBoxInteger.ascx.vb
(from Analysi s Model)
133
Emprstimo
WpgEmprestimo.aspx.vb
WpgEmprestimo.
aspx
Emprstimo
_Qtd : Integer
_Data : Date
_CodFuncionario : Guid
_CodArtigo : Guid
_CodLoja : Guid
_Saldo : integer
_Devolucoes : Collecti on
_dr : SqlDataReader
_sql : InterfaceSQLServer
_SelectQueryFnSaldoArti goMovimento : String
Saldo : Integer
new()
GetSaldoEmprestimo()
GetValor()
134
WctComboSearchTable.ascx.vb
txtInstancia : TextBox
cmbInstancia : DropDownList
btnProcurar : Im ageButton
btnEscolher : ImageButton
CodClasse : String
SearchProcedureName : String
NumItensRetornados : Integer
ItemChangedAutoPostBack : Boolean
TableName : String
ColumnValueField : String
ColumnTextFiel d : String
ColumnsToSearch : String
RealizeiBusca : Boolean
PermiteInstanciaNula : Boolean
RecebiCodInstancia : Boolean
CodInstancia : Guid
Modo : TipoModo
AutoPostBack : Boolean
CssClass : String
Wi dth : Unit
Bold : Boolean
TextoBusca : String
CodInstancia_Changed()
Modo_Changed()
Item_Changed()
InverterVisibilidade()
AplicarVisibilidade()
ProcurarInstanci a()
btnEscolher_Click()
Reset()
cmbInstancia_DataBind()
cmbInstancia_SelectedIndexChanged()
txtInstancia_TextChanged()
Ini cieBusca()
EstaProcurando : Boolean()
AddAttributeCombo()
Page_Load()
135
WctTextBoxInteger.ascx.vb
WctTextBoxDouble.ascx.vb
txtValor : TextBox
valValor : CustomValidator
IsValid : Boolean
AutoPostBack : Bool ean
Enabl ed : Bool ean
ReadOnly_ : Boolean
ErrorMessage : String
ClientID_txtVal or : String
MaxLength : Integer
txtValor : TextBox
valValor : CustomVali dator
litTipoVali dacao : Literal
TipoValidacao : ModoValidacao
IsValid : Boolean
ErrorMessage : String
Text : String
Width : Unit
MaxLength : Integer
valValor_ServerVali date()
txtValor_T extChanged()
AddAttribute()
valValor_ServerVali date()
AceitaSomenteVirgula()
AceitaPontoeVirgula()
txtValor_TextChanged()
WctTextBoxData.ascx.vb
txtData : T extBox
val Data : CustomValidator
lblErrorMessage : Label
IsValid : Boolean
ErrorMessage : String
Text : Stri ng
Width : Unit
val Data_ServerValidate()
EhData()
ListagemMovimentosCliente
SelectQuery_spListaMovimentoCli ente : Stri ng
_TBspListaMovimentoCliente : DataTabl e
Sql : InterfaceSQLServer
Listagem : DataView
New()
Clear()
ListagemArtigosClienteDevedor
SelectQuery_spListaMovimentoDevedor : String
_TBspListaMovimentoDevedor : DataT able
Sql : InterfaceSQLServer
Listagem : DataView
New()
Clear()
136
: ListagemArtigosClienteDevedor
lnkListar_Click(Object, EventArgs)
CarregaDados( )
SelecioneGrid( )
CarregaDataGridDevedor( )
New(Funcionario, Loja)
137
: ListagemMovi mentosCliente
CarregaDados( )
SelecioneGri d( )
CarregaDataGridMovimentos( )
New(Funcionario, Loja)
Inserir Emprstimo
: WpgEmprestimo.aspx.vb
: Artigo
: Funcionrio
lnkAdicionar_Click(Object, EventArgs)
New(Guid)
InserirEmprestimo(Guid, Guid, Integer, DateTime, Guid)
CarregaDataGridMovimentos( )
ResetPage( )
138
Inserir Devoluo
: WpgEmprestimo.aspx.vb
: Artigo
: Funcionrio
New(Guid)
InserirDevolucao(Gui d, Guid, Integer, DateTime, Gui d)
CarregaDataGridMovimentos( )
ResetPage( )
6.7
Classes Auxiliares
139
WctOrdenaColuna.ascx.vb
T ipoFiltro : Filtro
T ipoBusca : Busca
BuscaExata : Bool ean
PrepareiLista : Bool ean
EhBuscaExcl udente : Bool ean
Ordenei : Bool ean
EhReceptor : Bool ean
LinkT oolT ip : String
NomeTabelaItensLi sta : String
Gri dContenedor : Stri ng
IDPrioridade : Stri ng
T extoBuscaAbrange : String
Header : String
Comuni cador : String
Sort : Stri ng
CampoSort : Stri ng
DirecaoSort : String
NomeCampo : String
T extoFiltro : Stri ng
T extoBusca : String
SortInicial : String
PrepareSource()
Page_Load()
ZerarParametro()
PreparaComunicacaoReceptorEmissores()
ReceptorPreparaNovoSort()
PodeOrdenar()
OrdenacaoPermiti da()
QtdSortInicial()
QtdEmissor()
ReceptorReturnSortInicialKeySort()
ReceptorReturnDirecaoSortIni ci al KeySort()
ReceptorReturnEmi ssoresKeyNomeCampo()
ReceptorReturnEmi ssoresKeyID()
OrdenarCol una()
Locali zarReceptor()
Bool BotaoSortVisi vel ()
OrdenarCol una_ImageButton()
btnNomeCampo_Cl ick()
ProcurarControle()
NovoFiltro()
SetVisibil idade()
Comuni carEmissorReceptor()
ReceptorAtualizaSortInicial()
SetVisibil idadeT ipoFiltro()
PreparaLi sta()
GetT ableLi sta()
Page_PreRender()
PrepareSource()
ReceptorReset()
ReceptorColetaDadosEmissor()
NovoSort()
cmbNomeCampo_SelectedIndexChanged()
txtCampoFi ltro_TextChanged()
140
Pagina
_Form : HtmlForm
_DOCTYPE : string
_METAINFO : stri ng
_CLOSEDOC : string = </html>
_Title : Html GenericControl
_Body : HtmlGenericControl
_Link : HtmlGenericControl
_Privi legios : Col lection
_Sql : InterfaceSQLServer
_Script : HtmlGenericControl
CodPagina : String
UsuarioAtual : Usurio
PageTitle : String
CSSFile : String
ScriptFile : String
BodyOnKeyDownFunction : String
BodyOnLoadFunction : String
Form : HtmlForm
ConvStringToGUID()
AtiveLabel()
DesativeLabel()
IncluirItemCombo()
PageTitle()
CSSFile()
Form()
OnInit()
AddHTMLDocType()
AddHTMLMetaInfo()
AddHTMLBodyForm()
AddHTMLCloseDoc()
AddHTMLOpenDoc()
BuildPage()
GenerateHtmlForm()
PreRender()
AddControlsFromDerivedPage()
Load()
ConvDataParaBanco()
ConvNumRealParaBanco()
VerificarAcesso()
CarregarPrivilegiosPagina()
FormataShortData()
FormataPreco()
EhVazio()
141
InterfaceSqlServer
WctHeader.ascx.vb
Conexao : SqlConnection
ConnectionStri ng : Stri ng
Comando : SqlCommand
New()
New()
LerSelectBanco()
LerSelectBanco()
ExecutarComandoBanco()
ExecutarComandoBanco()
LerSQLCommand()
ConvDataParaBanco()
ConvNumRealParaBanco()
ConvStringToGUID()
lblTitulo : Label
lnkLogout : LinkButton
lnkHome : LinkButton
lblUID : Label
Titulo : String
Page_Load()
lnkTravessa_Click()
lnkLogout_Click()
Page_PreRender()
lnkHome_Click()
HaUsuarioLogado : Boolean()
WpgArtigos.aspx.vb
DgArtigos
<<Preencher>>
ListagemArtigos
WctOrdenaCol una.ascx
<<link>>
WpgArtigos.aspx
<<communicate>>
CodArtigo=
WctOrdenaCol una.ascx.vb
1..*
WctOrdenaColuna.ascx
<<forward>>
WpgArtigoPromo
cao.aspx
WctHeader.ascx.vb
WctHeader.ascx
142
6.8
Diagrama de Desdobramento
Servidor
WWW
<<internet>>
Cliente_Livraria 1
<<internet>>
Servidor Banco
de Dados
<<internet>>
<<internet>>
Cliente_Livraria n
Cliente_Livraria 2
143
144
Resultados
Concluso
inmeros processos quando apenas uma nica query nos fornece a mesma resposta. Quando
o contexto de utilizao do sistema oferece a mudana de seu estado, as instncias das classes
surgem normalmente. Assim foram geradas classes como Artigo, Funcionrio, etc.
Fica aprendida a lio que o desenvolvimento de sistemas Web com objetos exige um esprito
mais conciliador com a viso estruturada, cabendo equipe perceber em qual momento esta
fronteira deve ser enfraquecida. Desta forma, um sistema Web orientado a objetos eficiente e
leve na execuo, desenvolvido com organizao e disciplina tem grandes chances de ser
conduzido com sucesso.
148
Bibliografia
1- Conallen, Jim - Desenvolvendo aplicaes Web com UML, Rio de Janeiro, Campus,
2003, 476p;
2- Fowler, Martin - UML Essencial Um breve guia para linguagem padro de
modelagem de objetos, Rio de Janeiro, Campus, 2003, 192p;
3- Pressman, Roger Engenharia de Software, So Paulo, Makron Books, 1995, 1056;
4- Martin, James - Princpios de Anlises e Projetos Baseados em Objetos, Rio de
Janeiro, Campus, 1994, 512p.