FACULDADE DO LITORAL SUL PAULISTA – FALS
MARCOS ANTONIO FERIAN FILHO
SISTEMA DE GERENCIAMENTO DE VENDA
UML
PRAIA GRANDE
2010
MARCOS ANTONIO FERIAN FILHO
SISTEMA DE GERENCIAMENTO DE VENDA
UML
Projeto de Matéria de Trabalho de conclusão
de curso, Faculdade do Litoral Sul Paulista,
sob orientação do Prof. Paulo R. T. Cândido.
PRAIA GRANDE
2010
MARCOS ANTONIO FERIAN FILHO
SISTEMA DE GERENCIAMENTO DE VENDA
UML
Projeto de Matéria de Trabalho de conclusão
de curso, Faculdade do Litoral Sul Paulista,
sob orientação do Prof. Paulo R. T. Cândido.
AVALIAÇÃO:
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
NOTA: ____(________)
PRAIA GRANDE
2010
RESUMO
É de extrema importância utilizar uma metodologia de desenvolvimento de
sistema para obtermos, desde os primeiros passos, até a etapa final de conclusão
do projeto de software. Citamos a UML por ser a unificação das três mais
conceituadas linguagens de modelagem de sistemas orientadas a objetos (Booch de
Grady, OOSE de Jacobson e o OMT de Rumbaugh). Este trabalho mostra a
utilização da UML no sistema para que se possa criar uma metodologia de
desenvolvimento do sistema que englobe todas as fases do projeto, desde os
eventos iniciais, passando pelo levantamento de Requisitos, Análise, Projeto,
Programação e Testes.
PALAVRAS
CHAVES:
metodologia,
desenvolvimento,
UML,
Programação.
5
ABSTRACT
It is extremely important to use a system development methodology to
obtain, from the early stage until the final stage of completing the software project.
We quote the UML to be the unification of the three most prestigious modeling
languages for object-oriented systems (Grady Booch, OMT and Jacobson's OOSE of
Rumbaugh). This work shows the use of UML in the system so you can create a
system development methodology that encompasses all phases of a project from the
initial events, going from Olympic Requirements, Analysis, Design, Programming and
Testing.
KEY WORDS: methodology, development, UML, Programming
6
SUMÁRIO
1 INTRODUÇÃO ...................................... Erro! Indicador não definido.
1.1
APRESENTAÇÃO ...............................................................................................................8
1.2 OBJETIVOS GERAIS E ESPECÍFICOS ................................................................................9
1.3
JUSTIFICATIVA ...............................................................................................................10
1.4
ABRANGÊNCIA ................................................................................................................10
1.5
METODOLOGIA ...............................................................................................................10
1.6
ESTRUTURA ......................................................................................................................11
2 ANÁLISE E PROJETOS ORIENTADOS A OBJETOS ...................... 12
2.1 CONCEITOS E HISTÓRIA .....................................................................................................12
2.2 ANÁLISE ORIENTADA A OBJETOS ...................................................................................13
2.3 O PROJETO ORIENTADO A OBJETOS..............................................................................13
2.4 CLASSES ....................................................................................................................................14
2.5 OBJETOS ..................................................................................................................................15
2.6 ABSTRAÇÃO ...........................................................................................................................15
2.6.1 Abstração de procedimentos ..................................................................................................... 16
2.6.2 Abstração de dados ..................................................................................................................... 16
2.7 ENCAPSULAMENTO..............................................................................................................16
2.8 HERANÇA .................................................................................................................................17
2.9 POLIMORFISMO .....................................................................................................................17
3 UML................................................................................................... 19
3.1 INTRODUÇÃO ..........................................................................................................................19
3.2 HISTÓRICO COMPLETO .......................................................................................................19
3.3 ACEITAÇÃO .............................................................................................................................21
3.4 PADRONIZAÇÃO OMG..........................................................................................................21
3.5 APLICAÇÃO DA UML ............................................................................................................22
4 ETAPAS DE DESENVOLVIMENTO DE UM SISTEMA UTILIZANDO
UML...................................................................................................... 23
4.1 ANÁLISE DE REQUISITOS ...................................................................................................23
4.2 ANÁLISE ...................................................................................................................................25
4.3 PROJETO ..................................................................................................................................25
4.4 PROGRAMAÇÃO ....................................................................................................................25
7
4.5 TESTES .....................................................................................................................................26
5 MODELOS DE ELEMENTOS ............................................................ 27
5.1 DEFINIÇÃO ...............................................................................................................................27
5.2 RELEMBRANDO CLASSES .................................................................................................27
5.2.1 Nomes .............................................................................................................................................. 27
5.2.2 Relembrando atributos ................................................................................................................ 28
5.3 OPERAÇÕES ...........................................................................................................................28
5.3.1 Relembrando objetos ................................................................................................................... 28
5.4 ESTADOS .................................................................................................................................29
5.5 PACOTES .................................................................................................................................29
5.6 COMPONENTES .....................................................................................................................30
5.7 RELACIONAMENTOS ............................................................................................................30
5.8 ASSOCIAÇÕES .......................................................................................................................30
5.8.1 Agregação ....................................................................................................................................... 31
5.8.2 Generalizações .............................................................................................................................. 31
5.8.2.1 Generalização normal ............................................................................................................ 31
5.8.2.2 Generalização restrita ............................................................................................................ 31
5.9 DEPENDÊNCIA E REFINAMENTOS ...................................................................................32
5.10 MECANISMOS GERAIS .......................................................................................................32
6 DIAGRAMAS ..................................................................................... 34
6.1 CONCEITOS .............................................................................................................................34
6.2 Diagrama de Casos de Uso .................................................................................................34
6.3 DIAGRAMA DE CLASSES ....................................................................................................35
6.4 DIAGRAMA DE OBJETOS ....................................................................................................36
6.5 DIAGRAMA DE ESTADOS ....................................................................................................37
6.6 DIAGRAMA DE SEQUÊNCIA ...............................................................................................43
6.7 DIAGRAMA DE COLABORAÇÃO .......................................................................................44
6.8 DIAGRAMA DE ATIVIDADES ...............................................................................................45
6.9 DIAGRAMA DE COMPONENTES ........................................................................................51
6.10 DIAGRAMA DE IMPLANTAÇÃO .......................................................................................51
7 CONCLUSÃO .................................................................................... 53
REFERÊNCIAS BIBLIOGRÁFICAS ..................................................... 54
Referencial Eletrônico .......................................................................... 55
8
1 INTRODUÇÃO
1.1 APRESENTAÇÃO
Os desenvolvimentos do sistema de software de grande porte são suportados
por métodos de análise e projeto que modelam esse sistema de modo a fornecer
para todos os envolvidos (cliente, analista, programador, etc) uma compreensão
única do projeto.
A UML não é uma metodologia de desenvolvimento, o que significa que ela
não diz pra você o que fazer primeiro, qual passo inicial ou como projetar seu
sistema, mas ela auxilia na visualização dele como um todo e a comunicação entre
os objetos. A UML traz novos conceitos que geralmente não são usados, um bom
entendimento dessa linguagem não é somente um conhecimento básico de sua
simbologia e significado, mas também um contexto geral de modelagem orientada a
objetos.
Com a junção das três mais conceituadas metodologia de modelagem
orientada a objetos criou-se a UML, aproveitando o que havia de melhor em cada
um delas, adicionando conceitos e visões da linguagem.
“UML permite criar certos conceitos mais claramente que as linguagens
alternativas” (Fowler, 2000).
Para entendermos melhor, conceituamos UML como uma padronização de
modelagem orientada a objetos, de forma que qualquer sistema possa ser modelado
corretamente, com consistência, fácil de ser entendido, atualizado e compreensível.
Com este trabalho, pretendo justamente, pesquisar sobre esta linguagem de
modelagem, suas aplicações, vantagens e desvantagens.
9
1.2 OBJETIVOS GERAIS E ESPECÍFICOS
Objetivamos de maneira geral com esta pesquisa, o estudo aprofundado
de uma metodologia de modelagem unificada de desenvolvimento de sistemas
orientados a objetos baseados em UML e sua utilização para melhor entendimento
graficamente representado, o nosso sistema de carimbos. Claramente, os objetivos
apresentados são:
Aprofundar nosso estudo sobre UML, obtendo um amplo conhecimento
sobre essa metodologia;
Estudar como se desenvolve uma metodologia de desenvolvimento de
Sistemas;
Mostrar a importância do uso da metodologia no desenvolvimento de
Sistemas; Desenvolver uma metodologia de trabalho baseada em UML;
Mostrar as grandes vantagens da UML utilizando como estudo de caso
situações rotineiras do nosso sistema;
10
1.3 JUSTIFICATIVA
Com o interesse em estudar uma metodologia unificada de desenvolvimento
baseada no nosso sistema, desenvolvemos o presente projeto com o intuito de
apresentar uma metodologia e salientar a importância da sua aplicação, a qual nos
ajuda
resolver
muitos
problemas
encontrados
no
decorrer
de
todo
o
desenvolvimento de um sistema.
1.4 ABRANGÊNCIA
A UML é uma linguagem de desenvolvimento de sistemas orientados a
objetos dominantes, comuns entre os melhores analistas e desenvolvedores.
Pretendemos comprovar a eficácia do uso desta metodologia.
Pontos a serem citados:
A Modelagem de Sistema, usando os conceitos da orientação a objetos;
Estabelecer um método conceitual entre toda equipe envolvida no projeto do
sistema (cliente, analista, desenvolvedor, etc)
Mostrar a qualidade de um sistema desenvolvido utilizando UML.
1.5 METODOLOGIA
Para organizarmos melhor o trabalho, vamos definir as seguintes etapas:
Estudo da Metodologia UML;
Conceitos sobre esta metodologia;
Utilização da metodologia estudada com base no nosso sistema de carimbos;
Estudo e definição de ferramentas para desenvolvimento de sistemas;
Conclusão sobre a metodologia utilizada e sua aplicação;
11
1.6 ESTRUTURA
Este tópico falará um pouco do nosso trabalho e no que constitui cada
capítulo.
No capítulo 2, descreveremos um pouco da análise de projetos orientados a
objetos, necessidades, surgimento, utilização, etc.
Esse capítulo é extremamente importante para o entendimento da análise
orientada a objetos.
No capítulo 3, faremos a introdução a UML (Unified Modeling Language ou
Linguagem de Modelagem Unificada), citaremos sua utilização, o que ela nos
disponibiliza, aceitação, padronização, documentação, atualização e aplicações.
No capítulo 4, falaremos um pouco das etapas técnicas da UML, essas
etapas vão desde o levantamento dos requisitos até, praticamente, o fim do projeto,
que é a fase de testes.
O capítulo 5 traz uma definição de modelos de elementos e descreve
detalhadamente todos os modelos de elementos utilizados pela UML.
O capítulo 6 fala um pouco sobre os diagramas de UML, mostra um pouco
dos 9 tipos de diagramas utilizados pela UML, exemplificando graficamente e
simulando o uso de alguns destes diagramas. Neste capítulo também, você poderá
ver, o uso de dois destes diagramas com teste em diversos cenários no nosso
sistema.
No capítulo 7 faremos as conclusões finais sobre todo o trabalho.
O capítulo 8 traz toda a bibliografia utilizada no desenvolvimento do trabalho.
12
2 ANÁLISE E PROJETOS ORIENTADOS A OBJETOS
2.1 CONCEITOS E HISTÓRIA
Como vimos, a importância da modelagem dentro de um sistema é
indiscutível, ela é a parte central que leva a todas s informações para a implantação
de um bom sistema. Com ela, podemos visualizar e controlar o desenvolvimento de
um sistema de maneira eficaz, identificando e gerenciando riscos, estipulando e
cumprindo prazos, dentro das estimativas de custo.
Tendo como base essas informações iniciais, várias metodologias para o
desenvolvimento de sistemas foram criadas. As primeiras, que foram as
metodologias estruturadas, caracterizam o desenvolvimento de um sistema em torno
de procedimentos e funções. Até os dias de hoje, existem sistemas ainda
desenvolvidos com base em metodologias estruturadas, o que os torna pouco
estáveis, pelo fato de que, à medida que os requisitos vão se modificando com o
crescimento da empresa, a manutenção do sistema, necessária, fica cada vez mais
difícil.
Com a evolução das metodologias, o desenvolvimento de sistemas passou a
ter uma visão diferenciada, com outras perspectivas. Foi nesse momento, que surgiu
as
metodologias
orientadas
a
objetos,
que
caracterizam
o
escopo
do
desenvolvimento do sistema em torno de classes e objetos.
Essa metodologia foi muito bem aceita no mundo dos desenvolvedores,
tendo em vista, que o método orientado a objetos possibilitava a construção de
projetos de sistemas de todos os tipos de domínio e problema, incluindo todos os
graus de tamanho e complexibilidade.
O sucesso da modelagem orientada a objetos foi tão grande, que em pouco
tempo, foram surgindo muitos e muitos métodos, e esse crescimento deu-se de
maneira desordenada em um curto espaço de tempo. Eram inúmeros métodos, cada
um com suas peculiaridades e falhas, e sem nenhum relacionamento com os
demais. Sendo assim, os usuários destes métodos, sentiram a dificuldade de
encontrar um, que atendesse todas as suas expectativas, o que ocasionou a
chamada guerra de métodos.
13
Como toda guerra sempre tem um vencedor, nos métodos não foi diferente.
Tendo os métodos de maior destaque dentre todos, méritos de Jacobson, Booch e
Rumbaugh, surgiu a linguagem de modelagem unificada, a UML.
Porém, a UML é apenas parte de uma metodologia, ela disponibiliza as
ferramentas necessárias para se criar e ler modelos, mas não aponta quais modelos
deverão
ser
criados,
nem
quando
deverão
ser
criados.
Essa
tarefa
é
responsabilidade de um processo de desenvolvimento de sistema.
Mesmo com todo o avanço das metodologias, a UML precisava interagir com
uma metodologia específica que pudesse obter o máximo proveito dos recursos da
Linguagem de Modelagem Unificada, foi criado então o Processo Unificado.
E foi assim que as respostas para quem está fazendo o que, quando e como
puderam ser definidas e um padrão no desenvolvimento de sistemas orientado a
objetos pode ser definido.
2.2 ANÁLISE ORIENTADA A OBJETOS
“Análise é um estudo de um problema antes de qualquer ação” (De Marco,
1978).
Analisar é você identificar as necessidades de um sistema, e o que este
precisa ter para atender os requisitos levantados de acordo com as necessidades do
usuário. Analisar não é definir ou pensar como o sistema será desenvolvido, mas
sim investigar o problema a ser resolvido com a implantação do sistema.
O grande objetivo da Análise Orientada a Objetos é, primeiramente, tornar
formal uma visão do mundo real no qual o sistema será desenvolvido, estabelecendo
os objetos que serão pontos chaves na estrutura organizacional e também as que o
mundo real impõe. Depois, essa análise formaliza a colaboração de um dado
conjunto de objetos na execução do sistema que está sendo desenvolvido.
2.3 O PROJETO ORIENTADO A OBJETOS
O Projeto Orientado a Objetos é o momento da especificação das partes da
construção, ou seja, instruções, guias, recomendações, etc. É utilizado para
implementar um sistema em um ambiente específico, em prol da solução do
problema.
14
2.4 CLASSES
As classes são utilizadas para compor o vocabulário do sistema que está
sendo desenvolvido, através da abstração de objetos que constituem o domínio do
problema.
Vamos exemplificar da seguinte maneira:
As classes são utilizadas para agrupar os objetos que possuem os mesmos
atributos e comportamentos:
“Todos os alunos de uma escola possuem atributos comuns: nome,
sobrenome, data de nascimento, nome da mãe, nome do pai e um comportamento
comum”. Podemos nos referir a um estudante tanto para inscrevê-lo ou retirá-lo. Os
valores destes atributos variam para cada um deles, ou seja, na maioria das vezes,
são
diferentes,
mas
todos
eles
compartilham
os
mesmos
atributos
e
comportamentos (operações podem ser realizadas sobre eles)
Outro exemplo podemos ter uma classe chamada Cachorro, como atributos
a um cão podemos considerar: Nome, Peso e Cor do pelo e as operações ou
métodos, que representam o que esse cachorro faz podemos citar latir e abanar.
Simbolizamos essa classe, seus atributos e operações da seguinte maneira:
FIGURA 1 – CLASSE CACHORRO
15
2.5 OBJETOS
Um objeto representa uma coisa física, tangível, uma idéia ou um
conceito. Um objeto é uma instância de uma classe.
FIGURA 2 – EXEMPLO DE OBJETO
Um objeto pode ser composto por outro objeto, ou mesmo pode pedir a
colaboração de outro objeto enviando uma mensagem, o que denominamos invocar
um método do outro.
2.6 ABSTRAÇÃO
Abstração é o princípio de ignorar os aspectos de um
assunto não relevante para o propósito em questão,
tornando possível uma concentração maior nos assuntos
principais. (Cood, 1991)
Na Análise Orientada a Objetos, podemos considerar duas formas
existentes de abstração, de Procedimentos e de Dados.
16
2.6.1 Abstração de procedimentos
Consiste em considerar um procedimento como uma operação bem
definida, como algo único, mesmo que se utilize mais procedimento interno. Esse
tipo de abstração é utilizado quando uma função se divide em outras sub-funções,
que por sua vez, decompõe-se em outras funções.
2.6.2 Abstração de dados
Consiste em definir um tipo de dado conforme as operações aplicáveis
aos objetos desse tipo, ou seja, a definição de um tipo de dado por seu
comportamento e estado utilizando-se métodos. A manipulação deste dado é
realizada somente através de seu método.
Um exemplo é classificar uma lista a partir das operações aplicadas a ela,
como inserção e remoção. Qualquer objeto do tipo lista, só pode sofrer modificações
através dessas operações.
2.7 ENCAPSULAMENTO
Podemos definir encapsulamento como a separação de um programa em
partes, o mais isoladas possível. O objetivo principal é tornar o software mais
flexível, fácil de modificar e criar novas implementações.
Como exemplo podemos classificar uma dona-de-casa sendo o usuário e
um liquidificador sendo o sistema. A dona-de-casa não precisa conhecer o circuito
interno para utilizar o liquidificador, apenas os botões que o fazem funcionar.
Uma grande vantagem do encapsulamento é que toda parte pode ser
modificada sem que os usuários da classe em questão sejam afetados. No exemplo
anterior, vamos supor que o liquidificador precisou de reparo e a dona-de-casa
chamou um técnico, o técnico poderia facilmente substituir o motor do liquidificador
por outro totalmente diferente sem que a dona-de-casa fosse afetada, pois ela ia
continuar somente pressionando os botões.
17
2.8 HERANÇA
O conceito de herança se refere ao compartilhamento de atributos e
operações com base numa relação hierárquica entre diversas classes. Uma classe
pode ser definida em forma geral e em seguida, refinada em subclasses seguintes.
Cada subclasse herda propriedades (atributos e operações) de suas superclasses.
Representamos da seguinte maneira:
FIGURA 3 – HERANÇA
O objetivo de utilizar a herança é a intenção de aproveitar código ou
comportamento generalizado ou especializar operações ou atributos. O conceito de
herança de várias classes é conhecido como herança múltipla.
Como exemplo pode-se observar as classes 'aluno' e 'professor', onde
ambas possuem atributos como nome, endereço e telefone. Nesse caso pode-se
criar uma nova classe chamada, por exemplo, 'pessoa', que contenha as
semelhanças entre as duas classes, fazendo com que aluno e professor herdem as
características de pessoa, desta maneira pode-se dizer que aluno e professor são
subclasses de pessoa.
“Esta é provavelmente a característica mais discutida da abordagem
orientada a objetos”. (Mazzola, 1999)
2.9 POLIMORFISMO
O termo Polimorfismo foi gerado do grego (poli = muitas e morphos =
formas). Na Análise Orientada a Objetos, o polimorfismo permite que referências de
tipos de classes mais abstratas representem o comportamento das classes
18
concretas que referenciam. Assim, é possível tratar vários tipos de maneira
homogenia (através da interface do tipo mais abstrato).
Um conceito em teoria de tipo no qual um nome
(como uma declaração de variável) pode denotar
objetos de muitas subclasses diferentes que são
relacionadas por alguma superclasse comum,
assim, qualquer objeto denotado por esse nome
tem a capacidade de responder a algum conjunto
comum de operações de modos diferentes.
(Booch, 2000).
19
3 UML
3.1 INTRODUÇÃO
A UML é a linguagem padrão para especificar,
visualizar, documentar e construir artefatos de um
sistema e pode ser utilizada com todos os
processos ao longo do ciclo de desenvolvimento e
através
de
diferentes
tecnologias
de
implementação. (Furlan, 1998)
A UML disponibiliza uma forma padrão de modelagem de projetos de
Sistemas, incluindo seus aspectos conceituais tais como processos de negócios e
funções do sistema, além de itens concretos como as classes escritas em
determinada linguagem de programação, processos de banco de dados e
componentes de software reutilizáveis.
3.2 HISTÓRICO COMPLETO
As linguagens de modelagem orientadas a objetos surgiram entre a
metade da década de 1970 e o final da década de 1980, à medida que o pessoal
envolvido com metodologia, diante de um novo gênero de linguagens de
programação orientadas a objeto e de aplicações cada vez mais complexas,
começou a experimentar métodos alternativos de análise e projeto.
A quantidade de métodos orientados a objetos aumentou de pouco mais
de 10 para mais de 50 durante o período de 1989 a 1994. Muitos usuários desses
métodos tiveram dificuldades para encontrar uma linguagem de modelagem capaz
de atender inteiramente às suas necessidades. Destacaram-se algumas linguagens
como o Booch, o OOSE (Object-Oriented Software Engineering) de Jacobson, e o
OMT (Object Modeling Technique) de Rumbaugh. Podemos citar outros métodos
importantes como Fusion, Shlaer-Mellor e Coad-Yourdon.
Todos eram métodos completos, alguns se destacavam em algum ponto,
porém tinham suas limitações. O método Booch destacava-se durante as fases de
projeto e construção de sistemas, o OOSE fornecia excelente suporte para captura
20
de requisitos, a análise e o projeto em alto nível; o OMT-2 era mais útil com a análise
e sistemas de informações com uso de dados[Booch, 2000].
Na metade da década de 1990, Grady Booch (Rational Software
Corporation), Ivar Jacobson (Objectory) e James Rumbaugh (General Electrics)
criadores de métodos orientados a objetos, começaram a pegar as melhores idéias e
partiram para a criação de uma linguagem unificada de modelagem.
Com isso esperavam fornecer ao mercado uma linguagem mais concreta
e madura com os quais os desenvolvedores de ferramentas pudessem criar uma
ferramenta mais utilizável. Usando técnicas orientadas a objeto criariam uma
linguagem que iria desde o conceito até o sistema executável, não somente a
sistemas complexos mas também a sistemas menores e também a outros
problemas que não fossem sistemas de informação, podendo ser utilizado por seres
humanos e máquinas[Furlan, 1998].
A criação da UML iniciou oficialmente em outubro de 1994, quando
Rumbaugh se juntou a Booch na Rational. O foco inicial do projeto era a unificação
dos métodos Booch e OMT[Furlan, 1998]. O esboço da versão 0.8 do Método
Unificado foi lançado em outubro de 1995. Mais ou menos na mesma época
Jacobson se associou à Rational com a finalidade de incorporar o OOSE no escopo
inicial da versão 0.8, resultando o lançamento da versão 0.9 da UML em junho de
1996[Booch, 2000]. Foi então aprovada pela comunidade de engenharia de software
em geral. Muitas empresas ficaram interessadas, foi então criada um consórcio com
várias empresas interessadas em dedicar recursos com o propósito de trabalhar
uma definição mais forte e completa da UML.
Empresas que contribuíram para a definição da UML 1.0, Digital
Equipment
Corporationm
Hewlett-Packard,
I-Logix,
Intel-licorp,
IBM,
ICON
Computing, MCI Systemhouse, Microsoft, Oracle, Rational, Texas Instruments e
Unisys. Resultando uma linguagem de modelagem bem definida , expressiva,
poderosa, e que poderia ser aplicada a uma grande variedade de tipos de problemas
[Booch, 2000]. A UML foi oferecida para a OMG (Object Management Group) em
janeiro de 1997, em resposta à solicitação do próprio OMG de propostas para uma
linguagem padrão de modelagem[Furlan, 1998].
Entre janeiro a julho de 1997, o grupo original se expandiu, passando a
incluir virtualmente todos os participantes e colaboradores da resposta inicial ao
OMG, entre os quais se encontravam Andersen Consulting, Ericson, Object Time
21
Limited, Platinum Technology, Ptech, Reich Technologies, Softeam, Sterling
Software e Taskon. Um grupo foi formado, liberado por Cris Kobryn da MCI
Systemhouse e administrado por Ed Eykholt da Rational, com o propósito de
formalizar a especificação da UML e de integrar a linguagem a outros esforços de
padronização. A versão 1.1 foi entregue a OMG em julho de 1997. Em setembro do
mesmo ano, essa versão foi aceita pela ADTF (Analysis and Design Task Force) e
pelo Architecture Board do OMG e, posteriormente submetida a votação de todos os
membros da OMG. A versão 1.1 foi adotada pela OMG em 14 de novembro de
1997[Booch, 2000].
A manutenção da UML foi então assumida pela RTF (Revision Task
Force) do OMG, sob a responsabilidade de Cris Kobryn. A RTF lançou uma revisão
editorial, a UML 1.2., em junho de 1998. No final do mesmo ano, a RTF lançou a
UML 1.3[Furlan, 1998].
3.3 ACEITAÇÃO
Para se estabelecer a UML, os desenvolvedores perceberam que a
linguagem teria que estar acessível para todos, então, preocuparam-se em deixá-la
aberta aos desenvolvedores, onde os mesmos pudessem criar seu próprio método
de trabalho.
Empresas desenvolvedoras de ferramentas estão livres para criarem
uma ferramenta aqueda ao uso da UML. Devido a necessidade de criação da
UML empresas e profissionais liberais da área estão desenvolvendo estudos
para melhor aplicá-la.
3.4 PADRONIZAÇÃO OMG
Quando se iniciaram os trabalhos para criação da UML, os criadores
tinham como intenção fazer sua aceitação com a distribuição da linguagem a vários
desenvolvedores.
A OMG (Object Management Group) fez um requerimento por uma
linguagem de modelagem padrão. Então houve interesse dos criadores da UML em
padronizá-la, para isso foi preciso que os mesmos aprimorassem a qualidade da
22
linguagem para tal. Pois para serem realmente utilizadas por empresas era
necessário sua padronização.
3.5 APLICAÇÃO DA UML
A UML pode ser utilizada para modelar as várias fases de um sistema,
desde o levantamento de requisitos até a geração do código, pode ser aplicada em
qualquer tipo de sistema em termos de diagramas orientado a objeto.
Normalmente. É mais usada na modelagem de Softwares sob o conceito
de orientação a objetos, mas também, pode ser aplicada em sistemas mecânicos, de
engenharia geral, totalmente desligados do ramo da informática, também pode
ajudar na organização de processos de uma empresa.
Numa classificação geral, podemos dizer que ela pode ser aplicada em
várias áreas diferentes para documentar e transmitir qualquer coisa da empresa aos
processos de negócios para o software.
23
4 ETAPAS DE DESENVOLVIMENTO DE UM SISTEMA UTILIZANDO
UML
4.1 ANÁLISE DE REQUISITOS
Um requisito é uma funcionalidade ou condição que o sistema deverá ter,
para não errar no levantamento dos requisitos e os identificar adequadamente,
aplica-se um conjunto de técnicas de modo a perceber detalhadamente o que o
sistema, necessariamente, deverá efetuar.
Fazem parte deste conjunto de técnicas:
Reuniões com os interessados;
Elaboração de questionários sobre o sistema;
Observação das atividades e do funcionamento diário das rotinas da
empresa;
O recolhimento e análise de documentações diversas;
A elaboração de pequenos protótipos do sistema que permitam validar mais
facilmente a percepção obtida (tendo em vista que uma imagem é
fundamental para o entendimento do que vai ser feito);
Preocupação para encontrar a melhor solução;
Analisar, não somente, as funcionalidades atuais, mais também uma
situação futura a ser atingida;
“Esta fase captura as intenções e necessidades dos usuários do sistema
a ser desenvolvido através do uso de funções chamadas use-cases”. (Barros, 2001)
Deve-se sempre ter em vista a “melhor solução”, pois as vezes aquilo que
o utilizador pede não é sempre o que ele necessita.
Através do desenvolvimento de casos de uso (em UML chamamos de
“Use-Cases”), as entidades externas do sistema (em UML chamamos de “atores
externos”) que interagem e possuem interessa no sistema, são modelados entre as
funções que o mesmo vai desenvolver, funções, estas chamadas de “use-cases”. Os
“atores externos” e os “use-case” são modelados através de relacionamentos que
possuem comunicação por associação entre eles ou são desmembrados em
hierarquia. Descrevemos um “use case” através de um texto, especificando os
24
requisitos do ator externo que utilizará esse “use case”. Um “use case” tanto pode
depender de um ou mais “use-case” , como também, pode ter seus dependentes.
Através do diagrama de “use-case” ou “diagrama de casos de uso”
mostraremos aos atores externos, ou seja, futuros usuários, o que estes podem
esperar do sistema.
Vamos exemplificar utilizando um sistema acadêmico, considera-se que
os clientes usuários, professores e secretaria da escola desejam que o sistema
ofereça os seguintes serviços:
Possibilidade de Cadastramento de todos os alunos matriculados
no curso. Isto nos mostra que o sistema deverá ter um serviço de
inclusão de novos alunos e manutenção da base de dados dos
alunos. Esta funcionalidade do sistema poderia ser representada
pelo caso de uso Cadastrar Aluno.
Possibilidade de Cadastramento de todos os professores que
trabalham nesta unidade escolar e ministram disciplina no curso.
Isto nos mostra que o sistema deverá ter um serviço de inclusão de
novos professores e manutenção da base de dados dos
professores.
Esta
funcionalidade
do
sistema
poderia
ser
representada pelo caso de uso Cadastrar Professor.
Possibilidade de registro das disciplinas oferecidas no curso, com a
capacidade de registrar novas disciplinas e a manutenção da base
de dados das disciplinas. Este uso do sistema será representado
pelo caso de uso Cadastrar Disciplina.
Possibilidade de registro da matrícula dos alunos em cada
semestre. Este serviço será representado pelo caso de uso
Registrar Matrícula.
Possibilidade da emissão da confirmação de matrícula para cada
aluno, contendo a lista de disciplinas nas quais um aluno se
matriculou para aquele semestre. Este serviço será representado
pelo caso de uso Emitir Confirmação de Matrícula.
O conjunto de casos de uso definidos representa os serviços ou uso
esperado pelos clientes que utilizaram o sistema. Assim como para os atores, nem
25
sempre é possível efetuar um levantamento completo e definitivo dos casos de uso
em uma primeira tentativa. Ao longo do processo de refinamento, novos casos de
uso poderão aparecer e outros sofrerem alterações.
4.2 ANÁLISE
Nesta fase dominamos somente as classes que pertencem ao domínio
principal do problema, ou seja, classes técnicas mais complexas não estarão nesse
diagrama.
“A fase de análise preocupa-se com as primeiras abstrações(classes e
objetos) e mecanismos presentes no contexto do problema”. (Larman, 2000)
Descrevemos as classes nos Diagramas de Classes e também para
ajudar na descrição dos casos de uso, podendo estar ligado umas nas outras por
meio de relacionamentos.
4.3 PROJETO
Projeto é um esforço temporário empreendido para criar um produto,
serviço ou resultado exclusivo.
Neste momento partiremos para as soluções técnicas, através dos
resultados obtidos nas fases de análise. Serão adicionadas novas classes para
oferecer uma infra-estrutura técnica, tais como: interface do usuário e periféricos,
banco de dados, interação com outros sistemas, e outras mias. Este é o momento
da junção da fase de análise com as classes técnicas da nova infra-estrutura,
podendo assim, alterar tanto o domínio principal do problema quanto a infraestrutura.
É justamente, com a elaboração do projeto que obtemos detalhadamente
as especificações para dar início a fase da programação.
4.4 PROGRAMAÇÃO
Esta fase só terá um bom desempenho se o projeto for muito bem
elaborado, neste momento converteremos as classes da fase do projeto para o
código da linguagem orientada a objetos escolhida.
26
Em UML durante a elaboração dos modelos de análise e projeto, não
devemos traduzi-los em códigos, cabendo esta tarefa a fase de programação.
4.5 TESTES
Na fase de teste, testamos o programa ao máximo na intenção de
descobrir erros. Cada rotina e método são testados minuciosamente, bem como a
integração de todos os processos e a aceitação.
As rotinas devem ser testadas de duas formas, uma pelo programador,
que sabe tudo sobre técnica, pontos críticos das classes e subclasses, e outra pelas
rotinas do usuário, pois ele irá fazer o teste do seu modo, tendo em vista uma visão
da rotina como um todo. Os testes de integração são feitos usando as classes e
seus componentes de integração para verificar se estas classes estão realmente
colaborando uma com as outras conforme especificado nos modelos. Nos testes de
aceitação é verificado se o sistema está de acordo com o especificado no diagramas
de “use-cases”.
Por fim, o sistema é testado pelo usuário final e este verá se o mesmo
está de acordo com suas necessidades expressas no começo do projeto.
27
5 MODELOS DE ELEMENTOS
5.1 DEFINIÇÃO
“Os conceitos utilizados nos diagramas são chamados de modelos de
elementos” (Barros, 2001). Um modelo de elemento é definido com a semântica, a
definição formal do elemento com o exato significado do que ele representa sem
definições duvidosas ou ambíguas e também define sua representação gráfica que é
mostrada nos diagramas da UML.
Um elemento pode aparecer em diversos tipos de diagrama, mas existem
regras que definem quais elementos podem aparecer em tais diagramas. Podemos
citar como exemplos de modelos de elementos: classes, objetos, estados, pacotes
etc. Os relacionamentos também são modelos de elementos e são usados para
conectar outros modelos de elementos entre si.
Para entrarmos definitivamente nesta parte de elementos e diagramas,
precisamos estar desprovidos de dúvidas quanto classes, objetos, estado, etc.
Vamos relembrar!
5.2 RELEMBRANDO CLASSES
Vimos mais acima, que classe é a descrição de um conjunto de objetos
que compartilham os mesmos atributos, relacionamentos, operações e semânticas e
podem ser implantadas em uma ou mais interfaces. Como exemplo demos a classe
cachorro, no capítulo 2, no item 2.4.
5.2.1 Nomes
Todas as classes devem ter um nome que as diferencie das demais.
Como no exemplo do capítulo 2, o nome da nossa classe é cachorro.
28
5.2.2 Relembrando atributos
Vimos que um atributo é uma prioridade de uma classe, que descreve um
intervalo de valores que as instâncias da prioridade podem apresentar. No exemplo
do capítulo 2, usamos como atributos para a nossa classe cachorro os atributos:
Nome, Peso e Cor do Pelo.
5.3 OPERAÇÕES
São processos que as classes podem realizar.
Operações correspondem claramente a métodos em uma classe. No nível
de especificação, as operações correspondem a métodos públicos. Normalmente
você não mostra as operações que simplesmente manipulam atributos, porque elas
podem ser freqüentemente inferidas. Portanto você terá que identificar se um
atributo é somente leitura, isto é, seu valor nunca muda. No modelo de
implementação, você também pode querer mostrar operações privativas (private) e
protegidas (protected).
Uma classe pode ter várias operações ou simplesmente nenhuma, elas
são respresentadas logo após os atributos. No nosso exemplo da classe cachorro,
do capítulo 2, as operações eram latir e abanar.
5.3.1 Relembrando objetos
Vimos que objetos são elementos que podemos manipular, acompanhar
seu comportamento, criar, interagir com ele, ou até, destruí-lo. Ele pode existir no
mundo real ou pode ser uma derivação de estudos da estrutura ou comportamento
de outros objetos do mundo real. Corresponde a qualquer coisa que tenha algum
significado para uma dada aplicação.
29
5.4 ESTADOS
Todos objetos possuem um estado que significa o resultado de atividades
executadas pelo objeto, normalmente este estado é determinado pelos valores dos
atributos e ligações com outros objetos.
Um objeto muda de estado quando algo acontece no sistema, este fato de
mudança de estado de um objeto, chamamos de evento. Analisando essas
mudanças de estado que um objeto pode sofrer, podemos prever todos os possíveis
comportamento de um objeto e os eventos que o mesmo possa sofrer.
Um estado pode ter três compartimentos:
Nome do evento – Mostra o nome do evento, na maioria das vezes este
nome descreve o que este estado realiza.
Atributos – Mostra todas as possíveis variáveis do estado, onde os atributos
do objeto em questão podem ser listados, consultados e atualizados.
Atividades – Aqui, podemos listar os eventos e ações. Esta dividido em três
eventos: Entrar (define as atividades no momento em que o objeto entra
naquele estado), Sair (define as atividades que o objeto executa antes de
passar para o próximo estado) e Fazer (define as atividade que o objeto
executa enquanto se encontra naquele estado).
5.5 PACOTES
“É um mecanismo de propósito geral para organizar elementos de
modelos em grupo, podendo, inclusive, estar aninhando dentro de outros pacotes
(pacotes subordinados)”. (Furlan,1998)
O pacote tem uma grande similaridade com a agregação. O fato de um
pacote ser composto de modelos de elementos cria uma agregação de composição.
Se este for destruído, todo o seu conteúdo também será.
30
5.6 COMPONENTES
Pode ser tanto um código em linguagem de programação, quanto um
código executável já compilado. Exemplo, se um sistema é desenvolvido em Java,
cada arquivo .java ou .class é um componente do sistema, e será mostrado no
diagrama de componentes que o utiliza.
5.7 RELACIONAMENTOS
Ligam classes e objetos entre si, criando relações lógicas entre essas
entidades. Podemos classificá-los em 3 tipos:
Associação – É uma conexão entre as classes, e significa também, uma
conexão entre os objetos daquelas classes. Em UML, uma associação é
definida com um relacionamento que descreve uma série de ligações, onde a
ligação é definida como a semântica, entre as duplas de objetos ligados.
Generalização - É um relacionamento de um elemento mais geral e outro
mais específico. O elemento mais específico pode conter apenas informações
adicionais. Uma instância (um objeto é uma instância de uma classe) do
elemento mais específico pode ser usada onde o elemento mais geral seja
permitido.
Dependência ou refinamentos - Dependência é um relacionamento entre
elementos, um independente e outro dependente. Uma modificação é um
elemento independente afetará diretamente elementos dependentes do
anterior. Refinamento é um relacionamento entre duas descrições de uma
mesma entidade, mas em níveis diferentes de abstração.
5.8 ASSOCIAÇÕES
É uma conexão entre classes, e também significa que é uma conexão
entre objetos daquelas classes. Em UML, uma associação é definida com um
relacionamento que descreve uma série de ligações, onde a ligação é definida como
a semântica entre as duplas de objetos ligados.
31
5.8.1 Agregação
A agregação é um caso particular da associação. A agregação indica que
uma das classes do relacionamento é uma parte, ou está contida em outra classe.
As palavras chaves usadas para identificar uma agregação são: "consiste em",
"contém", "é parte de".
5.8.2 Generalizações
A generalização é um relacionamento entre um elemento geral e um outro
mais específico. O elemento mais específico possui todas as características do
elemento geral e contém ainda mais particularidades. Um objeto mais específico
pode ser usado como uma instância do elemento mais geral. A generalização,
também chamada de herança, permite a criação de elementos especializados em
outros. A generalização pode ser de dois tipos, normal ou restrita.
5.8.2.1 Generalização normal
Na generalização normal a classe mais específica, chamada de subclasse,
herda tudo da classe mais geral, chamada de superclasse. Os atributos, operações
e todas as associações são herdados.
Uma classe pode ser tanto uma subclasse quanto uma superclasse, se ela
estiver numa hierarquia de classes que é um gráfico onde as classes estão ligadas
através de generalizações.
A generalização normal é representada por uma linha entre as duas
classes que fazem o relacionamento, sendo que se coloca uma seta no lado da linha
onde se encontra a superclasse indicando a generalização.
5.8.2.2 Generalização restrita
Uma restrição aplicada a uma generalização especifica informações mais
precisas sobre como a generalização deve ser usada e estendida no futuro. As
restrições a seguir definem as generalizações restritas com mais de uma subclasse:
32
Generalizações de Sobreposição e Disjuntiva: Generalização de sobreposição
significa que quando subclasses herdam de uma superclasse por sobreposição,
novas subclasses destas podem herdar de mais de uma subclasse. A generalização
disjuntiva é exatamente o contrário da sobreposição e a generalização é utilizada
como padrão.
Generalizações Completa e Incompleta: Uma restrição simbolizando que uma
generalização é completa significa que todas as subclasses já foram especificadas,
e não existe mais possibilidade de outra generalização a partir daquele ponto. A
generalização incompleta é exatamente o contrário da completa e é assumida como
padrão da linguagem.
5.9 DEPENDÊNCIA E REFINAMENTOS
Dependência é um relacionamento entre elementos, um independente e
outro dependente. Uma modificação a um elemento independente, afetará
diretamente elementos dependentes do anterior. Uma relação de dependência é
simbolizada por uma linha tracejada com uma seta no final em um dos lados do
relacionamento. E sobre essa linha, o tipo de dependência que existe entre essas
duas classes.
Refinamento é um relacionamento entre duas descrições de uma mesma
entidade, mas em níveis diferentes de abstração. Estes, são simbolizados por uma
linha tracejada com um triângulo no final de um dos lados do relacionamento e são
usados em modelos de coordenação. Em projetos maiores, todos os modelos que
são feitos devem ser coordenados. Coordenação de modelos pode ser usada para
mostrar modelos em diferentes níveis de abstração que se relacionam e mostram
também como modelos em diferentes fases de desenvolvimento se relacionam.
5.10 MECANISMOS GERAIS
Para tratar informações adicionais, a UML utiliza alguns mecanismos em
seus diagramas:
Ornamentos: Ornamentos gráficos são anexados aos modelos de elementos
em diagramas e adicionam semântica ao elemento. Como exemplo de
ornamento, podemos citar, a técnica de separar um tipo de uma instância.
33
Quando um elemento representa um tipo, seu nome é mostrado em negrito,
quando o mesmo elemento representa a instância de um tipo, seu nome é
escrito em sublinhado e pode significar tanto o nome da instância, quanto o
tipo.
Notas: Para permitir adicionar informações, a UML provê a capacidade de
adicionar Notas. Uma nota pode ser colocada em qualquer lugar em um
diagrama, e pode conter qualquer tipo de informação.
34
6 DIAGRAMAS
6.1 CONCEITOS
O objetivo de se fazer modelagem, é você simplificar a realidade para um
melhor entendimento do sistema que está sendo desenvolvido. Em UML,
utilizamos blocos distintos, tais como: classes, interfaces, colaborações,
componentes, dependências, associações, etc. Os diagramas são para
visualizarmos os blocos em construção.
Os diagramas utilizados em UML são separados em nove tipos: Diagrama
de Casos de Uso, Classes, Objetos, Estados, Seqüência, Colaboração,
Atividades, Componentes e Execução. Na seqüência trataremos cada um desses
tipos de Diagrama e citaremos dois, detalhadamente, mostrando graficamente
gráficos apresentando rotinas diretas do nosso sistema de carimbos.
6.2 Diagrama de Casos de Uso
“Um diagrama de caso de uso, ilustra um conjunto de casos de uso, para
um sistema, os atores e a relação entre os atores e os casos de uso”.
(Larman,2000).
Esse tipo de diagrama é utilizado pra mostrar como a empresa ou o
sistema funciona, ou como os usuários desejam que ele funcione. Os caso de
uso, geralmente são ponto de partida na análise orientada a objetos na UML.
Esse modelo consiste de atores e casos de uso. Os atores representam
usuário e outros sistemas que interagem com o modelado. Geralmente,
representamos o ator, dentro de um diagrama por um homem palito. Os casos de
uso mostram como o sistema se comporta, cenários que ele percorre em
resposta ao estímulo do ator. Representamos os casos de uso por elipses.
No modelo de caso de uso, o relacionamento entre um ator e um caso de
uso representa a participação deste ator no caso de uso. Além deste
relacionamento, existem dois outros tipos de relacionamento entre casos de uso:
35
Estender : É representado graficamente por uma seta com o esteriótipo
<<extends>>, que nos permite entender que o caso de uso destino pode
incluir o comportamento especificado pelo caso de uso origem;
Usar: Representado por uma seta com o esteriótipo <<uses>>, nos
permite entender que o caso de uso origem inclui o comportamento do
caso de uso destino.
Incluir: Representado por uma seta com o esteriótipo <<include>> é
utilizado para incluir um comportamento comum de um caso de uso
incluído para um caso de uso base, a fim de suportar a reutilização do
comportamento comum.
Exemplo de Diagrama de Caso de Uso:
FIGURA 4 – DIAGRAMA DE CASO DE USO
6.3 DIAGRAMA DE CLASSES
Representamos uma classe em UML, com uma caixa retangular com três
divisões: Nome da Classe, Lista de Atributos, e o último com Operações, como
vimos no capítulo 2, a classe Cachorro.
As associações representam relacionamentos estruturados entre os
objetos de diferentes classes, e são representados graficamente através de uma
linha conectando as classes. Uma associação pode ter um nome. E nas
36
extremidades da linha, que representa uma associação pode ter nome de papéis
mostrando como a classe é vista pelas outras classes na associação.
A multiplicidade especifica quantas instâncias de uma classe relaciona-se
a uma única instância de uma classe associada. A multiplicidade é representada
por
um
intervalo
de
valores
possíveis,
no
seguinte
formato:
limite_inferior...limite_superior, onde esses limites são valores inteiros (o caracter
* pode ser usado como limite_superior para indicar falta de limite).
A agregação é uma forma especial de associação que representa o
relacionamento todo-parte entre objetos. Ela é representada incluindo-se um
losango na extremidade do objeto todo do relacionamento todo-parte.
A generalização é uma ferramenta poderosa para a abstração. É um
relacionamento existente entre uma classe mais geral (superclasse) e uma
classe mais específica (subclasse), onde a classe mais específica é consistente
com a mais geral e adiciona informações a ela. A generalização é representada
por uma linha com um triângulo, que liga a classe mais específica a mais
genérica.
Exemplo de Diagrama de Classes:
FIGURA 5 – DIAGRAMA DE CLASSE
6.4 DIAGRAMA DE OBJETOS
Fazem a modelagem de instância de itens contidos em diagrama de
classes. Mostra um conjunto de objetos e seus relacionamentos em determinado
37
ponto no tempo. Estes diagramas não são importantes apenas para a
visualização, especificação e documentação de modelos estruturais, mas
também para a construção de aspectos estático de sistemas por meio de
engenharia de produção e engenharia reversa [Booch, 2000].
Este tipo de diagrama cobrem um conjunto de instâncias dos itens
encontrados nos diagramas de classes. Portanto, esse diagrama expressa a
parte estática de uma interação, composta pelos objetos que colaboram entre si,
mas sem qualquer uma das mensagens passadas entre eles. Nos dois casos, o
Diagrama de Objetos congela um momento no tempo.
São usados para fazer a modelagem da visão de projeto estática ou da
visão de processo estática de um sistema, da mesma forma como faz os
diagramas de classes, mas a partir da perspectiva de instâncias reais ou
prototípicas. Este tipo de diagrama permite que você faça a modelagem de dados
estáticos.
Vejamos um exemplo de Diagrama de Objetos:
FIGURA 6 – DIAGRAMA DE OBJETOS
6.5 DIAGRAMA DE ESTADOS
São usados para modelar o comportamento dinâmico de um sistema.
Mostram o ciclo de vida de um objeto em níveis de detalhe arbitrariamente
simples ou complexos [Larman, 2000].
38
Visualizam a seqüência de estados que um objeto ou uma interação
percorre durante sua vida em resposta a estímulos recebidos, junto com suas
próprias ações e respostas.
Os estados representam as condições dos objetos em um determinado
momento.
Neste diagrama os eventos são incidentes que fazem o objeto mudar de
um estado para outro. As linhas de transição descrevem o movimento de um
estado para outro. Cada linha de transição é rotulada com o evento que causou a
transição.
Estudamos o Diagrama de Estados para que pudéssemos visualizar
melhor todos os estados que passavam os objetos do diagrama da empresa de
carimbos durante ações rotineiras do sistema, portanto, vamos mostrar mais de
um exemplo neste diagrama, que se trata do nosso sistema.
39
Exemplo 1 – Construímos estes diagramas de acordo com nosso sistema.
Utilizamos para isso duas ações de rotina que são Cadastrar Venda e cadastrar
Preços.
Cadastrar Venda
Inicio das
operações
Cadastrar Preços
Inicio das
operações
Digitando os dados da
Venda
ValidandoDados()
Concluindo a venda
ValidandoDados()
Efetuando a Venda
Fim das
operações
FIGURA 7 – CADASTRAR VENDAS E PREÇOS
Digitando os dados dos
preços
ValidandoDados()
Concluindo o cadastro
ValidandoDados()
Efetuando o cadastro
Fim das
operações
40
Exemplo 2 – Diagrama de Estado Cadastrar Cliente e Cadastrar Fornecedor
Cadastrar Cliente
Cadastrar Fornecedor
Inicio das
operações
Inicio das
operações
Digitando os dados do
cliente
ValidandoDados()
Concluindo o cadastro
ValidandoDados()
Efetuando o cadastro
Fim das
operações
FIGURA 8 – CADASTRAR CLIENTE E FORNECEDOR
Digitando os dados do
fornecedor
ValidandoDados()
Concluindo o cadastro
ValidandoDados()
Efetuando o cadastro
Fim das
operações
41
Exemplo 3. Diagrama de Estado Cadastrar Débito e Cadastrar Credito.
Cadastrar Debito
Cadastrar Credito
Inicio das
operações
Inicio das
operações
Preparando os dados
para o debito
Preparando os dados
para o credito
Efetuando debito
Efetuando credito
Concluindo o debito
Concluindo o credito
FIGURA 9 – CADASTRAR DÉBITO E CRÉDITO
42
Exemplo 4 – Diagrama de Estado Cadastrar Produto e Cadastrar Usuário
Cadastrar Produto
Cadastrar Usuário
Inicio das
operações
Inicio das
operações
Digitando os dados do
produto
ValidandoDados()
Concluindo o cadastro
ValidandoDados()
Efetuando o cadastro
Fim das
operações
FIGURA 10 – CADASTRAR PRODUTO E USUÁRIO
Digitando os dados do
usuário
ValidandoDados()
Concluindo o cadastro
ValidandoDados()
Efetuando o cadastro
Fim das
operações
43
Exemplo 5 – Diagrama de Estado Cadastrar Movimentação e Cadastrar Pedido
Cadastrar Movimentação
Cadastrar Pedido
Inicio das
operações
Inicio das
operações
Preparando os dados
para movimentação
Preparando os dados
para o pedido
Efetuando a
movimentação
Efetuando o pedido
Concluindo a
movimentação
Concluindo o pedido
Fim das
operações
Fim das
operações
FIGURA 11 – CADASTRAR MOVIMENTAÇÃO E PEDIDO
6.6 DIAGRAMA DE SEQUÊNCIA
São usados para modelar a interação entre objetos dentro de um sistema,
tipicamente, este tipo de diagrama captura o comportamento de um único caso de
uso. O Diagrama apresenta os objetos e as mensagens que são passadas entre
estes objetos dentro caso de uso. Os objetos são representados por linhas
tracejadas verticais e a passagem de mensagens entre dois objetos são
representados
por
vetores
horizontais.
As
cronologicamente do topo a base do diagrama.
mensagens
são
desenhadas
44
Exemplo de Diagrama de Seqüência
FIGURA 12 – DIAGRAMA DE SEQUÊNCIA
6.7 DIAGRAMA DE COLABORAÇÃO
É uma outra alternativa para a modelagem de interações entre objetos de
um sistema. Esse tipo de diagrama focaliza no relacionamento entre os objetos e na
compreensão dos efeitos sobre um objeto durante um cenário. Os objetos são
conectados através de associações e cada associação representa uma instância de
associação entre as respectivas classes envolvidas. As associações mostram as
mensagens enviadas entre os objetos, e a seqüência destas mensagens é
determinada usando-se números seqüenciais.
O Diagrama de Colaboração dá ênfase à ordenação estrutural em que as
mensagens são trocadas entre os objetos de um sistema.
Exemplo de Diagrama de Colaboração:
FIGURA 13 – DIAGRAMA DE COLABORAÇÃO
45
6.8 DIAGRAMA DE ATIVIDADES
Este
tipo
de
diagrama
representa
os
fluxos
conduzidos
por
processamento, é essencialmente um gráfico de fluxo de controle de uma atividade
para outra, comumente isso envolve a modelagem das etapas seqüenciais de um
processo computacional. Este tipo de Diagrama é extremamente importante para a
construção de sistemas executáveis por meio de engenharia de produção reversa. O
principal objetivo deste diagrama é focar nos fluxos dirigidos pelo processamento
interno e descrever o comportamento de processamentos paralelos.
São usados para detalhar classes, implementação de operações e casos
de uso, enquanto os diagramas de estado são usados para especificar o
comportamento global de um tipo. Esse tipo de diagrama representa o que
acontece, mas não quem faz o que, isso nos leva a crer que esse tipo de diagrama
não diz qual classe é responsável por qual atividade.
Testamos nosso sistema de Carimbos utilizando também, o diagrama de
atividades. Segue abaixo os resultados.
46
Exemplo de Diagrama de Atividades de Venda e Preço da empresa de carimbos:
CADASTRAR VENDA - CADASTRAR PREÇOS
FIGURA 14 – CADASTRAR VENDAS E PREÇOS
47
Exemplo 2 – Diagrama de Atividades de Cliente e Fornecedor
CADASTRAR CLIENTE - CADASTRAR FORNECEDOR
FIGURA 15 – CADASTRAR CLIENTE E FORNECEDOR
48
Exemplo 3 – Diagrama de Atividades de Débito e Crédito
CADASTRAR DÉBITO - CADASTRAR CRÉDITO
FIGURA 16 – CADASTRAR DÉBITO E CRÉDITO
49
Exemplo 4 – Diagrama de Atividades de Produto e Usuário
CADASTRAR PRODUTO - CADASTRAR USUÁRIO
FIGURA 17 – CADASTRAR PRODUTO E USUÁRIO
50
Exemplo 5 – Exemplo de Diagrama de Atividades de Movimentação e Pedido
CADASTRAR MOVIMENTAÇÃO - CADASTRAR PEDIDO
FIGURA 18 – CADASTRAR MOVIMENTAÇÃO E PEDIDOS
51
6.9 DIAGRAMA DE COMPONENTES
“Mostram dependências entre componentes de software”. (Furlan,1998).
Os diagramas de componentes representam, de forma estática, aspectos
físicos do sistema sendo modelado. São importantes tanto para visualizar,
especificar e documentar sistemas baseados em componentes quanto para construir
sistemas através de engenharia reversa (reverse) e direta (forward).
São tipicamente usados para:
Modelar a organização do código fonte;
Modelar lançamentos de executáveis;
Modelar fisicamente um banco de dados;
Modelar sistemas adaptativos;
Engenharia de produção e engenharia reversa;
Exemplo de Diagrama de Componentes:
FIGURA 19 – DIAGRAMA DE COMPONENTES
6.10 DIAGRAMA DE IMPLANTAÇÃO
Os diagramas de implantação são diagramas que mostram a configuração
de nós de processamento em tempo de execução e os componentes que neles
existem.
Os diagramas de implantação não são importantes somente para
visualizar, especificar e documentar sistemas embutidos, cliente/servidor e
distribuídos, mas também para o gerenciamento de sistemas por engenharia de
produção e engenharia reversa.
52
Os diagramas de implantação são empregados para modelagem da visão
estática de implantação de um sistema. Essa visão direciona primariamente a
distribuição, entrega e instalação das partes que formam o sistema físico. Na maior
parte, isso envolve a modelagem da topologia do hardware em que o sistema é
executado. Os diagramas de implantação são essencialmente diagramas de classes
que focalizam os nós do sistema.
Exemplo de Diagrama de Implantação:
FIGURA 20 – DIAGRAMA DE IMPLANTAÇÃO
53
7 CONCLUSÃO
Após toda a pesquisa e estudo para o desenvolvimento deste trabalho,
afirmo que o uso de uma metodologia unificada para o desenvolvimento de sistemas
mais complexos, torna-se indispensável. Pois esse tipo de metodologia facilita tanto
a comunicação entre toda equipe envolvida (cliente, programador, analista, etc)
quanto à documentação (toda parte de requisitos e código-fonte).
Montamos o diagrama de alguns cenários rotineiros do nosso sistema de
carimbos, o que nos retornou um entendimento amplo dos caminhos que o sistema
percorre até exibir o resultado final para o usuário que dá apenas um clique.
Foi fundamental um estudo mais detalhado sobre o Diagrama de Estados
e o de Atividades para testarmos nosso sistema, o de Atividades nos fez
compreender todo o fluxo da atividade em um único processo. Já o de Estado, nos
mostrou os possíveis estados de um objeto e as transações responsáveis pelas suas
mudanças de estado.
54
REFERÊNCIAS BIBLIOGRÁFICAS
FOWLER, Martin. UML, Distilled Third Edition, 2004.
JIMENÉZ, Alberto Taboada. Fundamentos UML, 2007.
VIDEIRA, Alberto Silva Carlos. UML, Metodologias e Ferramentas Case, Portugal,
2001
55
Referencial Eletrônico
http://tadeujnr.sites.uol.com.br/pcc/txt_uml.html
http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/uml/diagramas/estado/diag_es
tados.htm
http://docs.kde.org/stable/pt_BR/kdesdk/umbrello/uml-elements.html
http://www.4shared.com – Download de Livros e Apostilas
http://www.slideshared.net
http://www.maxcnunes.com
http://en.wikipedia.org/wiki/Knowledge
Download

faculdade do litoral sul paulista – fals marcos antonio ferian filho