Escolar Documentos
Profissional Documentos
Cultura Documentos
Anlise e
Gerenciamento
de Dados
Informtica
Habilitao tcnica em
Informtica
Volume 3
Informtica
Anlise e gerenciamento
de dados
Gustavo Dibbern Piva
Wilson Jos de Oliveira
So Paulo
2010
Governador
Jos Serra
Presidente
Paulo Markun
Vice-Presidente
Fernando Jos de Almeida
Equipe de Edio
Coordenao geral
Alfredo Nastari
Coordenao editorial
Mirian Ibaez
Consultor tcnico
Vice-Governador
Alberto Goldman
P693
Piva, Gustavo Dibbern
Informtica, anlise e gerenciamento de dados / Gustavo Dibbern
Piva, Wilson Jos de Oliveira ; revisor Humberto Celeste Innarelli ;
coordenador Luis Eduardo Fernandes Gonzalez. -- So Paulo :
Fundao Padre Anchieta, 2010
ISBN 978-85-61143-47-3
1. Sistemas operacionais (Computadores) 2. Softwares de aplicao
I. Oliveira, Wilson Jos de II. Innarelli, Humberto Celeste, revisor III.
Gonzalez, Luis Eduardo Fernandes, coord. IV. Ttulo
CDD 005.43
Secretrio de Desenvolvimento
Geraldo Alckmin
Vice-Diretor Superintendente
Csar Silva
Chefe de Gabinete da Superintendncia
Elenice Belmonte R. de Castro
Coordenadora da Ps-Graduao, Extenso e
Pesquisa
Helena Gemignani Peterossi
Coordenador do Ensino Superior de Graduao
Angelo Luiz Cortelazzo
Coordenador de Ensino Mdio e Tcnico
Almrio Melquades de Arajo
Coordenador de Formao Inicial e Educao
Continuada
Celso Antonio Gaiote
Coordenador de Infraestrutura
Rubens Goldman
Coordenador de Gesto Administrativa e
Financeira
Armando Natal Maurcio
Coordenador de Recursos Humanos
Elio Loureno Bolzani
Assessora de Avaliao Institucional
Roberta Froncillo
Assessora de Comunicao
Gleise Santa Clara
Procurador Jurdico Chefe
Benedito Librio Bergamo
Sumrio
15 Captulo 1
Introduo ao desenvolvimento de
software
1.8.5.1. Entrevista. . . . . . . . . . . . . . . . . . . . . . . 39
1.8.5.2. M
etodologia JAD (Joint Application
Design). . . . . . . . . . . . . . . . . . . . . . . . . 44
49 Captulo 2
Modelo de entidade e relacionamento
1.4.1. Objetivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.4.2. Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.4.3. Participantes . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2. Normalizao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
2.1. Conceitos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.1.1. Estudo de caso. . . . . . . . . . . . . . . . . . . . . . . . . . 62
2.3.1. Minimundo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
evolucionrio. . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.5.4. M
odelo iterativo . . . . . . . . . . . . . . . . . . . . . . . . 31
1.6 Riscos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.7 Prototipagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Sumrio
3.4.1.1.1. D
efinio de contas de usurio. . . . 115
3.4.1.2. P
ermisses para banco de dados. . . . 116
3.4.1.3. P
ermisses a objetos
95 Captulo 3
Banco de dados
3.4.2. P
lano de manuteno de banco de dados . . . 124
3.4.3.1. C
omo utilizar os comandos SQL. . . . 130
3.3.4.2. R
egras de converso do modelo E-R
para o modelo relacional. . . . . . . . . . 112
Sumrio
armazenado). . . . . . . . . . . . . . . . . . . . 143
155
Captulo 4
Linguagem unificada de modelagem (UML)
204
Consideraes finais
205
Referncias bibliogrficas
Informtica 3
Captulo 1
Introduo ao
desenvolvimento
de software
Conceitos iniciais
Geraes de computadores
Geraes de linguagem
de programao
Processo de desenvolvimento
Modelo de ciclo de vida
Riscos
Prototipagem
Levantamento ou
especificao de requisitos
Informtica 3
captulo 1
O emprego desse trip levou a uma significativa melhoria no desenvolvimento das companhias chamadas inteligentes, aquelas que necessitam de sistemas
tolerantes a falhas e capazes de gerar informaes crticas para o processo de
deciso. Na dcada de 1960 as empresas trabalhavam com o conceito de processamento centralizado de dados e muitos dos seus recursos eram direcionados ao
CPD (Centro de Processamento de Dados). Os sistemas daquela poca rodavam
de forma mecanizada e em batch (processamento em lote).
automao, h algum tempo, tornou-se um diferencial competitivo para as organizaes. Tal modernizao pode ser entendida
como o esforo para transformar as tarefas manuais repetitivas em
processos independentes, realizados por mquinas. Com isso, a gesto passou
por uma verdadeira revoluo: erros que antes eram cometidos por falhas de
clculos agora so quase nulos. As empresas no precisam se voltar tanto para
atividades contnuas e podem se dedicar mais ao foco do seu negcio. Os benefcios disso se estendem por toda a cadeia de valor, desde compra de materiais,
produo e vendas at entrega de produtos para os clientes e ps-venda.
O desenvolvimento de software uma atividade muito complexa. Sim, porque no
existe uma soluo pronta para cada cenrio. O trabalho sempre realizado por
pessoas, o que torna o sucesso do projeto diretamente relacionado competncia
da equipe e maneira como se trabalha. Outra dificuldade considervel o fato de,
muitas vezes, no ser adotado um processo definido para apoiar essa tarefa.
A tecnologia da informao passou por uma grande evoluo nos ltimos anos.
Com isso, h exigncias contnuas e renovadas de aumento na qualificao dos
profissionais da rea, o que, consequentemente, favorece o seu desenvolvimento.
Afinal, esse segmento composto pela trade pessoas, gesto e tecnologia.
As cinco
geraes de
mquinas
Denis Alcides
Rezende autor
de vrios livros
sobre Tecnologia
da Informao,
Sistemas de
Informao e
Engenharia de
Software. Atua
como consultor
em planejamento
de Tecnologia da
Informao.
Divulga
3 1964 - 1971
4 1971 - 1987
Chega a era do chip, a lmina de
silcio que permite a integrao
de uma infinidade de circuitos
2 1958 - 1964
1 1940 - 1958
16
Com o passar do tempo, porm, as corporaes perceberam a necessidade e a importncia de se basear em informaes concretas para tomar suas decises e, assim, aprimorar a gesto dos negcios. Ento, abandonaram o padro do tradicional
processamento de dados e passaram a trabalhar com centro de informaes. Nesse
modelo, j havia integrao dos sistemas, mesmo que ainda existissem algumas redundncias, ou seja, dados duplicados que levavam ao retrabalho.
5 1987
Novas tecnologias revolucionam
os conceitos de processamento
paralelo e armazenamento de dados
17
Informtica 3
captulo 1
Primeira (1940-1958)
Quarta (1971-1987)
O primeiro computador digital eletrnico de grande escala foi o Eniac (Electrical Numerical Integrator and Calculator, ou integradora e calculadora numrica eltrica). Comeou a ser desenvolvido em 1943, durante a Segunda
Guerra Mundial, para auxiliar o Exrcito dos Estados Unidos nos clculos de
balstica. Foi lanado em fevereiro de 1946 pelos cientistas norte-americanos
John Presper Eckert e John W. Mauchly, da Electronic Control Company. O
Eniac realizava 5 mil operaes por segundo, velocidade mil vezes superior
das mquinas da poca. No entanto, se comparado com os computadores
atuais, o seu poder de processamento seria menor do que o de uma simples
calculadora de bolso.
T im
R idley
/G etty
I mages
Segunda (1958-1964)
A fabricao dos computadores foi alterada e as vlvulas deram lugar aos
transistores, cuja vida til era bem maior (90 mil horas). Com isso, as
mquinas ficaram mais rpidas e menores. Pertence a essa segunda gerao
o IBM 7090, que possua 40 mil transistores e 1,2 milho de ncleos magnticos. Ocupava uma rea de 40 m 2 , contra a de 180 m 2 do Eniac.
Terceira (1964-1971)
T im
18
/G etty
R idley
I mages
Componente eletrnico
Vantagens
Desvantagens
1 gerao
1940-1958
vlvulas eletrnicas
nicos componentes
eletrnicos disponveis
grande dimenso
produzem muito calor
necessitam de ar condicionado
2 gerao
1958-1964
transistores
menor dimenso
produzem menos calor
mais rpidos
ainda necessitam de
constante manuteno
necessitam de ar condicionado
3 gerao
1964-1971
circuitos integrados
4 gerao
1971-1987
circuitos integrados
larga escala
no necessrio ar condicionado
conservao mnima
alta densidade de componentes
transdutores e circuitos
em paralelo
maior densidade de
componentes
reduzido tamanho
auto-regenerao
grande fiabilidade e velocidade
multiprocessamento
5 gerao
1987-atual
maior complexidade
ainda muito caros
19
Informtica 3
captulo 1
Primeira (1GL)
O Swebok (Software
Engineering Body of
Knowledge, traduzido por
reas do Conhecimento da
Engenharia de Software)
uma iniciativa da Sociedade
da Computao do Instituto
de Engenharia Eltrica e
Eletrnica (IEEE Computer
Society), com o propsito
de criar um consenso sobre
as reas de conhecimento
da engenharia de software.
Publicado em 2004, contou
com a participao da
indstria internacional, de
sociedades de profissionais,
da academia e de diversos
autores consagrados.
Segunda (2GL)
A linguagem de programao chamada Assembly representa a segunda gerao. Mais prxima do ser humano do que da mquina (como acontecia na
1GL), cada Assembly ainda bastante associada arquitetura do computador,
fazendo com que a 2GL tambm seja pouco portvel entre ambientes.
Terceira (3GL)
A terceira gerao das linguagens de programao est muito prxima do ser
humano, pois facilmente entendida por uma pessoa com pouco ou nenhum
conhecimento de informtica. Isso porque similar comunicao do dia a
dia. Essa gerao representada pelas linguagens Cobol, Fortran, Algol, Basic,
C, C++, entre outras. Para mais informaes sobre a 3GL veja quadro abaixo.
Quinta (5GL)
A quinta gerao ainda est pouco desenvolvida e engloba as linguagens para
inteligncia artificial. Sua maior representante a LISP, nome originado da
expresso LISt Processing (Processamento em Lista), j que a lista a sua estrutura de dados fundamental.
Para desenvolver um software pode-se utilizar uma gerao de linguagem ou
um conjunto delas. Entretanto, o melhor resultado no projeto final obtido
quando se vence o desafio de adequar a programao aos sistemas de informao
de diversas reas do conhecimento.
20
Quarta (4GL)
A linguagem SQL (Structured Query Language, ou Linguagem de Consulta
Estruturada) tornou-se to popular que passou a representar toda a quarta
gerao. Ainda hoje, bastante utilizada como linguagem de manipulao e
consulta de banco de dados, como o SQL-Server da Microsoft, Oracle Database da Oracle e MySQL da Sun.
21
Informtica 3
Roger S. Pressman
reconhecido
internacionalmente
como uma das
maiores autoridades
em engenharia de
softwares. Trabalha como
desenvolvedor, professor,
escritor e consultor.
A terceira edio
do PMBOK - Guia
do Conjunto de
Conhecimentos em
Gerenciamento de
Projetos saiu em 2004.
uma publicao do PMI
(Project Management
Institute, o Instituto
de Gerenciamento de
Projetos, em portugus),
para identificar e
descrever as boas
prticas de projetos que
agreguem valor e sejam
fceis de aplicar.
captulo 1
desde a sua concepo at a sua extino. Logo, necessrio saber quanto tempo
o software ficar em funcionamento e quais os benefcios gerados durante esse
perodo, sempre tendo em mente o retorno do investimento (FOWLER, 2009).
1.4.1. Objetivos
Definio: alinhar todas as atividades a executar no decorrer de todo o projeto
e, assim, desenvolver tudo o que foi previsto no seu escopo.
Planejamento: definir, em um cronograma, quando, como (quais os recursos
de hardware e de software necessrio) e quem ir realizar determinada tarefa.
Controle: ter sempre meios de saber se o cronograma est sendo cumprido e
criar planos de contingncia caso haja problemas no fluxo.
Padronizao: seguir as mesmas metodologias por todos os envolvidos no projeto para no haver dificuldades de entendimento.
22
Com a definio de objetivos, atividades e participantes, consegue-se a excelncia no desenvolvimento de software, pois h gesto, controle e padronizao
do processo. Tudo isso diminui os riscos de problemas com cronograma, treinamento, qualidade e aceitao do sistema pelos usurios. Vejamos quais so os
objetivos, as atividades e os participantes.
23
Informtica 3
captulo 1
Figura 1
1.4.2. Atividades
A imagem ao lado
mostra que o ciclo
de vida dos sistemas
informatizados pode
ser comparado ao
dos seres humanos.
1.4.3. Participantes
Gerentes de projeto: entram em contato com o cliente para levantar suas necessidades, assumindo a responsabilidade pelo cumprimento das fases de desenvolvimento e do cronograma.
Ichak Adizes
o criador da
metodologia que
leva seu nome e
visa ao diagnstico
e teraputica
para mudanas
organizacionais e
culturais. O mtodo
est sendo aplicado
com muito sucesso
em organizaes
de 30 mil a 90 mil
empregados de
diversos pases.
Analistas de sistema: elaboram o projeto do sistema, utilizando UML (Unified Modeling Language, ou Linguagem de Modelagem Unificada), ferramentas de modelagem de processos, tcnicas de anlises de sistemas e tcnicas
de projetos de sistemas.
Arquitetos de software: definem a arquitetura em que o sistema funcionar
(web, Windows, Linux etc.), com conhecimento dos pontos fortes e fracos de
cada ambiente de acordo com as necessidades do cliente.
Programadores: codificam, em linguagem de programao, os requisitos do
sistema, elaborados pelo analista de sistemas nos modelos UML.
Clientes: solicitam o desenvolvimento em entrevistas durante as quais sero
definidos os requisitos do sistema.
Avaliadores de qualidade: realizam os testes do sistema, utilizando ou no
ferramentas como o JTest.
Informtica 3
captulo 1
A sequncia de etapas
1. Definio dos objetivos: finalidade do projeto e sua inscrio
dentro de uma estratgia global.
2. Anlise das necessidades e viabilidade: identificao, estudo e
formalizao do que o cliente precisa e do conjunto de entraves.
3. Concepo geral: elaborao das especificaes da arquitetura
geral do software.
4. Concepo detalhada: definio precisa de cada subconjunto do
software.
5. Codificao, aplicao ou programao: traduo em linguagem
de programao das funcionalidades definidas nas fases de
concepo.
6. Testes unitrios: verificao individual de cada subconjunto
do software, aplicados em conformidade com as especificaes.
O ciclo de vida de um software (software lifecycle) designa todas as etapas do seu desenvolvimento, da concepo extino. Essa segmentao tem por objetivo definir
pontos intermedirios que permitam checar a conformidade do sistema com as necessidades expressas no escopo do projeto e verificar o processo de desenvolvimento.
Segundo Ana Regina Cavalcanti da Rocha, em geral o ciclo de vida do software
compreende, no mnimo, onze atividades (DA ROCHA, 2004). A sequncia e a
presena de cada uma delas no ciclo de vida dependem da escolha do modelo a ser
adotado pelo cliente e pela equipe de desenvolvimento.
Os modelos de ciclo de vida descrevem as etapas do processo de desenvolvimento
de software, assim como as atividades a serem realizadas em cada uma delas. A
definio desses estgios permite estabelecer pontos de controle para a avaliao
da qualidade e da gesto do projeto. Veja o quadro A sequncia das etapas.
26
27
Informtica 3
captulo 1
Figura 3
O modelo
evolucionrio.
Projeto (Sistemas e Software): o processo deve agrupar os requisitos de hardware e software, assim como identificar e descrever as abstraes fundamentais do
sistema e as suas relaes.
Implementao (Testes de Unidade): o projeto posto prova como um conjunto de programas ou de suas partes , com o teste de cada item, para verificar se aquela unidade atende sua especificao.
Verificao (Integrao e Teste de Sistemas): antes da entrega do software ao cliente,
as unidades ou programas individuais so integrados e testados como um sistema
completo, de maneira a assegurar que todos os requisitos estejam contemplados.
Manuteno (Operao): o sistema instalado e colocado em operao, sendo
detectados e corrigidos erros no descobertos antes, o que melhora a implementao e tambm permite descobrir novos requisitos.
O sistema s entregue ao usurio depois que os desenvolvedores observarem
um resultado satisfatrio na fase de verificao, com certo grau de confiana.
Mesmo assim, o software ainda poder ter alteraes, principalmente para correo de falhas que s os usurios conseguem detectar no dia a dia e tambm
para mais bem adapt-lo ao ambiente ou ainda por problemas de desempenho.
Se houver transformaes no negcio da empresa, tambm ser preciso realizar
mudanas. A manuteno do software (ltima etapa proposta pelo modelo em
cascata) pode requerer, portanto, voltar a atividades das fases anteriores do ciclo.
desse jeito que se garante a melhoria contnua do produto.
e usurios para solucionar problemas tcnicos e de comear precocemente o treinamento dos usurios. Isso antes de concluir as suas diferentes verses (inicial,
intermediria e final), com espao para readequaes devidamente avalizadas
pelo usurio. O modelo se baseia, ento, no conceito da implementao inicial,
cujo resultado analisado e comentado pelo usurio. A partir desse feedback,
o sistema aprimorado por meio de muitas verses, at o seu desenvolvimento
completo. A especificao, o desenvolvimento e a validao so executados concomitantemente para possibilitar um retorno rpido.
A abordagem mais radical do ciclo de vida em cascata aquela em que todas
as atividades se desenvolvem paralelamente, desde o incio do projeto. Ao contrrio, a mais conservadora a que preconiza completar toda atividade N antes
de iniciar a prxima N + 1. Mas h um nmero infinito de opes entre esses
extremos. Segundo Edward Yourdon, a escolha entre as diversas possibilidades
disponveis depende de uma srie de variveis como possvel ver no quadro
abaixo, que incluem do nvel de estabilidade do usurio s exigncias de produo (YOURDON, 1995).
Edward Yourdon
desenvolvedor
de metodologias
de engenharia
de software,
alm de autor
de 25 livros sobre
computadores,
incluindo bestsellers.
Variveis de Yourdon
Nvel de estabilidade do usurio: se ele
instvel ou inexperiente e no sabe definir
suas reais necessidades, preciso usar uma
abordagem mais radical.
Nvel de urgncia na produo
de resultados tangveis e imediatos:
se o prazo curto, por questes
polticas ou outras presses externas,
justifica-se assumir uma abordagem
radical. Nesse caso, prefervel ter 90%
do sistema completo na data especificada
29
Informtica 3
captulo 1
O mtodo iterativo foi criado tambm com base nas vantagens e limitaes dos
modelos em cascata e evolutivo. Mantm a ideia principal do desenvolvimento
incremental, com o acrscimo de novas capacidades funcionais, a cada etapa,
para a obteno do produto final. No entanto, segundo Fowler, modificaes
podem ser introduzidas a cada passo realizado. Mais informaes sobre o modelo interativo no quadro abaixo.
Entre as vantagens dessa metodologia est justamente a possibilidade de definir melhor os requisitos, que muitas vezes no ficam muito claros no incio
do processo. O primeiro passo trabalhar o ncleo do sistema, ou seja, so
implementados os requisitos bsicos, sem os detalhes. Em seguida o produto
avaliado pelo usurio, para a deteco de problemas iniciais, os quais j podem ser corrigidos, caso contrrio poderiam assumir grandes propores ao
surgirem apenas na verso final. Outro benefcio o fato de o cliente esclarecer os requisitos e as prioridades para os prximos incrementos, alm de poder
contar com as facilidades da verso j produzida. Assim, com a construo de
um sistema menor (sempre muito menos arriscada do que o desenvolvimento
de um sistema grande), se um grave erro cometido, ou se existe uma falha
no levantamento de requisitos, somente o ltimo incremento descartado.
Ganha-se em performance, pois so mnimas as chances de mudanas bruscas
nos requisitos, e em tempo de desenvolvimento.
Figura 4
O modelo
incremental.
Levantamento
de requisitos
Desenvolvimento
30
31
Informtica 3
captulo 1
Figura 5
O modelo espiral.
Barry W. Boehm
considerado um guru
da Universidade do Sul
da Califrnia, da qual
professor emrito,
e tem lugar garantido
entre os estudiosos que
mais influenciaram o
pensamento econmico
a respeito de software
nos ltimos 40 anos. Ele
se graduou em Harvard
em 1957, mestre e Ph.D.
em Matemtica e foi
diretor do Software and
Computer Technology
Office do Departamento
de Defesa dos Estados
Unidos. Desde 1964
Boehm escreveu seis
livros, entre eles Software
Risk Manager, publicado
pela IEEE Computer
Society Press em 1989.
32
Segundo o PMBOK, 2004, o processo de gerenciamento de riscos para desenvolvimento de software composto por quatro atividades (figura 6):
1. Identificao dos riscos: reconhecimento do projeto, do produto e dos riscos
de negcio envolvidos no desenvolvimento do software.
2. Anlise dos riscos: estudo das possibilidades e das consequncias da ocorrncia dos riscos, com determinao de valores qualitativos para as possibilidades (muito baixo, baixo, moderado, alto e muito alto) e para as consequncias (insignificante, tolervel, srio e catastrfico).
3. Planejamento do risco: medio de cada risco e desenvolvimento de uma
metodologia de gerenciamento dentre algumas opes: refutar o risco quando
a probabilidade reduzida; minimizar o risco quando h baixo impacto no
projeto de desenvolvimento de software ou no produto final; ou planos de
contingncia para eliminar o risco quando eles se tornarem realidade.
4. Monitoramento do risco: identificao e avaliao regular de cada risco para
tomada de deciso quanto diminuio, estabilidade ou aumento da possibilidade de ocorrncia do evento; assim como discusso em cada reunio de avaliao do progresso do projeto sobre a permanncia efetiva dos esforos para
manter cada risco sob controle.
Figura 6
Atividades do
processo de
gerenciamento
de riscos.
Identificao
do risco
Anlise
do risco
Planejamento
do risco
Monitoramento
do risco
Planos de
contingncia e de
tratamento
dos riscos
Avaliao dos
riscos
Em cada ciclo da espiral, uma srie de atividades realizada em uma determinada ordem, como comunicao com o cliente, planejamento, anlise de riscos
e avaliao dos resultados (FOWLER, 2009).
O modelo espiral cclico. Considerado um metamodelo, abrange diferentes
padres, desde o cascata at vrios tipos de prottipos. Com isso, possvel prever os riscos e analis-los em vrias etapas do desenvolvimento de software.
1.6. Riscos
O risco do projeto um evento ou uma condio incerta que, se ocorrer, ter
um efeito positivo ou negativo sobre, pelo menos, um objetivo do projeto, como
tempo, custo, escopo ou qualidade. E o modelo espiral foi a primeira proposta
de incluso de Gerncia de Risco no ciclo de vida de desenvolvimento de software.
A interatividade e os riscos, portanto, so as suas principais caractersticas
(PMBOK, 2004). Alis, como bem lembra Tom Gilb: Se voc no atacar os
riscos [do projeto] ativamente, ento estes iro ativamente atacar voc.
33
Informtica 3
captulo 1
Para facilitar o
desenvolvimento de um
software, podem ser utilizadas
ferramentas que auxiliem na
construo de modelos, na
integrao do trabalho de
cada membro da equipe, no
gerenciamento do andamento
do desenvolvimento etc. Os
sistemas utilizados para dar
esse suporte so normalmente
chamados de CASE, sigla
em ingls para ComputerAided Software Engineering
(Engenharia de Software de
Suporte Computacional). Alm
dessas ferramentas, outros
instrumentos importantes
so aqueles que fornecem
suporte ao gerenciamento,
como desenvolvimento de
cronogramas de tarefas,
definio de alocaes de
verbas, monitoramento
do progresso e dos gastos,
gerao de relatrios de
gerenciamento etc.
1.7. Prototipagem
Fazer um prottipo de software garante a possibilidade de examinar antecipadamente os requisitos do programa (figura 7). Ou seja, desenvolve-se um exemplar
simplificado, de forma rpida, para que as questes relativas a requisitos sejam entendidas ou esclarecidas. Com ele possvel melhorar muito a comunicao com o
cliente, pois, primeiramente, ele ouvido e, ento, feito um desenho e a construo
do modelo. E s depois de cumpridas essas trs tarefas que se d a validao, o que
aumenta, em muito, as chances de sucesso do projeto (FOWLER, 2009).
Portanto, ao criar um prottipo, previnem-se possveis deficincias no projeto
de desenvolvimento de software. Em um nmero grande de casos, o usurio
fica insatisfeito com o produto acabado. Isso ocorre por no ter havido troca de
informao suficiente entre cliente e desenvolvedor. A comunicao no levantamento de requisitos falha. Um prottipo deve ser utilizado como instrumento
de anlise, com a finalidade de superar as dificuldades de comunicao existentes entre o analista de sistemas e o usurio do sistema.
A prototipagem uma tcnica que pode ser empregada em pequenos ou grandes sistemas, em que os requisitos no esto claramente definidos. Seu uso aconselhavel em
projetos para os quais o usurio no saiba exatamente o que deseja (FOWLER, 2009).
Alguns fatores devem ser levados em conta. Um prottipo um esboo de alguma
parte do sistema e a prototipagem uma tcnica complementar anlise de requisitos,
com o objetivo de assegurar que as demandas foram bem entendidas. J a construo desses prottipos utiliza ambientes com facilidades para a construo de interface
Figura 7
As fase da
prototipagem.
uto
C
do on s t r
pro u
t t o
ipo
En
ge n
do
h ar
pi
ia d
or
op
je t
rod
Pro
Fi m
Coleta e refinamento
dos requisitos
o
e nt
a m po
fin ti
Re prot
do
34
Essa tcnica frequentemente aplicada quando existem dificuldades no entendimento dos requisitos do sistema e/ou quando existem requisitos que precisam
ser mais bem entendidos.
Aps o Levantamento de Requisitos (LR) tema do prximo tpico deste
livro , um prottipo j pode ser construdo e usado na validao. Os usurios
fazem suas crticas e so feitas correes. Esse processo de reviso e refinamento
continua at que o sistema seja aceito pelos usurios. A partir da, descartado
ou utilizado apenas como uma verso inicial do sistema.
Importante: a prototipagem no substitui a construo de modelos do sistema.
Trata-se de uma tcnica complementar. E os erros detectados na sua validao
devem ser utilizados para modificar e refinar o programa.
Incio
Avaliao do prottipo
pelo cliente
Informtica 3
captulo 1
Caractersticas
Categorias de requisitos
Funcionais: descrevem as funcionalidades e os servios do
sistema e dependem do tipo de software a ser desenvolvido,
do nmero de usurios esperado e do padro do sistema no
qual o programa ser utilizado. Exemplos: o sistema deve
oferecer diversas maneiras de visualizar os dados, de acordo
com o perfil do usurio; os relatrios devem estar disponveis
para impresso de acordo com o nvel hierrquico de cada
usurio etc.
36
Tipos
Dicas para
a escrita
37
Informtica 3
captulo 1
Figura 8
Imprimir a
Nota Fiscal.
Exemplos de
requisitos
1. O programa deve
imprimir nota fiscal
e fazer a integrao
com o sistema da
Nota Fiscal Paulista e
de vendas registradas
(figura 8).
Ao documentar um requisito, deve-se ter em mente algumas questes que podem influenciar, em muito, todo o processo de desenvolvimento. necessrio se
preocupar com a boa qualidade do documento, e alguns cuidados precisam ser
observados no modo de escrever.
1. Quem escreve, para quem se escreve e qual o meio utilizado para escrever
so trs fatores diretamente relacionados qualidade da documentao dos
requisitos.
2. O software deve
cadastrar novos
produtos, gerar
relatrios de
vendas etc.
3. O sistema deve
permitir a realizao
de vrios oramentos
e anlise, levando
em considerao
a condio de
pagamento e o
prazo de entrega.
Por exemplo,
impossvel
fazer um relatrio
de vendas sem
registr-las
previamente no
sistema: o requisito
predecessor
ao relatrio de
vendas o registro
das vendas.
38
fundamental ter uma atuao constante e muito prxima aos usurios para
que qualquer divergncia em relao a requisitos ou a adaptaes seja facilmente detectada e corrigida. Mas para tanto os usurios precisam estar comprometidos com o desenvolvimento do sistema e se sentirem donos dele. Se
isso no ocorrer, h grandes probabilidades de o sistema no ser um sucesso.
JAD (Joint
Application
Development)
um sistema de
desenvolvimento de
aplicaes em grupo
criado pela IBM. O
objetivo reduzir
custos e aumentar
a produtividade
nesses processos.
1.8.5.1. Entrevista
Entre as tcnicas mais importantes de identificao de requisitos est a entrevista, tambm presente em outras metodologias, pois, quase sempre, a coleta
de informaes exige a comunicao direta com os usurios e interessados. Tem
como finalidade captar o pensamento do cliente para que se entenda o que
necessrio desenvolver. Por essa razo, o entrevistador tem grande responsabilidade. Alm de fazer as entrevistas, cabe a ele integrar diferentes interpretaes,
Existem formas
distintas de
entrevista: por
questionrio,
aberta e
estruturada.
39
Informtica 3
captulo 1
Figura 9
O sucesso
da entrevista
depende da
escolha da
pessoa certa
para oferecer
as respostas
precisas.
Por questionrio
Entrevista aberta
A entrevista aberta supre muitas das lacunas dos questionrios, porm gera
outros problemas. O entrevistador formula uma pergunta e permite ao
entrevistado responder como quiser. Mesmo que o primeiro tenha a liberdade de pedir mais detalhes, no h como determinar exatamente o
escopo da entrevista. Por isso essa tcnica pode gerar dvidas: as perguntas
podem ser de fato respondidas ou a resposta faz parte do repertrio normal
do discurso do entrevistado? Existem muitas coisas que as pessoas sabem
fazer, mas tm dificuldade para descrever, assim como h o conhecimento
tcito, de difcil elucidao.
Os benefcios das entrevistas abertas so a ausncia de restries, a possibilidade
de trabalhar uma viso ampla e geral de reas especficas e a expresso livre do
entrevistado. H desvantagens tambm. A tarefa difcil e desgastante, mas
entrevistador e entrevistado precisam reconhecer a necessidade de mtua colaborao para que o resultado seja eficaz.
40
Taxi/Getty Images
Entrevista estruturada
A entrevista estruturada (figura 9) tem por finalidade coletar e organizar as
informaes sobre questes especficas, necessrias para o projeto. fundamental realizar a entrevista com a pessoa certa, ou seja, quem realmente entende e
conhece o negcio e os seus processos. E preparar muito bem o roteiro do que se
quer obter, aprofundando o assunto.
A principal vantagem dessa tcnica a obteno de respostas diretas com
informaes detalhadas. Todavia, como desvantagem, muitas vezes aspectos
relevantes ao projeto de desenvolvimento de software precisam ser identificados antes da realizao da entrevista. De maneira geral, requer muito mais
trabalho prvio e, quanto melhor for feito, maiores sero as chances de realizar
esse trabalho com eficcia.
Preparao
Informtica 3
captulo 1
muitas vezes corriqueiros para o entrevistador, mas eventualmente desconhecidos pelo respondente. s vezes, por vergonha, essa pessoa no admite que no
sabe do que se trata e responde de maneira equivocada. Da a importncia da
coerncia das perguntas e de observar, com ateno, o real entendimento dos
entrevistados. Mais um ponto a cuidar: a programao e o cumprimento dos
horrios estabelecidos.
Realizao
O objetivo central de uma entrevista conseguir informaes relevantes do entrevistado. Para isso fundamental fazer com que ele no se limite a falar, mas que
tambm reflita bastante sobre cada uma das suas respostas. Por isso o entrevistador
deve deixar o respondente totalmente vontade, sem pressa para acabar o trabalho.
Veja o quadro Questionrio bem feito.
importante evitar interrupes ocasionadas por fatores externos (telefone, entra-e-sai
de pessoas da sala etc.). Tudo isso pode levar o entrevistado a perder o foco.
Comportamento do entrevistador
O entrevistador deve demonstrar claramente as suas intenes para o entrevistado.
Primeiramente, precisa estar vestido conforme os costumes da empresa para a qual
est trabalhando, de maneira a no causar desconforto aos entrevistados. At h
pouco tempo, consultores e desenvolvedores de software usavam terno, normalmente escuro, intimidando entrevistados no habituados a esse tipo de vesturio.
Documentao
Toda entrevista deve ser documentada logo aps sua realizao. Desse
modo, tm-se os dados arquivados e facilmente recuperveis para eventuais necessidades. Esse material deve conter informaes mnimas, podendo ser ampliado, dependendo da necessidade de cada projeto de desenvolvimento:
data, hora e local da entrevista;
nome do entrevistador;
cargo do entrevistador;
nome do entrevistado;
funo do entrevistado e descrio do cargo;
organograma do entrevistado (superior imediato, colegas do mesmo nvel,
subordinados);
objetivo da entrevista;
nomes e ttulos de todos os outros presentes na entrevista;
descrio completa dos fatos tratados e opinies do entrevistado;
transcrio da entrevista (opcional);
concluses tiradas com base nos fatos e nas opinies apresentados;
problemas do negcio levantados durante a entrevista;
exemplos de relatrios, diagramas, documentos etc.;
Questionrio bem-feito
42
Dica
importante que o
desenvolvedor tenha
conhecimentos
do negcio do cliente
e resista a priorizar
a tecnologia
em relao s suas
necessidades.
43
Informtica 3
captulo 1
Figura 10
d
esenhos e diagramas elaborados a partir da entrevista (ou durante a
conversa);
comentrios relevantes feitos pelo entrevistado;
todos os nmeros importantes: quantidades, volume de dados etc.
A metodologia
JAD substitui as
entrevistas individuais
por reunies
entre usurios e
desenvolvedores.
Recomenda-se, portanto, que esses profissionais tenham conhecimentos sobre o negcio do cliente, para estarem mais integrados ao sistema a ser desenvolvido. Tambm no se deve priorizar a tecnologia em detrimento das necessidades dos usurios
e, consequentemente, da soluo do problema do cliente. Na fase inicial do projeto, a
dificuldade de comunicao entre clientes e equipe de desenvolvimento a principal
causa de defeitos encontrados no produto final (AUGUST, 1993).
Na tentativa de resolver os problemas de comunicao entre desenvolvedores e
clientes (usurios), foram criados, no final da dcada de 1970, diversos mtodos
baseados na dinmica de grupo.
O processo da entrevista
O processo de entrevista no se reduz ao ato em si. Por isso,
necessrio pensar em todas as atividades que antecedem
e sucedem a tarefa:
1. Determinao da necessidade da entrevista
44
3. Seleo do entrevistado
9. Correo da transcrio
4. Marcao da entrevista
11. Arquivamento
45
Informtica 3
captulo 1
46
47
Captulo 2
Modelo de entidade
e relacionamento
Conceitos
Normalizao
Fases de um projeto utilizando ER
Informtica 3
captulo 2
E como a informtica pode ajudar na organizao? Muito e em todo esse processo, que inclui armazenamento, manuteno e consulta de informaes, proporcionando agilidade, uniformidade e segurana em todas as suas fases. Ao
juntarmos o conhecimento preexistente velocidade de processamento e capacidade de armazenamento de informaes que a informtica oferece, chegamos
a modelos extremamente interessantes no que diz respeito facilidade de uso,
velocidade de acesso e de respostas, alm de baixo custo de manuteno.
necessidade de organizar informaes acompanha a humanidade desde o incio dos tempos. O pastor representava ovelhas por
meio de pedras, enquanto os escribas ordenavam os textos nas estantes. Acontece que a populao mundial cresceu, assim como a quantidade de
informaes disponveis, e, desse modo, pesquis-las tornou-se mais complexo,
o que exigiu novas formas de organizao.
Tente achar um livro na biblioteca (figura11) de sua escola sem saber como esto
organizadas as estantes. V procurando estante por estante, livro por livro...
Quanto tempo ir demorar? Agora, pense em fazer a mesma pesquisa na Biblioteca Nacional (do Rio de Janeiro) ou na Biblioteca do Smithsonian Museum,
dos Estados Unidos, que so muito maiores que a de sua escola. Sem uma organizao prvia fica muito demorado e trabalhoso obter as informaes de que
precisamos em nosso dia a dia.
50
51
Informtica 3
captulo 2
Figura 12
de dados, a pesquisar, por exemplo, a funo que retorna data atual no SQL.
Mas, com certeza, as diferenas entre elas so atualmente bem menores. Hoje
em dia, o padro ANSI est na verso SQL:2003.
No possvel
encontrar um s
livro em ambiente
desorganizado.
Os estudos no pararam por a. O modelo de entidade e relacionamento foi inegavelmente um marco na histria da informtica, utilizado em larga escala, mas
avanou-se bastante depois dele. Hoje, por exemplo, existe a UML (Linguagem
de Modelagem Unificada), outra tcnica de modelagem, baseada na teoria de
Orientao a Objetos (analisada no captulo 4).
2.1. Conceitos
Para podermos utilizar as tcnicas do modelo de entidade e relacionamento, necessitamos predefinir alguns de seus conceitos, de modo a facilitar seu entendimento.
Banco de dados
um conjunto de informaes inter-relacionadas sobre determinado assunto e
armazenadas de forma a permitir acesso organizado por parte do usurio.
52
Computao, publicou,
tambm na revista ACM,
o artigo The EntityRelationship Model-Toward a
Unified View of Data
(O modelo de entidade
e relacionamento, uma viso
unificada dos dados).
Donald D. Chamberlin
Fotos: divulgao
53
Informtica 3
captulo 2
Para a construo
de modelos,
preciso abstrair,
isto , no se
preocupar com
todos os detalhes,
mas apenas com
os que se quer
analisar e/ou sobre
os quais se tem
alguma dvida.
Figura 13
assim como o controle de acesso, o backup, a recuperao de falhas, a manuteno da integridade, a administrao e a segurana dos dados que contm.
Vrios olhares
sobre um
mesmo tema.
Modelo
Podemos definir um modelo como sendo um prottipo, em escala menor, do
produto que queremos implementar ou da soluo que queremos obter.
O modelo nos permite, com um custo muito menor (de tempo, dinheiro e
trabalho), em comparao ao do desenvolvimento do produto final, analisar e
desenvolver alguns aspectos que faro a diferena no produto final. Ou seja, no
modelo podemos criar, testar funcionalidades novas e avaliar o projeto, com um
baixo custo antes de sua implementao.
Abstrao
Ateno
O Modelo ER e os
Sistemas Gerenciadores
de Bancos de Dados
foram criados
primeiramente para
aceitar nomes em ingls,
lngua que no possui
acentos em suas palavras.
Apesar de hoje em dia
a maioria dos SGBDs
aceitarem palavras
acentuadas e at o uso
do caracter espao
entre as palavras que
nomeiam algum de
seus componentes,
por convenso, no
utilizaremos espaos
nem acentos para
nominar os componentes
de nossos modelos
afim de no gerarmos
problemas de
implementao
em qualquer que seja
o SGBD, padronizarermos
a implementao,
evitando dvidas do tipo
Funcionrio com ou sem
acento, sem falar nas
mudanas da lngua.
54
Para exemplificar o que abstrao, vale acompanhar um exemplo bem corriqueiro e que muita gente vivencia. Quando olhamos para uma casa, podemos pensar em seu tamanho, sua localizao, no nmero de quartos que a
integram, na cor das paredes. J um engenheiro civil, ao olhar para a mesma
casa, pensar em como ela foi construda, se o material utilizado de boa qualidade, se sua estrutura foi concebida para suportar seu tamanho. O pedreiro
pensar na quantidade de tijolos, cimento, pedras, areia e ferro que foram
necessrios para constru-la. O jardineiro avaliar sua localizao, o clima e
sua posio em relao ao sol, alm das melhores plantas para o jardim. O
encanador pode refletir sobre qual o tamanho da caixa dgua para garantir
o abastecimento na casa e em quantos metros de encanamento de cada largura
foram necessrios para seu sistema hidrulico. O eletricista talvez pense sobre
a metragem e a bitola dos fios empregados no sistema eltrico. O corretor de
imveis se concentra na metragem da casa, no nmero de cmodos, de vagas
na garagem, na localizao, no preo de aluguel ou venda (figura 13).
Cada um dos personagens do exemplo se fixou em detalhes diferentes sobre um
mesmo projeto, a casa. Olhou para ela pensando em suprir as prprias necessidades, enfatizando as caractersticas mais importantes para atend-las, e desprezou os demais detalhes, os quais, embora tambm faam parte da construo,
no tm relevncia particular.
o que se chama de abstrao: esses vrios pontos de vista, essas diferentes
possiblidades de anlises sobre um mesmo objeto o que se chama de abstrao,
uma caracterstica fundamental para a construo de um bom modelo de entidade e relacionamento.
Entidades
Entidades so abstraes do mundo real que contm um conjunto de informaes inter-relacionadas e coerentes. Estas informaes so chamadas de atributos. Toda entidade possui um nome que a identifica, geralmente formado por
um substantivo no singular. A representao grfica de uma entidade feita por
um retngulo com seu nome no centro, como mostra a figura 14.
Figura 14
Entidade
Funcionario.
Funcionario
55
Informtica 3
captulo 2
Figura 16
Atributo
Chave primria.
dataDemissao
Funcionario
Funcionario
codigo
4. Chave estrangeira: atributo que implementa o relacionamento entre entidades e permite o controle da integridade referencial, isto , um atributo
que, fazendo parte da chave primria em uma entidade, includo em outra
entidade ou relacionamento, implementando as ligaes entre elas.
Relacionamento
o elemento responsvel por definir as caractersticas das ligaes entre as entidades. Representado graficamente por um losango, seu nome em geral expresso por um verbo ou uma locuo verbal. Por exemplo a figura 17.
Figura 17
Relacionamento.
Pertence
1. Atributo composto: representa a estrutura das informaes que sero armazenadas no atributo, por exemplo:
primeiroNome sobrenome
complemento
numero
rua
nome
Endereco
Figura 18
Auto-relacionamento.
E_Chefe
1
Chefe
Subordinado
Funcionario
3. Chave primria: atributo ou conjunto de atributos que identifica unicamente uma tupla (registro) em uma entidade. expresso com um crculo
preenchido, como mostra a figura 16.
56
57
Informtica 3
captulo 2
Cardinalidade
Serve para definir o tipo de relacionamento entre as entidades. Existem duas
notaes para identificar a cardinalidade. Uma delas refere-se simplesmente ao
valor mximo que a cardinalidade daquele relacionamento pode alcanar, e
grafada com o nmero 1 (que representa 1 elemento da entidade) ou com a
letra N (que representa muitos ou mais de um elemento da entidade). A outra
expressa o nmero mnimo e o nmero mximo de ocorrncias em um relacionamento. Neste caso, sua notao (1:N), onde 1 representa o nmero mnimo
e N o nmero mximo de ocorrncias. So quatro as cardinalidades:
1. Relacionamentos 1 para N
Indicam que uma ocorrncia na entidade A pode estar relacionada a N ocorrncias da entidade B. No exemplo da figura 19 podemos verificar que um vendedor atende N clientes e que um cliente atendido por apenas 1 vendedor.
Figura 19
Relacionamento
1 para N.
1
Vendedor
Cliente
2. Relacionamentos N para 1
Indicam que uma ocorrncia na entidade B pode estar relacionada com N ocorrncias na entidade A. No exemplo da figura 20, a 1 departamento podem pertencer N funcionrios.
Figura 20
Relacionamento
N para 1.
Funcionario
Pertence
Figura 22
N
Cliente
Compra
cod_Cliente
cod_Produto
codigo
Produto
quantidade
valor_Unitario
nome
codigo
4. Relacionamentos 1 para 1
Indicam que uma ocorrncia da entidade A pode estar relacionada a uma ocorrncia na entidade B e que uma ocorrncia da entidade B pode estar relacionada
a uma ocorrncia da entidade A (figura 23).
Departamento
Figura 23
Funcionario
3. Relacionamentos N para N
Indicam que uma ocorrncia na entidade A pode estar relacionada a N ocorrncias na entidade B e que uma ocorrncia na entidade B pode estar relacionada a N
ocorrncias na entidade A. No exemplo da figura 21 podemos observar que um
cliente compra N produtos e que um produto pode ser comprado por N clientes.
Figura 21
N
Cliente
1
Gerencia
Departamento
Relacionamentos
1 para 1 .
Restrio
Muitas vezes, simplesmente definir um relacionamento no nos garante total entendimento da situao que ele se deve demonstrar, conforme a figura 24.
Compra
Figura 24
Produto
Funcionario
O relacionamento N para N possui uma caracterstica especial. Tambm chamado de relacionamento com campos, sua implementao exige a incluso de
58
nome
Relacionamento
N para N.
Relacionamento
com campos.
Resumindo:
Atende
atributos (pelo menos na chave primria de cada uma das entidades envolvidas)
e chave primria. Quando acontece a implementao do modelo fsico, este
relacionamento se torna uma tabela, como mostra a figura 22.
Pertence
Departamento
Relacionamento
que no
nos garante
entendimento
da situao.
59
Informtica 3
captulo 2
Esse exemplo nos parece claro quanto ao relacionamento entre funcionrio e departamento, mas e se perguntarmos: pode haver funcionrio sem departamento associado?
Esse questionamento, num primeiro momento, pode parecer sem sentido, mas
imagine uma situao em que os funcionrios passam por treinamento e s so
alocados em departamentos depois de serem avaliados. E, ento, eles no so
funcionrios? Claro que so! E para deixar mais clara esta definio que existe
o conceito de restrio, que expressa quais so o maior e o menor valor do relacionamento. Para o caso proposto a notao ficaria como na figura 25:
Figura 25
cod_Depto
Restrio.
Diagrama de
entidade e
relacionamento.
Funcionario
Pertence
(1, N)
Departamento
(0,1)
Funcionario
1
Departamento
Pertence
(0:N)
(1:1)
codigo
descricao
Agregao
Outro problema conceitual que preciso definir o relacionamento de uma
entidade com um conjunto de entidades, isto , esse relacionamento s existe se
houver um conjunto de informaes.
Imagine a seguinte situao:
Um cliente compra produtos e atendido por um funcionrio. Veja na figura 26
como exibir graficamente esse caso:
Figura 26
Agregao.
Cliente
Compra
Atende
Produto
possvel identificar nesse pequeno fragmento de diagrama quase todos os elementos do modelo visto at aqui:
Entidades: Funcionario e Departamento.
Relacionamento: Pertence.
Atributos:
da entidade Funcionario: codigo, nome, dataAdmissao, cod_Depto.
da entidade Departamento: codigo, descricao.
Chave primria:
da entidade Funcionario: codigo.
da entidade Departamento: codigo.
Chave estrangeira: o relacionamento Pertence com cardinalidade N para 1 faz
com que seja necessrio criar o campo cod_Depto na entidade Funcionario, que
conter o cdigo do departamento a que cada funcionrio pertence.
Restries de integridade: podemos observar, pelas notaes de restrio de
integridade, que um funcionrio tem de pertencer a um departamento. J um
departamento pode ser cadastrado sem um funcionrio associado.
Funcionario
Vale, agora, propor um roteiro de passos para a elaborao do modelo de entidade e relacionamento e a criao do diagrama que o representar.
60
61
Informtica 3
captulo 2
Figura 28
O senhor Joo
tem necessidade
de informaes
precisas sobre a
sua padaria.
62
63
Informtica 3
captulo 2
por qual valor, alm de qual empregado registrou a venda e qual recebeu o
pagamento.
O estoque, de modo que cada produto vendido seja debitado no saldo.
A necessidade de reposio de produtos o modelo deve ter capacidade
para gerar a qualquer momento a relao dos itens cujo saldo est abaixo
do estoque mnimo desejvel para facilitar a identificao daqueles que
precisam ser repostos.
A durabilidade e o uso dos cartes.
Seus fornecedores endereos, telefones e o nome do contato na empresa para
efetuar a compra.
Uma observao importante: o senhor Joo j possui um controle fiscal e contbil de toda a movimentao, cujos documentos e registros ele envia semanalmente
para seu contador. Fica, assim, para o modelo a ser proposto apenas o controle
fsico (estoque) e financeiro das transaes.
Vamos pensar no problema proposto pelo senhor Joo, construir um modelo e
demonstr-lo por meio de um diagrama de entidade e relacionamento. Para isso,
preciso dar vrios passos.
Passo 1
Listar as entidades candidatas a integrante do modelo.
Quando recebemos uma solicitao nesse formato, isto , um texto que descreve a situao a ser tratada no modelo, uma prtica bastante usada no prprio
texto fazer a identificao das possveis entidades e relacionamentos, assim como
dos principais atributos, grifando os substantivos e verbos essenciais para depois
analis-los a fim de atribuir-lhes os devidos papis. Vejamos o que podemos selecionar em nosso texto.
No primeiro pargrafo temos os seguintes substantivos: senhor Joo, pes,
produtos, frios, laticnios, lanches, refrigerantes, sorvetes, balas, chicletes, chocolates, cartes telefnicos, produtos, frango assado, balco, caixa.
No segundo pargrafo encontramos: padaria, funcionrios, funes, caixa,
atendente, auxiliar de limpeza e padeiro.
No terceiro pargrafo podemos grifar: senhor Joo, clientes, carto, cdigo,
produtos, padaria, caixa, valor total da compra, forma de pagamento, troco.
No quarto pargrafo identificamos: produto, senhor Joo, fornecedores.
Passo 2
Analisar e selecionar as entidades que realmente fazem parte do modelo, excluindo as demais.
Vamos avaliar os substantivos apenas uma vez, mesmo se eles aparecerem mais
vezes, ou em mais de um pargrafo. Se forem exatamente iguais, ser considerada
a primeira anlise.
Senhor Joo: o dono da padaria e pode ser tratado como informao, pois
tambm atende na padaria e trabalha no caixa. No entidade.
Pes, frios, laticnios, lanches, refrigerantes, sorvetes, balas, chicletes, chocolates, cartes telefnicos: tipos de produtos vendidos na padaria. So informaes relacionadas entidade produto, mas no so entidades.
64
Chegamos ento
a uma lista final
de quatro
entidades:
Produto
Funcionrio
Carto
Fornecedor
A entidade cliente tambm pode ser retirada de nosso modelo, pois, entre as
funcionalidades que o senhor Joo nos solicitou, no consta identificar o que
cada cliente comprou. Voc j se cadastrou em alguma padaria em que foi fazer compra? Na maioria dos casos, isso no acontece. Por isso, em nosso caso,
o cliente ser substitudo pelo carto.
65
Informtica 3
captulo 2
Passo 3
Observe que
identificamos
anteriormente compra
como sendo uma
entidade e agora
listamos-a como sendo
um relacionamento.
Por qu? Por se tratar
de um relacionamento
com campos que
quando da criao do
projeto fsico tornase uma tabela, assim
como as entidades.
Passo 4
Definir a cardinalidade dos relacionamentos
Para os relacionamentos definidos, h as seguintes cardinalidades:
Carto compra Produto
(Senhor Antonio entra na padaria para comprar um litro de leite. Recebe um
carto, vai ao balco, pega o leite e 100 g de po de queijo.)
Um carto (o carto que senhor Antonio pegou na entrada da padaria) compra
vrios produtos (um litro de leite e 100 g de po de queijo) e um produto (leite)
pode ser comprado por vrios cartes (os da senhora Maria, do senhor Antonio,
do Miro). Logo, a cardinalidade desse relacionamento N para N, sendo necessrio que se definam os atributos do relacionamento compra por se tratar de um
relacionamento com campos.
Figura 29
Carto compra
produto.
Fornecedor.
Passo 5
Definir as restries de integridade dos relacionamentos.
Ao identificar tais restries de integridade, vamos tambm definir o valor mnimo e mximo de cada cardinalidade.
Carto compra produto
As restries de integridade so: um carto pode comprar ao menos 0 (quando o carto acabou de ser posto em uso) e no mximo N produtos (todos os
produtos dos clientes que pegarem aquele carto). J um produto pode ser
comprado por no mnimo 0 (o produto acabou de ser lanado e acabou de ser
colocado na prateleira) e no mximo N cartes (todos os clientes da padaria).
66
67
Informtica 3
captulo 2
Passo 6
Definir os atributos das entidades e relacionamentos com campos e as chaves primria e estrangeira (se houver).
Para definir esses atributos temos de lembrar sempre do conceito de abstrao,
tentando selecionar apenas os aspectos relevantes para o escopo do problema
em foco.
Entidades:
Cartao(codigo,data_inicio_uso,data_fim_uso): o atributo cdigo foi definido
como chave primria, pois precisamos ter a certeza de que no existem dois cartes com o mesmo nmero e compartilharemos a responsabilidade dessa conferncia com o sistema gerenciador de banco de dados.
Produto(codigo,nome,preco_venda,saldo,estoque_minimo): o atributo
cdigo chave primria, pois assim fica mais fcil fazer o controle para impedir que o valor deste atributo (codigo) se repita.
Funcionario(codigo,nome,funcao): com o atributo codigo como chave
primria.
Fornecedor(codigo,nome,rua,complemento,bairro,cidade,estado,cep,
contato,telefone,celular): o atributo codigo chave primria.
Relacionamentos com campos.
Devemos nos lembrar de que um relacionamento com campos deve conter pelo
menos as chaves primrias das entidades envolvidas. Eles podem conter outros
atributos.
Compra(numero,data,forma_pagamento,codigo_produto,codigo_cartao,
quantidade,valor_unitario,valor_total_compra). Aqui as chaves primrias
so os atributos numero, codigo_cartao e codigo_produto e as chaves estrangeiras os atributos codigo_cartao e codigo_produto.
Fornece(numero_nota,data,codigo_fornecedor,codigo_produto,
quantidade, valor_unitario). Nesse caso, as chaves primrias so os atributos
numero_nota, codigo_fornecedor e codigo_produto e as chaves estrangeiras
codigo_fornecedor e codigo_produto.
68
2.2. Normalizao
Normalizao um processo utilizado para acertar possveis problemas estruturais das entidades e relacionamentos com campos criados tambm chamados
de anomalias em um modelo de entidade e relacionamento. Consiste na anlise dos atributos das entidades e relacionamentos com campos, sob o ponto de
vista das regras chamadas formas normais, que descrevem, com base na teoria
de conjuntos, na lgebra e no clculo relacional, o que devemos ou no fazer
nas estruturas das entidades e relacionamentos de nosso modelo, baseados em
conceitos matemticos.
Figura 32
Diagrama de
entidade e
relacionamento
da padaria do
senhor Joo.
Informtica 3
captulo 2
Exemplo:
Tendo a entidade funcionario os atributos codigo, nome, cidade e DDD, e sabendo que o codigo a chave primria da entidade funcionario, se analisarmos
esses atributos sob a ptica da dependncia funcional, teremos:
J o campo telefones, por estar no plural, indica que nele poder ser armazenado mais de
um nmero. Pela regra, esse atributo precisa ser separado em outra entidade, que pode
ser chamada de telefone e que conter os diversos nmeros de telefone do fornecedor.
codigo g nome
codigo g cidade
cidade g DDD
Logo, podemos dizer que os atributos nome e cidade dependem do atributo
codigo. J o atributo DDD depende do atributo cidade.
Definida a dependncia funcional, podemos passar agora para a definio das
formas normais.
Assim, temos:
Fornecedor(codigo,nome,rua,complemento,bairro,cidade,estado,cep)
Tendo como chave primria o atributo codigo.
Telefone(cod_fornecedor,nro telefone)
Tendo como chave primria os atributos cod_fornecedor e nro_telefone, j que
isso garante que no ser cadastrado o mesmo telefone para o forncedor e como
chave estrangeira o atributo cod_fornecedor.
Fornecedor(codigo,nome)
Tendo como chave primria o atributo cdigo.
Endereco(cod_fornecedor,rua,complemento,bairro,cidade,estado,cep).
Tendo como chave primria o atributo cod_fornecedor e como chave estrangeira o atributo cod_fornecedor.
Toda entidade
que no possuir
chave primria
composta, isto ,
com mais de um
atributo, est em
2 Forma Normal.
Informtica 3
captulo 2
Vemos agora que nem todos os atributos dependem da chave primria. O que
no permitido pela Segunda Forma Normal. Para que essa entidade fique em
2NF, teremos de desmembr-la.
Ela ficar assim:
Compra(nro_nf,cod_fornecedor,data,valor_total_nota)
Observaes
Informtica 3
captulo 2
Entidade carto
Cartao(codigo,data_inicio_uso,data_fim_uso)
O atributo cdigo foi definido como chave primria.
Est em Primeira Forma Normal, pois todos os seus atributos so atmicos.
A entidade cartao est em Segunda Forma Normal, pois sua chave primria no
composta.
Vamos verificar a dependncia funcional da entidade cartao:
codigogdata_inicio_uso
codigogdata_fim_uso
Logo, a entidade cartao est em Terceira Forma Normal, pois todos os atributos
so dependentes funcionalmente da chave primria.
A entidade cartao est na Forma Normal Boyce-Codd, pois todos os seus atributos no chave dependem unicamente da chave primria.
Cartao(codigo,data_inicio_uso,data_fim_uso)
Tendo o atributo codigo como chave primria.
Entidade Produto
Produto(codigo,nome,preco_venda,saldo,estoque_minimo)
Tendo o campo codigo como chave primria.
Est em Primeira Forma Normal, pois ela no possui atributos multivalorados
e atributos compostos.
A entidade produto est em Segunda Forma Normal, pois sua chave primria
no composta. Analisando sua dependncia funcional, temos:
codigo gnome
codigo gpreco_venda
codigo gsaldo
codigo gestoque_minimo
A entidade produto est em Terceira Forma Normal, pois todos os atributos no
chave dependem funcionalmente da chave primria. A entidade produto est na
Forma Normal Boyce-Codd, pois todos os atributos no chave so dependentes
apenas da chave primria.
Entidade funcionario
Funcionario(codigo,nome,funcao)
74
Entidade Fornecedor
Fornecedor(codigo,nome,rua,complemento,bairro,cidade,estado,cep,
contato,telefone,celular)
Tendo o atributo codigo como chave primria.
Est em Primeira Forma Normal, pois no possui atributos multivalorados nem
atributos calculados.
A entidade fornecedor est em Segunda Forma Normal, pois sua chave primria
simples.
Anlise da dependncia funcional da entidade fornecedor.
codigo g nome
codigo g rua
codigo g complemento
codigo g bairro
codigo g cidade
codigo g estado
codigo g cep
codigo g contato
codigo gtelefone
codigo gcelular
75
Informtica 3
captulo 2
A entidade fornecedor est em Terceira Forma Normal, pois todos os atributos no chave dependem funcionalmente da chave primria.
A entidade fornecedor est na Forma Normal Boyce-Cood, pois todos os
seus atributos no chave dependem apenas da chave primria.
Entidade compra
Tendo como chave primria os atributos numero_nota, codigo_fornecedor e codigo_produto e como chaves estrangeiras codigo_fornecedor e codigo_produto.
A entidade Fornece est em Primeira Forma Normal, pois todos os seus atributos so atmicos. Vale verificar a dependncia funcional dessa entidade.
numero_nota,cod_fornecedor,cod_produto g data
numero_nota,cod_fornecedor,cod_produto g valor_total
numero_nota,cod_produto g quantidade
numero_nota,cod_produto g valor_unitario
Entidade fornece
Fornece (numero_nota, data, codigo_fornecedor,codigo_produto,
quantidade, valor_unitario)
76
Compra
numero
132
133
134
cod_cartao
3
2
6
data
21/05/2009
21/05/2009
23/05/2009
forma_pagto
dinheiro
dinheiro
cartao
valor_total compra
10,60
13,60
52,20
77
Informtica 3
captulo 2
Vamos analisar, por exemplo, a tabela ItemCompra. Veja que a soma dos itens
da compra de cdigo 132 (campos quantidade *valor_unitario) o mesmo valor gravado no campo valor_total_compra da tabela compra. Isto integridade
de dados. Aproveite para olhar detalhadamente para as demais tabelas, para
entender como os atributos se transformam em campos e como esses campos
se relacionam, permitindo acesso rpido e eficiente s informaes. Olhe agora
para as tabelas Fornecedor, Fornece e ItemFornece. S de olhar, j sabemos que,
no dia 21/05/2009, o senhor Joo comprou do senhor Pedro Parente 120 litros
de leite B e dois achocolatados em p.
ItemCompra
numero_nota
132
132
cod_produto
2
3
quantidade
2
1
valor_unitario
3,20
4,20
Como sabemos disso? Veja o caminho que fazemos saindo de Fornece indo para
ItemFornece; veja a implementao do relacionamento, pois os campos numero_nota das duas tabelas tem o valor 1 e o cdigo do produto de ItemFornece
equivale aos produtos leite B e achocolatado em p. Vemos agora na prtica o que
definimos na teoria. Preste ateno nas outras tabelas e veja se voc acha mais informaes interessantes. Olhe tambm a importncia dos atributos chave primria e chave estrangeira em nossa implementao. Ainda h muito o que aprender
para que os modelos se transformem em sistemas de qualidade, mas agora j se
sabe como os modelos se transformam em banco de dados de aplicaes.
Fornecedor
Codigo Nome
Rua
Complemento Bairro
SP
Contato Telefone
Celular
Maria Doceria
Centro
Hortolndia SP
12123-123 D. Maria
Pedro Parede
Rua 4 n 120
Jd. Cachoeira
Caldas
MG
FuncionArio
Codigo Nome
1
Sr. Joo
2
Laercio da Silva
3
Maria padilha
Funo
Dono
Padeiro
Atendente
Figura 33
Roteiro para
criar uma soluo
informatizada.
99-9999-8976 87-9999-0000
fornece
numero_nota cod_fornecedor
1
3
2
2
4
6
data
21/05/2009
21/05/2009
23/05/2009
valor_total
123,12
34,20
48,90
Itemfornece
numero_nota cod_produto
1
2
1
3
quantidade
120
2
valor_unitario
1,00
1,56
Produto
Codigo Nome
2
Leite B.
3
Achocolatado em p
15
Leite condensado
78
Preo_Venda Saldo
1,89
32
3,45
13
2,11
54
estoque_Minimo
4
2
12
79
Informtica 3
captulo 2
DICA
80
Entendida a dinmica de funcionamento de nosso minimundo e obtidas as informaes relevantes ao foco da soluo imaginada, hora de analisar essas informaes, separ-las e classific-las de forma podermos continuar a desenvolvla, verificando inclusive se a melhor opo mesmo informatizar, e, em caso
positivo, se haver mesmo condies de satisfazer as necessidades do usurio
no prazo previsto. O primeiro passo, agora, separar os requisitos levantados e
classific-los em requisitos de dados e requisitos funcionais. Mas, antes de tudo,
resta esclarecer bem quais so esses requisitos.
2.3.1. Minimundo
Trata-se, aqui, de toda e qualquer informao relevante para a soluo em anlise, tanto as geradas quanto as consultadas com o objetivo de concluir determinada tarefa. Por exemplo, a quantidade e o valor do produto comprado, ou seja,
o montante do pagamento, so requisitos de dados que devem ser classificados
para que se possa construir um modelo de dados.
Por meio das tcnicas que estudamos no captulo anterior, vamos levantar os
requisitos para a soluo do problema proposto. Avaliaremos, portanto, o tamanho do problema, o que se espera da soluo, quem so os usurios chave,
quais processos esto envolvidos e o que cada um desses processos oferece de
informao relevante soluo que estamos buscando.
Desde o incio,
as informaes
levantadas no
cliente devem ser
registradas para que
se tornem base de
nosso entendimento
do problema e
referncia para
consulta posteriores.
lhor relao possvel com as pessoas envolvidas no processo, deixando clara sua
importncia para o trabalho, mesmo depois que tivermos encerrado a fase de
levantamento de requisitos.
Quem pode nos dar essas respostas so os usurios e seus procedimentos. Lembre-se de que devemos escolher uma ou mais tcnicas descritas para conhecer
bem o problema.
DICA
Lembre-se: podem
surgir dvidas em
qualquer fase do
desenvolvimento
do projeto e voc
precisar de mais
informaes
e opinies do
usurio at o fim
do processo.
Figura 34
As vrias
operaes do
negcio padaria.
Informtica 3
captulo 2
Situao
A senhora Maria vai at o balco de pes e solicita dez pezinhos ao funcionrio
Larcio, que est atendendo naquele momento.
Larcio pega o saco de papel adequado a tal quantidade, vai at a cesta de pes
e com o pegador coloca no saco os dez pezinhos. Em seguida fecha o saco,
coloca-o sobre a balana e digita, no equipamento, o preo do quilo do po.
Toma ento um pedao de papel que est sobre o balco no qual anota o peso
dos pes e o valor apresentado na balana, alm da palavra po, e entrega o
pacote e o pedao de papel senhora Maria, perguntando-lhe se vai querer
mais alguma coisa.
4 - Toma, ento, um pedao de papel que est sobre o balco no qual anota o
peso dos pes e o valor apresentado na balana, alm da palavra po; entrega
o pacote e o pedao de papel senhora Maria, perguntando-lhe se vai querer
mais alguma coisa.
Em resumo:
O cliente solicita uma quantidade de um certo produto ao funcionrio.
1 - A senhora Maria vai at o balco de pes e solicita dez pezinhos ao funcionrio Larcio, que est no balco neste momento.
Quais so os requisitos importantes para nossa soluo nesta frase?
A senhora Maria se deslocar at o balco de pes no um requisito
relevante, pois no nos interessa, no momento, como ela chegou ao
balco e sim o que fez ao chegar l.
82
A temos uma ao que ser modificada por nossa soluo, pois sabemos que
o senhor Joo quer que o cliente entregue um carto ao funcionrio, que nele
registrar as compras e o devolver ao cliente.
83
Informtica 3
captulo 2
Tipo
Tamanho
Obrigatrio
nico
Chave
primria
Chave
estrangeira
Valor default
Regra de
validao
84
85
Informtica 3
captulo 2
Tabelas
So inmeras as formas de apresentar as definies alinhadas, e utilizaremos a
mais comum, a tabela. Ento, por meio de tabelas, vamos criar o modelo lgico
das entidades da soluo imaginada para a padaria do senhor Joo. As entidades
e relacionamentos com campos passam a ser chamados de tabelas e seus atributos de campos. Observe o exemplo, na tabela Carto.
cartao
nome
codigo
tipo de
tamanho obrigatorio unico
dados
chave
chave
valor
regra de
primaria estrangeira default validacao
INTEGER
Sim
Sim
Sim
No
No
No
dt_Inicio_uso
DATE
Sim
No
No
No
No
No
dt_fim_uso
DATE
No
No
No
No
No
No
Produto
nome
tipo de
tamanho obrigatorio unico
dados
chave
chave
valor
regra de
primaria estrangeira default validacao
codigo
INTEGER
Sim
Sim
Sim
No
No
No
nome
VARCHAR
40
Sim
No
No
No
No
No
preco_venda
DECIMAL
10,2
Sim
No
No
No
No
Valor > 0
saldo
DECIMAL
10,2
Sim
No
No
No
Valor >=0
estoque_minimo DECIMAL
10,2
Sim
No
No
No
Valor >=0
Observao: O campo saldo foi definido com decimal, porque nem sempre os
produtos so vendidos em unidades.
Funcionario
nome
codigo
nome
funo
tipo de
tamanho obrigatorio unico
dados
INTEGER
VARCHAR
VARCHAR
4
50
30
O melhor SGBD
Sim
Sim
Sim
Sim
No
No
chave
chave
valor
regra de
primaria estrangeira default validacao
Sim
No
No
No
No
No
No
No
No
No
No
No
Definir qual Sistema Gerenciador de Banco de Dados devemos adotar em uma soluo informatizada
nem sempre fcil. Precisamos levar em conta seu preo, sua forma de comercializao, seus custos
adicionais (valor da manuteno anual, preo por usurio etc.), estrutura de hardware que a soluo
demandar (rede, stand-alone, internet), grau de segurana, tipos de acesso, formas de gerenciamento
de informaes. Todos esses fatores tm de ser considerados, para chegar melhor soluo.
86
Fornecedor
nome
tipo de
tamanho obrigatorio unico
dados
chave
chave
valor
regra de
primaria estrangeira default validacao
codigo
INTEGER
Sim
Sim
Sim
No
No
No
nome
VARCHAR
50
Sim
No
No
No
No
No
rua
VARCHAR
50
Sim
No
No
No
No
No
complemento VARCHAR
50
No
No
No
No
No
No
bairro
VARCHAR
40
No
No
No
No
No
No
cidade
VARCHAR
40
Sim
No
No
No
No
No
estado
VARCHAR
Sim
No
No
No
No
No
cep
VARCHAR
Sim
No
No
No
No
No
telefone
VARCHAR
10
No
No
No
No
No
No
celular
VARCHAR
10
No
No
No
No
No
No
Observao: Um campo do tipo varchar permite at 255 caracteres, mas o tamanho de campos como rua, por exemplo, deve ir no mximo at 50 caracteres.
Isso porque talvez seja preciso emitir etiquetas de endereamento e como o faremos se o campo rua tiver 255 caracteres? O campo CEP tambm foi colocado
como obrigatrio, para que o usurio se lembre de preench-lo.
Os campos telefone e celular so do tipo varchar, pois o zero esquerda significativo, isto , 01 diferente de 1.
fornece
nome
tipo de
tamanho obrigatorio unico
dados
chave
chave
valor
regra de
primaria estrangeira default validacao
numero_nota
INTEGER
Sim
Sim
Sim
No
No
No
cod_fornecedor INTEGER
Sim
No
Sim
Sim
No
Fornecedor
j deve ser
cadastrado
data
DATE
Sim Fornece
No
No
No
No
No
valor_total
DECIMAL
10,2
Sim
No
No
No
Soma dos
No
itens de
itemfornece
para esta
nota.
87
Informtica 3
captulo 2
ItemFornece
nome
tipo de
tamanho obrigatorio unico
dados
chave
chave
valor
regra de
primaria estrangeira default validacao
numero_nota INTEGER
Sim
Sim
Sim
Sim
No
No
cod_produto INTEGER
Sim
No
Sim
Sim
No
Produto j
deve ser
cadastrado
quantidade
valor_unitario DECIMAL
DECIMAL
5,2
Sim
No
No
No
No
No
10,2
Sim
No
No
No
No
>0
Compra
nome
tipo de
tamanho obrigatorio unico
dados
chave
chave
valor
regra de
primaria estrangeira default validacao
numero
INTEGER
7
Sim
Sim
Sim
No
No
cod_cartao
INTEGER
8
Sim
No
No
Sim
No
data
DATE
8
Sim
No
No
No
No
forma_pagto VARCHAR
10
Sim
No
No
No
No
valor_total_ DECIMAL
10,2
Sim
No
No
No
No
compra
AutoNumerao
Carto j
deve ser
cadastrado
No
No
Soma
dos valores
dos itens de
itemcompra
para esta
compra
cod_func_
INTEGER
Sim
No
No
Sim
No
caixa
Funcionrio
deve ser
cadastrado
ItemCompra
nome
tipo de
tamanho obrigatorio unico
dados
chave
chave
valor
regra de
primaria estrangeira default validacao
numero_nota INTEGER
Sim
Sim
Sim
No
No
No
cod_produto INTEGER
Sim
No
Sim
Sim
No
Produto j
deve ser
cadastrado
No
quantidade
DECIMAL
5,2
Sim
No
No
No
No
valor_unitario DECIMAL
10,2
Sim
No
No
No
No
88
Valor do
campo preco_
venda da
tabela produto
quando da
incluso da
nota.
Observao: Um campo autonumerao um campo numrico, que ter seu valor sequencial preenchido pelo prprio SGBD. Mas importante frisar que nem
todo Sistema Gerenciador de Banco de Dados (SGBD) possui esse campo. Por
isso, preciso verificar essa disponibilidade conforme o sistema adotado. Veja que
o campo cod_func_caixa no estava definido no projeto lgico, mas, ao analisar
as funcionalidades, verificou-se que o senhor Joo quer saber quem recebeu pela
compra e, assim, foi necessrio possibilitar o registro desta informao, a qual
servir tambm para indicar se determinada compra j foi paga ou no.
DICA
89
Informtica 3
captulo 2
complemento VARCHAR(50),
bairro VARCHAR(40),
cidade VARCHAR(40) NOT NULL,
estado VARCHAR(2) NOT NULL,
cep VARCHAR(8) NOT NULL,
telefone VARCHAR(10),
celular VARCHAR(10));
90
Informtica 3
captulo 2
92
Tetra Images/Corbis/Latinstock
93
Informtica
Captulo 3
Banco de dados
Evoluo dos sistemas de computao
Conceitos e terminologia
Abordagem relacional
Administrao e gerenciamento
Informtica 3
captulo 3
aquisio de
passagens areas
movimentao
bancria
Ba
n
de co
da
do
s
compras
em lojas
reservas
em hotel
96
compras em
pesquisa em
supermercados
bibliotecas
informatizadas
As principais
caractersticas da
abordagem tradicional
so: cada aplicao
tem seus prprios
arquivos; os dados
so repetitivos;
inconsistncia;
subordinao de
programas a arquivos;
manuteno difcil e
cara; o analista o
dono do sistema;
falta de integridade
e de segurana.
Caso haja muitos programas desenvolvidos dessa maneira, o sistema de tecnologia da informao da organizao ineficiente, pois se trata de uma abordagem
antiga e inadequada ao atual estgio de desenvolvimento de sistemas. Esse tipo
de abordagem pode ser visualizada da seguinte forma: cada usurio utiliza um
aplicativo (ou um conjunto de aplicativos), o qual, por sua vez, usa um arquivo
de dados que muitas vezes no acessado por outro usurio, como sugere a
ilustrao a seguir (figura 38).
97
Informtica 3
captulo 3
Figura 38
uma aplicao. por isso que surgem as dificuldades de manuteno, ocasionadas parcialmente pelo forte acoplamento dos programas aos arquivos. A
abordagem de banco de dados, ainda considerada a mais adequada, surgiu da
necessidade de desenvolvimento de sistemas cada vez mais complexos e flexveis,
integrando os dados de toda a organizao e no mais apenas os sistemas departamentais. Sob esse prisma, a nfase no desenvolvimento de uma aplicao
no mais sobre os processos, e sim sobre os dados. Podemos dizer que, para a
abordagem tradicional e de sistemas integrados, na expresso processamento de
dados a parte mais importante o processamento, enquanto na abordagem de
banco de dados a palavra fundamental dados.
A abordagem
tradicional: para
cada usurio, um ou
mais aplicativos.
As principais
caractersticas da
abordagem de sistemas
integrados so: pouco
adaptvel; as alteraes
comprometem vrios
sistemas; aplicaes
estticas com o tempo;
problemas em um sistema
paralisam atividades
de outros; programas
ainda subordinados a
arquivos; viso de usurio
inexistente; integridade e
segurana so fracas.
Elmasri (1999) diz ainda que, por causa das deficincias da abordagem anterior,
criou-se, por volta de 1980, uma nova, a de sistemas integrados, a qual pretendia
resolver as questes de redundncia e integridade de informaes, trazendo uma
viso corporativa de sistemas. Ela se vale da percepo de que existem conjuntos
de arquivos de dados de interesse comum s vrias reas de uma organizao, ou
seja, de que no precisamos redigitar informaes que j foram digitadas por outros
usurios de outros departamentos ou usurios de outros sistemas. A integrao entre
os sistemas mantm um grau acentuado de unicidade da informao dentro dos
sistemas da organizao. Assim, tal abordagem eliminou a redundncia de dados
que caracteriza a anterior. Aqui, os sistemas passam a utilizar uma nica base de
informaes, sem a repetio de arquivos por sistema.
Os sistemas desenvolvidos dessa maneira iniciaram a integrao no universo
corporativo, ficando dependentes uns dos outros por utilizarem a mesma base
de dados. Assim, alteraes em qualquer arquivo de dados implicavam modificaes em programas de mais de um dos sistemas que acessavam a mesma
base, em virtude de utilizar linguagens de alta dependncia de dados (figura
39). Com o crescimento das aplicaes, essa abordagem tambm se tornou ineficiente. Qualquer alterao na base de dados afetava um nmero ainda maior
de sistemas e programas. Com tantas dificuldades relacionadas ao volume de alteraes, as aplicaes acabaram por se tornar praticamente estticas, levando os
departamentos de tecnologia da informao estagnao e a serem considerados
ineficientes pelos gestores das organizaes.
99
Informtica 3
captulo 3
Requisitos
Desenvolvimento flexvel e
produtivo
Aquisio e utilizao de
um SGBD
Utilizao de dicionrio de
dados
Centralizao da definio
de dados
Centralizao do projeto
das bases de dados
Maiores controles de
segurana dos dados
Os nveis de abstrao
Tambm devemos avaliar com muita ateno qual arquitetura de hardware
e software ser a mais adequada ao nosso projeto. A abordagem de banco de
dados est ilustrada na figura 40. Trabalhar com ela, no desenvolvimento de
sistemas, exige dos profissionais de tecnologia da informao comprometimento com alguns princpios.
Figura 40
Abordagem de
banco de dados.
100
101
Informtica 3
captulo 3
Figura 41
Interrelacionamento
entre os nveis de
abstrao.
Henry Korth
autor de vrios
livros clssicos
da informtica.
Independncia fsica:
a habilidade de modificar
o esquema fsico sem que
seja preciso modificar os
programas. Alteraes
no nvel fsico podem ser
necessrias somente
para uma ocasional
melhoria de performance.
Independncia lgica: a
possibilidade de modificar
o esquema conceitual
sem que isso demande
modificao nos
programas. necessria
apenas quando a estrutura
lgica do banco de dados
alterada. Por exemplo, se
forem criadas mais colunas
em uma determinada
tabela do banco de dados.
A independncia lgica
mais difcil de alcanar do
que a independncia fsica,
porm os programas so
bastante dependentes
da estrutura lgica
dos dados que acessam
102
Segundo Korth (1995) o conceito de um esquema de banco de dados corresponde noo de definio de tipo na linguagem de programao. Uma varivel
de um dado tipo tem um valor particular em um determinado instante de tempo. Assim, o conceito de valor de uma varivel na linguagem de programao
corresponde ao conceito de uma instncia de um esquema de banco de dados.
Ainda de acordo com Korth (1995), os sistemas de bancos de dados possuem
diversos esquemas, subdivididos de acordo com os nveis de abstrao descritos
anteriormente. No nvel mais baixo est o esquema fsico, no intermedirio o
esquema conceitual e no mais alto, um subesquema. Em geral, os sistemas de
bancos de dados suportam um esquema fsico, um esquema conceitual e diversos subesquemas.
Uma consulta
(tambm chamada de
query) um comando
que requisita o resgate
de uma informao,
com base na lgebra
relacional e no clculo
relacional de tupla.
Profissionais de sistemas informatizados: aqueles que desenvolvem aplicativos desenvolvidos para realizar a interao com os bancos de dados.
Programadores ou desenvolvedores: so os que fazem a interao com os
sistemas, utilizando-se das DML, que so includas nos programas, denominados programas de aplicao.
Usurios avanados: interagem com o sistema sem escrever programas.
Como tm conhecimentos de linguagem de consulta, realizam chamadas
especficas nessa linguagem para atender a suas demandas.
Usurios leigos: s interagem com os sistemas desenvolvidos pelos programadores.
Administradores de banco de dados (DBA, do ingls Data Base Administrator): so os responsveis pela criao, manuteno e bom funcionamento do banco de dados. Avaliam sua performance com frequncia e,
sempre que necessrio, tratam de aprimor-la.
Informtica 3
captulo 3
A chave estrangeira
(Foreign Key) pode
ser uma coluna ou
combinao de
colunas usada para
estabelecer links
entre duas tabelas.
104
2. Integridade de domnio: valida entradas de uma coluna especfica, podendo restringir suas relaes em linhas, quando estas so includas ou
excludas. So as chaves estrangeiras (Foreign Key).
3. Integridade referencial: preserva as relaes definidas entre tabelas, permitindo consistncia em todas elas.
Benefcios da abordagem
Independncia dos dados
Vises mltiplas de dados
Melhor comunicao entre o departamento de informtica
e os usurios
Reduo acentuada do desenvolvimento de aplicaes
e do tempo gasto em manuteno de sistemas
Melhoria na segurana de dados
Mais agilidade gerencial de informaes ligadas ao processo
decisrio da empresa
105
Informtica 3
captulo 3
Informtica 3
captulo 3
A chave designa o conceito de item de busca, ou seja, um dado que ser empregado nas consultas base de dados. um conceito lgico da aplicao.
Podemos dizer que um campo chave se puder ser utilizado para recuperar
linhas de uma tabela. Geralmente, todos os campos de uma tabela so chaves,
mas o modelo relacional preocupa-se com a definio das principais chaves de
uma tabela. Assim, implementa os conceitos de chave primria e chave estrangeira, que se relacionam com duas restries de integridade determinadas por
Codd, quanto ao banco de dados. Vejamos, ento, quais so os tipos de chave
em um modelo relacional.
109
Informtica 3
captulo 3
1) Chave primria
O conceito de chave primria est ligado prpria concepo do modelo relacional. Os dados esto organizados sob a forma de tabelas bidimensionais, com
linhas e colunas, e o princpio nos conduz a termos uma forma de identificar uma
nica linha da tabela por meio de um identificador nico em valor. Trata-se de
um conceito fundamental para entendermos o funcionamento de um banco de
dados. Quando definimos um campo como chave primria, estamos informando ao banco de dados que no pode existir mais algum registro com o mesmo
valor especificado como chave primria, ou seja, os valores das chaves primrias
devem ser nicos. Toda tabela relacional deve possuir esse identificador unvoco,
denominado chave primria. Assim, uma tabela relacional contm um campo
ou conjunto de campos concatenados, permitindo que dela se identifique uma e
somente uma ocorrncia. Mas em uma mesma tabela podem existir mais de um
campo ou coluna com essa propriedade. A estas denominamos chaves candidatas.
Entre essas candidatas a chave primria, temos de escolher uma para ser definida
e utilizada como tal, deixando as demais como chaves alternativas.
Conclui-se, ento, que havendo uma coluna Ca em uma tabela A e uma coluna
Cb, com idntico domnio, em uma tabela B, a qual foi definida como chave
primria de B, ento a coluna Ca uma chave estrangeira em A, j que a tabela
A contm uma outra coluna distinta de Ca, que sua chave primria. No h
limitao para o nmero de chaves estrangeiras em uma tabela. Veja nas tabelas
abaixo exemplos de referncia lgica por chave estrangeira.
FUNCIONaRIO
departamento
Matricula
Nome
Depto
Numero
Nome
1234
Wilson Oliveira
25
10
Contabilidade
5678
Lucas Sirtori
15
25
Sistemas
9191
Andra Oliveira
10
15
RH
9287
Amanda Cristina
10
2) Chaves candidatas
9388
Priscila Oliveira
25
Uma tabela tambm pode conter alternativas de identificador nico, pois vrias colunas ou concatenaes diferentes de colunas podem ter essa propriedade e, portanto, so candidatas a chave primria. Mas, como somente uma
ser escolhida como chave primria, as restantes passam a ser consideradas
chaves alternativas.
3) Chaves secundrias
O termo chave sempre se refere a um elemento de busca por meio do qual podemos recuperar uma informao ou um conjunto de informaes. E, nas tabelas
do banco de dados relacional, h colunas ou conjuntos de colunas concatenadas
que nos permitem fazer no uma identificao nica, mas de um grupo de
linhas de uma tabela. Chamamos tais colunas ou conjuntos de colunas concatenadas de chaves secundrias. possvel que existam N linhas em uma tabela
com o mesmo valor de chave secundria.
110
O comando Order
By especifica um
ou mais elementos
que sero usados
para classificar
um conjunto de
resultados e facilitar
a pesquisa.
O Group By serve
para agrupar
dados recuperados
conforme critrios
pr-definidos.
4) Chaves estrangeiras
Esta restrio se refere aos valores das chaves primrias. Se a chave primria, por
definio, identifica uma e somente uma ocorrncia de uma tabela, ento no
poder ter valor NULO porque nulo no identifica nada, representando apenas
a informao desconhecida.
111
Informtica 3
captulo 3
D
efinir o contedo de informaes do banco de
dados
Por meio de levantamentos de informaes, o profissional deve decidir que
informaes devem ser mantidas no banco de dados da empresa.
Informtica 3
captulo 3
Figura 42
Segurana em
banco de dados.
Permisses
ao usurio
administrador
H dois tipos de conta de usurio disponveis no seu computador: administrador do computador e limitada. Existe tambm uma conta de convidado (guest)
para usurios que no tm conta configurada no equipamento. Vejamos agora
quais so as caractersticas de cada tipo de conta.
Conta administrador
Destina-se ao usurio que pode alterar o sistema, instalar programas e acessar todos os arquivos armazenados. Este, portanto, ter permisso sobre
todos os recursos do computador, inclusive as contas de todos os outros
usurios. Sua nica restrio alterar o tipo de sua prpria conta para conta
limitada, a menos que o computador contenha um outro usurio com conta
de administrador. Tal restrio visa assegurar que haja sempre pelo menos
115
Informtica 3
captulo 3
um usurio com uma conta de administrador, ou seja algum com permisso para instalar novos programas, configurar o Windows e alterar as contas
de usurios.
As informaes so
o principal ativo das
corporaes. Assim,
devemos ter muito
cuidado ao definir
o acesso a seus
bancos de dados,
fazendo permisses
exclusivamente a
pessoas que devem
e podem acesslos e na medida
exata de suas
necessidades de
informao para o
trabalho.
Conta limitada
Como o prprio nome sugere, destina-se ao usurio com restries de permisso para usar os recursos do computador, como alterar a maioria das
configuraes ou excluir arquivos importantes. Esse usurio basicamente
s pode acessar programas j instalados e alterar a imagem de sua prpria
conta, alm de criar, alterar ou excluir sua prpria senha.
Exemplo 1
USE Master
Exemplo 2
USE Exemplo1
TO [SERVIDOR\wilson]
Exemplo 3
USE Exemplo1
TO security_account [ ,...n ]
Structured
Quary Language
(Linguagem
de Consulta
Estruturada)
criada no incio
da dcada de
1970, na IBM.
Restries ao
usurio de
conta limitada
Instalar software
ou hardware (drivers)
Alterar o nome ou o tipo
de sua prpria conta (essa
atribuio exclusiva do
usurio com conta
de administrador).
117
Informtica 3
captulo 3
Exemplo 1
Retirar a permisso de criar novos Bancos de Dados,
atribuda para o login SERVIDOR\wilson, anteriormente.
USE MASTER
Exemplo 2
Retirar as permisses CREATE TABLE, CREATE RULE
e CREATE VIEW, atribudas para o usurio SERVIDOR\wilson
no Banco de Dados Exemplo1.
USE Exemplo1
REVOKE CREATE TABLE, CREATE RULE, CREATE VIEW
TO [SERVIDOR\wilson]
Exemplo 3
Retirar as permisses CREATE TABLE, CREATE RULE
e CREATE VIEW, atribudas para os usurios SERVIDOR\grupo1
e SERVIDOR\grupo2, no Banco de Dados Exemplo1.
USE Exemplo1
TO [SERVIDOR\grupo1], [SERVIDOR\grupo2]
Exemplo 4
Retirar todas as permisses atribudas ao usurio SERVIDOR\
andrea, no Banco de Dados Exemplo1.
USE Exemplo1
REVOKE ALL
TO [SERVIDOR\andrea]
Exemplo
Atribuir todas as permisses para o usurio SERVIDOR\andrea, no banco de
dados Exemplo1.
USE Exemplo1
GRANT ALL
TO [SERVIDOR\andrea]
119
Informtica 3
captulo 3
Exemplo 1
Para garantir ao usurio SERVIDOR\wilson a permisso de
selecionar novos registros e atualizar os registros existentes,
na tabela Clientes do Banco de Dados Exemplo1:
Use Exemplo1
TO [SERVIDOR\wilson]
[SERVIDOR\wilson]
Exemplo 2
Garantir para os usurios SERVIDOR\wilson e SERVIDOR\andrea
a permisso de selecionar novos registros, atualiz-los
e exclu-los, na tabela Clientes do Banco de Dados Exemplo1:
Use Exemplo1
TO [SERVIDOR\wilson], [SERVIDOR\andrea]
Exemplo 3
Atribuir todas as permisses para o usurio SERVIDOR\andrea,
na tabela Clientes do Banco de Dados Exemplo1.
Se determinado usurio utiliza uma aplicao que acessa o banco de dados no servidor
SQL Server e deve ter permisso somente de leitura de dados de uma determinada tabela,
o incluiremos em um role com permisso SELECT na tabela e pronto, ele apenas poder
consultar os dados. A seguir confira quais so as principais permisses a objetos:
SELECT: Tabelas, views e colunas.
INSERT: Tabelas e views.
DELETE: Tabelas e views.
120
GRANT
| ON { stored_procedure | extended_procedure }
| ON { user_defined_function }
TO security_account [ ,...n ]
USE Exemplo1
[ AS { group | role } ]
TO [SERVIDOR\andrea]
121
Informtica 3
captulo 3
Observe que, mais uma vez, utilizamos a palavra ALL, para indicar todas as
permisses. Para retirar as permisses de objetos do banco de dados utilizamos
REVOKE. Neste caso, a sintaxe do comando REVOKE a seguinte:
TO [SERVIDOR\wilson]
Exemplo 3
Retirar todas as permisses atribudas ao usurio SERVIDOR\
andrea, na tabela Clientes do Banco de Dados Exemplo1.
USE Exemplo1
| ON { stored_procedure | extended_procedure }
| ON { user_defined_function }
TO [SERVIDOR\andrea]
{ TO | FROM }
security_account [ ,...n ]
[ CASCADE ]
[ AS { group | role } ]
122
Exemplo 1
Retirar a permisso UPDATE, atribuda para o usurio
SERVIDOR\wilson, anteriormente.
USE Exemplo1
TO [SERVIDOR\wilson]
Exemplo 2
Retirar as permisses SELECT, UPDATE E DELETE, atribudas
para o usurio SERVIDOR\wilson na tabela Clientes do Banco
de Dados Exemplo1.
USE Exemplo1
Observe que novamente recorremos palavra ALL para indicar todas as permisses. J para negar as permisses de objetos do banco de dados utilizamos o
comando DENY. Veja qual a sintaxe do comando DENY:
DENY
{ ALL [ PRIVILEGES ] | permission [ ,...n ] }
{
[ ( column [ ,...n ] ) ] ON { table | view }
| ON { table | view } [ ( column [ ,...n ] ) ]
| ON { stored_procedure | extended_procedure }
| ON { user_defined_function }
}
TO security_account [ ,...n ]
[ CASCADE ]
Exemplo 1
Negar permisso UPDATE, para o usurio SERVIDOR\user1,
na tabela Clientes, do Banco de Dados Exemplo1.
USE Exemplo1
DENY UPDATE ON Clientes
TO [SERVIDOR\wilson]
123
Informtica 3
captulo 3
O Maintenance Plan
Wizard (assistente de
plano de manuteno)
elabora um plano de
manuteno que o
Agente Microsoft SQL
Server pode executar
regularmente. Tais
como tarefas de
administrao de
banco de dados,
backups, verificaes
de integridade de
banco de dados,
atualizao de
estatsticas.
Exemplo 2
Negar as permisses SELECT, UPDATE E DELETE, para o
usurio SERVIDOR\wilson, na tabela Clientes do Banco
de Dados Exemplo1.
USE Exemplo1
TO [SERVIDOR\wilson]
Exemplo 3
Negar todas as permisses atribudas ao usurio
SERVIDOR\andrea, na tabela Clientes do Banco
de Dados Exemplo1.
USE Exemplo1
TO [SERVIDOR\andrea]
124
Figura 43
A tela inicial
do assistente.
4. Das opes exibidas agora, clique, com o boto direito do mouse, em Maintenance Plans. No menu seguinte, clique em Maintenance Plan Wizard.
5. Surgir agora a tela inicial do assistente, com uma mensagem informando sobre
o que se pode fazer com o programa. Clique ento no boto Next, seguindo
para a prxima etapa. Aparecer na tela uma pgina como a da figura 43.
6. N
essa etapa voc definir em qual instncia do SQL Server ser criado o
plano de manuteno. Por padro, a instncia dentro da qual estava a opo
Management -> Maintenance Plans, na qual voc clicou com o boto direito
do mouse, j vem selecionada. Vamos aceitar a sugesto, pois exatamente
nesta instncia que queremos criar nosso plano de manuteno. Clique no
boto Next, seguindo para a etapa seguinte do assistente.
7. Nessa fase voc definir quais tarefas integraro o plano. Por padro, todas as
tarefas j vm selecionadas. So elas: Chek database integrity, Shrink database,
Defragment index(es), Re-index, Update statistics, History cleanup, Launxh
SQL Server agent job, Backup database (full), Backup database (Differential) e
Backup database (Transaction Log). Mantenha todas as opes marcadas, com
exceo de Backup database (Differential). Clique ento em Next.
8. A
gora voc definir a ordem de execuo das tarefas. Para alterar a ordem,
marque uma determinada tarefa e depois clique no boto Move up, para
mov-la para cima na lista, ou Move down, para mov-la para baixo na lista.
No vamos alterar a ordem sugerida. Assim, clique novamente em Next, e
passemos fase seguinte.
9. Abra a lista Select one or more. Aparecero diversas opes. Nesta etapa podemos definir se o plano de manuteno incluir todos os Bancos de Dados
da Instncia (All databases) ou apenas os do sistema (All system databases
master, model, and msdb). E ainda se incluir todos os Bancos de Dados do
Usurio (All user databases all databases other than master, model, and
msdb) ou apenas os selecionados (These specific databases). A opo These
125
Informtica 3
captulo 3
Figura 45
Aceitando as
configuraes padro.
13. C
lique agora no boto Next para seguir prxima etapa do assistente.
14. Nessa fase vamos escolher os bancos de dados em que sero criadas tarefas,
as quais, ao serem executadas, recriaro os ndices. As trs primeiras listas
funcionam de modo idntico s trs listas apresentadas na figura 45. Na primeira lista voc marcar um ou mais bancos de dados, na segunda selecionar as opes Table, Views ou Tables and Views e, na terceira, os objetos,
individualmente, dependendo de qual opo foi selecionada na segunda lista.
Para o nosso exemplo, selecione, na primeira lista, o banco de dados AdventureWorks e, na segunda, a opo Tables and Views. Mantenha as demais opes
inalteradas. E clique em Next para seguir adiante.
15. Nessa fase, voc selecionar para quais bancos de dados sero criadas tarefas
para atualizar as estatsticas das tabelas e views. As trs primeiras listas funcionam exatamente como as trs mostradas na figura 46. Marque, na primeira
lista, um ou mais bancos de dados. Na segunda, selecione as opes Table,
Views ou Tables and Views e, na terceira lista, os objetos, individualmente, dependendo de qual opo foi selecionada na segunda lista. Para nosso exemplo,
escolha, na primeira lista, o banco de dados AdventureWorks e, na segunda, a
opo Tables and Views. Mantenha as demais opes inalteradas e clique no
boto Next para passar fase seguinte do assistente.
16. N
essa etapa voc selecionar quais opes de histricos sero limpas quando
as tarefas do plano de manuteno (especficas para limpeza dos histricos)
forem executadas e a periodicidade da execuo. Voc pode marcar as opes Backup and Restory history, SQL Server Agent Job history e Database
Maintenance Plan History. Por padro, as trs opes j vm selecionadas.
Na parte de baixo da janela, voc definir quais dados devem ser excludos
do histrico. Por padro tambm, j vem selecionada a opo 4 Week(s),
significando que sero criadas tarefas, no plano de manuteno, para excluir
126
127
Informtica 3
captulo 3
Figura 46
texto desta conta, que, portanto, dever ter todas as permisses necessrias
para executar as tarefas do plano de manuteno. No vamos configurar
uma conta como Proxy Account em nosso exemplo. Ento, clique novamente em Next.
Finalizando a
criao do plano de
manuteno.
22. N
essa etapa voc definir em qual pasta ser gravado um relatrio sobre o
plano de manuteno. Por padro, vem selecionada a pasta C:\. Aceite as
configuraes sugeridas e clique em Next.
23. S er exibida agora a tela final do Wizard. Se voc precisar alterar alguma
opo, recorra ao boto Back. Para finalizar o assistente e criar o plano de
manuteno, clique em Finish. O SQL Server mostrar o progresso da criao do plano de manuteno, conforme indica a figura 46.
24. U
ma vez concluda a criao do plano de manuteno, o sistema exibir
uma janela com o resultado da criao. Clique em Close para fechar a janela. Pronto, o plano de manuteno foi criado.
dados que tenham sido gravados mais de quatro semanas antes nos histricos selecionados. Aceitaremos as configuraes padro. Agora clique em
Next, seguindo adiante.
17. Nessa etapa sero exibidos os jobs j existentes, criados anteriormente.
Voc pode marcar um ou mais jobs para serem executados, tambm como
parte do plano de manuteno. No nosso exemplo, incluiremos todos os
jobs j existentes. Portanto, certifique-se de que todos foram selecionados
e clique em Next.
18. A gora voc definir para quais bancos de dados sero criadas tarefas de
backup, como parte do plano de execuo. Abra a lista Databases e, abaixo da opo These specific databases, marque o banco de dados AdventureWorks e clique em OK. As demais opes sero habilitadas. Voc pode
definir se o backup ser feito em disco ou fita e em qual pasta (no caso de
backup em disco), se os backups j existentes devem ser sobrescritos ou no
e assim por diante. Defina as opes desejadas e clique em Next.
19. Nessa etapa voc pode criar tarefas que faro o backup diferencial de um
ou mais bancos de dados. Vamos incluir um backup diferencial do banco
de dados AdventureWorks como parte do plano de manuteno. Na lista
Database(s): selecione o banco de dados AdventureWorks e clique em OK.
Aceite as demais opes e clique em Next, seguindo fase seguinte.
20. Nessa etapa voc poder criar tarefas que faro o backup do log de transaes de um ou mais bancos de dados. Vamos incluir um backup do log do
banco de dados AdventureWorks, como parte do plano de manuteno. Na
lista Database(s): selecione o banco de dados AdventureWorks e clique em
OK. Aceite as demais opes e siga adiante, clicando em Next.
21. A gora voc poder definir uma conta conhecida como Proxy Account. Se
for configurada uma conta como esta, as tarefas sero executadas no con128
importante notar
que a linguagem SQL
s pode nos fornecer
tais solues, porque
est baseada em
bancos de dados,
que garantem por
si mesmo a integridade
das relaes existentes
entre as tabelas
e seus ndices.
Informtica 3
captulo 3
[, MAXSIZE = tamanho_maximo]
Segundo Oliveira (2001) a linguagem SQL foi desenvolvida para acessar os bancos de dados relacionais. Seu objetivo fornecer um padro de acesso aos bancos
de dados, seja qual for a linguagem usada em seu desenvolvimento. Mas, apesar
da tentativa de torn-la um padro (ANSI), cada fornecedor hoje possui uma
srie de extenses que deixam as vrias verses incompatveis entre si. Alguns
bancos de dados suportam o padro SQL ANSI-92, mais abrangente, o que
representa um esforo para facilitar o processo de tornar transparente a base de
dados utilizada pela aplicao. Entretanto, nem todos os fornecedores j oferecem suporte completo ao SQL ANSI-92 porque para isto teriam de alterar
partes estruturais de seus sistemas gerenciadores.
[, FILEGROWTH = taxa_crescimento]
} [, n]
D
DL (Declaraes de Definio de Dados): parte da linguagem com
comandos para criao de estruturas de dados como tabelas, colunas, etc.
Exemplo: CREATE TABLE.
D
ML (Declaraes de Manipulao de Dados): parte da linguagem com
D
CL (Declaraes de Controle de Dados): parte da linguagem com co-
mandos para definir usurios e controlar seus acessos aos dados. Exemplo:
GRANT.
130
[ON {
[LOG ON
(NAME = nome_logico_arquivo.
FILENAME = caminho_e_nome_arquivo
[, SIZE = tamanho])
} [, ..n]
Onde:
P
RIMARY: especifica o grupo de arquivos primwrio. Esse grupo deve conter todas as tabelas de sistema para o banco de dados. Um banco de dados s
pode ter um grupo de arquivo PRIMARY. Se no for especificado algum, o
primeiro listado ser o primrio.
S IZE: especifica o tamanho em megabytes que queremos alocar para o banco de dados. O valor mnimo de 1MB, mas o padro 3MB para arquivos
de dados e 1MB para arquivos de log.
M
AXSIZE: permite especificar o tamanho mximo que o arquivo pode
FILENAME = caminho_e_nome_arquivo
[, SIZE = tamanho]
Informtica 3
captulo 3
Sintaxe simplificada:
Exemplo:
CREATE TABLE Cliente (codigo int(7), nome varchar(40), endereco varchar(40)). Observe a figura 49.
Devemos clicar no boto executar, para ter o resultado da criao da tabela que
aparece na figura 50.
Podemos verificar no lado esquerdo da tela que, agora, nosso banco de dados
banco_teste possui uma tabela.
Clusula INSERT
O comando INSERT insere linhas em uma tabela e, sua forma mais simples,
somente uma linha de dados. A sua sintaxe :
Figura 48
Retorno
do myadmin.
132
VALUES ( valores )
Figura 49
Criando uma
tabela.
133
Informtica 3
captulo 3
Figura 52
Figura 50
A tabela criada.
Incluso de um
registro.
Figura 53
Verificando
a incluso.
Onde:
Nome_tabela: o nome da tabela em que se deseja incluir os dados.
Colunas: parte da tabela onde se deseja acrescentar os dados.
Valores: o contedo de cada coluna.
Exemplo no MYSQL:
Figura 54
Registro do
cliente Wilson.
Figura 51
Uso do INSERT.
Clusula UPDATE
Com esta instruo, iremos incluir um registro, como mostra a figura 52.
Para verificar a incluso, utiliza-se a instruo select, conforme mostra
a figura 53.
Select * from cliente
E teremos o resultado mostrado na figura 54, na qual aparece listado somente o
cliente Wilson.
134
UPDATE tabela
SET coluna=valor
Where condio
135
Informtica 3
captulo 3
Figura 57
Onde:
O nome do cliente
completo na tabela.
UPDATE Cliente
Set nome = Wilson Oliveira
Where codigo= 123. (figura 55)
Clusula DELETE
Tem a funo de eliminar registros de uma tabela. O comando DELETE exclui
permanentemente uma ou mais linhas, baseado em uma condio. Sintaxe :
DELETE From nome_tabela Where condio
Onde:
Nome_tabela: o nome da tabela em que se deseja excluir os dados.
Where: determina quais registros sero eliminados da tabela.
Condio: a condio para selecionar os dados que se deseja excluir.
Clusula update.
Figura 56
Select na tabela.
136
137
Informtica 3
captulo 3
Figura 59
Comando SELECT
Para confirmar o
comando DELETE.
FROM tabela;
Onde:
DISTINCT: elimina as colunas duplicadas da consulta.
*: seleciona todas as colunas da tabela.
Coluna: especifica as colunas desejadas na pesquisa.
alias: fornece s colunas diferentes cabealhos.
FROM: especifica em qual tabela desejamos realizar a consulta.
Tabela: especifica que tabela ser utilizada para pesquisa.
Figura 61
O select para
verificar o registro.
Exemplo:
SELECT codigo, nome
FROM departamento;
Vamos fazer algumas incluses para melhor verificao das instrues SELECT:
INSERT INTO Cliente (codigo, nome, endereco) VALUES (567, LU
CAS OLIVEIRA, CAIXA POSTAL: 111 ITU);
INSERT INTO Cliente (codigo, nome, endereco) VALUES (345,
JOSE FRANCISCO, CAIXA POSTAL: 45 ITU);
INSERT INTO Cliente (codigo, nome, endereco) VALUES (777,
AMANDA SIRTORI, CAIXA POSTAL: 233 ITU);
138
139
Informtica 3
captulo 3
Figura 63
Figura 65
O comando
SELECT.
Verificao
dos registros
includos.
Figura 66
O resultado
da verificao.
[WITH ENCRYPTION]
AS
Declarao_select
Onde:
Nome_visao: o nome a ser dado viso.
Coluna: o nome a ser usado para uma coluna em uma viso. Nomear uma coluna em CREATE VIEW s necessrio quando uma coluna obtida por uma
140
141
Informtica 3
captulo 3
FROM EMPREGADO
142
Outro exemplo:
Criaremos uma View chamada EMPMEDIA, baseados na tabela EMPREGADO, que mostrar o maior salrio, o menor salrio e a mdia salarial. Utilizaremos o recurso de Alias para mudar os nomes das colunas da View para
MAIOR, MENOR e MEDIA, conforme o exemplo seguinte:
@nomebusca varchar(50)
As
AS
Informtica 3
captulo 3
Dentro do procedimento pode haver vrios comandos SELECT e o seu resultado ser do procedimento. O corpo do procedimento comea com a palavra AS
e vai at o seu final.
No se pode usar os comandos SET SHOWPLAN_TEXT, e SET SHOWPLAN_ALL dentro de um procedimento armazenado, pois esses devem ser os
nicos comandos de um lote (batch).
Exemplo de Gatilhos:
Para utiliz-los, temos que criar antes algumas tabelas que sero usadas como
exemplo. A tabela notafiscal conter os cabealhos de notas fiscais. A tabela item
notafiscal ir conter itens relacionados com as notas fiscais. Execute o Script a
seguir para criar as tabelas:
GO
(NumeroNota numeric(10) foreign key references NotaFiscal,
CodProduto int foreign key references Produto,
Quantidade int not null check (Quantidade > 0),
Primary key (NumeroNota, CodProduto)
BuscaCliente @nomeBusca = an
Isso permite passar os parmetros (se houver mais de um) fora da ordem em que
eles foram definidos no procedimento.
EXEC tambm pode executar um procedimento em outro servidor. Para isso,
a sintaxe bsica :
Criando os Gatilhos
EXEC
Nome_servidor.nome_banco_de_dados.nome_procedimentos
Triggers (Gatilhos)
Gatilhos so sempre criados vinculados a uma determinada tabela. Se a tabela for excluda, todos os seus Gatilhos sero excludos como consequncia. Ao
criarmos um Gatilho, podemos especificar em qual ou quais operaes ele ser
acionado: INSERT, UPDATE ou DELETE.
Informtica 3
captulo 3
As
As
Inserted, NotaFiscal
Update NotaFiscal
As
If update(Quantidade) or update(CodProduto)
Begin
Update NotaFiscal
147
Informtica 3
captulo 3
Figura 68
O resultado
da instruo.
Figura 69
Instruo a partir
do phpMyAdmin.
Figura 70
Instruo
bem sucedida.
149
Informtica 3
captulo 3
Figura 73
INSERT INTO Cliente (codigo, nome, endereco) VALUES (145, ANDREA SIRTORI OLIVEIRA, CAIXA POSTAL: 135 ITU);
Instruo a partir
do phpMyAdmin.
INSERT INTO Cliente (codigo, nome, endereco) VALUES (567, LUCAS OLIVEIRA, CAIXA POSTAL: 111 ITU);
INSERT INTO Cliente (codigo, nome, endereco) VALUES (345,
JOSE FRANCISCO, CAIXA POSTAL: 45 ITU);
INSERT INTO Cliente (codigo, nome, endereco) VALUES (777,
AMANDA SIRTORI, CAIXA POSTAL: 233 ITU);
Veja na figura 71, como ser a instruo utilizando o phpMyAdmin.
Figura 71
Instruo usando
phpMyAdmin.
Resultado da
instruo.
150
Vamos agora listar os clientes com cdigo menor que 200. A instruo para isto
a demonstrada a seguir:
151
Informtica 3
captulo 3
Figura 76
Figura 78
Instruo
bem sucedida.
Outra instruo
bem sucedida.
UPDATE Cliente
Set nome = Wilson Jose de Oliveira
Where codigo= 123
Figura 77
Instruo para o
nome completo.
152
Realizada
a alterao
do cliente.
153
Informtica 3
captulo 3
Figura 83
Figura 81
Listagem dos
clientes
para comprovar
excluso.
O comando
DELETE para
o cliente de
cdigo 123.
Figura 84
O cliente de cdigo
123 foi eliminado.
154
155
Captulo 4
Linguagem unificada
de modelagem (UML)
Orientao a objetos
As vrias opes da UML
O diagrama da UML
Exemplo de desenvolvimento
de projetos utilizando UML
Consideraes finais
Referncias bibliogrficas
informtica 3
captulo 4
Mtodo de Booch, desenvolvido por Grady Booch, da Rational Software Corporation, expressivo principalmente nas fases de projeto e construo de sistemas;
OOSE (Object-Oriented Software Engineering), de Ivar Jacobson, que fornecia excelente suporte para casos de usos como forma de controlar a captura de requisitos, a anlise e o projeto de alto nvel;
OMT (Object Modeling Technique), de James Rumbaught, que era mais
til para anlise e sistemas de informaes com o uso intensivo de dados.
Mas podemos dizer que essa histria comeou bem antes, nos anos 1960, com
Alan Curtis Kay, na Universidade de Utah, Estados Unidos. Considerado um
dos pais da orientao a objetos com sua analogia algbrico-biolgica, Kay
postulou que o computador ideal deveria funcionar como um organismo vivo,
isto , cada clula, mesmo autnoma, deveria se relacionar com outras a fim de
alcanar um objetivo. As clulas poderiam tambm se reagrupar para resolver
outros problemas ou desempenhar outras funes. Kay, que era pesquisador da
Xerox quando surgiu a linguagem Smalltalk, no centro de pesquisas da empresa, em 1970, foi o primeiro a usar o termo orientao a objetos.
Por oferecer ferramentas que podem ser utilizadas em todas as fases do desenvolvimento de software, a UML acabou se tornando padro de desenvolvimento de
software orientado a objetos.
Krysten
Nygaard
AP Photo/Imageplus
Divulgao
Divulgao
Ivan
Sutherland
158
1969
1970-1983
Alan Curtis Kay apresenta sua tese
de doutorado intitulada The
Reative Engine na Universidade
de Utah, na qual prope
uma linguagem (Flex),
que contm conceitos
de orientao
a objetos.
Alan
Curtis Kay
159
informtica 3
captulo 4
4.1.1. Abstrao
caracterstica essencial de uma entidade, que a diferencia de todos os outros
tipos de entidades. Uma abstrao define uma fronteira relativa perspectiva do
observador, segundo Booch, Rumbaugh e Jacobson (2005).
Como j dissemos anteriormente, abstrao a capacidade de fixar a ateno
apenas nos detalhes relevantes para a construo da soluo dentro de seu escopo. Isto , quando penso em um cliente, por exemplo, no preciso pensar em
todos os atributos de um cliente, mas apenas nos atributos que interessam para
a soluo do problema em questo. Como tambm vimos no captulo 2, um
cliente pode ser apenas um nmero.
4.1.2. Classe
Figura 85
Nome da classe
Carro
- nomeFabricante : String
- nomeModelo : String
- cor : String
- numeroPortas : int
- anoFabricao : int
- velocidadeMaxima : double
Definio da classe
segundo UML 2.
Atributos
+ abrirPortas() : void
+ fecharPortas() : void
+ ligar() : void
+ desligar() : void
+ acelerar() : void
+ frear() : void
+ trocarMarcha() : void
Mtodos
Responsabilidades
Responsabilidades
- Se locomover na
velocidade e direo
indicados pelo usurio.
- Acelerar quando
solicitado.
- Frear quando solicitado.
4.1.2.1. Mtodo
Nome da classe Cada classe deve ter um nome que a diferencie das outras
classes (Booch, Rumbaugh e Jacobson, 2005).
Atributo uma propriedade nomeada de uma classe, que descreve um intervalo de valores que as instncias da propriedade podem apresentar (Booch,
Rumbaugh e Jacobson, 2005).
1990-1993
Peter Coad e Ed Yourdon lanam
o livro Object-Oriented Analysis,
tambm contendo tcnicas para anlise
e projetos orientados a objeto.
Rebecca Wirfs-Brock, Brian Wilkerson
e Lauren Wiener publicam o livro Designing
Object-Oriented Software, tratando de tcnicas
de modelagem orientada a objetos.
1992 - Ivar Jacobson, Magnus Christerson,
Patrik Jonsson e Gunnar Overgaard
lanam o livro Object-Oriented
Software Engineering: A Use Case Driven
1994-1995
Approach, tambm sobre tcnicas
de orientao a objetos.
D. Embley, B. Kurtz, e S. Woodfield
publicam o livro Object-Oriented
System Analysis. A
Model-Driven Approach.
1993 - Grady Booch
lana seu Booch Method
com tcnicas para
anlise e projeto
orientado a objetos.
James
Martin
A Prabhakar Rao/The India
Today Group/Getty Images
Divulgao
Bertrand
Meyer
160
Divulgao
1985-1989
James Gosling
161
informtica 3
captulo 4
Figura 86
Os mtodos especiais
Construtor: o mtodo que constri, isto , reserva o espao em memria
onde sero armazenadas as informaes daquele objeto da classe.
Get: o mtodo que apresenta o valor armazenado em determinado atributo de um objeto.
Set: d um valor a um atributo.
Os mtodos get e set so muito teis para preservar os atributos e garantir que sua
alterao seja feita unicamente por intermdio deles. Chamamos isso de encapsulamento dos atributos de uma classe, pois podemos deixar todos eles com visibilidade
privada e s manipul-los utilizando os mtodos get (para retornar o valor que est
no atributo) e set (para atribuir um valor a ele). Geralmente adotamos um mtodo
set e um mtodo get para cada atributo da classe.
Destrutor: destri o objeto criado da memria, liberando o espao de memria alocado na sua criao. No necessrio cri-lo em linguagens orientadas
a objetos que possuam garbage collector, isto , que excluam os objetos que
j no tenham referncia alguma na memria.
O garbage collector
procura o lixo existente
na memria, ou
seja, os objetos que
no so utilizados
e, no entanto,
ocupam espao na
memria. Essa tarefa
pode ser executada
automaticamente
ou programada.
Exemplo: + soma(valor1:double,valor2:double):double
162
Outra forma de
representar uma
classe em UML 2.0.
Carro
- nomeFabricante : String
- nomeModelo : String
- cor : String
- numeroPortas : int
- anoFabricao : int
- velocidadeMaxima : double
Carro
+ abrirPortas() : void
+ fecharPortas() : void
+ ligar() : void
+ desligar() : void
+ acelerar() : void
+ frear() : void
+ trocarMarcha() : void
4.1.2.2. Responsabilidades
So contratos ou obrigaes de determinada classe. Ao criarmos uma classe,
estamos criando uma declarao de que todos os seus objetos tm o mesmo
tipo de estado e o mesmo tipo de comportamento (Booch, Rumbaugh
e Jacobson, 2005). Dependendo do nvel de detalhe (abstrao) que estamos analisando no diagrama, podemos tambm representar graficamente
uma classe apenas com seu nome ou com nome dos principais atributos e
principais mtodos, conforme o que queremos analisar no momento em que
estamos criando o diagrama. No precisamos, ento, escrever todos os componentes da classe (figura 86).
Janela
- largura : double
- altura : double
+ abri() : void
+ fechar() : void
+ tratarEvento() : void
Evento
Representao de
uma dependncia
em UML 2.0.
- nome : String
+ start() : void
163
informtica 3
captulo 4
Figura 89
Figura 88
Exemplo de
associao entre
classes UML.
Funcionario
- salario : double
- nroCarteiraProfissional : String
Empresa
Trabalha para4
Empresa
trabalhador empregador
1..*
- nome : String
- ramoAtividade : String
- cnpj : String
- nome : String
- ramoAtividade : String
- cnpj : String
164
- numero : int
- data : Date
- valorTotal : double
Figura 90
1
No diagrama da figura 88, identificamos uma associao, representada em
UML 2.0 por uma linha interligando as duas classes, de nome Trabalha para,
onde a classe Funcionario representa o papel de trabalhador e a classe Empresa
representa o papel de empregador. Podemos observar pela representao da multiplicidade que cada objeto da classe Empresa tem, como trabalhador, 1 ou mais
objetos da classe Funcionrio e que um objeto da classe Funcionario tem, como
empregador, no mnimo 0 e no mximo vrios objetos empresa.
Pedido
Representao de
uma composio
UML 2.0.
esquerda
representao da
agregao entre
classes UML 2.0.
ItemdePedido
Departamento
- nome : String
- descrio : String
- quantidade : int
- precoUnitario : double
Podemos analisar que s faz sentido existirem os itens de pedido (parte) se existir o pedido (todo).
3. Herana: refere-se ao mecanismo pelo qual classes mais especficas incorporam a estrutura e o comportamento de classes mais gerais (Booch, Rumbaugh e Jacobson, 2005).
Podemos verificar, na figura 91, que a classe Pessoa possui os atributos nome
e cpf e pode executar os mtodos de andar e falar. J a classe Funcionario, por
herdar os atributos e mtodos da classe Pessoa, possui nome, cpf, salrio e nro
Carteira Profissional, podendo executar os mtodos andar, falar e trabalhar. Dizemos que a classe Pessoa a superclasse da classe Funcionario, que sua subclasse, ou
que Pessoa a classe pai de Funcionario e que Funcionario classe filha de Pessoa.
Figura 91
Pessoa
Especializao
# nome : String
# cpf : String
Representao
de herana
utilizando UML.
+ andar() : void
+ falar() : void
Funcionario
- salario : double
- nroCarteiraProfissional : String
+ trabalhar() : void
Generalizao
165
informtica 3
captulo 4
Figura 92
4.1.3.2. Mensagem
Classe e
objeto.
O molde
que dar
origem ao
produto.
4.1.3. Objeto
uma manifestao concreta de uma abstrao; uma entidade com uma fronteira bem definida e uma identidade que encapsula estado e comportamento;
instncia de uma classe (Booch, Rumbaugh e Jacobson, 2005). Podemos imaginar uma classe como sendo o molde e os objetos, os produtos criados
a partir desse molde.
Um bom exemplo pensar nos atributos do carro como sendo: modelo, nmero
de portas, cor, ano de fabricao, tipo de combustvel, velocidade mxima. J
os mtodos do carro podemos definir como: andar, parar, acelerar, entre outros.
Pensando em responsabilidades, podemos dizer que o carro tem a responsabilidade de obedecer aos comandos de seu piloto, conduzindo-o na velocidade e
pelo caminho que ele escolheu, acelerando e freando de acordo com o que foi
sinalizado (figura 92).
Exemplo de
visibilidade de
atributos e
mtodos. UML 2.0.
+ andar() : void
+ falar() : void
- mexerPerna() : void
- articularPalavra() : void
167
informtica 3
captulo 4
Figura 94
Exemplo de
polimorfismo
de mtodo dito
sobrecarga.
- Sobrecarga: na mesma classe podemos ter mtodos com o mesmo nome, mas
que recebem parmetros diferentes (assinaturas diferentes) e tm, por isso mesmo, funcionalidades e/ou implementaes diferentes, como mostra a figura 94.
Pessoa
- numero1 : double
- numero2 : double
- resultado : double
+ soma() : void
+ soma(valor1 : int, valor2 : int) : int
+ soma(valor1 : double, valor2 : double) : double
Figura 95
Exemplo de
polimorfismo
sobrescrita.
Veja tambm que os mtodos andar e falar so pblicos, isto , qualquer objeto que tiver acesso classe poder utiliz-los. J os mtodos mexerPerna e
articularPalavra so privados, isto , s podem ser utilizados dentro da classe
Pessoa. Mas qual a vantagem desse tipo de implementao? Claro que para
andar, uma pessoa tem que mexer a perna. O segredo do andar est no modo
como ela mexe a perna. O que fizemos, ento, foi garantir que o segredo, que
tambm chamamos de regra de negcio, no faz parte da interface pblica da
classe, isto , da forma com que as outras classes vo utiliz-la. Com o mtodo
encapsulado na classe, seu cdigo est mais protegido de eventual cpia ou
reproduo de como foi implementado, pois uma classe externa nem sabe de
sua existncia. Logo, da forma como projetamos sua implementao nenhuma
outra classe saber que para andar necessrio mexer a perna e muito menos
como isso feito. Essa a vantagem do encapsulamento no desenvolvimento
de software orientado a objetos. O mesmo princpio foi usado ao encapsular o
mtodo articularPalavra.
l Poliformismo: Palavra de origem grega que significa vrias formas. No paradigma de orientao a objetos polimorfismo aparece em trs formas diferentes:
# nroLados : int
- raio : double
+ calculaArea() : double
+ calculaPerimetro() : double
- lado1 : double
- lado2 : double
- lado3 : double
+ calculaArea() : double
+ calculaPerimetro() : double
+ calculaArea() : double
+ calculaPerimetro() : double
Triangulo
Poligono
Circulo
Neste exemplo da figura 94, vemos que a classe Calculadora implementa trs
mtodos soma diferentes: o primeiro efetua a soma com os valores dos atributos
numero1 e numero2, colocando o resultado no atributo resultado. J o segundo
mtodo soma recebe como parmetros os nmeros inteiros valor1 e valor2 e
devolve como resultado a soma dos dois. O terceiro mtodo recebe dois valores
de tipo double valor1 e valor2 e retorna como resultado a sua soma. O interpretador de comandos escolher, em tempo de execuo, com base nos tipos e
no nmero de parmetros informados, qual dos mtodos soma ser executado.
Retangulo
- lado1 : double
- lado2 : double
+ calculaArea() : double
+ calculaPerimetro() : double
168
169
informtica 3
captulo 4
Ao utilizar a UML,
precisamos de bom
senso, para oferecer
solues adequadas
e no prazo esperado
pelo usurio, criando
modelos apenas para as
partes que realmente
demandam definio
mais aprofundada.
Esttico aquilo que no muda dentro do software, isto , a estrutura, a definio das classes, a modularizao, as camadas e a configurao do hardware. J a
parte dinmica diz respeito s mudanas de estado que os itens podem sofrer no
decorrer da execuo do software, por exemplo, pelas alteraes ocasionadas pelas
trocas de mensagens entre os itens nesse momento. Utilizamos a UML para criar
modelos em que os diversos aspectos relevantes ao estudo e definio da soluo
de software podem ser observados, para que o programa tenha qualidade e implemente as funcionalidades necessrias, com a performace esperada pelo usurio.
J discutimos em outros captulos as vantagens de se criar modelos no desenvolvimento de software, e a UML nos permite cri-los para todas as fases desse
processo, oferecendo ao desenvolvedor subsdios para chegar a uma soluo de
qualidade, com uma boa viso de cada etapa.
Os autores apontam cinco diferentes vises proporcionadas pela UML durante
a construo de modelos de software. So elas:
Viso de casos de uso: permite melhor compreenso do problema a ser resolvido, ajudando na definio das fronteiras do sistema, seus principais usurios e
as principais funcionalidades a serem implementadas.
Viso de projeto: auxilia na anlise da estrutura e das funcionalidades esperadas
da soluo.
Viso de processo: tambm chamada de viso de interao, foca o fluxo de controle entre os diversos componentes da soluo, permitindo tambm a anlise
de seu desempenho, a sincronizao e a concorrncia entre seus componentes,
necessria para o perfeito funcionamento da soluo.
Viso de implementao: ajuda a definir a estrutura da soluo, isto , os arquivos de instalao, seu controle de verses.
Viso de implantao: trata da estrutura de hardware e software, ou seja, do
ambiente em que a soluo ser implementada (figura 96).
Figura 96
Vises de um projeto
utilizando UML.
170
171
informtica 3
captulo 4
Figura 98
Itens
Os itens so a base da UML, as abstraes. J os relacionamentos so as
relaes entre os itens, enquanto os diagramas agrupam itens e relaes, permitindo a anlise de um dos aspectos da soluo a ser criada. Tambm h
diferentes tipos de itens, que so divididos em quatro grupos: estruturais,
comportamentais, de agrupamento e anotacionais. Vamos estudar, a seguir,
cada um dos grupos.
Itens estruturais
Itens estruturais nos permitem definir a estrutura da soluo. So formados
pelas classes, as interfaces, as colaboraes, os casos de uso, os componentes, os
artefatos e os ns. Para comear, vamos a uma breve definio de cada um desses
elementos, que mais adiante sero aprofundados, para mostrar como funcionam
e explicar, por meio de um diagrama, onde so utilizados. Empregaremos tambm as definies j descritas no tpico sobre orientao a objetos desse livro,
que deve ser consultado, caso haja necessidade de uma reviso. Apresentaremos
tambm a notao grfica da UML de cada componente definido.
Classes: so os elementos bsicos da orientao a objetos e, consequentemente,
da UML. (A classe j foi definida no tpico que trata dos conceitos de orientao a objetos, no qual voc encontra inclusive sua notao na UML.)
Interfaces: so as funcionalidades a serem implementadas por uma classe ou
por um componente. Demonstram o comportamento visvel de uma classe, mas
nunca a implementao de tal comportamento, pois contm apenas a assinatura
dos mtodos, e sua implementao feita pelas classes que herdam seu comportamento. Servem para definir comportamentos padronizados para conjuntos de
classes e itens. As interfaces so representadas por um crculo, quando se trata
da interface de uma classe/item, ou por um arco, no caso da interface requerida
Classe implementando
uma interface de
entrada definida.
Conexo
iConexo
+ abrir() : void
+ testar() : void
+ fechar() : void
iEntrada
por uma classe/item. Ambas aparecem ligadas por uma linha classe que as
implementa (figura 97).
Existem, ento, duas formas de representar uma interface em UML. A primeira utiliza o recurso do esteretipo <<interface>> para enfatizar que se trata de
uma interface e mostra as assinaturas dos mtodos que so definidos por ela.
A segunda forma a representao da interface, que no informa detalhes das
funcionalidades que esta define.
Vemos, na figura 98, a representao de uma interface sendo implementada por
uma classe que tambm tem uma definio de sua interface de entrada.
Colaborao: so agrupamentos de classes, relacionamentos e interfaces que
constituem uma unidade do sistema (figura 99). Dizemos que essa unidade
maior que a soma das classes e relacionamentos implementados. So representados por uma elipse tracejada com o nome da colaborao ao centro. A
colaborao serve tambm para nos dar uma viso em nvel mais alto de abstrao, quando no necessrio entrar em todos os detalhes de determinado
item em anlise.
Casos de uso: descrevem uma sequncia de aes a serem executadas pelos
componentes da soluo. So ativados por um ator, servem de base para definir
os comportamentos dos elementos da soluo de software e so realizados por
uma colaborao. So representados por uma elipse com o nome da operao
que implementa no centro (figura 100).
Componentes: so estruturas que instituem uma funcionalidade de uma soluo de software por meio da implementao de uma ou mais interfaces definidas. Podem ser substitudos dentro de uma soluo por outro componente
que implemente todas as suas interfaces, sem prejuzo ao sistema como um
Figura 99
Figura 97
As duas formas
de representar
uma interface.
<< interface>>
iConexo
+ abrir() : void
+ testar() : void
+ fechar() : void
172
iConexo
Controle
de
Estoque
Solicitar
Preo
Exemplo
( esquerda)
de colaborao.
Figura 100
Exemplo de
caso de uso.
173
informtica 3
captulo 4
Figura 101
Figura 105
Exemplo de
componente.
Exemplo de mquina
de estados.
EmEspera
FormCliente
<<artefato>>
Cliente.class
Figura 102
Exemplo
de artefato.
todo. So representados por um retngulo com o smbolo da UML para componentes (figura 101).
imprimir
Nota Fiscal
Exemplo
de atividade.
Itens de agrupamento
Servem para agrupar os demais itens da UML, ordenando-os em blocos de modo
a possibilitar melhor organizao do projeto. composto apenas pelo item pacote.
Pacote: permite a incluso de itens em seu interior para organizar o projeto,
tornando-o modular e mais organizado. conceitual, no existindo em tempo
de execuo. representado por uma pasta, que pode receber apenas seu nome
ou a visualizao dos itens que a compem (figura 107).
Item anotacional
Itens comportamentais
So os itens que definem as partes dinmicas dos modelos UML. So tambm chamados de verbos do modelo. Constituem itens: interaes, mquina de estados e atividades.
Interaes: so os conjuntos de troca de mensagens entre objetos, tambm chamados de comportamento. Em UML as mensagens so representadas por uma
seta traada sob seu nome (figura 104).
Mquina de estados: especifica os diversos estados pelo qual pode passar um
objeto ou uma interao em seu ciclo de vida. Sua definio inclui outros componentes como estados, transies, eventos e atividades. Em UML representada por um retngulo com os vrtices arredondados (figura 105).
Figura 104
Exemplo de
mensagem.
174
o componente que permite a insero de comentrios nos modelos, tornandoos mais claros e inteligveis. composto apenas pelo item nota.
Nota: tem como objetivo inserir comentrios em um modelo para deix-lo mais
compeensvel. representado por um retngulo com a ponta superior direita
dobrada para dentro. Em seu interior so inseridos os comentrios pertinentes
ao que se quer explicar melhor dentro do modelo (figura 108). Tambm pode ser
utilizada uma linha tracejada para apontar exatamente a que ponto do modelo
se destina a explicao da nota.
Figura 107
Controle
solicita Senha
Exemplo
de pacote.
Figura 108
Exemplo
de nota.
175
informtica 3
captulo 4
4.2.2. Relacionamentos
Definidos os principais itens da UML, trataremos agora dos relacionamentos,
que so outros blocos de construo que permitem a ligao entre os itens da
UML definidos anteriormente. Existem trs tipos de relacionamento em orientao a objetos: dependncia, associao com seus tipos especiais (agregao
e composio) e generalizao (que permite a implementao do conceito de
herana e realizao). Todos foram apresentados quando falamos dos conceitos
bsicos de orientao a objetos. E reforaremos as explicaes sobre seu funcionamento quando os utilizarmos em diagramas, mais adiante.
Se voc tiver alguma dvida, volte a ler os tpicos relativos aos relacionamentos na parte de conceitos de orientao a objetos desse livro.
Assim, o prximo bloco de construo que iremos definir so os diagramas.
4.2.3. Diagramas
Existem 13 diagramas na UML 2.0, os quais so divididos em quatro grupos, de acordo com o tipo de anlise que os modelos gerados por sua utilizao possibilitam. So esses os grupos: diagramas estruturais, diagramas
comportamentais, diagramas de interao e diagramas de implementao
(figura 109).
Trataremos da construo e do uso dos diagramas implementados pela
UML mais frente, quando apresentaremos uma definio detalhada de
cada um, mostrando ainda seu uso e suas principais funcionalidades. Para
podermos combinar os blocos de construo da UML devemos observar as
cinco regras que essa linguagem prope, de forma que os modelos gerados
contenham uma definio clara e precisa para a criao de boas solues de
software. As regras nome, escopo, visibilidade, integridade, execuo
sugerem que, ao inserir um item em um diagrama, voc tem de se preocupar
com cinco caractersticas que devem ficar claras medida que cada um dos
itens inserido. As regras devem ser observadas para que possam ser criados
modelos que os autores da UML chamam de bem formados, isto , consistentes e harmnicos com todos os demais modelos que se relacionam com
ele. Entenda as cinco regras:
Nome: sempre devemos lembrar que o nome de um item deve deixar claras sua
formao, suas aes e responsabilidades. No devemos nos esquecer tambm de
que esse nome nico dentro de um modelo.
Escopo: todo item inserido em um modelo deve mostrar claramente quais so
seus limites, o que implementa e quando pode ser utilizado.
Visibilidade: indica que necessrio tambm que fique claro quando um item estar disponvel para ser utilizado e que aes estaro disponveis por seu intermdio.
Integridade: tambm importante levar em conta na criao de um item a definio clara de como este se relaciona e a consistncia de tal relacionamento.
176
Figura 109
Execuo: deve estar evidente ainda, o que o modelo representa e/ou simula. O
que queremos observar com a criao desse modelo.
Diagramas
definidos
pela UML 2.0.
4.2.4. Adornos
Alm dos trs blocos de construo, a UML oferece componentes, denominados adornos, que podem ser utilizados tanto para melhorar o entendimento dos
modelos criados quanto para estender o uso da UML em situaes onde no
existem componentes definidos. So eles:
Esteretipos: componentes de uso geral, servem para estender o significado de
determinado item em um diagrama. Por serem de propsito geral, podem ser
utilizados em qualquer item da UML onde for necessria uma definio mais
clara de seu papel no modelo. A UML j traz uma srie de esteretipos predefinidos como interface, ator, realizao, mas permite que o projetista defina
outros mais, sempre que surgir a necessidade. Sua representao pode ser apresentada de duas formas: uma palavra entre os smbolos de menor e maior ou um
desenho do prprio esteretipo que representa. Veja o exemplo da figura 110.
177
informtica 3
captulo 4
Figura 110
Exemplo de
esteretipo.
<< ator >>
A importncia do profissional
A UML oferece diversos subsdios para a criao de modelos
claros que nos auxiliem na construo de solues de software
de qualidade. Permite tambm a criao de modelos que
simulam o comportamento do software em construo em
diversos aspectos. Mas nunca se esquea: sempre caber ao
desenvolvedor a responsabilidade de usar as informaes
de modo a obter solues de qualidade, de acordo com as
expectativas do usurio e capazes de produzir os melhores
resultados possveis.
Ao utilizar a UML,
precisamos de bom
senso, para oferecer
solues adequadas
e no prazo esperado
pelo usurio, criando
modelos apenas para as
partes que realmente
demandam definio
mais aprofundada.
179
informtica 3
captulo 4
Figura 112
muito clara identificada nas entrevistas ou para definir como ser a relao dos
diversos agentes de software no sistema, ou ainda para verificar que funcionalidades este dever implementar. O que faremos mapear os requisitos funcionais
do sistema, sua anlise e tambm as relaes que tais requisitos tero com os
demais componentes, internos ou externos ao sistema.
Todo diagrama de caso de uso deve ter um assunto, caso de uso, atores e
relacionamentos.
Validar retina
Validar senha
Relao de Generalizao
Especializao.
Validar digital
Como podemos ver na figura 111, a implementao do caso de uso Validar login
implica necessariamente na execuo dos casos de uso Validar usurio digitado
e Validar senha.
incl
<<
>>
ude
Validar
usuario
digitado
Validar login
<< i
n
Usuario
clu
e
<<
de
>>
n
xte
>
d>
xte
<<e
Validar senha
nd >>
<<exten
d>>
Validar senha
digitada
Validar digital
Validar retina
Validar senha
digital
J o caso de uso validar senha pode implicar em um dos trs casos de uso.
Dependendo do tipo de ao efetuada pelo usurio, ser extendido o comportamento do caso de uso Validar senha digitada, validar digital ou validar retina.
Uma caracterstica interessante que a UML nos oferece ser extremamente flexvel, possibilitando que utilizemos os blocos de construo de forma diferente,
conforme a viso que queremos analisar no momento.
Voltemos ao exemplo da figura 111. O caso de uso validar senha, com o foco que
descrevemos no diagrama, nos mostra uma relao extendida com os casos de
uso Validar senha digitada, Validar digital ou Validar retina.
Tambm podemos escrever a relao entre esses casos de uso como se fosse uma
relao de Generalizao/Especializao. Assim, dependendo do enfoque que
quisermos analisar, podemos combinar os elementos UML. Veja na figura 112
como ficaria com essa abordagem o fragmento do diagrama.
Podemos ter diagramas de caso de uso demonstrando diferentes nveis de abstrao do sistema. Por exemplo, possvel ter um diagrama que represente o
sistema como um todo, para poder analisar suas principais funcionalidades,
como elas se agrupam, seus limites e a relao dos atores em cada um dos casos
macro de uso.
Vamos retomar o estudo de caso da padaria do senhor Joo. Veja na figura 113
como ficaria um diagrama de caso de uso que representa as funcionalidades
gerais a serem implementadas pelo sistema pedido.
Observe no diagrama que o retngulo no qual os casos de uso esto inseridos
representa o sistema que estamos estudando. Seus limites so claros.
Os casos de uso representam as funes macro que devem ser implementadas
pelo sistema, de acordo com as solicitaes do senhor Joo.
180
181
informtica 3
captulo 4
Vamos analisar agora o caso de uso Registrar compra produtos (figura 114).
Sistema de controle da padaria do sr. Joo
Gerenciar
Movimento
Financeiro
Funcionario
Registrar
Pagamento
Compra
Atendente
Registrar
Compra
Produtos
Cliente
Dono
Verificar data
e hora atuais
<<include>>
<<include>>
Registrar
Entrada
Produtos
Caixa
<<include>>
Registrar data
e hora atuais
<<include>>
Note que os atores podem ser representados isoladamente, como o caso dos
atores Cliente e Fornecedor, ou j indicando uma relao de generalizao/especializao, como no caso da relao entre Funcionario, Caixa, Atendente e Dono.
Veja quantas informaes importantes esse diagrama nos oferece. Mas ficou
claro para voc como cada um desses casos de uso devem ser implementados?
Provavelmente no, porque ainda estamos com uma viso macro do problema e
precisamos descer para outro nvel de abstrao.
nesse momento que devemos ter bom senso para perceber at onde devemos
ir na construo de nveis mais baixos de abstrao, de modo que no empreguemos tempo demais criando diagramas desnecessrios para situaes que j
esto bastante claras.
<<include>>
Verificar data
fim de uso
<<include>>
Registrar
compra
produtos
Cliente
Funcionario
<<include>>
Registrar
funcionario
<<include>>
Verificar
existncia
Validar carto
Registrar
cliente
Fornecedor
Figura 113
Gerenciar
Produtos
Diagrama de casos
de uso do sistema de
controle da padaria do
senhor Joo.
Figura 114
<<include>>
Validar
funcionario
Validar Login
<<include>>
<<include>>
Registrar
quantidade
comprada do
produto
<<include>>
Validar senha
Registrar
produto
<<include>>
Validar do
produto
<<include>>
<<include>>
Validar saldo
produto
<<include>>
Verificar saldo
do produto
Verificar
existncia
do produto
O prximo passo ser criar um diagrama para cada caso de uso listado, mostrando mais detalhadamente seu funcionamento.
182
183
informtica 3
captulo 4
que deveria. Se em algum momento voc achar que seu diagrama est muito
complexo, diminua nele o nmero de casos de uso.
Neste exemplo poderamos nos limitar aos casos de uso Registrar data e hora
atuais, Registrar cliente, Registrar produto e Registrar funcionrio e, ento, em
um novo nvel, mostrar os casos de uso que implementam cada um deles. Mas
isso no seria necessrio, pois os casos de uso esto claros e o diagrama no est
muito poludo, isto , no possui excesso de componentes que possa atrapalhar e
compreenso.
Como j vimos, cada um dos casos de uso devem ser acompanhados por um descritivo. Existem vrias propostas sobre como deve ser este descritivo. A que apresentaremos
aqui prope divises, nome, atores envolvidos, pr-condies, fluxo bsico e extenses.
Extenses:
A
entrada do produto e da quantidade pode ser feita pela balana quando se
tratar de produtos pesados na padaria.
Observaes:
Atores envolvidos: listar os atores e os papis executados por eles no atual caso
de uso.
No h.
O Diagrama de classe no
deve faltar em projetos
orientados a objetos.
Devemos prestar muita
ateno ao criar um
diagrama de classes, que
ser a base da nossa soluo.
Identificar uma classe no tarefa das mais simples, mas o caminho procurar
itens que tm as mesmas informaes e comportamentos. Nem sempre uma classe
tem atributos e mtodos. Pode ter apenas mtodos ou apenas atributos.
Tente fazer uma lista do que voc identificou como classes. Acrescente os atores,
que geralmente so tambm classes de seu sistema.
Analise as candidatas a classes e tente achar atributos para elas e, se possvel,
alguma funcionalidade.
Coloque as classes em um diagrama e comece a analisar as relaes entre elas,
de acordo com os tipos de relacionamentos que voc estudou.
Lembre-se de que todos esses componentes foram definidos anteriormente. Se
tiver dvidas, volte a ler as definies sobre o tema.
Vamos agora analisar uma parte do diagrama de classes da padaria do senhor
Joo. Essa parte foi montada com nfase nos casos de uso Registrar compra
e pagar compra. Por isso, sero mostrados somente os mtodos envolvidos na
185
informtica 3
captulo 4
Figura 115
execuo desses casos de uso (veja figura 115). As classes que no participam
deles so apresentadas apenas como seus atributos.
Diagrama de classes.
Fornece
- dataEntrada : date
- nroNF : int
- valorTotal : double
- lancadoPor : Funcionario
- dataLancamento : date
- horaLancamento : time
- fornecedor : Fornecedor
ItemFornece
- produto : Produto
- quantidade : double
- valorUnitario : double
Produto
Cliente
- nroCarto : int
- datainicioUso : date
- dataFimUso : date
ItemCompra
+ verificaCartao(nroCaetao :
int) : boolean
Fornecedor
- codigo : int
- nome : String
- cnpj : String
Funcionario
- codigo : int
- descricao : String
- quantidadeEstoque : double
- vlUnitarioVenda : double
- estoqueMinimo : double
- situacao : int
- cpf : String
- nome : String
- nroCarteiraProfissional : int
- dataAdmissao : date
- dataDemissao : date
- senha : String
+ verificaProduto9produto : Produto,
quantidade : double) : double
+ verificaFuncionario(cpf : String,
senha : String) : boolean
ItemCompra
- quantidade : double
- dataRegistro : date
- horaRegistro : time
- atendidoPor : Funcionario
- cliente : Cliente
+ atualizaTotalCompra(valorTotalItem :
double) : boolean
Atendente
- salarioHora : double
- dataCompra : date
- valorTotal : double
- terminada : boolean
- recebidoPor : Funcionario
186
Caixa
opt
- salarioMensal : double
Compra
Representao de
um foco de controle.
[confirmacao ==Falso]
Dono
- proLabore : double
Operao
Condio
187
informtica 3
captulo 4
Figura 118
Troca de mensagens
e tempo de vida
em um diagrama
de sequncia.
<<create>>
1: Produto
produto:Produto
Compra
Funcionario
ItemCompra
Diagrama de
sequncia do caso de
uso Registrar compra
produtos.
<<create>>
4.1: ItemCompra(produto,quantidade,precoUnitarioVenda,funcionario)
4: confirmaCompra()
3: registraProduto()
Ioop [enquanto
houver produto]
2: registraCartao()
Funcionario
1: login()
A primeira mensagem a de criao de um objeto da classe Produto. Em seguida, vemos uma mensagem sncrona indicando que o remetente aguarda que o
receptor processe a mensagem antes de continuar seu procedimento.
A mensagem nmero 1 a de criao de um objeto da classe Produto, aquela
que chama o mtodo construtor da classe Produto.
A nmero 2 uma mensagem sncrona, isto , que aguarda o retorno de uma
informao para continuar sua execuo normal. Veja que o retorno pode ser
por meio do final da execuo do prprio mtodo, da definio de um tipoDaResposta, diferente de void ou ainda de uma mensagem de resposta, como a
indicada na figura com o nmero 2.1.
A mensagem nmero 3 tambm sncrona, mas nomeia o retorno pela execuo do mtodo. Isso permite melhor visualizao da execuo, principalmente
quando se trata de retorno que define seu fluxo.
A quarta uma mensagem assncrona. Ou seja, enviada, mas o emissor no
aguarda o retorno da mensagem para continuar seu fluxo de execuo.
A nmero 5 uma mensagem que destri o objeto criado. No exemplo, destri
o objeto produto criado e demonstra a chamada do destrutor da classe.
Podemos ver tambm, na figura 117, que a numerao das mensagens possibilita
a compreenso da ordem em que so executadas.
FTelaRegistraproduto
A figura 117 mostra os quatro tipos de mensagem em um diagrama que representa a troca de mensagens entre Funcionario e Produto.
Funcionario
Cliente
Produto
Tempo de vida
2: MensagemSincrona() : tipoDaResposta
5: atualizaTotalCompra(valorTotalItem) : boolean
Figura 117
Vamos agora analisar o diagrama de sequncia que trata do caso de uso Registrar compra produtos (figura 118).
188
189
informtica 3
captulo 4
:Funcionario
1: verificaFuncionario(cpf,senha) : boolean
3: valorUnitario=verificaProduto(produto,quantidade) : double
:Cliente
:FRegistraProduto
2: verificaCartao(nroCartao) : boolean
Produto
4: ItemCompra(produto,quantidade,precoUnitarioVenda,funcionario) : boolean
:ItemCompra
5: atualizaTotalCompra(valorTotalItem : boolean
:Compra
Por modelar aspectos dinmicos do sistema, esse diagrama permite anlise e documentao da sequncia de atividades envolvidas em um caso de uso ou mesmo em um fluxo de trabalho. Possibilita a viso dos procedimentos efetuados
para execuo de um caso de uso, por exemplo, dando acesso a documentao
dos procedimentos, tanto do sistema quanto das atividades extrassistema.
Veja que ele traz, basicamente, as mesmas informaes do diagrama de sequncia, mas em ordem diferente, dando nfase s mensagens trocadas pelos objetos,
mas no necessariamente quando essas mensagens so trocadas.
A execuo de uma ao pode ser condicional a alguma ocorrncia. Esses desvios condicionais so representados por um losango com as setas partindo para
as aes a serem executadas, seja a condio satisfeita ou no.
Em muitos projetos, usa-se ou o diagrama de sequncia ou o diagrama de comunicao, mas tambm pode-se criar ambos para anlise de alguma situao particular.
Figura 119
Diagrama de
comunicao do
caso de uso Registrar
compra de produtos.
informtica 3
captulo 4
Observe que o diagrama de atividades apresenta uma forma simples de documentar as aes executadas em cada caso de uso. , asssim, uma importante ferramenta de documentao do software que est sendo produzido. Note tambm
que voc deve dividir o diagrama com linhas verticais para identificar quem
deve fazer a ao.
Figura 120
Funcionario
Verificar
Login,
Senha
Logar no
Sistema
login invlido
Funcionrio
login vlido
Verificar
Carto do
Cliente
Solicitar
carto do
Cliente
Carto
Passar
cdigo de
Barra do
carto do
cliente
Verificar
Existncia
do Produto
carto invlido
Produto
carto vlido
Passar
cdigo de
Barra de
Produto
Diagrama de
atividades do caso de
uso Registrar compra
produtos.
Sistema
no existe
existe
Digitar a
quantidade
comprada
do Produto
Verificar
Saldo do
Produto
ItemCompra
Atualizar
total da
compra
Terminar
registro do
Produto
existe
Compra
193
informtica 3
captulo 4
Classes de Projeto
Funcionario
GUI
FLoguin
Atendente
Dono
Caixa
FManutencaoCompra
ItemCompra
Compra
Fornece
FManutencaoFornece
FManutencaoPagamentoCompra
Cliente
ItemCompra
Produto
ItemFornece
Figura 121
Diagrama
de pacotes.
Figura 122
Diagrama de grfico
de estados.
Produto
recebeProduto()
quantidadeEstoque + quantidadeEntrada > pontoEncomenda
recebeProduto()
quantidadeEstoque + quantidadeEntrada > pontoEncomenda
Ativo (1)
pagaCompra()
quantidadeEstoque <= pontoEncomenda
pagaCompra()
quantidadeEstoque == 0
Em falta (3)
recebeProduto()
quantidadeEstoque <= pontoEncomenda
195
informtica 3
captulo 4
um sistema gerenciador de banco de dados, um servidor de aplicao ou quaisquer outros softwares que integrem a estrutura da aplicao. Possuem um nome
e podem receber um esteretipo. Um n representado por um cubo. Os ns
executam os artefatos.
prod:Produto
- codigo :1
- descricao=Leite Tipo A
- quantidadeEstoque=38
- vlUnitarioVenda=2.63
- estoqueMinimo=30.00
- situacao=1
cart:Cartao
- nroCartao=123
- datainicioUso=23/12/2008
- dataFimUso=null
comp:Compra
it1:IlemCompra
- dataCompra=27/10/2009
- valorTotal=12.80
-terminada=true
- recebidoPor=func
- qualidade=3.00
- dataRegistro=27/10/2009
- horaRegistro=12:05
- atendidoPor-func
- cliente=cart
func:Funcionamento
- cpf=123.456.789-01
- nome=Olavo Petronio Caz
- nroCarteiraProfissional=12345
- dataAdimissao=13/05/1991
-dataDemissao=null
- senha=*******
Figura 123
Diagrama
de objetos.
it1:IlemFornece
- produto=prod
- quantidade=4.00
- valorUnitario=2.83
fornec:Fornece
forn:Fornecedor
- dataEntrada : 27/102009
- nroNF=123
- valorTotal=483.17
- lancadoPor=func
- dataLancamento=27/10/2009
- horaLancamento=11:35
- fornecedor=forn
- codigo=46
- nome=Fulano de Tal Ltda.
- cnpj=12.345.678/0009-10
O diagrama de temporizao, como o nome diz, tem seu foco principal no estudo do tempo gasto nas trocas de mensagens entre os componentes do sistema.
um diagrama de interao, pois auxilia o entendimento do processo de troca
de mensagens entre os diversos componentes do sistema. Geralmente utilizado
em projetos de sistemas de tempo real, em que os tempos gastos nas trocas de
mensagens e de estados na execuo da tarefa so essenciais.
Esse um diagrama de uso especfico que no se utiliza em todos os projetos.
Mas trata-se de um recurso que voc deve conhecer caso precise analisar um
sistema no qual o tempo seja um fator crucial.
Principais componentes: classes, linha de tempo, mensagens.
Criaremos um exemplo de diagrama de temporizao para definir os tempos
aceitveis para as operaes executadas pela balana da padaria do senhor Joo.
A balana em questo vai interagir com o sistema, acessando os objetos da clas-
Codigo do produto
e preo por quilo
Figura 124
Diagrama de
componentes.
Codigo do produto,
quantidade comparada
e preo por quilo
Balana
Produto
BalancaProduto
itemCompra
BalancaItemCompra
197
captulo 4
8
6
{0.. 1s}
verificandoExistenciaCartao
Cartao
consultaCartao(int:nroCartao):boolean
retornandoprecoPorQuilo
processandoConsulta
Produto
verificandoExistenciaCartao
lendoNumeroDoCartao
criandoItemCompra
consultaProduto(int:codigoProduto
CodigoProduto
calculandoEExibindoPrecoTotalProduto
Podemos perceber que nosso foco na anlise do tempo gasto nas operaes
efetuadas pela balana, sem a interveno do usurio.
Balanca
pesquisandoPrecoPorQuilo
A balana possui um visor das informaes digitadas/calculadas e um teclado numrico por meio do qual o atendente introduz os dados. Como apenas um atendente trabalha na pesagem a cada turno, ele faz o login na balana ao iniciar o trabalho
e, assim, no ter de se identificar toda vez que precisar pesar algum produto.
aguardandoDigitaoCodigoProduto
calculandoEExibindoPesoProduto
Figura 125
aguardandoPesagem
produtoColocadoNaBalanca
{0.. 1s}
<< artefato>>
: vendeTudoBD
Exemplo de
diagrama de
implantao.
{0.. 2s}
{0..3s}
{0.. 1s}
<< servidor>>
Servidor de Banco de Dados
double:precoPorQuilo
CodigoCartao
<<10-T Ethernet>>
itemCompra
<< artefato>>
: vendeTudo.war
booleancartaoEncontrado
10
<<web container>>
:Tomcat
<<HTTP>>
Diagrama de
temporizao.
Computador Cliente
Figura 126
retornandoExistenciaCartao
criandoitemCompra
<< servidor>>
Servidor Web
ItemCompra(Cartao:cart,Produto:prod,double:quantidade,double:valorTotalItem,Funcionario:atend)
informtica 3
199
informtica 3
captulo 4
clculo do preo do item e gerao do registro da compra (criao da instncia da classe ItemCompra). So as nicas operaes para as quais o diagrama
demonstra um tempo mximo as demais, que dependem da interao do
atendente, tm os tempos estimados e apenas grafados na linha de tempo para
podermos ter uma ideia do tempo total gasto com a operao.
Sabemos agora que requisitos de tempo bsicos a balana deve realizar para que
possa ser utilizada neste sistema.
Esse diagrama no muito utilizado, mas pode ser til para a compreenso da
forma de implantar uma colaborao.
utilizado para exibir as classes, interfaces e relacionamentos criados para implementar uma colaborao. Faz parte dos diagramas de interao.
Figura 127
Diagrama de
estrutura composta.
ItemFornece
Como utiliza os mesmos blocos de construo do diagrama de atividades, podemos verificar, passo a passo, as interaes das classes em cada uma das sequn
cias criadas no diagrama de viso geral de interao.
Vejamos um exemplo desse diagrama, modelando a sequncia de atividades desde o registro at o pagamento da compra (figura 128).
<<ator>>
Fornecedor
Fornece
Podemos observar passo a passo o registro de produtos comprados pelo cliente, tanto por meio do computador quanto da balana, analisando cada interao at o pagamento, que finaliza o processo.
Receber_Produto
Produto
Caixa
Geralmente, desenvolvemos os diagramas de casos de uso para agrupar as funcionalidades mais importantes a serem implementadas. Sobre tais funcionalidades criamos o diagrama de classes, que ser a estrutura de nossa aplicao ou
o que chamamos de classes de projeto. No caso da padaria do senhor Joo, as
classes de projeto so as classes de cliente, produto, funcionrio, compra, fornece
e suas classes filhas.
Definimos seus principais atributos e ento fazemos o diagrama de sequncia
para os casos de uso mais relevantes no exemplo da padaria, os casos de uso registrar compra, pagar compra, receber mercadoria. Usamos esse diagrama para
definir os principais mtodos de nossas classes e as trocas de mensagens entre
elas. Com isso definido, voltamos ao diagrama de classes e o complementamos
com os mtodos definidos nos diagramas de sequncia.
200
201
informtica 3
captulo 4
sd registra_Compra_Balanca
Balanca
sd registra_Compra
loop [funcOK==false]
1 :login()
loop [clienteOK==false]
Funcionario
FTelaRegistraProduto
:Funcionario
2 :leCartao()
Cliente
:Funcionario
:Produto
:Cliente
:Atendente
Produto
loop [funcionarioOK==false]
1.1 :funcOK=verificaFuncionario
1 :login()
(String:cpf,String:senha):boolean
1.1 :funcionarioOK=verificaFuncionario
(String: CPF,String:senha):boolean
2 :calculaPesoProduto
2.1 :clienteOK=verificaCartao
(Cartao:cartao):boolean
loop
[enquantohouverproduto]
loop [precoPorQuilo=0]
loop[valorUnitario==0]
3 :leProduto()
4 :confirmaCompra()
3.1 :valorUnitario=verificaProduto
(Produto:produto,double:quantidade):double
3 :leProduto()
<<create>>
4.1 :ItemCompra(Produto:produto,double:quantidade,
double:precoUnitarioVenda,Funcionario:funcionario
4 :calculaValorTotalItem()
ItemCompra
loop [clienteOK==false]
5 :leCliente()
5.1 :clienteOK=verificaCliente(String:nroCartao):boolean
sd registra_Pagamento
:FRegistraPagamento
:Caixa
1 :leCartao ()
loop [CartaoOK==false]
:Cliente
:ItemCompra
1.1 :CartaoOK=IdentificaCartao
6 :confirmaCompra()
(String:nroCartao):boolean
2 :itens[] = totalizaCompra
(String:nroCartao):ItemCompra[]
<<create>>
Figura 128
4 :exibeTotalCompra()
5 :registraPagamento
(double:valorPago,String:formaPagto)
5.1.1.1 :conectaOperadoraDeCartao
(double:valorPago) : double
5.2 :atualizaItemCompra
(data:DataPagamento,integer:nroCompra)
5.3 :Compra(date:Data,double:totalCompra,
Caixa:caixa,String:formaPagto)
202
:ItemCompra
:Compra
Diagrama de viso
geral de interao.
Com as classes definidas, comeamos a separ-las para melhor organizar a aplicao. Utilizamos para isso o padro MVC. Esse padro, muito utilizado pelos
desenvolvedores orientados a objeto, foi criado com a linguagem de programao Smalltalk80. Consiste basicamente em dividir as classes da aplicao em
trs grupos, que chamamos de model, view e controller. Criamos um pacote
para cada um desses itens. No model, em geral, inserimos as classes de projeto,
seguindo o modelo de nossa aplicao. No view criamos as classes de interface
com o usurio (telas) e no controller inserimos as classes que implementaro as
funcionalidades de cada classe, desde uma simples consistncia at o acesso ao
banco de dados. Essas classes que implementam o acesso ao banco de dados
levam o nome de classes de persistncia muitos desenvolvedores as colocam
em outro pacote.
203
informtica 3
dica
Voc pode
pesquisar exemplos
de implementao
a partir de MVC
em livros e sites
sobre linguagens
de programao.
Consulte
especificamente
bibliografias
que abordem a
linguagem Java.
Pesquise sobre
padres de projeto
(design patterns).
So 24 padres de
desenvolvimento de
software orientado
a objetos que se
propem a resolver
os problemas mais
comuns nesse
processo.
Consideraes finais
Longe da tentativa de esgotar os assuntos aqui abordados, a inteno deste livro
ajud-lo compreender um pouco melhor as fases de um projeto, o Modelo
Relacional, o Modelo de Entidade e Relacionamento, o SGBD, o mtodo orientao a objetos, o SQL e a UML.
Se voc escolheu a rea de informtica para atuar profissionalmente, continue
estudando e aprendendo sempre, pois nesse campo, dinmico, as mudanas so
constantes e quem no se atualiza vai ficando para trs. Esperamos que voc tenha conseguido alcanar uma boa viso sobre os temas aqui abordados e que v
agora em busca de mais informaes para aprofundar seus conhecimentos para
avanar cada vez mais na sua carreira profissional.
204
Referncias bibliogrficas
205
informtica 3
206