TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de...

159
FACULDADE DE TECNOLOGIA CARLOS DRUMMOND DE ANDRADE Curso Superior de Tecnologia em Sistemas de Informação Projeto de software orientado a objetos com UML: Estudo de caso em uma locadora de veículos. Cleber Luis Marrara São Paulo 2006

Transcript of TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de...

Page 1: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

FACULDADE DE TECNOLOGIA CARLOS DRUMMOND DE ANDRADE

Curso Superior de Tecnologia em Sistemas de Informação

Projeto de software orientado a objetos com UML: Estudo de caso em uma locadora de veículos.

Cleber Luis Marrara

São Paulo 2006

Page 2: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

2

CLEBER LUIS MARRARA

Projeto de software orientado a objetos com UML: Estudo de caso em uma locadora de veículos.

Trabalho de conclusão de curso apresentado à Faculdade de

Tecnologia Carlos Drummond de Andrade como exigência

parcial para obtenção do grau em Tecnólogo em Sistemas de

Informação.

Orientador Profº. Wilson Vendramel.

São Paulo 2006.

Page 3: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

3

CLEBER LUIS MARRARA

Projeto de software orientado a objetos com UML: Estudo de caso em uma locadora de veículos.

Trabalho de conclusão de curso apresentado à Faculdade de

Tecnologia Carlos Drummond de Andrade como exigência

parcial para obtenção do grau em Tecnólogo em Sistemas de

Informação.

Orientador Profº. Wilson Vendramel.

Data de Aprovação ____/___/_____

Banca Examinadora:

_________________________________

Profº. Wilson Vendramel

_________________________________

Profª.

_________________________________

Profº.

Page 4: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

4

Dedico este meu trabalho a todos os

estudantes e profissionais da área de

Sistemas e, que esse estudo, possa servir

como base para novos trabalhos e projetos.

Page 5: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

5

Agradecimentos

Agradeço em primeiro lugar a Deus por permitir que eu pudesse chegar até

aqui e fazer esse trabalho. À minha mãe e ao meu pai (in memoriam) que me

ajudaram muito durante toda a minha vida e se esforçaram para me dar o estudo

que eles não tiveram. À minha filha que, apesar de muito jovem, entendeu a minha

ausência durante esse período de estudos. À minha namorada, companheira, amiga

e futura esposa pela paciência e incentivo que me deu forças pra continuar até o fim.

E aos meus Professores e Mestres que me transmitiram sua experiência e

sabedoria.

Page 6: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

6

"Você tem o seu caminho, eu tenho o meu.

Quanto ao caminho certo, o correto, o único,

não existe".

Nietzche

Page 7: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

7

Resumo

Esse trabalho é um estudo de caso cujo objetivo é aplicar os conceitos de

análise e projeto de sistemas orientado a objetos para se desenvolver um software

com a finalidade de controlar o aluguel de veículos de uma locadora.

Inicialmente, o estudo apresenta conceitos relacionados às etapas de

desenvolvimento de sistemas e definições dos elementos que as compõem. Entre os

itens abordados estão conceitos de sistema de informação, engenharia de software,

análise de sistemas orientada a objetos e Linguagem de Modelagem Unificada

(Unified Modeling Language, UML).

Por fim, um estudo de caso é apresentado onde pode-se aplicar todos os

conceitos abordados.

Palavras-Chaves: Engenharia de Software, Orientação a Objetos, Modelagem de

Sistemas.

Page 8: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

8

Abstract

This work is a study case whose objective is to apply the systems analysis

concepts and systems project objects-oriented to develop software, with purpose to

controller the vehicle rental of a company.

Initially, the study presents concepts related to the system development

stages and definitions of the elements that compose them. Among the items

approached are concepts of system of information, software engineering, oriented

systems analysis to objects and Unified Modeling Language (UML).

Finally, a study case is presented where it can be applied all of the

approached concepts.

Key-word: Software engineering, Objects-driven, Systems’ modeling.

Page 9: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

9

Índice de Figuras e Tabelas Figuras Figura 1: Etapas de processos gerenciais ................................................................23 Figura 2: Modelo balbúrdia........................................................................................27 Figura 3: Modelo Cascata .........................................................................................28 Figura 4: Modelo incremental ....................................................................................30 Figura 5: Modelo prototipação...................................................................................31 Figura 6: Modelo espiral ............................................................................................32 Figura 7: Subdivisão das ferramentas CASE ............................................................36 Figura 8: Tipos de requisitos não-funcionais .............................................................40 Figura 9: Objeto e classe. .........................................................................................53 Figura 10:Representação de classe..........................................................................55 Figura 11: Encapsulamento.......................................................................................56 Figura 12: Herança múltipla ......................................................................................57 Figura 13: Herança....................................................................................................58 Figura 14: Polimorfismo ............................................................................................59 Figura 15: Cenário Principal ......................................................................................62 Figura 16: Cenários alternativos................................................................................63 Figura 17: Representação de fronteira do sistema....................................................64 Figura 18: Representação de uma associação .........................................................64 Figura 19: Representação de um relacionamento de Generalização........................65 Figura 20: Representação de um relacionamento Extend ........................................65 Figura 21: Representação de um relacionamento Include ........................................66 Figura 22: Multiplicidade numa associação...............................................................68 Figura 23: Representação de associação .................................................................70 Figura 24: Representação de uma associação ternária ............................................71 Figura 25: Representação de generalização.............................................................71 Figura 26: Definição de operações Polimórficas .......................................................72 Figura 27: Dependência ............................................................................................72 Figura 28: Assinatura da Dependência .....................................................................73 Figura 29: Agregação................................................................................................73 Figura 30: Composição .............................................................................................74 Figura 31: Classe Associativa ...................................................................................75 Figura 32: Classe Associativa ...................................................................................76 Figura 33: Interface usando uma classe com estereótipo ........................................77 Figura 34: Interface usando o circulo ........................................................................77 Figura 35: Diagrama de seqüência com elementos básicos. ....................................78 Figura 36: Objetos anônimos e nomeados................................................................78 Figura 37: Notação de tipos de mensagens em diagrama de seqüência..................79 Figura 38: Elementos do Diagrama de Seqüência ....................................................80 Figura 39: Elementos de Diagrama de Atividades ....................................................81 Figura 40: Aplicação de Raias de Natação (swim lanes) ..........................................82 Figura 41: Disposição das Atividades no gráfico de Gantt ........................................88 Figura 42: Diagrama de Caso de Uso – Locadora de Veículos.................................92 Figura 43: Diagrama de Classes – Locadora de Veículos ........................................97 Figura 44: Diagrama de Seqüência #1/2...................................................................98 Figura 45: Diagrama de Seqüência #2/2...................................................................99 Figura 46: Diagrama de atividade do pacote ‘Controlar Cobrança’ .........................100 Figura 47: Protótipo da Tela de Abertura de Contrato.............................................153

Page 10: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

10

Figura 48: Protótipo da Tela de Fechamento de Contrato de Locação. ..................154 Figura 49: Protótipo da Tela de Cadastro de Veículos............................................155 Tabelas Tabela 1: Histórico dos métodos de desenvolvimento de software...........................34 Tabela 2: Classes e instâncias..................................................................................54 Tabela 3: Tabela de Atividades x Recursos Humanos..............................................88

Page 11: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

11

Sumário Agradecimentos ..........................................................................................................5 Resumo.......................................................................................................................7 Abstract .......................................................................................................................8 Índice de Figuras e Tabelas ........................................................................................9 Introdução .................................................................................................................14 Capítulo 1. Sistema de Informação ...........................................................................17

1.1 – Definição .....................................................................................................................17 1.2 – Elementos de Sistemas de Informação ........................................................................18

1.2.1 – Hardware..............................................................................................................19 1.2.2 – Software ................................................................................................................19 1.2.3 – Redes ....................................................................................................................20 1.2.4 – Pessoas..................................................................................................................21 1.2.5 – Dados ....................................................................................................................22

1.3 – O Projeto de Software..................................................................................................22 1.3.1 – Gerência de Projeto de Software ..........................................................................22 1.3.2 – Definição do Escopo do Software ........................................................................24 1.3.3 – Planejamento das Atividades................................................................................24

1.4 – Aplicação do Software.................................................................................................25 Capítulo 2. Engenharia de Software..........................................................................26

2.1– O que é Engenharia de Software ..................................................................................26 2.2 – Processo de desenvolvimento de Software ..................................................................26

2.2.1 – Modelo balbúrdia..................................................................................................27 2.2.2 – Modelo cascata .....................................................................................................27 2.2.3 – Modelo incremental..............................................................................................29 2.2.4 – Modelo prototipação.............................................................................................30 2.2.5 – Modelo espiral ......................................................................................................31

2.3 – Métodos de desenvolvimento de Software ..................................................................33 2.3.1 – Análise Estruturada ..............................................................................................34 2.3.2 – Análise Essencial..................................................................................................34 2.3.3 – Análise Orientada a Objetos .................................................................................35

2.4 – Ferramentas de desenvolvimento de Software ............................................................35 2.5 – Requisitos de software.................................................................................................37

2.5.1 – Tipos de requisitos................................................................................................38 2.5.1.1 – Requisitos de usuários ...................................................................................38 2.5.1.2 – Requisitos de sistemas ...................................................................................39 2.5.1.3 – Requisitos funcionais.....................................................................................39 2.5.1.4 – Requisitos não-funcionais .............................................................................39 2.5.1.5 – Requisitos de domínio ...................................................................................40

2.5.2 – Levantamentos de requisitos ................................................................................41 2.5.2.1 – Aplicação de questionários............................................................................41 2.5.2.2 – Verificação de documentos ...........................................................................41 2.5.2.3 – Cenários participativos ..................................................................................42 2.5.2.4 – Entrevistas .....................................................................................................42 2.5.2.5 – Observação in-loco ........................................................................................43

2.5.3 – Análise dos requisitos...........................................................................................43

Page 12: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

12

2.5.4 – Especificação de requisitos...................................................................................44 2.6 – Projeto do Software .....................................................................................................45 2.7 – Projeto de Interface Homem-Computador (IHC)........................................................45 2.8 – Implementação do Software ........................................................................................48 2.9 – Testes do Software.......................................................................................................49 2.10 – Implantação do Software ...........................................................................................50 2.11 – Evolução do Software ................................................................................................51

Capítulo 3. Análise Orientada a Objetos com UML...................................................52

3.1 – Conceitos de Orientação a Objeto ..............................................................................52 3.1.1 - Objetos ..................................................................................................................52 3.1.2 - Classes...................................................................................................................53 3.1.3 – Métodos, operações, serviços ...............................................................................55 3.1.4 - Mensagens.............................................................................................................55 3.1.5 - Encapsulamento ....................................................................................................56 3.1.6 - Herança .................................................................................................................57 3.1.7 – Polimorfismo ........................................................................................................58

3.2 – Análise Orientada a Objetos ........................................................................................59 3.3 – Linguagem de Modelagem Unificada (Unified Modeling Language, UML) .............61 3.4 - Diagramas ....................................................................................................................61

3.4.1 – Diagrama de Caso de Uso (Use Case)..................................................................62 3.4.1.1 – Associação (Association)...............................................................................64 3.4.1.2 – Generalização (Generalization).....................................................................64 3.4.1.3 – Extensão (Extend)..........................................................................................65 3.4.1.4 – Inclusão (Include) ..........................................................................................66

3.4.2 – Diagrama de classes..............................................................................................66 3.4.2.1 – Visibilidade....................................................................................................67 3.4.2.2 – Multiplicidade................................................................................................68 3.4.2.3 – Atributos e Operações ...................................................................................68 3.4.2.4 – Relacionamentos............................................................................................70

3.4.2.4.1 – Associação..............................................................................................70 3.4.2.4.2 – Generalização .........................................................................................71 3.4.2.4.3 – Dependência ...........................................................................................72 3.4.2.4.4 – Agregação...............................................................................................73 3.4.2.4.5 – Composição ............................................................................................74 3.4.2.4.6 – Realização...............................................................................................74

3.4.2.5 – Classe de associação......................................................................................75 3.4.2.6 – Classe de Interface.........................................................................................76

3.4.3 – Diagrama de Seqüência ........................................................................................77 3.4.4 – Diagrama de Atividades .......................................................................................80

Capítulo 4. Estudo de Caso.......................................................................................84

4.1 – Definição do Ambiente e Escopo do Software ............................................................84 4.1.1 – Apresentação do ambiente .............................................................................84 4.1.2 – Declaração do Objetivo Geral do Sistema ...................................................85 4.1.3 – Estudo de Viabilidade ......................................................................................86 4.1.4 – Planejamento das Atividades................................................................................87

4.2 – Levantamento de Requisitos do Software ...................................................................88 4.2.1 – Análise e especificações de requisitos. ........................................................89

4.3 – Regras de negócios.................................................................................................90

Page 13: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

13

4.4 – Diagrama de Caso de Uso .....................................................................................92 4.4.1 – Descrição dos Cenários ..................................................................................94

4.5 – Diagrama de Classes....................................................................................................97 4.6 – Diagrama de Seqüência ...............................................................................................98 4.7 – Diagrama de Atividade..............................................................................................100

Anexo B – Questionário utilizado no levantamento de requisitos............................102 Anexo C - Tabelas de Grupos de Veículos .............................................................105 Anexo D - Tabelas de Tarifas de Locação de Veículos...........................................112 Anexo E – Detalhes do Diagrama de Caso de Uso.................................................119 Anexo F – Detalhes do Diagrama de Classes.........................................................128 Anexo G – Detalhes do Diagrama de Seqüência ‘Controlar Cobranca’ ..................145 Anexo H – Detalhes do Diagrama de Atividades ‘Controlar Cobranca’...................149 Anexo I – Protótipos de Interface Gráfica................................................................153 Considerações Finais..............................................................................................156 Referências Bibliográficas.......................................................................................157

Page 14: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

14

Introdução

Durante toda a minha trajetória profissional executei trabalhos em diversas

áreas entre elas: eletro-mecânica, automação industrial, eletrônica, informática,

redes e agora a área de sistemas. Tenho gosto pela tecnologia desde pequeno e

sempre procuro aperfeiçoar-me, tornou-se um hobby e por isso escolhi o curso de

Sistemas de Informação.

Sistemas de Informação foi uma maneira de integrar tudo o que já tenho

como experiência tecnológica e também acrescentar novos conhecimentos de

sistemas computacionais. Para assimilar as técnicas de desenvolvimento de

sistemas de software escolhi um tema onde pudesse englobar itens de projeto e

análise orientada a objeto.

“Projeto de software orientado a objetos com UML: Estudo de caso em uma

locadora de veículos.” é um trabalho onde proponho mostrar como pode ser feito

uma análise desde o levantamento de requisitos até a modelagem do sistema

orientado a objetos.

Inicialmente serão passados alguns conceitos básicos sobre software1,

sistemas e aplicações para que o leitor sem muito conhecimento no assunto possa

acompanhar com mais tranqüilidade. Nos capítulos seguintes serão abordados

conceitos de engenharia de software e seus métodos e processos, Análise e

Modelagem Orientadas a Objeto com UML2 e, por último, um estudo de caso para a

implementação de um sistema em uma locadora de veículos, que visa atender

apenas as atividades operacionais no qual serão aplicados esses conceitos.

Para fazer uma comparação de como eram os sistemas de antigamente

podem-se observar os primeiros computadores e seus métodos de programação e

vê-se o quão grande foi a evolução em apenas 60 anos.

Na década de 1940 o primeiro computador, chamado ENIAC3, tinha sua

programação era feita através 6000 de chaves e a cada nova programação as

chaves precisavam ser re-programadas, por volta da mesma época, a International 1 Software é uma palavra da língua inglesa que foi incorporada à língua portuguesa como sendo um termo técnico de informática. Software é um programa que instrui ao computador o que ele deve executar. O assunto será abordado no capítulo 1. 2 Abreviação do termo em inglês Unified Modeling Language ou Linguagem de Modelagem Unificada. Foi criada em 1996 para padronizar a modelagem de sistema orientada a objetos e utiliza-se de diagramas para representar as diversas partes do sistema. 3 ENIAC é a abreviação de Electronic Numerical Integrator Analyzer and Computer. Foi construído em 1945.

Page 15: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

15

Business Machines Corporation – IBM criou para seu computador o método de

programação através de cartões perfurados4.

Com a evolução dos computadores, novos métodos, novas ferramentas e

novas linguagens de programação também foram aprimorados para acompanhar o

desenvolvimento do hardware5.

Na década de 1980 eram comuns empresas que construíam sistemas para

computadores sem a utilização de métodos, os projetos eram feitos de forma

desordenada, e depois de finalizado e apresentado o protótipo ao seu cliente,

verificava-se que era necessário fazer alguns acertos e perdia-se muito tempo no

trabalho de manutenção. Esse processo de criação de software é chamado de

balbúrdia 6.

Sistemas criados seguindo a prática da balbúrdia caiam em desuso devido

não atender as necessidades, ou devido ao custo de retrabalho, ou por não ter sido

planejado de forma correta com a realidade do negócio, ou por não surtir o resultado

satisfatório.

Com o surgimento da engenharia de software, o processo, seus métodos e

atividades passaram a ser utilizados na construção do software e com isso ganhou-

se mais qualidade no produto final e os processos ficaram melhor documentado. A

criação de ferramentas, métodos de desenvolvimento, estudos de uso de interface

com o operador também contribuíram para prolongar o ciclo de vida do software.

Na década de 1990 teve inicio o paradigma7 da análise orientada a objeto e

os programadores começam a ter uma nova visão de desenvolvimento e o velho

paradigma da análise estruturada foi caindo em desuso.

De acordo com Bezerra (2002: 12), no resumo abaixo pode-se ter uma idéia

da evolução das técnicas de desenvolvimento.

• Década de 1950/60: Os sistemas eram muito simples e eram

desenvolvidos com base em fluxogramas e diagramas de módulos.

4 Os cartões perfurados era a maneira de inserir dados e instruções nos computadores daquela época. 5 Hardware é uma palavra da língua inglesa que foi incorporada à língua portuguesa como sendo um termo técnico de informática. Hardware é como são chamados os componentes que compõem o computador, é a parte física. O assunto será abordado no item 1.2.1. 6 Termo adotado por Tonsig (2003: 57) para retratar a maneira desorganizada com que algumas empresas e desenvolvedores criam seus sistemas. “Balbúrdia” não é um método nem um modelo de desenvolvimento, e sim uma prática de desenvolvimento de software onde os desenvolvedores não se preocupam em documentar e nem seguir as práticas da Engenharia de Software. 7 Paradigma é a forma de abordar um problema.

Page 16: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

16

• Década de 1970: Nessa época computadores mais avançados

começaram a surgir e necessitavam de sistemas mais robustos. Novos

modelos surgiram e a partir deles a programação estruturada e o projeto

estruturado.

• Década de 1980: Computadores tornam-se mais avançados e velozes,

com isso há necessidade de interfaces mais sofisticadas e softwares mais

complexos. Nesse período surge a Análise Estruturada.

• Inicio da década de 1990: É quando o novo paradigma da Análise

Orientada a Objeto surge.

• Fim da década de 1990: O novo paradigma da Análise Orientada a

Objetos começa a ganhar força e surge a UML.

No transcorrer desse trabalho poderá ser verificado como deve ser feito a

análise e o projeto orientado a objetos a qual teve inicio na década de 1990, mas

antes disso alguns conceitos e definições precisam ser estabelecidos.

O primeiro capítulo irá tratar de algumas definições: sobre o que é um

sistema, o que é uma informação, hardware e software, possibilitando entender

melhor os assuntos que serão abordados em seguida.

O capítulo dois, “Engenharia de Software”, serão tratados conceitos que

abordam a análise de sistemas, processos, métodos, ferramentas, entre outros

assuntos pertinentes ao capítulo.

No terceiro capítulo, antes de passar os conceitos de análise orientada a

objetos, serão abordados definições de classes, objetos e tipos de modelagem de

objetos e diagramas de classes.

No capitulo quatro, uma vez definidos todos os conceitos principais, será

apresentado o estudo de caso de uma locadora de veículos colocando em prática os

tópicos abordados anteriormente.

Page 17: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

17

Capítulo 1. Sistema de Informação

O objetivo desse capitulo é dar algumas definições básicas sobre alguns

elementos que compõem o Sistema de Informação. Afinal, o que é um Sistema? O

que é software? Hardware? Informação e dado são a mesma coisa? E o que é

exatamente Sistemas de Informação?

Todas essas perguntas serão respondidas nesse capítulo as quais serão

muito importantes para o entendimento desse assunto como um todo.

1.1 – Definição

A palavra sistema é muito empregada em diversas áreas tais como: sistema

político, sistema de ensino ou sistema de comunicação. Por exemplo, quando se faz

um telefonema para uma empresa onde o atendente necessita consultar alguma

informação no computador e por alguma razão isso não é possível, o atendente diz:

O sistema está fora do ar.

Pode-se observar que o sistema não está somente em um computador ou em

um equipamento eletrônico; o ser humano vive em um sistema, o sistema solar

também é um sistema!

Na língua portuguesa, pode-se encontrar muitos significados para a palavra

sistema, a seguir seguem alguns significados:

“1)Conjunto de elementos, materiais ou ideais, entre os quais se possa

encontrar ou definir alguma relação;

2)Disposição das partes ou elementos de um todo, coordenados entre si, e que

funcionam com estrutura organizada;

3) Complexo de regras ou normas.” (AURÈLIO, 1988: 603).

Pode-se concluir que um sistema é “...um conjunto de entidades relacionadas,

interdependentes, que interagem entre si, buscando atingir um objetivo declarado e

outros correlatos.” (TONSIG, 2003: 8).

Para definir o significado do termo Sistema de Informação, é necessário saber

primeiro o que é Informação. Por exemplo, uma data de nascimento de uma pessoa

Page 18: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

18

09/04/1968 é um dado ou uma informação? Saber que a idade dessa mesma

pessoa hoje é 38 anos e que no ano que seguinte ela terá 39 anos, é um dado ou

uma informação?

“Os dados podem ser considerados características ou propriedades básicas

de algo (pessoas, documentos, objetos, situações e concatenações dessas coisas)

cujo conteúdo deve ser unívoco.“ (TONSIG, 2003: 27).

Portanto conclui-se que a data de nascimento é um dado. Seguindo essa

mesma linha de raciocínio, se junto com a data de nascimento tiverem mais dados,

por exemplo, nome, endereço, telefone, todos esses dados de forma organizada e

tratadas por algum procedimento podem trazer uma informação, tais como: a idade,

nome do cliente, endereço do cliente, telefone para contato.

Conclui-se que a informação:

• É obtida através de dados organizados de forma ordenada;

• Tem um período de validade, pois o dado pode mudar com uma certa

freqüência;

• Tem um custo para ser obtida.

Com base em todos esses conceitos, pode-se definir que Sistemas de

Informação no âmbito computacional, como sendo um conjunto de mecanismos

independentes que tratam os dados para obter informação para um fim específico.

Nas corporações os sistemas de informação devem auxiliar nas tomadas de

decisões ou até mesmo fazê-las, tem que integrar as informações que estão

isoladas, pois quanto mais informação melhor será a decisão tomada.

Resumindo: sistemas de informação é a integração de diferentes sistemas

com diversos tipos de informação para auxiliar nas tomadas de decisões ou tomar

decisões.

1.2 – Elementos de Sistemas de Informação

Agora que se tem uma melhor definição do que é sistema de informação,

observa-se que o S.I.8 é a interação de vários tipos de sistemas diferentes, os quais

são compostos por hardware, software, redes, pessoas e dados.

8 Abreviação de Sistemas de Informação.

Page 19: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

19

1.2.1 – Hardware

A palavra hardware provém da língua inglesa e é utilizado freqüentemente no

nosso idioma quando o assunto é informática. Hardware pode ser entendido como

sendo a parte física composta por circuitos eletrônicos e outros componentes que

compõe o computador, seus periféricos e outros dispositivos eletrônicos.

Exemplificando, o hardware pode ser: mouse9, teclado, placa mãe, disco rígido,

monitor de vídeo, impressora, modem, roteador.

O hardware que tem a capacidade de processar informações possui dois

componentes muito importantes: a memória e o processador. Esses dois

componentes têm uma função muito importante: A memória armazena dados e

instruções a serem processados e o processador executa essas instruções.

Logo, pode-se observar que, com o avanço da tecnologia, o hardware torna-

se mais sofisticado a ponto de fazer tarefas programadas, ou seja, eles armazenam

e processam os dados, que de alguma forma, são convertidos em informações para

o usuário.

A peça fundamental que atua diretamente com o processador e a memória é

o programa chamado software.

1.2.2 – Software

A palavra software provém da língua inglesa e é muito utilizada na

informática. O software é a parte lógica do computador e é quem diz ao hardware o

que fazer e quando fazer, em outras palavras é um conjunto de instruções que serão

executadas pelo processador para executar uma determinada tarefa.

Existem vários tipos diferentes de software, Tonsig (2003: 54-56) explica:

• Software básico: É um programa que visa atender as necessidades

básicas do hardware, sua execução é feita para dar suporte a outros tipos

programas. Alguns exemplos de software básico são: BIOS10 do

9 Dispositivo apontador usado em sistemas baseados em janelas. Por exemplo: Microsoft Windows ™ 10 Abreviação do termo em inglês: Basic Input Output System ou Sistema Básico de Entrada e Saída. BIOS é um componente eletrônico (memória) que armazena uma pequena quantidade de dados, suficiente para fazer a programação básica do computador antes que o sistema operacional seja carregado.

Page 20: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

20

computador, Firmware11 de periféricos, drivers12 e sistema operacional.

Especificamente nos casos do BIOS e Firmware, o software básico é um

tipo de programa de baixo nível onde as instruções são compostas por

mnemônicos (instruções de máquina), que são compiladas de acordo com

a arquitetura do processador.

O software básico é executado primeiramente para configurar as funções

básicas do hardware, para que possa ser carregado o software aplicativo.

• Software aplicativo: Para utilizá-lo é necessário que o software básico

esteja instalado para que dê suporte as rotinas e instruções do software

aplicativo. São exemplos de software aplicativo: programas editores de

texto, planilhas de cálculo, programas corporativos para suprir

necessidades administrativas. Mais de um software aplicativo pode estar

instalado no mesmo hardware, eles podem trocar informações entre si e

também pode fornecer informações para os usuários, além de se

comunicar com outro software aplicativo instalado em outro hardware,

utilizando para isso uma rede de computadores.

• Software embutido: Também conhecido como embedded systems,

podem ser utilizados em palms, celulares, computadores automotivos e

dispositivos de rede. Pode ser considerado um software básico e / ou

software aplicativo, pois esse tipo de software gerencia todas as funções

operacionais desses dispositivos.

Os dispositivos equipados com o hardware e o software não têm muita

utilidade se eles estiverem isolados uns dos outros, por isso existe a comunicação

entre eles que é feita através de uma rede.

1.2.3 – Redes

Pode-se definir rede como sendo uma quantidade de pontos interligados com

outros pontos que podem ser de vários tipos diferentes.

As redes de computadores podem ser de vários tipos, tamanhos e com

velocidades e tipos de conexões variadas. 11 Programa em linguagem de baixo nível que é armazenado em uma memória somente de leitura. O firmware também é um componente eletrônico (memória) que faz a programação em diversos tipos de periféricos do computador e equipamentos eletrônicos, tais como: aparelho celular, impressora, aparelho de DVD. 12 Pequeno programa para dar suporte ao software de alto nível na comunicação com o hardware.

Page 21: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

21

“Uma rede de computadores consiste de dois ou mais computadores e outros

dispositivos ligados entre si e compartilhando dados, impressoras, trocando

mensagens (e-mails), etc. Internet é um exemplo de Rede. Existem várias

formas e recursos de vários equipamentos que podem ser interligados e

compartilhados, mediante meios de acesso, protocolos e requisitos de

segurança.” (WIKIPÉDIA. In: Redes de computadores, 2006).

Pode-se classificar as redes de acordo com a arquitetura, extensão

geográfica, topologia e o meio de transmissão:

• Arquitetura de Rede: Ethernet, Token Ring, FDDI (Fiber Distributed Data

Interface – Interface de Dados Distribuído por Fibra), Giga Ethernet, ATM

(Asynchronous Transfer Mode – Modo de Transferência Assíncrona);

• Extensão geográfica: LAN (Local Area Network), MAN (Metropolitan Area

Network), WAN (Wide Area Network);

• Topologia13: Rede em anel, ponto-a-ponto, barramento, estrela;

• Meio de transmissão: Rede por cabo coaxial, fibra ótica, par trançado,

Wireless – rede sem fios, infravermelhos, microondas.

1.2.4 – Pessoas

Cada ser humano tem comportamentos diferentes, alguns tem um bom

relacionamento interpessoal outros são mais reservados, mas para se desenvolver

um software, o fator primordial é a comunicação entre o projetista e o usuário /

cliente.

A peça-chave no desenvolvimento de software é sem dúvida o contato com o

usuário, pois ele necessitará da ferramenta que será desenvolvida, portanto ele

precisa passar as diretrizes de funcionamento.

Muitos usuários não sabem expressar o que realmente querem, outros mais

ocupados não querem perder tempo com reuniões onde serão levantados os

requisitos e passam essa responsabilidade para algum subalterno. Problemas

relacionados com a informação levam ao desenvolvimento de um software que não

13 Topologia de rede é a forma por meio da qual ela se apresenta fisicamente, ou seja, como os elementos de rede estão dispostos.

Page 22: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

22

atende as necessidades do cliente e é por isso que a boa comunicação e um bom

relacionamento interpessoal são fundamentais.

A boa comunicação e o bom relacionamento interpessoal também são

importantes entre os membros da equipe de desenvolvedores, pois a equipe deve

estar alinhada e em perfeita sintonia com as diretrizes do projeto e do cliente.

Outro fator importante são as mudanças que o novo projeto trará ao dia-a-dia

do usuário. O ser humano, de uma maneira geral, não aceita e não se adapta

facilmente às mudanças, isso é devido ao fato de que o ser humano acostuma-se

facilmente com o cotidiano (paradigma do comportamento).

Quando sugere-se ao usuário a substituição de algum aplicativo é comum

ouvir “... por que mudar, está funcionando bem assim!”. Neste momento deve-se

mostrar quais as melhorias que o novo software trará ao seu trabalho.

1.2.5 – Dados

Tonsig (2003, 26), citando Pompilho (1995), explica que dado “...é a estrutura

fundamental sobre a qual um sistema de informação é construído. Símbolo

intencionalmente destacado para representar uma característica ou propriedade da

realidade a ser tratada.”

Exemplificando a citação de Tonsig, podemos dizer que dados são

características de algo ou alguém tais como nome, endereço, data de nascimento de

uma pessoa, números e outros itens de um documento, propriedades de um objeto.

1.3 – O Projeto de Software

Quando existe um software para ser construído, vários profissionais estarão

envolvidos no projeto os quais terão que estar em constante sincronismo, pois a

falha ou atraso de alguma etapa poderá comprometer todo o projeto. É nessa hora

que entra em ação a figura do Gerente de Projeto.

1.3.1 – Gerência de Projeto de Software

Page 23: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

23

O gerente de projeto não deve ter apenas conhecimentos de gerenciamento

de pessoas e operações, mas também deve deter ou buscar o conhecimento técnico

sobre o projeto, pois ele poderá ter que gerenciar uma área na qual não detém o

conhecimento, nesse caso estará colocando todo o projeto em risco. Ele

desenvolverá trabalhos de coordenação, administração, supervisão da sua equipe,

deverá levantar os riscos14 e saber como contorná-los, é responsável por manter a

equipe alinhada com os objetivos até a fase de implantação do software.

Deve, acima de tudo, saber trabalhar sobre pressão e conviver com

incertezas, e paralelamente a isso, manter um ambiente de trabalho agradável para

seus colaboradores.

Em um projeto de software o gerente de projeto deve seguir as práticas de

engenharia de software mesmo que sejam burocráticas, e ter sempre em mente que

cada projeto é diferente um do outro. Pois muitos gerentes, no intuito de agilizar o

trabalho devido à pressão para o cumprimento do cronograma, acabam por deixar

de documentar o processo ou utilizar software adaptado e remendado de um projeto

antigo.

Outro fator muito importante que o gerente tem que se preocupar é com o

cronograma e os recursos, pois qualquer alteração em um desses itens, tais como

contratar mais recursos ou prolongar alguma tarefa, irá influenciar diretamente no

prazo de entrega e no custo final do projeto.

A primeira ação de um gerente de projeto é a definição do escopo do

software.

Figura 1: Etapas de processos gerenciais (TONSIG, 2003: 70) 14 Para tomar decisões eficientes, é necessário ter conhecimento dos riscos que o projeto enfrenta e claras estratégias para tratá-los ou eliminá-los. Portanto risco é tudo o que pode acontecer desde o início até o término do projeto, e que é atualmente incerto ou desconhecido.

Definição do escopo do software

Planejamento das atividades necessárias. Criação de cronograma.

Organização e Controle. Locação de recursos para atividade e coordenação.

Checagem do Realizado X Previsto. Documentação de desvios

Page 24: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

24

1.3.2 – Definição do Escopo do Software

O escopo do software deve ser bem definido com o cliente, deve-se saber

tudo sobre que o software deverá fazer, em qual ambiente ele será instalado,

quantos usuários irão acessá-lo e de que maneira, detalhes do hardware onde o

software será executado.

Tonsig (2003: 110), explica que é na fase de definição do escopo que o

gerente de projeto deverá fazer uma estimativa do custo do software, quantidade de

recursos envolvidos no projeto e o prazo de entrega do software. Para isso é

necessário saber quais são as viabilidades do projeto:

• Viabilidade técnica: São verificadas a existência de hardware, software e

pessoas com conhecimento técnico disponível para atender os requisitos

de sistema.

• Viabilidade operacional: Diz respeito às conseqüências na implantação ou

modificação de processos da organização ou sociedade.

• Viabilidade econômica: Será verificado se é viável o custo da solução

encontrada.

Algumas vezes o projeto do software pode tornar-se inviável devido ao fator

custo, técnico ou operacional, mas nesse caso é o cliente quem decide pela

viabilidade ou não do projeto. Uma vez definida a viabilidade do projeto a próxima

etapa é o planejamento das atividades.

1.3.3 – Planejamento das Atividades

O planejamento pode ser representado de várias formas gráficas onde se

devem alocar os recursos, o tempo gasto para cada atividade, a descrição da

atividade, o custo dessa atividade, quando começa e quando termina.

Tonsig (2003: 73) explica que, no planejamento, deve-se definir sobre cada

atividade:

• Uma descrição sobre ela (O QUE);

• As devidas justificativas (POR QUE);

• Quais recursos serão alocados para cada atividade (QUEM);

Page 25: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

25

• Definir a ordem que cada atividade deve ser realizada (QUANDO);

• Qual técnica deve-se empregar (COMO);

• O local da sua realização (ONDE).

Todos os itens citados acima pode-se dispor na forma de um diagrama onde

observar-se facilmente quais são as tarefas, quem são os recursos, quando

começam e quando terminam cada tarefa.

1.4 – Aplicação do Software

Como visto no item 1.2.1 o hardware tem varias aplicações, porém sem o

software o hardware não tem utilidade. Ao unir as funcionalidades do hardware com

as diretrizes do software pode-se criar um produto com várias aplicações. A

aplicação mais usual são os aplicativos para computadores pessoais.

As quantidades e tipos de aplicações do software são vastos e são limitados

apenas pela tecnologia e pela criatividade dos projetistas. Pode-se citar alguns

exemplos de tecnologias aplicadas ao uso do software: dispositivos móveis como

Assistente Pessoal Digital (Personal Digital Assistants, PDA ou Handhelds),

celulares, programas armazenados e executados em cartões (Java Card 15) e a

interconexão entre equipamentos diversos para troca ou envio de informações.

15 Cartão do tipo Smart Card, com pouca memória, que tem capacidade para armazenar pequenos programas em Java permitindo sua execução através de um dispositivo externo. Ex.: Chip para celular com tecnologia GSM.

Page 26: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

26

Capítulo 2. Engenharia de Software

A primeira menção à engenharia de software ocorreu em 1968 quando ainda

não utilizava-se de processos para a criação de software. Foi a época em que

começaram a surgir computadores mais avançados e complexos e observou-se que,

se continuasse a utilizar os métodos de desenvolvimento de software antigos, o

avanço do software não acompanharia o hardware.

O custo do desenvolvimento do software crescia enquanto que o custo do

hardware caia, foi então necessário uma revisão nos métodos e processos de

desenvolvimento de software.

2.1– O que é Engenharia de Software

A engenharia de software é similar à engenharia voltada a outras áreas, tem

como objetivo criar processos, normatizações, novas abordagens e documentos

envolvidos no desenvolvimento de software.

A engenharia de software é “...uma disciplina da engenharia, cuja meta é o

desenvolvimento de sistemas de software com boa relação custo / beneficio.”

(SOMMERVILLE, 2003: 3)

2.2 – Processo de desenvolvimento de Software

O processo de desenvolvimento é composto por etapas que são executadas

por engenheiros, analistas e programadores. Em cada etapa são executados

diferentes tipos de atividades onde, ao término de todo o processo, é desenvolvido

um produto (software) que é implantado.

Genericamente, as etapas de desenvolvimento de software, podem ser

divididas em fases: análise de requisitos, projeto, desenvolvimento, implantação e

manutenção. Existem vários modelos ‘padrões’ para o processo de desenvolvimento

de software que foram criados baseados em outros processos de engenharia.

Os modelos mais comuns são: balbúrdia, cascata, incremental, prototipação e

espiral. Mas nada impede que, em um processo de desenvolvimento, seja seguido

Page 27: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

27

um modelo baseado em dois ou mais modelos, ou então, seja criado um novo

modelo desde que as etapas básicas sejam seguidas.

2.2.1 – Modelo balbúrdia

Dos modelos apresentados, o modelo balbúrdia16 é o único modelo que nunca

deve ser tomado como referência. Nesse modelo não há planejamentos nem

documentação dos processos, e a constante mudança no software para atender

novos requisitos torna esse modelo, como o próprio nome diz, uma balbúrdia.

O processo de desenvolvimento de software é um constante retrabalho onde

existe a implementação e em seguida a implantação, e volta-se novamente para a

implementação por não ter atendido os requisitos e / ou as necessidades funcionais.

O diagrama desse processo é representado na figura abaixo.

Figura 2: Modelo balbúrdia (TONSIG, 2003: 58)

2.2.2 – Modelo clássico ou cascata

“O primeiro modelo publicado do processo de desenvolvimento de software

originou-se de outros processos de engenharia” (ROYCE, 1970. In: SOMMERVILLE,

2003: 37).

16 Termo adotado por Tonsig (2003: 57) para retratar a maneira desorganizada com que algumas empresas e desenvolvedores criam seus sistemas. “Balbúrdia” não é um método nem um modelo de desenvolvimento, e sim uma prática de desenvolvimento de software onde os desenvolvedores não se preocupam em documentar e nem seguir as práticas da Engenharia de Software.

IMPLANTAÇÃO

IMPLEMENTAÇÃO

Page 28: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

28

No modelo cascata os processos acontecem seqüencialmente, esse processo

de desenvolvimento é ideal para situações onde os requisitos são bem definidos e

compreendidos. Pelo fato dos processos acontecerem seqüencialmente, uma fase

começa quando a etapa anterior termina.

Conforme a figura abaixo, nesse modelo encontramos as fases de análise de

viabilidades, definição de requisitos, projeto de sistema e de software,

implementação, testes, implantação e manutenção.

Figura 3: Modelo Cascata (TONSIG, 2003: 59)

O processo de análise de viabilidade é onde será obtida uma idéia básica do

que o software vai desempenhar. Na segunda etapa é feito o levantamento dos

requisitos de forma mais detalhada de modo a fornecer dados suficientes ao projeto.

Na fase de projeto será elaborado todo o sistema (interface com o usuário, meio de

armazenamento de dados, interligação entre os sistemas).

É na implementação que ocorre a programação propriamente dita, seguida

pelos testes e implantação do sistema como um todo. É na implantação que o

sistema entra em produção e os usuários começam a utilizá-lo, e é onde são

Análise de viabilidades

Análise de requisitos

Projeto

Implementação

Testes

Implantação

Manutenção

Page 29: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

29

verificados se todos os requisitos implementados atendem as necessidades que

foram inicialmente levantadas. Também é possível que apareçam novas falhas de

projeto nessa fase.

Por ser um modelo seqüencial, é comum encontrar problemas em uma fase

que deveriam ter sido solucionados nas fases anteriores, quando isso acontece

ocorrem retrabalhos. Esse tipo de modelo aumenta o custo do desenvolvimento do

software por ter vários retrabalhos e é comum pular para as etapas seguintes do

modelo mesmo com algumas falhas constatadas nas etapas anteriores. Obviamente

que, ao ser implantando o software, algumas funções poderão não funcionar de

acordo com as necessidades do usuário.

Todas as falhas, tanto as que foram deixadas durante o processo, quanto as

demais falhas encontradas na fase de implantação, serão corrigidas na fase de

manutenção.

2.2.3 – Modelo incremental

“A abordagem do desenvolvimento incremental (...) foi sugerida por Mills”.

(Mills et al., 1980. In: SOMMERVILLE, 2003: 43).

O modelo incremental é uma variação do modelo cascata e tem como objetivo

diminuir o retrabalho. Nesse modelo os desenvolvedores não têm uma visão

detalhada do que será o software como um todo, pois ele é divido em várias partes

de acordo com o grau de prioridade de entrega, as mais prioritárias são entregue

primeiro, e depois as menos prioritárias. A prioridades são definidas em reuniões

com o cliente juntamente com os prazos de entrega para cada parte do sistema.

Os primeiros incrementos servem como um protótipo para o usuário se

familiarizar com o sistema e ajudam os projetistas coletar de novos requisitos. Com

base nesses requisitos, um novo incremento será criado e disponibilizado na

próxima versão.

Sempre que novas funcionalidades são adicionadas um novo incremento ao

software é criado e disponibilizado ao usuário. Dessa forma, o usuário não precisa

esperar o término de todo o desenvolvimento para começar a utilizar o software, e

por outro lado, ele vai sendo testado à medida que novos requisitos menos

importantes vão sendo incrementados.

Page 30: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

30

Uma vantagem desse modelo é que, para iniciar o desenvolvimento, não é

necessário ter em mãos todos os requisitos como no modelo cascata, aos poucos,

os requisitos serão adicionados nos incrementos à medida que vão surgindo. Outra

vantagem é, devido aos incrementos mais importantes terem sido entregues

primeiro, eles são testadas por um tempo maior pelo usuário o que diminui falhas.

Uma das desvantagens desse modelo é o fato do software ser dividido em

partes, pois não se consegue visualizar quais serão as funcionalidades que o cliente

deseja implantar, sendo assim, fica difícil criar incrementos sem saber se a

funcionalidade de uma parte poderá, ou não, ser usada por outra. Isso poderá

ocasionar problemas, onde alguma funcionalidade não atenda as necessidades dos

usuários.

Figura 4: Modelo incremental (SOMMERVILLE, 2003: 43)

2.2.4 – Modelo prototipação

No modelo de prototipação tem como objetivo diminuir o tempo de produção

do software e dar ao usuário uma visão mais realista do que está sendo construído,

fazendo com que ele participe do desenvolvimento opinando sobre os

desenvolvimentos das telas e relatórios. Isso faz com que o usuário / cliente se torne

co-responsável pelo produto final.

Seguindo o fluxo abaixo pode-se analisar o que o modelo prototipação

propõe.

Definir esboço dos requisitos

Atribuir requisitos aos incrementos

Projetar arquitetura do sistema

Desenvolver incremento do sistema

Validar incremento

Integrar incremento

Validar sistema

Sistema final

Sistema incompleto – novo requisito / funcionalidade

Page 31: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

31

Figura 5: Modelo prototipação (TONSIG, 2003: 61)

Como pode-se observar, nesse modelo, tem como etapa inicial a análise de

requisitos e também a definição das telas e relatórios onde o usuário teve

participação. Diferente do modelo incremental, o usuário não poderá operar o

sistema até o final do projeto.

Após passar por várias experimentações e revisões, o protótipo é

aperfeiçoado, passa pela etapa de codificação, testes e só então é implantado.

É conveniente deixar o usuário ciente de que a codificação do software não é

tão rápida e simples como o projeto da tela e relatórios, pois o software em si

necessita ser codificado. Isso pode gerar uma ansiedade por parte do usuário.

2.2.5 – Modelo espiral

Sommerville (2003: 44) diz que o modelo de processo de desenvolvimento em

espiral foi proposto por Boehm em 1988.

O modelo espiral reúne as vantagens dos modelos mais antigos. Ele tem um

formato espiralado e é dividido em quatro quadrantes, cada quadrante representa

uma etapa: Determinar objetivos, Avaliação de alternativas e riscos,

Desenvolvimento e verificação de produto, Avaliação e planejamento. O processo

inicia-se no centro do espiral e percorre as diversas etapas no sentido horário.

Análise de requisitos

Desenvolvimento de protótipo

Experimentação

Revisão

Detalhamento Codificação e testes

Implantação Manutenção

Page 32: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

32

No 1º quadrante, é feita a análise de requisitos e de viabilidades, os objetivos

são definidos e os riscos são relacionados.

No 2º quadrante, são avaliados os riscos e, dependendo do nível de

abstração17 dos requisitos levantados na etapa anterior e dos riscos envolvidos,

pode-se implementar o modelo prototipação para obter requisitos mais detalhados.

Nesse caso um protótipo do software é desenvolvido referente a abstração em

questão.

No 3º quadrante, o software entra na fase de desenvolvimento. É definido o

modelo no qual o software será desenvolvido e, dependendo do grau de risco, pode-

se adotar outros modelos e implementá-los no espiral. Por exemplo, se os requisitos

forem bem definidos pode-se utilizar o modelo cascata.

Figura 6: Modelo espiral (SOMMERVILLE, 2003: 45)

No 4º quadrante, o trabalho realizado durante esse ciclo é apresentado ao

cliente para validação e um planejamento para o próximo ciclo é definido.

17 Abstração é o processo mental em que as idéias estão distanciadas dos objetos, operação intelectual onde existe o método que isola os generalismos teóricos dos problemas concretos, trata-se de um mecanismo essencial em disciplinas filosóficas e científicas.

Page 33: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

33

Finalizando o ultimo quadrante, há uma iteração do processo para os ciclos

seguintes e o desenvolvimento segue um processo evolutivo.

A quantidade total de ciclo não é especificada e depende de cada projeto de

software.

2.3 – Métodos de desenvolvimento de Software

A abordagem desse trabalho está focada na análise orientada a objetos,

portanto, não será explicado em detalhes todos os métodos de desenvolvimento

citados.

Em muitos projetos, as informações obtidas geram muitos documentos. Ao

iniciar a etapa de codificação e desenvolvimento propriamente dita, pode haver

algumas modificações no projeto original e, devido a falta de controle, essas

modificações são implementadas diretamente no software, mas algumas vezes, não

são acrescentadas nas documentações do projeto. Resultado: Ao final do projeto

temos a documentação desatualizada.

Sommerville (2003: 49) conclui que a utilização de métodos estruturados

garante a criação de uma documentação padrão para o projeto.

Antes de fazer uma descrição dos métodos de desenvolvimento de software,

na tabela abaixo pode-se observar um resumo do histórico mostrando os métodos e

técnicas de desenvolvimento de software.

Modelo Abordagem Ferramentas

Balburdia (Informal)

Desde o inicio dos anos 50 (até hoje

em alguns casos), porém, sem outra

alternativa até o início da década de

70.

Funcionalidade (com

maior enfoque) e dados

Textos

Fluxogramas

Estruturado

O método começou efetivamente a

ser empregado a partir de 1975 e

deverá ainda continuar sendo

utilizado por mais alguns anos pelas

empresas que possuem estruturas de

Inicialmente a

funcionalidade e depois

os dados.

Posteriormente, com a

maturidade das

ferramentas de SGBD18,

Diagrama de Fluxo de Dados

(DFD)

Especificação dos processos

Diagrama de Entidade

Relacionamento (DER)

Normalização

18 SGBD é a sigla de Sistema Gerenciador de Bando de Dados.

Page 34: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

34

sistemas concebidas a partir desse

modelo, que ainda se encontra ativos.

os dados ganham mais

ênfase.

Diagrama de Estrutura de Dados

(DED)

Dicionários de Dados

Essencial

Trata-se de um aprimoramento do

modelo estruturado que teve início em

1984.

Essência Funcional e

Dados

Integração Funcional e

Dados

DFD de Contexto

Lista de Eventos

DFD Particionado por Eventos

Diagrama Entidade

Relacionamentos

Diagrama de Estrutura de Dados

Normalização

Dicionários de Dados

Orientado a Objetos

Decorrente dos conceitos já

existentes nas linguagens de

programação, especialmente na

‘Simula(67)’ e ‘Smaltalk(70)’.

A aplicação na análise de sistemas

teve início na década de 90.

Funcionalidade Objeto =

Encapsulamento de

Funções e Dados

Contempla o estado de

um objeto

Visão estática e

dinâmica

Diagrama de Caso de Uso

Diagrama de Classes e Objeto

Diagrama de Seqüência

Diagrama de Colaboração

Diagrama de Componentes

Diagrama de Distribuição

Tabela 1: Histórico dos métodos de desenvolvimento de software (TONSIG, 2003: 105)

2.3.1 – Análise Estruturada

Tonsig (2003: 107) diz que a análise estruturada propõe uma metodologia de

construção de sistema que inicia-se com uma visão global e vai aprofundando para

níveis de detalhamento mais específicos. Utiliza-se de: Diagramas de Fluxo de

Dados (DFD) dispostos em vários níveis, o primeiro nível tem uma visão macro,

quanto mais se aprofunda nos níveis subseqüentes, maior é o de detalhamento; o

Diagrama de Entidade Relacional (DER) é uma ferramenta que auxilia a fazer o

modelo conceitual do Banco de Dados.

2.3.2 – Análise Essencial

A análise essencial surgiu da analise estruturada e tem como objetivo estudar

um sistema ideal sem se prender às restrições tecnológicas, para isso imagina-se

um sistema ideal.

Page 35: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

35

Tonsig (2003: 126) explica que esse estudo é feito para o levantamento das

funcionalidades do sistema e, baseado nesse levantamento, um modelo essencial

dessas funcionalidades é desenvolvido.

2.3.3 – Análise Orientada a Objetos

O método de desenvolvimento orientado a objetos propõe um novo

paradigma no desenvolvimento de software. Tonsig (2003: 165) explica que

enquanto o método estruturado trabalha com as funcionalidades e modelagem de

dados separadamente, a análise orientada a objetos tem uma visão única e trabalha

com as funcionalidade e modelagem de dados ao mesmo tempo.

Uma abordagem mais detalhada sobre a análise orientada a objetos será

visto no capitulo 3.

2.4 – Ferramentas de desenvolvimento de Software

A engenharia de software sempre construiu diversos tipos de software para

auxiliar muitos tipos de usuários e automatizar vários tipos de processos, mas até

então os profissionais envolvidos no desenvolvimento de software não tinham

ferramentas próprias que os auxiliassem no desenvolvimento dos mesmos. É como

um dito popular: “Na casa de ferreiro o espeto é de pau”.

Foi então que desenvolveu-se um tipo de ferramenta para ajudar no processo

de desenvolvimento de software. Essas ferramentas são chamadas de

“Ferramentas C.A.S.E.19” que são utilizadas por engenheiros de software para

auxiliar e automatizar os processos de desenvolvimento de software.

Sommerville (2003: 54), citando Fuggetta (1993), comenta sobre os tipos de

ferramentas C.A.S.E. existentes, divididas em três categorias:

• Ferramentas;

• Workbenches20;

• Ambientes.

19 A palavra C.A.S.E. é uma abreviação do termo em inglês “Computer Aided Software Engineering” que significa Engenharia de Software Auxiliada por Computador. 20 Palavra inglesa cujo significado é “bancada de trabalho”. No contexto onde é aplicado, pode-se interpretar como “teste de mesa” onde serão verificadas e validadas as funcionalidades do software.

Page 36: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

36

Na figura 7, pode-se observar melhor como essas categorias são

subdivididas.

Figura 7: Subdivisão das ferramentas CASE. (SOMMERVILLE, 2003: 56)

De acordo com Pressman (2002: 810), as ferramentas C.A.S.E. podem ser

classificadas de acordo vários aspectos. Abaixo tem-se uma relação da sua

classificação pela função:

• Ferramenta de engenharia de processo de negócio;

• Ferramenta de modelagem e gestão de processo;

• Ferramenta de planejamento de projeto;

• Ferramenta de análise de risco;

• Ferramenta de gestão de projeto;

• Ferramenta de rastreamento de requisitos;

• Ferramenta de métricas e gestão;

• Ferramenta de documentação;

• Ferramenta de software básico;

Tecnologia C.A.S.E.

Editores

Compiladores

Comparadores de arquivos

Ambientesintegrados

Ambientes centrados em

processo

Workbenches

Ambientes

Ferramentas

Análise e projeto

Programação

Testes

Workbenches com vários métodos

Workbenches com método único

Workbenches de propósito geral

Workbenches de linguagem específica

Page 37: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

37

• Ferramenta de garantia de qualidade;

• Ferramenta de gestão de base de dados;

• Ferramenta de gestão de configuração de software;

• Ferramenta de análise e projeto;

• Ferramenta PRO/SIM (Prototipação e Simulação);

• Ferramenta de projeto e desenvolvimento de interfaces;

• Ferramenta de prototipação;

• Ferramenta de programação;

• Ferramenta de desenvolvimento WEB21;

• Ferramenta de integração e teste;

• Ferramenta de análise estática;

• Ferramenta de análise dinâmica;

• Ferramenta de gestão e teste;

• Ferramenta de teste cliente / servidor;

• Ferramenta de reengenharia.

Os fabricantes de ferramentas C.A.S.E. normalmente incorporam a facilidade

de poder exportar documentos de uma ferramenta para outra, essa função é muito

útil para o processo de produção de software.

2.5 – Requisitos de software

Uma vez analisado a viabilidade do projeto, o trabalho de desenvolvimento do

software inicia-se com levantamento de diversos tipos informações as quais

auxiliaram todo o trabalho de desenvolvimento. O conjunto de informações, tais

como: as funcionalidades e restrições do software, as necessidades do cliente,

funcionalidade dos processos e documentos internos da empresa, dão-se o nome de

requisitos.

Os requisitos são as peças fundamentais, auxiliam o analista no entendimento

do funcionamento do software que será projetado. Por isso, se os requisitos forem

mal interpretados, omitidos, ou não condizerem com a verdade, o projeto não

atenderá as necessidades do cliente / usuário.

21 Abreviação de World Wide Web. É uma rede mundial de computadores que fornece informação em forma de hipertexto, também chamada de Internet.

Page 38: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

38

Os requisitos são classificados em vários tipos e existem diversas técnicas de

se obter do cliente o que ele realmente necessita.

2.5.1 – Tipos de requisitos

Segundo Sommerville (2003: 82), pode-se dividir e resumir os requisitos da

seguinte forma:

• Requisitos de usuários: São declarações em linguagem natural sobre as

funções do sistema.

o Requisitos funcionais: Descreve em linguagem natural as

funcionalidades do sistema.

o Requisitos não-funcionais: Descreve em linguagem natural os

requisitos que não diz respeito as funcionalidades do sistema.

• Requisitos de sistemas: Estabelece detalhadamente as funções e

restrições do sistema. Podem ser subdivididos em:

o Requisitos funcionais: Descreve as funcionalidades do sistema.

o Requisitos não-funcionais: Não diz respeito as funcionalidades do

sistema.

o Requisitos de domínio: Descreve as características do domínio.

Pode-se ver a seguir uma definição mais detalhada de cada um desses

requisitos.

2.5.1.1 – Requisitos de usuários

Os requisitos de usuários devem descrever, em uma linguagem

compreensível pelos usuários, os requisitos funcionais (funcionalidades do sistema)

e os requisitos não-funcionais, mas não deve-se evitar entrar em detalhes técnicos

no que diz respeito ao desenvolvimento do software.

O fato dos requisitos serem escritos em um tipo de linguagem natural (não

técnica) poderá trazer alguns problemas, tais como: a falta de clareza e

interpretação do requisito, misturar os requisitos funcionais com os não-funcionais ou

até relacionar um ou mais requisitos em um só.

Page 39: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

39

2.5.1.2 – Requisitos de sistemas

As especificações dos requisitos de sistemas são mais abrangentes e mais

detalhadas do que os requisitos de usuários. Os “...requisitos de sistema deveriam

definir o que o sistema deveria fazer, e não como ele teria de ser implementado.”

(SOMMERVILLE, 2003: 91).

A linguagem natural é utilizada para descrever esse tipo de requisito e pode

servir como base para o contrato de desenvolvimento e implementação do sistema.

É necessário incluir o máximo de informações possíveis, pois isso pode ajudar aos

analistas a definir uma arquitetura inicial do sistema e a fornecer requisitos

adicionais no caso de sistemas coexistentes que necessitem de integração ao novo

sistema.

2.5.1.3 – Requisitos funcionais

Os requisitos funcionais devem relacionar de forma consistente e completa

todas as funcionalidades, serviços e necessidades do cliente / usuário para o

sistema que será desenvolvido. Quando trata-se de requisitos de usuário os

requisitos funcionais são escritos em linguagem natural de fácil compreensão pelos

usuários, mas quando trata-se de requisitos de sistemas os requisitos funcionais

devem especificar as funções, as exceções e demais processos em detalhes.

2.5.1.4 – Requisitos não-funcionais

Requisitos não-funcionais estão relacionados com aspectos de confiabilidade,

tempo de resposta, tamanho ocupado em memória, espaço em disco, portabilidade

do sistema. Também podem especificar restrições do sistema.

Em geral, os requisitos não-funcionais fornecem informações do sistema

como um todo, já os requisitos funcionais especificam características individuais ou

parciais do sistema. Portanto, isso torna o requisito não-funcional mais importante

que o funcional. A conseqüência da falha na implementação de um requisito

funcional será a inoperabilidade de uma função ou conjunto de funções, se isso

acontecer em um requisito não-funcional o sistema pode torná-lo inutilizado.

Page 40: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

40

Na figura 8, podem-se observar os vários tipos de requisitos não-funcionais

que podem surgir.

Figura 8: Tipos de requisitos não-funcionais (SOMMERVILLE, 2003: 85)

2.5.1.5 – Requisitos de domínio

Os requisitos de domínio podem ser funcionais ou não-funcionais e estão

relacionados com dados e informações específicas sobre o ambiente em que o

sistema vai operar, o analista deve ter conhecimento e o domínio das informações

do ambiente em questão. Esses tipos de requisitos “... podem ser novos requisitos

funcionais em si, podem restringir os requisitos funcionais existentes ou estabelecer

como devem ser realizados cálculos específicos.” (SOMMERVILLE, 2003: 88).

Requisitos não-funcionais

Requisitos organizacionais

Requisitos externos

Requisitos do

produto

Requisitos de

eficiência

Requisitos de confiabilidade

Requisitos de portabilidade

Requisitos de

interoperabilidade

Requisitos éticos

Requisitos de facilidade

de uso

Requisitos de

desempenho

Requisitos de

espaço

Requisitos de entrega

Requisitos de

implementação

Requisitos de

padrões

Requisitos legais

Requisitos de

segurança

Requisitos de

privacidade

Page 41: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

41

2.5.2 – Levantamentos de requisitos

O levantamento de requisitos consiste em obter do usuário / cliente as

informações, dados, e processos relativos ao sistema de forma que o analista possa

entender o que se pretende desenvolver e saber o que o usuário / cliente quer que o

software faça. “Conhecer com exatidão o ambiente do usuário, sua forma de

trabalho, a estrutura da organização, os problemas e as necessidades a serem

supridas pelo novo sistema é fundamental para o processo de desenvolvimento de

software.” (TONSIG, 2003: 94).

Pode-se citar algumas maneiras de como coletar esses requisitos:

• Aplicação de questionários;

• Verificação de documentos;

• Cenários participativos;

• Reuniões e entrevistas;

• Observação in-loco 22.

2.5.2.1 – Aplicação de questionários

A técnica de aplicação de questionários tem um custo baixo para o

desenvolvedor, porém não é um bom recurso de levantamento de requisitos por

limitar requisitos adicionais que por ventura o usuário possa fornecer.

Dependendo da forma que o questionário for aplicado, suas questões podem-

se tornar muito cansativas e pouco especificas.

2.5.2.2 – Verificação de documentos

A verificação de documentos é uma boa técnica na aquisição de requisitos

para o desenvolvimento de software, desde que, seja agregada a alguma outra

técnica de levantamento de requisitos. São muito úteis para levantar, dentre os

dados utilizados nos processos, quais tem realmente alguma importância ou se está

faltando algum dado adicional que não esteja sendo requisitado nos documentos.

22 Termo em inglês cujo significado quer dizer “no lugar”. No contexto entende-se “no ambiente”.

Page 42: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

42

Como por exemplo, um formulário de requisição onde pode haver campos ou

lacunas que nunca foram utilizados ou sua inexistência para alguma informação

essencial ao processo que nunca fora solicitado.

2.5.2.3 – Cenários participativos

Em uma empresa, muitas vezes têm-se várias pessoas envolvidas em

processos onde, por sua vez, cada uma detém uma parte da informação. E, algumas

vezes, o responsável pelo departamento pode não dominar todos os processos.

Nesses casos fica difícil para o analista unir todas essas informações

desencontradas para ter uma visão detalhada do processo como um todo.

Para isso, o analista pode utilizar a técnica de cenários participativos tais

como: brainstorming23 (“tempestade de idéias”) e JAD (Joint Application Design –

Reuniões de Projeto) que nada mais são do que reuniões entre os usuários / cliente

e desenvolvedores e demais envolvidos no projeto.

Em uma sessão utilizando a técnica JAD, participam: líder da sessão;

especialistas nos assuntos técnicos e do negócio do cliente; executivo responsável /

patrocinador; representantes dos usuários; gerente de projeto; observadores

passivos e ativos (podem opinar); responsável por documentar os requisitos

levantados nas reuniões.

São realizados várias sessões onde serão discutidos com todas as pessoas,

ou seus representantes, envolvidas nos processos da organização. Dessa forma fica

mais produtivo o trabalho de levantamento de requisitos e pode-se evitar conflito,

falta ou equívoco de informações.

2.5.2.4 – Entrevistas

As entrevistas auxiliam no processo de levantamentos de requisitos. Ao

entrevistar os envolvidos, deve-se ter objetividade nas perguntas, tratar as

23 O brainstorming (ou "tempestade de idéias") mais que uma técnica de dinâmica de grupo é uma atividade desenvolvida para explorar a potencialidade criativa do indivíduo, colocando-a a serviço de seus objetivos. Quando se necessita de respostas rápidas a questões relativamente simples, o brainstorming é uma das técnicas mais populares e eficazes. Disponível em: <http://pt.wikipedia.org/wiki/Brainstorming>.

Page 43: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

43

informações da forma mais clara possível e, coletar de documentos utilizados pelo

usuário os quais auxiliarão os analistas no desenvolvimento da solução.

Quando o assunto necessitar de requisitos mais detalhados o ideal é

entrevistar o funcionário que trata do respectivo assunto, tomando alguns cuidados

ao fazer entrevistas, tais como:

• Conversar com o responsável de um determinado setor antes de

entrevistar o funcionário, pois deve-se seguir a hierarquia da organização;

• Verificar com o funcionário entrevistado a sua disponibilidade de horário e,

durante a entrevista, não tomar mais tempo do que o combinado;

• Sempre verificar se o entrevistador entendeu todas as informações que o

funcionário tentou passar.

Lembre-se que “... a pessoa é a especialista no que faz e você apenas busca

informações.” (TONSIG, 2003: 100)

2.5.2.5 – Observação in-loco

Aliada a entrevista, a observação in-loco auxilia no levantamento de requisitos

durante as atividades no dia-a-dia do cliente por um período de alguns dias. Isso

permite observar detalhes que não seriam possíveis de serem abordados em uma

entrevista. A observação in-loco também pode ser adotada para esclarecer dúvidas

sobre algum requisito levantado durante uma entrevista.

Em questões que envolvem planejamentos estratégicos, não cabe a

observação in-loco como método para levantamento de requisitos, pois nesse caso

as ações são planejadas independentes dos processos. Nesse caso o analista deve

estar ciente desse fato, pois o software deverá executar o que se planeja.

2.5.3 – Análise dos requisitos

A análise de requisitos, também conhecida como especificação de requisitos,

é a fase onde, de posse dos requisitos levantados anteriormente, tenta-se unir todas

as necessidades do cliente na construção de um modelo que irá servir de base para

desenvolver o sistema.

Page 44: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

44

Nessa fase, ao analisar os requisitos e desenvolver um sistema que atenda

as necessidades do cliente, não são analisados os ambientes tecnológicos onde o

sistema irá atuar. Primeiro “É necessário saber o que o sistema proposto deve fazer

para, então, definir como esse sistema irá fazê-lo.” (BEZERRA, 2002: 24)

Basicamente dois tipos de modelos serão criados durante o processo de

analise: a modelagem de sistema e a modelagem de dados24. Depois de criados os

modelos, os mesmos precisam ser validados e verificados. A validação garante que

as necessidades e funcionalidades que o cliente necessita estão sendo atendidas, e

a verificação garante que os requisitos estão sendo atendidos.

A análise pode ser feita através de vários métodos de desenvolvimento de

software, como por exemplo: estruturado, essencial e orientados a objetos. Uma

abordagem mais detalhada sobre análise orientada a objetos pode ser visto no

capítulo 3, os demais métodos não serão abordados nesse trabalho.

2.5.4 – Especificação de requisitos

A especificação de requisitos é realizada quando a tarefa análise encontra-se

no auge de suas atividades. Nesta etapa, as funções de sistema, levantadas

anteriormente, são refinadas e documentadas em detalhes, são especificadas metas

e objetivos que o software deverá tratar.

Tudo será incorporado ao planejamento do desenvolvimento do software

juntamente com as especificações das funcionalidades para cada necessidade

levantada ou apresentada pelo cliente. Também serão definidos quais serão os

critérios de validação (testes). Os tipos de testes são apresentados no item 2.9.

O documento criado acompanha: bibliografia contendo documentos

relacionados ao software, documentos de referência técnica, informação sobre

fornecedores, e apêndice com informações adicionais. Um eventual protótipo

executável do software e uma versão preliminar do manual do usuário também

podem acompanhar o documento.

O planejamento de desenvolvimento do software é entregue para análise e

ciência do cliente. A partir desse ponto, qualquer outro requisito ou mudança no

software acarretará em mudança de custo e poderá afetar o cronograma. 24 Por este se tratar de um trabalho onde o foco principal é a modelagem de sistema orientado a objetos não será abordado a modelagem de dados.

Page 45: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

45

2.6 – Projeto do Software

Na etapa de desenvolvimento, os aspectos tecnológicos, que até então foram

deixados de lado, passam a ter sua verdadeira importância no projeto. É no projeto

que define-se como o software atenderá os requisitos levantados, e ao mesmo

tempo, respeitando os limites tecnológicos.

Dependendo do tipo de análise adotada, estruturada ou orientada a objetos,

diferentes ferramentas de trabalho no projeto do software serão utilizadas. Pode-se

adotar que teremos basicamente: projeto da base de dados, projeto da arquitetura

do sistema, projeto de interface.

2.7 – Projeto de Interface Homem-Computador (IHC)

De acordo com Pressman (2002: 393), o projeto de interface do homem com

o computador visa criar meios para que o usuário interaja e se comunique com o

sistema. O objetivo do projeto é identificar objetos e suas ações para a criação de

uma tela de sistema seguindo um conjunto de princípios de projeto.

Cada tipo diferente de sistema apresenta uma interface própria. Quando trata-

se de usuários com deficiências físicas o tipo de interface necessita ser bem

elaborada. Projetos de interfaces baseados em comando de voz já é uma realidade

no Brasil que auxiliam portadores de deficiência na utilização do computador 25.

“O projeto de interface focaliza três áreas de preocupação: (1) o projeto de

interface entre componentes do software, (2) o projeto de interfaces entre o

software e outros produtores e consumidores de informação não-humanos (i.

e., outras entidades externas) e (3) o projeto de interfaces entre um ser

humano (i. e., o usuário) e o computador.” (PRESSMAN, 2002: 393).

Um projeto de interface homem-computador precisa atender as necessidades

do usuário. Pressman (2002: 394), citando Mandel (1997), relaciona três “regras de

25 Mais informação sobre o programa de interface brasileiro baseado em comando de voz, chamado MOTRIX, encontra-se disponível em: <http://intervox.nce.ufrj.br/motrix/>. Acessado em: 02/Jul/06.

Page 46: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

46

ouro” que servem de base formando um conjunto de princípios para um projeto de

interface com o usuário.

“1. Coloque o usuário no controle;

2. Reduza a carga de memória do usuário;

3. Faça interface consistente.”

O projeto de interface deve partir das necessidades do usuário e deve causar

o menor impacto possível no seu cotidiano. Interfaces gráficas cheias de menus e

botões acabam confundindo os usuários criando uma resistência na utilização do

novo sistema.

Utilizando a regra nº 1, Pressman (2002: 394), citando Mandel (1997),

explana alguns princípios que colocam os usuários no controle de projeto de

interfaces:

• “Defina os modos de interação de uma forma que não force o usuário a

ações desnecessárias ou indesejadas.” O programa deve fornecer ao usuário a

possibilidade de ativar e desativar opções do programa sem esforço.

• “Proporcione interação flexível.” O programa deve permitir que o usuário

escolha o melhor meio para interagir com o sistema. Como por exemplo: mouse,

teclado, caneta ótica ou reconhecimento de voz.

• “Permita que a interação com o usuário possa ser interrompida e desfeita.”

Deve ser permitido ao usuário interromper uma ação, ou desfazê-la, sem que o

usuário perca o trabalho que já foi feito.

• “Simplifique a interação à medida que os níveis de competência progridem

e permita que a interação seja personalizada.” Quando usuários fazem uma

operação repetitiva, sugere-se projetar para os usuários mais avançados um

mecanismos para automatizar esse processo (macro).

• “Esconda detalhes técnicos internos do usuário esporádico.”26 Deve ficar

oculto para o usuário a execução de comandos internos à aplicação, como por

exemplo, a digitação de comandos do sistema operacional.

• “Projete a interação direta com objetos que aparecem na tela.” O usuário

tem maior facilidade de interação com objetos ao executar uma ação, como por

exemplo clicar no desenho de uma impressora quando quer imprimir um relatório.

26 Usuário esporádico é aquele que tem um nível de conhecimento razoável do sistema.

Page 47: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

47

Na regra nº 2, propõe não sobrecarregar a memória do usuário fazendo-o

lembrar de comandos do sistema, isso o induz ao erro. Sempre que for possível o

programa deve sugerir ações ao usuário fornecendo dicas e assistência.

Pressman (2002: 395), citando Mandel (1997), relaciona a teoria de projeto de

interface para reduzir a carga de memória do usuário.

• “Reduza a demanda de memória de curto prazo.” No projeto da interface,

deve-se tentar não forçar a memória do usuário para lembrar de ações e resultados

anteriores.

• “Estabelece defaults 27 significativos.” Deve ser permitido ao usuário alterar

as configurações do sistema de acordo com a sua preferência, mas deve estar

disponível uma opção destinada à voltar para configuração padrão.

• “Defina atalhos que são intuitivos.” Ao definir atalhos no sistema, a

seqüência de teclas deve ser sugestiva de acordo com a ação proposta, como por

exemplo as teclas <CTRL> + P para imprimir.

• “O leiaute visual da interface deve ser baseado numa metáfora do mundo

real.” A interação entre o usuário e uma interface é maior quando esta possuir uma

visualização familiar para o usuário, como por exemplo um formato de formulário de

requisição que o usuário esteja habituado a utilizar.

• “Revele informação de um modo progressivo.” A interface deve fornecer

informações, em primeira instancia, de uma forma generalizada e com grande nível

de abstração. Caso o usuário necessite especificar detalhes dessa informação a

interface deve fornecer maiores detalhes de como essa informação pode ser exibida.

Na regra nº 3, para fazer uma interface consistente implica dizer que:

“...(1) toda a informação visual seja organizada de acordo com um padrão de

projeto que é mantido ao longo de todos os mostradores de tela, (2)

mecanismos de entrada são restritos a um conjunto limitado que é usado

consistentemente ao longo de toda a aplicação e (3) mecanismos para

navegar de tarefa a tarefa são consistentemente definidos e implementados.”

(PRESSMAN, 2002: 396)

27 Palavra da língua inglesa. Refere-se a um valor pré-definido que pode ser atribuído a um parâmetro do sistema.

Page 48: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

48

Pressman (2002: 396), citando Mandel (1997), esclarece um conjunto de

teorias que auxilia a fazer a interface consistente:

• “Permita ao usuário situar a tarefa atual num contexto significativo.” Muitas

interfaces são construídas com diversas telas com vários sub-níveis cada. A

interface para permitir ao usuário se situar, deve fornecer indicadores, tais como:

títulos nas janelas ou ícones gráficos, dessa forma o usuário consegue associar uma

tarefa a uma localização especifica.

• “Mantenha consistência ao longo de uma família de aplicações.” Na

interface deve ser mantido a forma de interação para a mesma família de aplicação.

• “Se modelos interativos anteriores criaram expectativas para o usuário, não

faça modificações, a menos que haja forte razão para isso.” As seqüências de

interação que forem bem assimiladas pelos usuários, eles esperarão que todos as

interfaces adotem o mesmo tipo de interação, como por exemplo o atalho <ALT>+S

para salvar se for alterado poderá induzir o usuário ao erro.

A experiência do usuário com o sistema, o nível de conhecimento dos

usuários e a análise do ambiente onde o usuário encontram-se sempre devem ser

levados em conta na hora de se projetar um modelo de interface. Para projetar uma

interface, devem-se analisar os objetos e as ações que o usuário utiliza, isso servirá

de base para a criação das ações da interface.

Pôde-se observar que o projeto de uma interface é muito complexo e não é o

objetivo desse trabalho entrar em detalhes referente a interfaces.

2.8 – Implementação do Software

Na etapa de implementação, é onde o software “sai do papel” para começar a

se tornar um produto real. Todas as partes do projeto serão codificadas através de

várias ferramentas de programação.

A base de dados, dependendo dos requisitos, provavelmente deverá ser

implementada em um Sistema Gerenciador de Bando de Dados (SGBD), o projeto

da arquitetura definirá a linguagem de programação.

O projeto de interface pode ser implementado de diversas formas,

dependendo de qual maneira serão feitas as entradas e saídas de dados no

sistema.

Page 49: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

49

2.9 – Testes do Software

Uma maneira eficaz de constatar se o software que foi projetado atende os

requisitos levantados e a necessidade do cliente é executar “testes de software “ ou

“verificação e validação” (V & V) do software.

“Teste de software é um elemento crítico da garantia de qualidade de

software e representa a revisão final da especificação, projeto e geração de código.”

(PRESSMAN, 2002: 429).

Existem diversos tipos de testes, um para cada situação e para cada tipo de

software. Abaixo segue uma lista de alguns tipos diferentes de testes que podem ser

empregados testar um software:

• Teste caixa-branca ou caixa de vidro;

• Teste de caminho básico;

• Teste de estrutura de controle;

• Teste caixa-preta ou comportamental;

• Teste de ambientes, arquiteturas e aplicações especializadas:

o Teste de GUI (Graphical User Interfaces 28);

o Teste de arquitetura cliente / servidor29;

o Teste da documentação e dispositivos de ajuda;

o Teste de sistemas de tempo real30.

Não basta ter a ferramenta e não saber como usá-la, o mesmo acontece com

os testes. Os chamados “casos de teste” devem ser cuidadosamente preparados de

acordo com o sistema a ser testado. A elaboração de um conjunto de diferentes

métodos de teste dá-se o nome de estratégias de teste.

As estratégias de testes são aplicadas desde o nível mais baixo (código) até o

nível mais alto. Em cada etapa de nível de teste são aplicadas diferentes estratégias

de teste, como segue:

• Teste de unidade utiliza:

28 É uma palavra da língua inglesa que significa Interface Gráfica com o Usuário. Refere-se as telas gráficas de sistemas baseado em janelas, tais como: Microsoft Windows ™. 29 Tipo de arquitetura onde o sistema do computador do usuário conecta-se a um servidor de aplicação ou sistema de base de dados. 30 Tipo de sistema onde as interações entre o sistema e os usuários ocorrem simultaneamente ou em um intervalo muito curto de tempo.

Page 50: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

50

o Teste caixa-branca

• Teste de integridade utiliza:

o Teste de integração descendente

o Teste de integração ascendente

o Teste de regressão

o Teste fumaça

• Teste de validação utiliza:

o Teste caixa-preta

o Teste Alfa (Teste com usuário sob a supervisão do desenvolvedor)

o Teste Beta (Teste somente com o usuário)

• Teste de sistema.

o Teste de recuperação

o Teste de segurança

o Teste de estresse

o Teste de desempenho

Relatórios são os resultados da etapa de testes. De acordo com Pressman

(2002: 429), nessa etapa é gasto de 30% a 40% do esforço total do projeto.

Não é o objetivo desse trabalho se aprofundar no assunto de testes de

software. Maiores detalhes sobre esse assunto podem ser encontrados em

Pressman (2002: 429-496, 617-636).

2.10 – Implantação do Software

Nessa etapa o software é embalado, distribuído e instalado no usuário e se

for o caso os dados são importados. Em alguns casos ocorrem migrações de

sistemas. Os manuais são escritos, e os usuários são treinados.

Dependendo do porte do sistema ele poderá demorar meses ou até anos para

ser implantado completamente.

Alguns problemas podem surgir nessa fase:

1. Houve mudança do ambiente onde inicialmente foi feito o levantamento de

requisitos;

2. Os usuários podem ter dificuldades de aceitação do novo sistema;

Page 51: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

51

3. O novo sistema e o sistema antigo podem ter que funcionar

simultaneamente até que o cliente sinta segurança como o novo sistema.

Pode ser que o novo sistema cause algum tipo de conflito com o sistema

antigo impossibilitando a sua implantação;

4. Problemas físicos de instalação, tais como: espaço físico, temperatura

controlada.

Uma vez colocado o sistema em produção, problemas não detectados

durante os testes podem aparecer devido alguma falha durante o levantamento de

requisitos ou no decorrer do processo de desenvolvimento.

Essa será uma fase de adaptação para os usuários até que eles se

acostumem com o novo sistema. Erros de operação podem ocorrer.

2.11 – Evolução do Software

A evolução do software é a fase onde corrige-se os erros do software

encontrados após a sua implantação e também faz-se o aperfeiçoamento

implementando novos requisitos e funcionalidades para o sistema.

Segue abaixo algumas observações sobre as evoluções de sistemas:

“1. As mudanças propostas precisam ser analisadas muito cuidadosamente,

tanto sob uma perspectiva de negócios como de acordo com os aspectos

técnicos.(...)

2. Como os subsistemas nunca são inteiramente independentes, as mudanças

em um subsistema podem afetar adversamente o desempenho e o

comportamento de outros subsistemas.(...)

3. As razões das decisões de projeto originais muitas vezes não ficam

registradas. Os responsáveis pela evolução de sistemas precisam entender por

que foram tomadas determinadas decisões de projeto.

4. À medida que os sistemas ‘envelhecem’, sua estrutura se torna tipicamente

corrompida por mudanças, de modo que aumentam os custos referentes a

novas mudanças.” (SOMMERVILLE, 2003: 30).

Page 52: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

52

Capítulo 3. Análise Orientada a Objetos com UML

Antes de fazer qualquer citação sobre a análise orientada a objeto, vamos

abordar os conceitos de orientação a objetos.

3.1 – Conceitos de Orientação a Objeto

Na análise orientada a objetos as funcionalidades do sistema são vistas na

forma de objetos31, onde cada objeto tem seus próprios métodos32 compostos por

rotinas independentes que se relacionam com outros objetos.

3.1.1 - Objetos

Melo (2006: 12) define que, na modelagem de sistema orientado a objetos,

um objeto é qualquer coisa existente no mundo real, seja material ou conceitual. Por

exemplo: carro, bola, bicicleta, caneta, livro, escola, professor, aluno, disciplina.

Pressman (2002: 534) explica que cada um desses objetos são membros de

uma classe mais ampla de objeto. Por exemplo, o objeto carro pode ser um membro

da classe (também chamado de instância) automóvel que também é outro objeto.

Utilizando o conceito de objeto fica mais fácil fazer a modelagem de sistemas,

e também permite que os usuários e clientes compreendam e participem da

validação dos diagramas ativamente e vejam como o sistema está sendo

desenvolvido evitando dúvidas nos requisitos.

Cada objeto possui características próprias denominadas atributo33. Seguindo

o exemplo do automóvel, seriam exemplos de seus atributos: quantidade de

passageiros, cor, modelo, ano, chassi, placa, capacidade de combustível, tipo de

combustível, motor, preço.

31 Na análise orientada a objetos, os objetos são representados por classes. Fazendo uma analogia com o processo de fritar um ovo, dependendo da abstração, podemos ter como objetos os substantivos: ovo, fogão e a frigideira. 32 Os métodos, também chamado de operação, definem o comportamento do objeto (classe). São as rotinas que determinam a ação do objeto. Ainda com a analogia de fritar um ovo podemos ter, por exemplo: na classe o ovo pode ter o método “quebrar o ovo”, o fogão pode ter o método “ajustar o nível do fogo”, e a frigideira pode ter o método “verificar a temperatura do óleo”. 33 Os atributos definem um objeto no contexto que está sendo analisado. Por exemplo, os atributos do objeto ovo podem ser: tipo, marca, tamanho.

Page 53: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

53

Os objetos, como o automóvel, possuem comportamentos tais como:

acelerar, brecar, abrir vidro, acender farol, buzinar, abrir porta, ligar motor. À

implementação desses comportamentos dá-se o nome de operações, também

chamados de métodos.

3.1.2 - Classes

“Uma classe é a representação de um conjunto de objetos que compartilham

a mesma estrutura de atributos, operações e relacionamentos dentro de um mesmo

contexto...” (MELLO, 2006: 17).

Segundo Pressman (2002: 534) a comunicação de uma classe, por exemplo,

automóvel, com outra classe, por exemplo, motorista, faz-se através de uma

mensagem. Na modelagem de sistemas orientada a objetos, se uma classe de

objeto necessita saber algum dado (atributo) de outra classe é enviado uma

mensagem de uma classe para outra que irá executar um método (operação) e obter

o dado desejado.

Melo (2006: 18) explica que num sistema orientado a objetos trabalhamos

com os objetos, chamados de instâncias, os quais são representados a partir de

uma classe. Os dados são carregados nas instâncias criadas. Na figura nº 9 é

exemplificado o conceito de instância de objeto.

Figura 9: Objeto e classe. (MELO, 2004: 18)

No exemplo acima, a partir da classe pessoa foi criado o objeto João, logo o

objeto João é do tipo Pessoa. Quem recebeu os dados foi o objeto João.

Para entender melhor, pode-se fazer uma analogia com uma fotocópia de um

formulário onde a partir de um original (classe) pode-se criar várias cópias

Objeto João

Nome Sexo

Data de Nascimento Estado Civil

Nome: João Souza Sexo: Masculino Data de Nascimento: 01/03/0960 Estado Civil: Casado

Atributos

Classe Pessoa

Atributos

é do tipo

Page 54: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

54

(instancias de objetos), os campos do formulário (atributos) a serem preenchidos

(dados) será o da cópia e não o original.

“Uma classe pode ter qualquer número de atributos ou mesmo nenhum

atributo. Da mesma forma, pode ter qualquer número de operações ou mesmo

nenhuma operação.” (MELLO, 2006: 18).

Podemos citar alguns tipos de classes:

Classe Objetos

Funcionário Funcionário Ana Cristina

Funcionário Gustavo

Empresa Empresa Casa de Festas ABC

Empresa Softwares Ltda.

Veículo Veículo Santana

Veículo Escort

Tabela 2: Classes e instâncias. (MELO, 2006: 18)

Segundo Pressman (2002: 536), por definição, todos os objetos instanciados

a partir de uma classe herdam seus atributos e métodos. Dá-se o nome de

superclasse (ou classe mãe) à classe principal, e dá-se o nome de subclasse (ou

classe filha) a classe criada (instanciada) a partir da superclasse. Maiores detalhes

sobre herança serão vistos no item 3.1.6.

Para se identificar as classes e objetos em um determinado contexto, deve-se

relacionar todos os substantivos que tem relação com o caso em questão.

Segundo Pressman (2002: 543), também podem ser tipos de objetos:

• Entidades externas: outros sistemas, dispositivos ou pessoas;

• Coisas: relatórios, cartas que façam parte do problema;

• Ocorrências: eventos que ocorram dentro do contexto do problema;

• Papéis: pessoas que exercem funções de gerente, vendedor;

• Unidades Organizacionais: divisão, grupo da organização;

• Lugares: que estabelecem contexto do problema;

• Estruturas: sensores, computadores.

Page 55: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

55

3.1.3 – Métodos, operações, serviços

Métodos definem o comportamento do objeto (classe) e podem modificar de

algum modo os atributos do objeto. São as rotinas que determinam a ação do objeto.

Segundo Pressman (2002: 538), os métodos também pode ser chamados de

operações ou serviços.

Por exemplo, na classe ‘Evento’ temos os atributos ‘nome’, ‘horarioInicio’,

‘duracao’, ‘dataRealizacao’ e ‘descricao’, quando alguma outra classe quiser

cadastrar dados para a realização de um evento será utilizado um método

‘‘cadastrarEvento’, previamente criado nessa classe. Para acessar esse método, a

classe que requisita essa informação envia uma mensagem34 para a classe veículo.

Figura 10:Representação de classe. (MELO, 2004: 101)

3.1.4 - Mensagens

“As mensagens são o meio pelo qual os objetos interagem” (PRESSMAN,

2002: 538). Ao modelar o sistema, ou seja, criando associações entre as classes

estabelecendo-se uma ligação entre elas. É através dessa associação que há a

troca de mensagens contendo: o nome da classe receptora, qual o tipo de operação

será realizado, e quais os parâmetros.

34 Mensagem é o meio pelo qual os objetos se comunicam uns com os outros.

Evento

cadastrarEvento() remarcarEvento()

nome horarioInicio duracao dataRealizacao descricao

nome da classe

atributos

operações

Classe

Page 56: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

56

3.1.5 - Encapsulamento

“Encapsulamento é o conceito que faz referência à ocultação ou

empacotamento de dados e procedimentos dentro do objeto.” (TONSIG, 2003: 169)

Figura 11: Encapsulamento (TONSIG, 2003: 169)

Melo (2004: 19) explica que a finalidade do encapsulamento é proteger os

atributos e as operações da classe. Com o auxílio de uma classe de interface35 é

possível que outras classes do sistema acessem as operações da classe

encapsulada, pois a interface serve de intermediaria na troca de mensagens.

Em uma classe encapsulada os atributos e operações ficam protegidos

impedindo que demais classes tenham acesso a eles. Sendo assim nenhuma classe

do sistema poderá enviar mensagens a uma classe encapsulada diretamente.

Somente a classe de interface poderá ter acesso a essas operações protegidas, ou

seja, a classe de interface recebe a mensagem e a encaminha a classe

encapsulada, e se for o caso, a classe encapsulada devolve o resultado para a

classe de interface e esta devolve ao destinatário.

Segue abaixo alguns benefícios importantes do encapsulamento:

• “Os detalhes internos de implementação dos dados e procedimentos são

ocultados do mundo exterior (..).

• As estruturas de dados e as operações que as manipulam são juntadas

numa única entidade denominada – a classe.(...)

35 A classe de interface é “oca”, ela não contém atributos e nem operações próprias. Serve apenas de intermediaria. É explicada no tópico 3.4.2.6.

Atributos do Objeto

Método A Método B

Método C

Método D

Método EMétodo F

Método G

Método H

Page 57: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

57

• As interfaces entre objetos encapsulados são simplificadas. Um objeto que

envia uma mensagem não precisa estar preocupado com os detalhes de

estruturas internas de dados.(...)” PRESSMAN (2002: 540).

3.1.6 - Herança

A herança, como o próprio nome sugere, tem como característica permitir que

as classes herdeiras, chamadas de classe-filha ou subclasse, recebam os mesmos

atributos e métodos da classe-mãe ou superclasse.

Quando falamos em herança, temos dois conceitos envolvidos: a

generalização e especialização.

A generalização é quando separamos os atributos mais genéricos da classe

filha para criar a classe mãe, por exemplo, seria como passar o atributo nome, da

classe funcionário para a classe pessoa.

A especialização é ao contrário, é quando separamos os atributos mais

específicos da classe mãe para criar a classe filha, por exemplo, seria como passar

o atributo matrícula, da classe pessoa para a classe aluno.

Um tipo especial de herança, chamada herança múltipla, é quando uma

classe filha (subclasse) possui duas ou mais classes mãe (superclasse) e herdam os

atributos e métodos de todas as superclasses. Nesse tipo de herança, a classe filha

também é conhecida como classe de junção.

Figura 12: Herança múltipla (BEZERRA, 2002: 195)

CarroAnfíbio

CarroAnfíbio CarroAnfíbio

Page 58: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

58

Figura 13: Herança (MELO, 2004: 21)

3.1.7 – Polimorfismo

O principio do polimorfismo é quando “...um objeto pode enviar a mesma

mensagem para objetos semelhantes, mas que implementam a sua interface de

formas diferentes.” (BEZERRA, 2002: 10).

De acordo com Melo (2004: 22), uma operação polimórfica pode ser

implementada nas classes filhas de forma diferente da classe mãe. Podemos tomar

como exemplo uma classe mãe chamada funcionário que possui uma operação

chamada CalcularSalário, essa classe possui uma classe filha chamada professor. A

classe professor também possui uma operação chamada CalcularSalário que calcula

o salário em horas enquanto a operação CalcularSalário da classe mãe calcula o

salário fixo.

Esse tipo de operação pode ser feito em diversos pontos da hierarquia desde

que a assinatura36 não se altere.

36 São os parâmetros que são colocados entre os parênteses da operação. São quantidade e tipos de argumentos e o tipo do valor resultante.

Page 59: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

59

Figura 14: Polimorfismo (MELO, 2004: 22)

Segundo Presmann (2002: 542), em uma operação onde a assinatura se

mantém inalterada é chamada de polimorfismo de inclusão. Quando a assinatura é

modificada temos o conceito de polimorfismo de sobrecarga.

3.2 – Análise Orientada a Objetos

Antes do surgimento da UML, Booch utilizava o método chamado de ‘análise

orientada a objetos’ (Object-Oriented Analysis, OOA), por sua vez Rumbaugh

utilizava a ‘técnica de modelagem de objetos’ (Object Modeling Technique, OMT) e

Jacobson usava a ‘engenharia de software orientada a objetos’ (Object-Oriented

Software Engineering, OOSE).

“Durante a última década, Grady Booch, James Rumbaugh e Ivar Jacobson

colaboraram para combinar as melhores características de seus métodos individuais

de análise e projeto orientados a objeto num método unificado.” (PRESSMAN, 2002:

563). A partir desse método surgiu a Linguagem de Modelagem Unificada (Unified

Modeling Language, UML).

Pressman (2002: 559) explica que, a análise orientada a objetos se inicia com

as descrições de casos-de-uso37, onde cada um dos casos-de-uso poderá ser

transformado em uma ou mais classes no decorrer da análise orientada a objetos.

Durante a análise orientada a objetos são definidos as classes (objetos) e a

forma como elas interagem entre si e com o mundo externo, suas funções internas

(atributos e operações), seus relacionamentos e a comunicação entre elas

(mensagens). 37 É uma descrição baseada em cenários mostrando como atores, que podem ser pessoas, máquinas e sistemas externos, interagem com o sistema que está sendo construído.

CLASSE FUNCIONÁRIO Operação CalculaSalário(mesReferencia: integer)

CLASSE PROFESSOR Operação CalculaSalário(mesReferencia: integer)

Page 60: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

60

Segundo Pressman (2002: 563), a UML permite que o projetista de software

modele o sistema com base em um conjunto de regras e símbolos. A representação

de um sistema em UML pode ser visto em 5 tipos de “visões”:

• Visão do modelo do usuário: Representa a visão do sistema do ponto de

vista do usuário;

• Visão do modelo estrutural: Visão dos dados e funcionalidades dentro do

sistema, os quais são modelados e se transformam em classes, objetos e

relacionamentos;

• Visão do modelo comportamental: Descreve os aspectos

comportamentais do sistema, e mostra como ocorre a interação com os

modelos do usuário e estrutural;

• Visão do modelo de implementação: Descreve como devem ocorrer as

construções dos aspectos estrutural e comportamental;

• Visão do modelo do ambiente: Descreve o aspecto estrutural e

comportamental do ambiente onde o sistema será implementado.

“Pode-se dizer que a análise vai se transformando em projeto à medida que o

desenvolvimento evolui.” (BEZERRA, 2002: 139).

“O projeto orientado a objetos (object-oriented design, OOD) transforma o

modelo de análise criado (...) num modelo de projeto que serve como documento

para a construção de software” (PRESSMAN, 2002: 589).

Bezerra (2002: 139) afirma que, as atividades executadas na fase de projeto

são:

1. Detalhamento dos aspectos dinâmicos do sistema: São construídos os

modelos de interações, modelos de estados e modelos de atividades.

2. Refinamento dos aspectos estáticos e estruturais do sistema: São

construídos os modelos de classes de domínio, de fronteira, de controle e

de entidade.

3. Definição de outros aspectos da solução: É analisado como o sistema

pode ser decomposto em diversos subsistemas, onde cada subsistema

será composto por várias classes.

Page 61: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

61

3.3 – Linguagem de Modelagem Unificada (Unified Modeling

Language, UML)

Conforme foi falado anteriormente Grady Booch, James Rumbaugh e Ivar

Jacobson foram os principais precursores da UML. A UML surgiu a partir da união de

vários modelos com o objetivo de criar uma linguagem única para a modelagem de

sistemas orientados a objetos. A primeira vez que a UML foi reconhecida e aprovada

pelo OMG38 foi em 1997.

A UML não é um método, é uma linguagem de modelagem que utiliza um

visual gráfico para construção e documentação de artefatos39 para sistemas

orientados a objetos. É composta por diversos componentes gráficos e diagramas, e

é independente de linguagem de programação e processos de desenvolvimentos.

O inicio da unificação foi em outubro de 1994 quando James Rumbaugh

deixou a General Electric e juntou-se a Grady Booch da Rational Software com o

objetivo de unir seus métodos. Em 1995 Ivar Jacobson também se juntou ao grupo e

em 1996 e eles passaram a ser conhecidos como ‘os três amigos’. Desde 1995 até

2004 a UML teve muitas versões e publicações (versão 0.8 em 1995, versão 0.9 e

0.91 em 1996, versão 1.0 e 1.1 em 1997, versão 1.2 e 1.3 em 1998, versão 1.4 em

2001, versão 1.5 em 2003 e finalmente a 2.0 em 2004). A partir do ano de 1997

novos integrantes se juntaram ao grupo que já tinha ganhado a confiança das

organizações.

As modelagens com UML são feitas com base em relacionamentos,

diagramas e regras de formatação. Neste tópico vamos dar ênfase à versão 1.4 da

UML, não veremos todos os elementos disponíveis40 da UML, somente alguns

conceitos e exemplos para o perfeito entendimento do estudo de caso apresentado

no capítulo 4.

3.4 - Diagramas

38 Abreviação da sigla Object Management Group. O OMG é um consórcio internacional que define e valida padrões na área de orientação a objetos (http://www.omg.org). 39 Artefato é qualquer coisa que pode ser utilizado durante a construção de um sistema. Ex: requisitos, arquitetura, testes, código-fonte, relatórios, croqui, planos de projetos, etc. 40 Mais informações sobre UML podem ser encontradas na Internet (http://www.uml.org).

Page 62: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

62

Segundo Booch (et al.: 2000: 89), o diagrama é um meio e representação

gráfica feita através de blocos, símbolos e vários elementos interligados entre si que

são utilizados para auxiliar o desenvolvimento do sistema fazendo com que todos

consigam ter a mesma perspectiva.

O UML possui diversos diagramas que permitem abordar diferentes aspectos

de maneira independentes que servem para validar os requisitos levantados junto ao

usuário / cliente e também para documentar o projeto que servirá de guia para a

equipe de desenvolvimento evitando assim problemas de interpretação.

3.4.1 – Diagrama de Caso de Uso (Use Case)

Melo (2004: 54) explica que, um caso de uso é uma maneira gráfica de relatar

o funcionamento de um sistema através de uma seqüência de ações que mostra um

cenário principal e um cenário alternativo (caso ocorra na seqüência principal algum

imprevisto).

Podemos exemplificar a descrição acima com o caso de uso: Emitir saldo em

um terminal de caixa eletrônico. Em um cenário principal, também é chamado de

cenário perfeito, teríamos:

Figura 15: Cenário Principal (MELO, 2004: 55)

Por mais bem projetado que seja o sistema é impossível que seja tudo

perfeito, cabe ao analista verificar as possibilidades de algo sair errado e tratar esse

erro. De posse da relação das probabilidades de algo sair errado criam-se cenários

alternativos.

Em um cenário alternativo usa-se o termo “encerar o caso de uso” para

indicar que a seqüência de ações foi interrompida por um determinado

acontecimento.

Cenário Principal 1. O sistema realiza a leitura do cartão magnético do correntista. 2. O sistema solicita a digitação da senha. O correntista digita a senha. 3. O sistema valida a senha. 4. O correntista seleciona a opção de saldo. 5. O sistema questiona o tipo de saldo: conta corrente, poupança, aplicações. 6. O sistema processa e mostra o saldo solicitado pelo cliente. etc.

Page 63: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

63

No exemplo da figura 16, Include é uma indicação que será incorporado a

esse caso de uso um outro caso de uso através de um relacionamento de inclusão.

Será visto em maiores detalhes no item 3.4.1.4.

Figura 16: Cenários alternativos (MELO, 2004: 56)

Faz parte da documentação de caso de uso a descrição das regras do

negócio. “Regras do negócio são políticas, condições ou restrições que devem ser

consideradas na execução dos processos existentes em uma organização.”

(GOTTESDIENER, 1999 In: BEZERRA, 2002: 70).

Segundo BEZERRA (2002:71), as regras de negócios podem ser

representadas através de descrição textual onde cada regra pode conter:

• Uma identificação, (por exemplo: RN01) dessa forma podem ser

referenciadas nas descrições de casos de uso;

• Um nome que seja possível fazer sua distinção;

• Uma fonte, quem forneceu essa regra de negócio;

• Um histórico, contendo uma data de referência ou alguma informação

adicional.

As regras de negócio são obtidas na fase de levantamentos de requisitos

(visto no item 2.5.2), tem influência na lógica de programação e podem estar

relacionadas a um ou vários casos de uso.

Bezerra (2002: 84) sugere um modelo de descrição de caso de uso um pouco

diferente do anterior que pode ser visto no anexo A (Modelo de Descrição de Caso

de Uso).

Alternativa: Problema na leitura do cartão magnético 1a) Se o sistema não conseguir ler os dados do cartão magnético, tentar nova

leitura por, no máximo, mais duas vezes. Caso persista o problema, encerrar o caso de uso.

Alternativa: Senha Inválida 3a) Se a senha digitada pelo correntista não for igual à senha cadastrada no

sistema, informar ao mesmo e solicitar nova digitação. Esse processo pode ser repetido por no máximo três tentativas (incluindo a primeira). Após a terceira tentativa, a conta do usuário deverá ser bloqueada e o caso de uso encerrado. Include Bloquear Conta.

Alternativa: Conta Inexistente 6a) Se o correntista não possuir o tipo de conta selecionada, informar ao

mesmo e encerrar o caso de uso.

Page 64: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

64

No diagrama de caso de uso todos os meios externos (ex.: sistemas externos,

usuário ou grupo de usuários) que interagem com o sistema são chamados de

atores. Na modelagem de caso de uso os atores ficam separados dos casos de uso

por uma fronteira do sistema (system boundary), os atores do lado de fora e os

casos de uso do lado no seu interior.

Figura 17: Representação de fronteira do sistema (MELO, 2004: 68)

3.4.1.1 – Associação (Association)

A associação é a forma que um ator interage com um ou mais casos de uso

do sistema. Essa interação é feita através do envio e recebimento de mensagens.

A associação só pode ser utilizada entre atores e casos de uso.

Figura 18: Representação de uma associação (MELO, 2004: 65)

3.4.1.2 – Generalização (Generalization)

A generalização utiliza o mesmo conceito proveniente da herança em

orientação a objetos, ou seja, casos de uso podem ser genéricos ou específicos. Por

exemplo: Podemos ter um caso de uso Cadastrar Funcionário onde relacionados a

Page 65: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

65

este temos Cadastrar Professor. O caso de uso Cadastrar Funcionário é uma

generalização, Cadastrar Professor são especializações, ou tipo de funcionário. O

mesmo acontece com atores, nesse exemplo o ator Gerente tem suas

responsabilidades e também herda as responsabilidades do ator Vendedor.

Generalizações só ocorrem entre casos de uso ou entre atores.

Figura 19: Representação de um relacionamento de Generalização41 (MELO, 2004: 67)

3.4.1.3 – Extensão (Extend)

Melo (2004: 61) explica que um “...relacionamento de extensão entre casos

de uso indica que um deles terá seu procedimento acrescido, em um ponto de

extensão, de outro caso de uso, identificado como base.”

Figura 20: Representação de um relacionamento Extend (MELO, 2004: 67)

41 Considere que o Gerente também é um vendedor e possui as mesmas responsabilidades e algumas a mais.

Page 66: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

66

A extensão é usada para relacionar casos de uso que possuem ações que

tem ocorrências eventuais, opcionais ou exceções, por exemplo, os cenários

alternativos.

Pode-se observar que a palavra extend está entre dois símbolos, guillemets

(«»), a essa nomenclatura dá-se o nome de estereótipo.

Extensão somente é utilizada entre casos de uso. Um caso de uso pode ter

vários pontos de extensão.

3.4.1.4 – Inclusão (Include)

Inclusão, como o próprio nome diz, inclui as ações de um caso de uso em

outro. Tem como vantagem utilizar as mesmas ações do caso de uso incluído em

vários outros casos de uso evitando a cópia de várias ações repetidas.

Normalmente é utilizada a inclusão quando existe um pré-requisito para que

uma ação aconteça. O exemplo abaixo mostra a inclusão do caso de uso Validar

Matricula que é incluído ao matricular o aluno (caso de uso Matricular Aluno) ou ao

emitir o histórico escolar (caso de uso Emitir Histórico Escolar).

Inclusão somente é utilizada entre casos de uso. Um caso de uso pode ter

vários pontos de inclusão.

Figura 21: Representação de um relacionamento Include (MELO, 2004: 66)

3.4.2 – Diagrama de classes

Page 67: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

67

A função do diagrama de classes é criar relacionamentos entre as classes

fazendo com que elas troquem mensagens para que suas operações possam ser

acessadas e assim obter a funcionalidade do sistema.

Como foi visto na figura 10, uma classe tem a representação gráfica de um

retângulo dividido em três compartimentos. Melo (2004: 101) explica que essa

“...divisão corresponde à notação básica dos diagramas de classe”.

• Na parte superior fica o nome da classe, centralizado e em negrito. As

iniciais do nome deve ser em maiúsculo, se for nome composto não pode

haver espaço.

• Na parte central a lista de atributos deve ser escrita com formatação

normal alinhado à esquerda. Os nomes dos atributos iniciam-se com letra

minúscula, e se for nome composto, o segundo nome deve ser escrito em

letra maiúscula sem espaçamento.

• Na parte inferior a lista de operações escritas da mesma forma que os

atributos.

Mas antes de começarmos a criar diagramas, alguns conceitos precisam ser

vistos.

3.4.2.1 – Visibilidade

Em uma classe temos atributos e operações que podem ter seu parâmetro de

visualização de diversas formas. A visualização permite que atributos e operações

sejam visualizados totalmente, parcialmente por outras classes ou não visualizados,

nesse último caso somente a própria classe poderá visualizá-los.

Os parâmetros de visualização são os seguintes:

• public (publico) ou +

• protected (protegido) ou #

• private (privado) ou –

• package (pacote) ou ~

Public (+): é visualizado por todos os elementos do sistema, com a ressalva

de pacotes externos42. Pacotes externos poderão obter acesso aos valores públicos

42 São utilizados em sistemas de médio e grande porte. Em um sistema têm-se subsistemas, cada subsistema é composto por vários elementos do modelo UML que são agrupados, a esse agrupamento dá-se o nome de pacote.

Page 68: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

68

dos atributos e das operações da classe se o mesmo puder visualizar o pacote onde

está a referida classe.

Protected (#): é visualizado pela própria classe e pelas classes descendentes

(herança).

Private (-): é visualizado apenas dentro da própria classe. Outros elementos

associados a essa não terão acesso.

Package (~): pode ser visualizado por todos os elementos dentro do pacote

onde encontra-se a referida classe.

3.4.2.2 – Multiplicidade

A multiplicidade é “...a quantidade de instâncias possíveis em um

relacionamento.” (MELO, 2004: 96).

Vamos tomar como exemplo a classe EmissoraTv e a classe Comercial:

• Uma emissora de TV transmite nenhum ou vários comerciais, e um

comercial pode ser veiculado por nenhuma ou até oito emissoras.

A figura 22 possui a representação gráfica dessa multiplicidade. Nota-se que

existe um limite-inferior e limite-superior.

Figura 22: Multiplicidade numa associação. (MELO, 2004: 111)

Exemplos de multiplicidades mais utilizadas:

• 0..1 = nenhum ou um;

• 1 ou 1..1 = apenas um;

• * ou 0..* = nenhum ou vários, ou seja, qualquer valor.

• 1..* = um ou vários.

3.4.2.3 – Atributos e Operações

EmissoraTV Comercial0..8 0..*

Page 69: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

69

Ao definir os atributos informa-se seu nome, tipo, valor inicial, visibilidade.

Alguns parâmetros são opcionais, obrigatoriamente precisam ser informados o nome

e tipo.

Visibilidade: +, -, # ou ~.

Tipo: inteiro (integer), real, texto (string), entre outros.

Multiplicidade: se for exatamente 1 poderá ser omitida.

Valor-default: valor inicial do atributo no momento que o objeto é instanciado.

Segue alguns exemplos abaixo:

• private Senha: string

(visibilidade privado, nome do atributo Senha do tipo string – texto).

• + tamanho: integer

(visibilidade publica, nome do atributo tamanho do tipo integer – inteiro).

• angulos: integer [3]

(a classe tem de um a três angulos)

• nota1: real = 0

(define o tipo de atributo e atribui o valor inicial)

Existe um atributo chamado: atributo derivado. Atributo derivado é um

atributo cujo valor é calculado com base em outros atributos da mesma classe. A

identificação visual desse tipo de atributo é feito com uma barra ( / ) à frente do

nome do atributo.

As operações também possuem visibilidades similares à dos atributos.

Operações podem passar e / ou retornar algum tipo valor, por isso também precisa-

se saber seu tipo. Segue abaixo exemplos de sintaxe:

• private obterSenha: string

(visibilidade privado, nome da operação Senha, recebe valor do tipo string –

texto).

• + modificarTamanho (iTamanho: integer)

(visibilidade publica, nome da operação iTamanho envia valor do tipo integer

– inteiro).

• + modificarTamanho (iTamanho: integer)

Na operação existe um conceito muito importante, refere-se à assinatura da

operação. A assinatura da operação é como se chamam os parâmetros que são

Page 70: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

70

passados entre os parênteses de uma operação. No exemplo abaixo, percentual:

real é a assinatura da operação.

• reajustarSalario(percentual: real)

3.4.2.4 – Relacionamentos

É através do relacionamento que as classes estabelecem a comunicação,

trocam mensagens e colaboram umas com as outras. Os relacionamentos, que

veremos a seguir, podem ser de associação, generalização, dependência,

agregação e composição.

3.4.2.4.1 – Associação

A associação pode relacionar duas classes (associação binária), três classes

(associação ternária), mais de três classes ou apenas uma classe se relacionando

com ela mesma (auto-relacionamento).

A associação é representada por uma linha contínua ligando as classes, o

nome da associação pode ser mostrado para indicar a ação. Segundo Melo (2004:

109), o auto-relacionamento também é uma associação binária.

Figura 23: Representação de associação (MELO, 2004: 109).

Em uma associação ternária, um losango é usado para unir as conexões.

Melo (2004: 109) explica, que na figura 24 um Jogador joga por uma equipe

em uma determinada Temporada (ano) e uma Equipe possui Jogadores diferentes

em cada Temporada.

Aluno Disciplina Funcionário

Page 71: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

71

Figura 24: Representação de uma associação ternária (MELO, 2004: 109).

3.4.2.4.2 – Generalização

O relacionamento de generalização é mostrado graficamente como uma linha

contínua com uma flecha vazada apontando para a classe-mãe, ou seja, a classe

mais genérica. O outro lado da linha liga a classe filha, ou seja, a classe mais

específica.

De acordo com Booch (et al.: 2000: 63) os relacionamentos de generalização

também são chamados de relacionamentos é um tipo de um item. Conforme

explanado sobre herança no item 3.1.6, classes mais específicas (classe filha)

herdam as propriedades da classe genérica (classe mãe).

A generalização pode ser representada de duas formas. As duas formas

estão sendo apresentadas na figura 25.

Figura 25: Representação de generalização (MELO, 2004: 113)

Segunda forma de representação

Pessoa

Cliente Fornecedor Funcionário

Pessoa

Cliente Fornecedor Funcionário

Primeira forma de representação

Equipe Jogador

Temporada

Page 72: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

72

A herança permite que as classes filhas herdem tanto os atributos quanto as

operações da classe mãe. Observemos o exemplo a seguir:

Figura 26: Definição de operações Polimórficas. (BEZERRA, 2002: 201)

A classe Funcionário possui uma operação obterPagamento a partir do salario

base, a classe Vendedor tem seu salário calculado de forma diferente da operação

herdada então essa operação é redefinida na classe Vendedor, ou seja, seu código

é re-escrito. Dá-se o nome de Polimorfismo a essa operação.

3.4.2.4.3 – Dependência

Segundo Booch (2000: 451), dependência é um relacionamento entre dois

elementos, em que a alteração de um elemento (o independente) poderá afetar o

outro elemento (o dependente).

A indicação da dependência é feita com uma linha tracejada com uma seta

aberta apontando para o item independente, conforme a figura abaixo.

Figura 27: Dependência (MELO, 2004: 116)

Funcionário

+ obterPagamento(): Moeda + definirSalarioBase(in umSalario: Moeda) + obterSalarioBase(): Moeda

- salarioBase: Moeda

Vendedor

+ obterPagamento(): Moeda

- comissao: Porcentagem

AgendaConsulta HorarioMedico

Page 73: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

73

No exemplo anterior a classe AgendaConsulta depende de HorarioMedico.

Qualquer alteração em HorarioMedico afetará a classe AgendaConsulta.

“Na assinatura de uma operação, uma classe aparece como parâmetro.”

(MELO, 2004: 116). Na figura 28, pode-se observar que na classe abaixo a

operação playOn aparece com o nome da classe dependente como parâmetro.

Figura 28: Assinatura da Dependência (BOOCH, 2000: 63)

3.4.2.4.4 – Agregação

É uma associação somente entre duas classes independentes onde sua

existência não depende uma da outra. É utilizada quando deseja-se fazer um

relacionamento todo/parte, ou seja, quando um objeto do todo é formado por

objeto(s) da(s) parte(s).

Esse relacionamento é do tipo tem-um, e é representado por uma linha

contínua com um pequeno losango em uma das extremidades. O losango aponta

para a agregação (todo), enquanto a outra extremidade aponta para a classe

agregada (parte).

No exemplo da figura 29 uma Empresa tem muitos Departamentos.

Figura 29: Agregação (BOOCH, 2000: 66)

FilmClip

playOn(c: Channel) start() stop() reset()

Channel

name

Empresa

Departamento

todo

parte

agregação 1

*

Page 74: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

74

3.4.2.4.5 – Composição

A composição é uma variação da agregação, o relacionamento é do tipo

composto de algum elemento da mesma forma que na agregação o todo e a parte.

A diferença da composição é que a classe parte não pode fazer parte de nenhuma

outra composição.

Outra diferença é que a classe composta (todo) é responsável por criar e

destruir43 sua(s) parte(s). Caso a classe composta for destruída suas partes também

serão.

A representação do relacionamento de composição é feita com uma linha

contínua e um losango preenchido, sendo que o losango fica posicionado na classe

composta e a outra extremidade da linha nas partes.

No exemplo da figura 30, diz-se que a Janela é composta de Moldura.

Figura 30: Composição (BOOCH, 2000: 148)

3.4.2.4.6 – Realização

Realização “... é um relacionamento entre uma especificação e sua

implementação.” (MELO, 2004: 42).

Segundo Booch (2000: 150), a realização é na maioria das vezes utilizada

para especificar um relacionamento entre uma classe de interface ou componente

que fornece uma operação ou serviço para a interface.

43 Na programação orientada a objetos, criam-se objetos a partir de uma classe e os objetos criados podem ser destruídos após sua utilização.

Janela

Moldura

todo

parte

composição 1

*

Page 75: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

75

A realização é representada por uma linha tracejada com uma seta fechada e

vazia. Poderemos ver uma aplicação do relacionamento de realização, na figura 33

no item 3.4.2.6, onde falaremos de classes de Interface.

3.4.2.5 – Classe de associação

“Em uma associação entre duas classes, a própria associação poderá ter

propriedades” (BOOCH, 2000: 148).

A classe de associação surge na modelagem quando existe uma associação

de muitos para muitos, por exemplo, conforme a figura 31, uma Pessoa pode

trabalhar em muitas Empresas, por sua vez, uma Empresa podem ter muitos

empregados (Pessoas). Nesse caso a associação pode ter propriedades como

salario e dataContratacao, dá-se então a origem a classe associativa Emprego.

A classe associativa é representada por uma linha tracejada ligado à linha

contínua da associação, e a outra extremidade é ligada à nova classe - classe

associativa.

Figura 31: Classe Associativa (BEZERRA, 2002: 105)

Bezerra (2002: 106) explica que, uma classe associativa pode ser modificada

substituindo o elemento híbrido por uma classe ordinária, conforme a figura 32.

Pessoa Empresa

nome telefone endereco

razaoSocial endereco

*

empregado

*

empregador

salario dataContratacao

Emprego

Page 76: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

76

Figura 32: Classe Associativa (BEZERRA, 2002: 106)

Podemos notar que a multiplicidade que no diagrama da figura 31 era muitos

para muitos. Com a substituição do elemento híbrido, a classe Emprego passou a

fazer parte da associação e a multiplicidade passou a ser um para muitos e muitos

para um respectivamente. Essa modificação não implica em perda ou alteração da

informação.

3.4.2.6 – Classe de Interface

“Uma interface é uma coleção de operações utilizadas para especificar um

serviço de uma classe ou de um componente.” (BOOCH, 2000: 154).

De acordo com Booch (2000: 158) a interface não possui atributos nem

implementam operações, é uma classe ‘vazia’. As operações que aparecem listadas

na classe da interface, mostrada na figura 33, estão implementadas na classe Loja.

Quando outra classe solicita uma operação à interface, está repassa a operação

para a classe na qual está servindo de interface, ao retornar uma resposta segue o

caminho inverso.

A representação da interface pode ser feita como uma classe colocando o

estereótipo «interface» acima do nome da classe, nesse caso utiliza-se o

relacionamento de Realização para se comunicar com outra classe e coloca-se as

operações da classe. A interface também pode ser representada na forma de um

circulo vazio com o nome da interface colocado logo abaixo do mesmo, mas as

operações não aparecerão e sua ligação é feita através do relacionamento de

realização representado por uma linha contínua sem seta.

Pessoa Empresa

nome telefone endereco

razaoSocial endereco

* *salario dataContratacao

Emprego

1 1

Page 77: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

77

Figura 33: Interface usando uma classe com estereótipo (MELO, 2004: 123)

Figura 34: Interface usando o circulo (MELO, 2004: 123)

3.4.3 – Diagrama de Seqüência

De acordo com Melo (2004: 163) o diagrama de seqüência tem a finalidade

de identificar as operações das classes com o auxilio de um conjunto de elementos

gráficos que permita ilustrar todas as interações do sistema.

Os cenários de caso de uso podem ser representados através do diagrama

de seqüência, assim podemos visualizar a troca de mensagens entre as classes e

visualizar quando os objetos são criados e destruídos.

Nas figuras 35, 36 e 37 podem ser visualizados alguns dos elementos do

diagrama de seqüência, em seguida uma explicação sobre cada um deles.

Loja criar() busca(idLoja) obterTotalVendas(vendedor) lançarVendas(vendedor, vendas)

idLoja: integer vendedores: List

realização

«interface» Loja

obterTotalVendas(vendedor) lançarVendas(vendedor, vendas)

Loja criar() busca(idLoja) obterTotalVendas(vendedor) lançarVendas(vendedor, vendas)

idLoja: integer vendedores: List

ILoja

realização

Page 78: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

78

Figura 35: Diagrama de seqüência com elementos básicos. (BEZERRA, 2002: 148)

A representação dos atores no diagrama de seqüência é opcional, sua forma

gráfica é de um ‘homem de bastão’ (stick man).

Os objetos do diagrama de caso de uso devem aparecer no diagrama na

mesma seqüência. Os objetos podem ser anônimos ou nomeados, são nomeados

quando são utilizados em vários lugares.

Figura 36: Objetos anônimos e nomeados. (BEZERRA, 2002: 149)

A nomeação dos objetos é feita pelo nome do Objeto: nome da Classe.

Bezerra (2002: 149) explica que, na maioria das vezes os diagramas de

seqüência contém objetos, caso alguma mensagem for direcionada a uma classe

esta deverá ser representada no diagrama sem sublinhar seu nome.

A linha de vida do diagrama de seqüência aparece na forma de uma linha

tracejada verticalmente.

O foco de controle é um retângulo em cima da linha de vida do objeto, ele

representa o tempo em que o objeto realiza uma ação. A cada nova ação do objeto

item: ItemPedido : ItemPedido

Objeto nomeado Objeto anônimo

Page 79: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

79

um novo foco de controle é adicionado abaixo da linha da ultima mensagem de

retorno recebida.

As trocas de mensagens podem ser representadas de acordo com seu tipo,

conforme mostra a figura 37.

Figura 37: Notação de tipos de mensagens em diagrama de seqüência. (BEZERRA, 2002: 150)

• Mensagem simples: mensagem do tipo não relevante. É a mais utilizada;

• Mensagem síncrona: ao enviar uma mensagem síncrona o remetente fica

bloqueado enquanto espera a resposta do receptor;

• Mensagem assíncrona: nesse tipo de mensagem o objeto não espera a

resposta para prosseguir com as ações seguintes;

• Mensagem de retorno: indica o fim do processamento, seu uso é

opcional;

• Mensagem reflexiva: é quando um objeto envia uma mensagem a si

próprio para executar uma operação que está implementada na sua

própria classe. Pode-se ver um exemplo de mensagem reflexiva na figura

38.

A criação de objetos pode ser requisitada por outro objeto a partir da

mensagem «create» (criar). Se o objeto for criado desde o inicio da interação ele

fica no topo do diagrama, se for instanciado depois ele fica na mesma altura da

mensagem de criar.

A destruição de objetos ocorre logo após a mensagem «destroy» (destruir) e sua representação é através do símbolo X logo no final do foco de controle logo

abaixo da mensagem de destruição.

Na figura 38 podemos observar todas os elementos citados.

Simples

Síncrona

Assíncrona

Retorno

Page 80: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

80

Figura 38: Elementos do Diagrama de Seqüência. (BEZERRA, 2002: 151)

3.4.4 – Diagrama de Atividades

“O diagrama de atividade tem por propósito focalizar um fluxo de atividades

que ocorrem internamente em um processamento, dentro de um período de tempo.”

(MELO, 2004: 187).

O diagrama de atividades foi redesenhado na UML 2.0. Esse tipo de diagrama

é orientado a fluxo de controle e tem como objetivo representar o estado de uma

atividade e também pode ser utilizado para auxiliar a modelagem de um cenário no

diagrama de caso de uso.

Segundo Booch (2000: 258-265), os diagramas costumam conter os

seguintes elementos:

• Estado de inicio, ou estado inicial;

• Estado de parada, ou estado final;

• Estado de Ação e Atividade;

• Ponto de Transição;

• Ponto de Ramificação e Intercalação;

• Bifurcação e União;

Page 81: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

81

• Raias de Natação;

• Fluxo de Objeto.

Podemos ver esses elementos nos diagramas das figuras 39 e 40, e a

explicação de cada um deles em seguida.

Figura 39: Elementos de Diagrama de Atividades. (BEZERRA, 2002: 229)

O estado inicial e o estado final do diagrama são representados por um

circulo cheio e um círculo cheio com outro círculo ao redor respectivamente.

O estado de ação e estado de atividades tem sua representação por um

retângulo com os cantos arredondados. A diferença entre esses dois estados é que

em um estado de ação é executada uma ação por vez, ação essa que não pode ser

decomposta. Já em um estado de atividade são compostos por vários estados de

ações e podem conter outros estados de atividades.

O ponto de transição é representado por uma linha contínua com uma seta

aberta que aponta para o próximo estado de ação ou estado de atividade que será

executado.

Os pontos de Ramificação e Intercalação são representados por um

losango vazio com setas entrando e saindo dele. O ponto de Ramificação possui

uma seta entrando e várias saindo, sendo que na saída, somente um caminho será

seguindo de acordo com a condição estabelecida. O ponto de Intercalação possui

Page 82: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

82

várias setas entrando e somente uma saindo, é utilizado para marcar o fim de um

ponto de Ramificação.

Na figura 40 podemos observar os seguintes elementos: Bifurcação e União,

Raias de Natação e Fluxo de Objeto.

Figura 40: Aplicação de Raias de Natação (swim lanes) . (BOOCH, 2000: 265)

As Raias de Natação são compostas por um grande retângulo dividido

verticalmente de acordo com as responsabilidades. Na figura 40 podemos observar

as raias do Cliente, Vendas e Estoque, cada uma com suas responsabilidades e

seus fluxos. Nota-se que as transições podem cruzar as raias, mas as atividades

pertencem a uma única raia.

A Bifurcação e União, também chamada de barra de sincronização, é

representada na figura 40 por uma linha grossa na horizontal, mas também pode

estar na vertical. São utilizadas para modelar atividades concorrentes (que

Page 83: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

83

acontecem ao mesmo tempo). A Bifurcação permite a entrada de um fluxo de

controle e o divide em dois ou mais fluxos de controle. A União permite a entrada de

dois ou mais fluxos de controle e os sincronizam em apenas um fluxo de controle na

saída, nesse caso o processamento só poderá prosseguir até que todos os fluxos de

controle cheguem até esse ponto.

O Fluxo de Objeto é utilizado para relacionar objetos aos fluxos de controle.

Booch (2000: 265) explica que, o estado de um objeto pode ser representado

colocando o nome do estado que se encontra dentro de colchetes embaixo do nome

do objeto.

Page 84: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

84

Capítulo 4. Estudo de Caso

Nesse capítulo será descrito o estudo de caso de uma locadora de veículos

onde serão abordados os conceitos da análise orientada a objetos apresentados

anteriormente.

4.1 – Definição do Ambiente e Escopo do Software

Conforme visto no item 1.3 (O projeto de software), é necessário antes de

iniciar a construção do software, se faça alguns levantamentos preliminares e um

planejamento para que o produto final saia como o esperado.

4.1.1 – Apresentação do ambiente A empresa ‘Freedom Rent a Car’44 é do ramo de locação de veículos, ela

pretende instalar sua primeira loja da rede no aeroporto de Guarulhos dentro de

setenta dias que contará com dez funcionários, sendo cinco agentes de locação,

cinco manobristas e o proprietário que gerenciará o negócio. O horário de

funcionamento da agência será vinte e quatro horas por dia, sete dias por semana

durante todos os dias do ano (24 x 7 x 365) sendo que somente os agentes e os

manobristas trabalharão em regime de escala, o gerente, que é o proprietário da

frota45, trabalhará de segunda a sexta no horário comercial ficando acessível para

sanar eventuais problemas ou dúvidas nos finais de semana e feriados. A frota de

veículos será composta inicialmente de 30 veículos sendo divididos em grupos46 de

“A” a “P” de várias marcas, modelos e anos de fabricação todos os grupos com

preços diferenciados para cada tipo de cliente e para cada época do ano.

O escritório contará com uma infra-estrutura enxuta, porém eficaz, contendo

duas estações (um microcomputador para o agente e um notebook47 de uso do

gerente) ambos com acesso à banda larga.

44 O nome da empresa é fictícia para preservar sua identidade. 45 Frota: São todos os veículos pertencentes a uma agencia de locação de veículos. 46 Grupo: São conjuntos de veículos que tem as mesmas características tais como: tamanho, potencia, valor, etc. 47 Microcomputador pequeno, leve e portátil.

Page 85: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

85

Após a informatização, em uma etapa futura, será elaborada uma página na

Internet que permitirá aos clientes fazerem reservas48 on-line, esse servidor Web

terá a criação e manutenção de sua página feita por uma empresa terceirizada e a

hospedagem do servidor onde estarão armazenados os arquivos da base de dados

estará alocado em um data-center49 contratado.

A empresa planeja atingir um faturamento de R$ 80.000,00/mês e estima seu

custo mensal em R$ 60.000,00. A empresa planeja adquirir um sistema para o

controle operacional de locações de veículos (reservas, locações, cadastros,

cobranças) o qual deverá prever comunicação para o sistema administrativo,

financeiro e contábil que será implantado no futuro.

4.1.2 – Declaração do Objetivo Geral do Sistema

Controlar as reservas, locações e cobrança de um sistema de locadora de

veículos. Não estão inclusos os controles financeiros, contábeis.

Objetivo e Escopo do Projeto

O projeto completo da locadora abrange toda uma infra-estrutura de hardware

e software. Apesar de estarem relacionados alguns itens que não fazem parte desse

trabalho, por outro lado, eles fazem parte do escopo do projeto.

Temos como objetivo a informatização de todas as rotinas operacionais de

uma locadora de veículos, incluindo:

• Instalação de uma rede local com acesso a Internet;

• Construção de sistema, utilizando tecnologia Orientada a Objetos, para

controlar a área operacional de locação de veículos50. Deve-se prever que,

futuramente, existirá comunicação desse sistema com as áreas

administrativas, financeiras e contábeis.

• Construção de interface gráfica (front end);

48 Reserva: Manter o veículo correspondente a um grupo específico reservado para um cliente para um dia e horário pré-determinado. 49 Data-Center: Local especializado para hospedagem de equipamentos de informática de médio e grande porte, por exemplo: servidores. 50 Esse objetivo é o foco do estudo de caso.

Page 86: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

86

• Instalação de servidor de banco de dados;

• Prever a implementação de interface Web no sistema para futura

implantação.

4.1.3 – Estudo de Viabilidade Estudo de Viabilidade Técnica

• Plataforma51 Windows;

• O servidor utilizará sistema de redundância52 R.A.I.D.53 com

multiprocessamento54 utilizando sistema operacional Windows 2003 Server55,

Sistema Gerenciador de Banco de Dados SQL Server56 e servidor IIS57 com suporte

a ASP58;

• O acesso à banda larga deve ter uma taxa real de, no mínimo, 1Mbps59.

• Devido à falta de recurso na equipe de desenvolvimento será necessária a

contratação de profissionais para auxiliar no desenvolvimento, implantação e demais

atividades durante o projeto.

Estudo de Viabilidade Operacional

Partindo-se do princípio de que na locadora de veículos está sendo

inaugurada e não existem rotinas operacionais implantadas, pode-se analisar o

seguinte impacto operacional:

51 É uma expressão utilizada para denominar a tecnologia empregada em determinada infra-estrutura, garantindo facilidade de integração dos diversos elementos dessa infra-estrutura. 52 A redundância de interfaces de rede, de processadores, de servidores, de fontes de alimentação interna mantém o perfeito funcionamento do sistema mesmo em caso de falhas de componentes ou sobrecargas do sistema. 53 Abreviação do termo inglês Redundant Array of Inexpensive Disks que significa Disposição Redundante de Discos Baratos, cuja finalidade é manter várias cópias de dados para contornar possíveis falhas de hardware. 54 É a capacidade de um computador executar simultaneamente dois ou mais processos. 55 Tipo de software básico, abordado no item 1.2.2, cujo fabricante é a Microsoft. 56 Software aplicativo responsável pelo gerenciamento de uma base de dados 57 O IIS (Internet Information Services) é um servidor de páginas web criado pela Microsoft. 58 Abreviação do termo em inglês Active Server Pages. É uma linguagem de programação que, juntamente com o software aplicativo IIS, permite que sejam disponibilizadas páginas para Web. 59 O megabit por segundo (mbps or mbit/s) é uma unidade de transmissão de dados.

Page 87: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

87

• Dificuldade dos agentes na utilização do sistema para atender as rotinas

da locadora;

• Todos os agentes são da área de locação de veículos e operavam

diferentes sistemas.

Acredita-se que o treinamento de cinco dias proposto para os usuários seja o

suficiente para suprir essa dificuldade operacional.

Estudo de Viabilidade Financeira

Estão inclusos no projeto o fornecimento de todos os equipamentos para

deixar o ambiente totalmente operacional (micros, servidores multi-processados com

sistema de redundância RAID, micro portátil, equipamentos e infra-estrutura de rede,

assim como, todos os custos com sistemas operacionais, sistema de rede, banco de

dados).

Também estão contabilizados os custos com os profissionais envolvidos no

desenvolvimento do sistema e do projeto como um todo.

4.1.4 – Planejamento das Atividades

A apresentação do planejamento de atividades pode ser feita em uma tabela,

em forma de organograma, textual, entre outras. Optou-se pela apresentação do

planejamento de atividades na forma do gráfico de Gantt60.

Item Atividades Recursos humanos

A Analisar e levantar de requisitos Analista de sistema B Fazer projeto de T.I61. e S.I. Projetista C Compras e Entrega de produtos de T.I e S.I. Comprador D Criar banco de dados Projetista de banco de dados E Gerar código fonte62 para programa de interface

do usuário Projetista de interface do usuário

60 O Gráfico de Gantt é uma das formas de se fazer uma apresentação visual gráfica dos itens do planejamento O QUE, POR QUE, QUEM, QUANDO, COMO e ONDE abordados no item 1.3.3. 61 Abreviação de Tecnologia da Informação. Serve para designar o conjunto de recursos tecnológicos e computacionais para geração e uso da informação. 62 É o conjunto de palavras escritas de forma ordenada, contendo instruções em uma das linguagens de programação existentes no mercado, de maneira lógica.

Page 88: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

88

F Executar teste de funcionabilidade no sistema Verificador G Integrar equipamentos e sistemas Integrador de sistema H Elaborar treinamento para usuários Desenvolvedor de curso I Auditoria do sistema em produção. Auditor de sistema

Tabela 3: Tabela de Atividades x Recursos Humanos

Figura 41: Disposição das Atividades no gráfico de Gantt

4.2 – Levantamento de Requisitos do Software

Vimos no item 2.5 (Requisitos de software) que é necessário utilizar alguns

artifícios para visualizar o sistema que o cliente deseja, pois muitas vezes a

comunicação não é clara e o projeto pode não atender as necessidades do

ambiente.

Nesse estudo de caso, para fazer o levantamento de requisitos do software,

optou-se por fazer algumas entrevistas primeiramente com o gerente para ‘entender’

como funciona o negócio e posteriormente elaborou-se um questionário63 e a técnica

de brainstorming para obter informações.

Participaram das demais entrevistas e da reunião de Brainstorming o gerente

e cinco agentes. Foram abordados procedimentos, rotinas, suas responsabilidades e

coletados alguns documentos com a finalidade de gerar artefatos para o projeto.

63 O questionário utilizado para o levantamento de requisitos encontra-se no Anexo B.

Page 89: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

89

4.2.1 – Análise e especificação de requisitos.

Com base nas entrevistas realizadas levantaram-se os seguintes requisitos,

abaixo enumerados precedidos pela letra R.

Requisitos Funcionais R1 - O cliente poderá fazer a reserva, por telefone ou pessoalmente, tanto o

cliente quanto o agente receberão o código da reserva.

R2 - A reserva deverá ser cancelada automaticamente uma hora após a hora

prevista para retirada do veículo;

R3 - O cliente poderá solicitar o cancelamento ou alteração da reserva por

telefone ou pessoalmente;

R4 - O sistema deve permitir que o usuário, de acordo com o tipo de perfil,

possa inserir, consultar, alterar e cancelar dados do: cadastro de veículos, cadastro

de clientes, cadastro de tarifas de locação, dados da reserva, contrato de locação e

informações da agência;

R5 - O sistema deve permitir a abertura do contrato de locação onde serão

inseridos os dados do cliente, dados do veículo a ser locado pelo cliente, data e hora

da retirada e sua previsão de retorno, dados do seguro;

R6 - Para liberar o veículo64 ao cliente, o programa deverá fazer uma pré-

autorização (on-line) junto à administradora de cartão no valor correspondente ao

grupo e o período que o veículo ficará locado;

R7 - Para fazer o fechamento do contrato de locação o programa deve

solicitar o número do contrato de locação, código do veículo, quilometragem de

chegada, quantidade de combustível, código do agente e forma de pagamento;

R8 - Para fazer o pagamento o sistema fará uma transação on-line efetuando-

o na forma escolhida pelo cliente (cartão de débito ou crédito), o número da

autorização do pagamento será impresso juntamente com o contrato em quatro vias;

R9 - O sistema deve avisar o agente sempre que houver uma nova reserva no

sistema através do recebimento de um e-mail e também permitir a impressão dos

dados de reserva em uma impressora;

64 Liberação do veiculo: As chaves são entregues ao cliente juntamente com uma via do contrato de locação e o cliente e o veículo são liberados.

Page 90: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

90

R10 - O sistema deve avisar o agente sempre que o veículo atingir a

quilometragem de revisão, data do licenciamento e / ou vistoria, data ou

quilometragem prevista para venda;

R11 - Quando o veículo precisar de manutenção ou qualquer outro tipo de

serviço, o veículo tem o status alterado saindo de “Disponível” para “Manutenção”;

Requisitos Não-Funcionais • A base de dados deve ser protegida permitindo acesso apenas aos

usuários autorizados;

• O tempo de resposta do sistema não deve ultrapassar cinco segundos;

• O servidor deverá ter infra-estrutura para permanecer ligado 24hs/dia;

• O sistema deverá ter uma comunicação on-line com as administradoras de

cartões via Internet.

4.3 – Regras de negócios

Conforme visto no item 3.4.1, antes de iniciar a descrição dos casos de uso,

precisamos relacionar as regras do negócio. Em nosso estudo de caso foram

levantadas as seguintes regras de negócio:

RN01. Pré-requisito para locação.

O cliente (motorista) deve ter no mínimo 21 anos de idade, possuir CNH a

mais de 2 anos e cartão de crédito com limite disponível para fazer a pré-autorização

ambos válidos até o final da locação.

RN02. Locação de veículo

O cliente poderá alugar um veículo com ou sem reserva, a diferença é que a

reserva garante a disponibilidade de um grupo de veículo específico para um dia e

horário determinado pelo cliente.

RN03. Quantidade máxima de locações por vez.

Pessoa física poderá fazer apenas uma locação por vez, pessoa jurídica

poderá alugar mais de um.

RN04. Período de locação.

Page 91: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

91

Para pessoa física uma locação não pode durar mais do que 30 dias, caso

isso aconteça o cliente deve retornar a agencia para renovar o contrato. Para

pessoa jurídica não existe prazo máximo para devolução.

RN05. Alteração da reserva

A reserva poderá ser alterada a qualquer momento desde que a mesma ainda

esteja válida no sistema.

RN06. Cancelamento automático da reserva.

A reserva feita pelo cliente perderá validade caso o mesmo não compareça

na agência para retirar o veículo em até uma hora após o prazo para retirada

estipulada no ato da reserva.

RN07. Contrato de locação

O contrato de locação poderá ser modificado a qualquer momento para a

substituição do veículo caso o alugado apresente problemas.

RN08. Venda do veículo.

A locadora deverá vender o veículo quando o mesmo atingir 50.000Km ou 2

anos (o que atingir primeiro).

Page 92: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

92

4.4 – Diagrama de Caso de Uso

No anexo E (‘Detalhes do Diagrama de Caso de Uso’) pode-se obter uma

relação dos itens do diagrama do caso de uso e seus respectivos relacionamentos.

Figura 42: Diagrama de Caso de Uso – Locadora de Veículos

Lista de Casos de Uso

De acordo com o diagrama de caso de uso acima, temos a seguinte lista de

caso de uso:

• Controlar Cobrança;

Page 93: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

93

o Efetuar Pagamento com Cheque;

o Efetuar Pagamento Faturado;

o Fazer Pagamento com Cartão;

o Fazer Pré-Autorização;

o Validar Cartão;

• Controlar Contrato;

o Abrir Contrato de Locação;

o Alterar Contrato de Locação;

o Fechar Contrato de Locação;

o Cancelar Contrato de Locação;

• Controlar Reserva;

o Incluir Reserva;

o Alterar Reserva;

o Consultar Reserva;

o Excluir Reserva;

• Emitir Relatório;

o Emitir Relatório de Cliente;

o Emitir Relatório de Veículos;

o Emitir Relatório de Contratos;

• Fazer Cadastro;

o Manter Cadastro de Veículo;

Incluir Veículo;

Alterar Veículo;

Excluir Veículo;

o Manter Cadastro de Usuário;

Incluir Usuário;

Alterar Usuário;

Excluir Usuário;

o Manter Cadastro de Cliente;

Incluir Cliente;

Alterar Cliente;

Excluir Cliente;

o Manter Cadastro de Tarifa;

Incluir Tarifa;

Page 94: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

94

Alterar Tarifa;

Excluir Tarifa;

4.4.1 – Descrição dos Cenários Para este trabalho não se tornar repetitivo, não serão abordados todos os

casos de uso apresentados. Serão descritos apenas os casos de uso referente ao

pacote: ‘Controlar Cobrança’ por ser o mais complexo e por conter todos os

elementos dos outros casos de uso.

Controlar Cobrança (CSU01)

Sumário: O usuário pode: efetuar diversos tipos de pagamentos e fazer pré-

autorização através da administradora de cartão.

Ator Primário: Usuário Ator Secundário: Adm Cartao (Administradora de Cartão)

Fluxo Principal: 1) O usuário seleciona opção ‘Fechar Contrato’ e seleciona a opção ‘Efetuar

Pagamento’.

2) O usuário entra com o valor e data do pagamento, e escolhe uma das opções

de tipo de pagamento.

2.1) Se pagamento com cheque. Verificar o caso de uso CSU02.

2.2) Se pagamento com dinheiro.

2.2.1) Lança o valor pago e a data de pagamento na base de dados.

2.2.2) O sistema emite nota fiscal;

2.2.3) O sistema atualiza o status do contrato de locação e o caso de uso

termina.

2.3) Se pagamento faturado. Verificar o caso de uso CSU03.

2.4) Se pagamento com cartão. Verificar o caso de uso CSU04.

Efetuar Pagto Cheque (CSU02)

Sumário: Usuário efetua pagamento da locação com cheque.

Ator Primário: Usuário Fluxo Principal:

Page 95: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

95

1) O sistema solicita ao usuário os seguintes dados adicionais de cobrança:

1.1) Nome do banco;

1.2) Número do banco;

1.3) Número da agência;

1.4) Nome da agência;

1.5) Número do cheque;

1.6) Data de emissão do cheque;

1.7) Prazo para pagamento do Cheque;

2) O sistema armazena os dados de pagamento na base de dados.

3) O sistema emite nota fiscal.

Pós-condições: Atualiza o status do contrato de locação e o caso de uso termina.

Efetuar Pagto Faturado (CSU03) Sumário: Usuário efetua faturamento da locação.

Ator Primário: Usuário Fluxo Principal:

1) O sistema solicita ao usuário os seguintes dados adicionais de cobrança:

1.1) Razão Social;

1.2) CNPJ (Cadastro Nacional de Pessoa Jurídica);

1.3) Endereço completo;

1.4) Telefone;

1.5) Contato;

1.6) Número da Autorização de Pagamento fornecida pela empresa.

2) O sistema armazena os dados de pagamento na base de dados.

3) O sistema emite nota fiscal e boleto para pagamento.

Pós-condições: Atualiza o status do contrato de locação e o caso de uso termina.

Fazer Pagto Cartao (CSU04) Sumário: Cliente faz pagamento através de cartão.

Ator Primário: Usuário Ator Secundário: Adm Cartao (Administradora de Cartão)

Fluxo Principal: 1) O sistema solicita ao usuário os seguintes dados adicionais de cobrança:

Page 96: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

96

1.1) Número do cartão;

1.2) Validade do cartão;

1.3) Digito de segurança do cartão.

2) O usuário confirma os dados e o sistema envia os dados para validação.

Include (Validar Cartao);

3) O sistema envia dados para administradora e recebe o número da autorização.

4) O sistema armazena os dados de pagamento na base de dados.

5) O sistema emite nota fiscal e boleto para pagamento e o caso de uso termina.

Fluxo Alternativo (3): Sistema da administradora de cartão está congestionado.

a) O sistema informa que a administradora de cartão está com o sistema

congestionado e solicita que tente novamente dentro de alguns instantes. O caso

de uso retorna ao passo 2.

b) O sistema informa que o limite disponível no cartão de crédito é insuficiente. O

caso de uso retorna ao passo 1.

Pós-condições: O sistema armazena o número da autorização no cadastro de

contrato.

Validar Cartão (CSU05) Sumário: O sistema valida o cartão de crédito do cliente junto à administradora do

cartão.

Ator Primário: Usuário Ator Secundário: Adm Cartao (Administradora de Cartão)

Fluxo Principal: 1) O caso de uso recebe os dados do cartão, o valor, e o digito de segurança;

2) O sistema comunica-se com a administradora do cartão que faz a validação;

3) O sistema envia para a administradora os dados do cartão e valor para

pagamento;

4) O sistema recebe da administradora de cartão o número da transação e o

caso de uso termina.

Fluxo Alternativo (3): Sistema da administradora de cartão está congestionado.

a) O status do erro é enviado e o caso de uso termina.

Page 97: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

97

4.5 – Diagrama de Classes

No anexo F (‘Detalhes do Diagrama de Classes’) pode-se obter uma relação

com mais detalhes dos itens abordados pelo diagrama de classes e suas respectivas

associações.

Figura 43: Diagrama de Classes – Locadora de Veículos

Page 98: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

98

4.6 – Diagrama de Seqüência

No anexo G (Detalhes do Diagrama de Seqüência ‘Controlar Cobranca’)

pode-se obter uma relação detalhada dos itens do diagrama de seqüência referente

ao caso de uso ‘Controlar Cobranca’.

Figura 44: Diagrama de Seqüência - Parte 1/2

Page 99: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

99

Continuação do diagrama anterior.

Figura 45: Diagrama de Seqüência - Parte 2/2

Page 100: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

100

4.7 – Diagrama de Atividade

Figura 46: Diagrama de atividade do pacote ‘Controlar Cobrança’

No anexo H (Detalhes do Diagrama de Atividade ‘Controlar Cobranca’) pode-

se obter uma relação detalhada dos itens do diagrama de seqüência referente ao

caso de uso ‘Controlar Cobranca’.

Page 101: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

101

Anexo A – Modelo de Descrição de Caso de Uso Modelo de descrição de caso de uso sugerido por Bezerra (2002:84)

Page 102: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

102

Anexo B – Questionário utilizado no levantamento de requisitos

1) Quais as opções que o cliente terá para fazer uma reserva? O cliente poderá fazer a reserva telefonando ou comparecendo pessoalmente

na agência.

2) Quais os dados necessários para o cliente fazer uma reserva? Para fazer uma reserva o cliente deve fornecer: data e hora de retirada, data

e hora devolução, número do cliente (se houver), tipo de veículo, optar pelo tipo de

seguro (opcional), nome completo, telefone, optar pelo tipo de tarifa (corporativa ou

pessoal).

3) Como o cliente irá se referenciar a uma reserva? O sistema deverá fornecer um código de reserva para que será solicitado no

ato da abertura de contrato65 de locação ou para um eventual cancelamento ou

alteração da reserva.

4) Como o cliente deverá proceder para cancelar uma reserva? O cliente somente poderá cancelar uma reserva telefonando ou

comparecendo na agência informando o código da reserva.

5) Como o cliente saberá quais veículos, marcas e modelos estarão disponíveis para locação?

Existe uma relação de veículos separada por grupos de “A” a “P” onde cada

grupo é composto por vários veículos, de marcas e modelos diferentes e deverão

estar disponíveis no sistema e futuramente na web.

6) Quais os pré-requisitos para o cliente alugar um veículo? Será exigido que o motorista tenha mais de 21 anos, habilitado a mais de 2

anos e com carteira de habilitação válida até o final do contrato de locação. Para

pessoa física será possível fazer apenas uma locação por vez, pessoa jurídica

poderá alugar mais de um.

7) Quando o sistema estiver disponível na web, como o agente ficará sabendo que existe uma reserva de veículo quando esta for feita pela Internet?

Após o cliente preencher todas as informações na página da Internet

referente à reserva, quero que esses dados sejam inseridos no sistema

automaticamente e que o agente receba um e-mail avisando sobre a nova reserva. 65 Abertura do contrato: São inseridos os dados necessários no contrato (dados do cliente, veículo, seguro, pré-autorização, etc) para que o cliente seja liberado com o veículo.

Page 103: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

103

8) Quais as formas de pagamento possíveis? Serão aceitos pagamento em cartão de débito, crédito, cheque e dinheiro.

9) Como funciona o sistema de tarifas? Existe uma tabela de tarifas para cada: grupo de veículo, período de locação

(diária, semanal ou mensal), quilometragem66 livre ou controlada, faixa de

quilometragem, corporativa ou promocional e de alta ou baixa temporada.

10) Quais os documentos necessários para locação? CNH, CPF, RG, cartão de crédito válido.

11) Qual garantia será exigida do cliente para a locação de veículos? Será efetuada uma pré-autorização67 no cartão de crédito do cliente no valor

correspondente ao grupo do veículo escolhido. 12) Quem irá cadastrar e alterar os clientes, veículos, tarifas, reservas,

dados da agencia, abrir e fechar contrato? Os agentes serão responsáveis apenas por cadastrar clientes, fazer, alterar e

cancelar reservas, fazer abertura e fechamento de contrato68. Somente o gerente

terá acesso para cadastrar veículos, tarifas, dados da agencia e alterar qualquer

informação no sistema.

13) Quais dados serão exigidos para cadastrar usuários? O nome completo, login, senha e determinar os direitos de acesso.

14) Quais relatórios e consultas serão necessários e quem terá acesso e que tipo de acesso?

Relatório e consulta de cliente, veículos, locação, pagamento. Os agentes

poderão alterar somente os dados cadastrais dos clientes, os demais terão acesso

somente para visualização. O gerente deverá ter acesso completo e poderá alterar

qualquer informação.

15) Quais dados serão exigidos para efetuar o cadastro de veículos? Para cadastro do veículo quero que o sistema solicite: código do veículo,

nome do fabricante, modelo, ano, nº do chassi, placa, cor, Km, código da chave (se

houve), quantidade de portas, tipo de acessórios (ar, direção, rádio / cd), data da

66 Quilometragem: É o limite de quilometragem que o cliente tem o direito de percorrer com o veículo dentro de um prazo determinado pela tarifa sem o pagamento de taxas adicionais por quilometro rodado. 67 Pré-autorização: No ato da abertura do contrato faz-se uma cobrança no cartão de crédito do cliente com um valor pré-determinado para efeito de acionar o seguro do veículo caso seja necessário. Quando o cliente retornar com o veículo a cobrança será cancelado. 68 Fechamento do contrato: São inseridos os dados necessários no contrato (dados do veículo, dados para pagamento, etc) para a devolução do veiculo e pagamento da locação.

Page 104: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

104

compra, data em que deve ser realizados a vistoria69 e licenciamento, data prevista

para venda.

16) Como funcionará o sistema de pagamento com cartões? O sistema deverá se comunicar com as administradoras de cartões a qual

tenho convênio para efetuar as transações on-line. Os dados dos cartões devem ser

digitados no sistema e o comprovante será impresso em uma impressora acoplada

ao computador. Os dados de pré-autorização, autorização e / ou pagamento

deverão constar no contrato.

69 Vistoria: É uma verificação do estado funcional e visual do veículo que tem por objetivo comparar qualquer avaria depois do ato de retirada até o ato da devolução.

Page 105: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

105

Anexo C - Tabelas de Grupos de Veículos

TRA

NS.

M

M

M

M

M

M

M

M

M

DIS

TAN

CE

PER

UN

IT

14,9

16

16

,1

16,1

14

,9

14,9

12

11

14

,8

FUEL

TY

PE

GAS

G

AS

GAS

G

AS

GAS

G

AS

GAS

B

i-com

b G

AS

LITE

R

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r

FUEL

C

APA

CIT

Y

48

50

42

42

46

46

50

50

51

BO

DY

TY

PE

Sub

com

pact

S

ubco

mpa

ct

Sub

com

pact

S

ubco

mpa

ct

Sub

com

pact

S

ubco

mpa

ct

Sub

com

pact

S

ubco

mpa

ct

Sub

com

pact

ENG

INE

SIZE

1,0

1,0

1,0

1,0

1,0

1,0

1,0

1,0

1,0

DO

OR

S

2/4D

R

2/4D

R

2/4D

R

2/4D

R

2/4D

R

2/4D

R

4DR

2D

R

2/4D

R

MO

DEL

Pal

io

Uno

Mill

e Fi

esta

Fo

rd K

a C

elta

C

orsa

Win

d C

lio

Fox

Gol

MA

KE

Fiat

Fi

at

Ford

Fo

rd

GM

G

M

Ren

ault

Vol

ksw

agen

V

olks

wa g

en

GR

UPO

B B B B B B B B B

TRA

NS.

M

M

M

M

M

M

M

M

M

DIS

TAN

CE

PER

UN

IT

14,9

16

16

,1

16,1

14

,9

14,9

14

12

14

,8

FUEL

TY

PE

GAS

G

AS

GAS

G

AS

GAS

G

AS

GAS

G

AS

GAS

LITE

R

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r

FUEL

C

APA

CIT

Y

48

50

42

42

46

46

40

50

51

BO

DY

TY

PE

Sub

com

pact

S

ubco

mpa

ct

Sub

com

pact

S

ubco

mpa

ct

Sub

com

pact

S

ubco

mpa

ct

Sub

com

pact

S

ubco

mpa

ct

Sub

com

pact

ENG

INE

SIZE

1,0

1,0

1,0

1,0

1,0

1,0

1,2

1,0

1,0

DO

OR

S

2/4D

R

2/4D

R

2/4D

R

2/4D

R

2/4D

R

2/4D

R

2/4D

R

4DR

2/

4DR

MO

DEL

Pal

io

Uno

Mill

e Fi

esta

Fo

rd K

a C

orsa

Win

d C

elta

Tw

ingo

C

lio

Gol

MA

KE

Fiat

Fi

at

Ford

Fo

rd

GM

G

M

Ren

ault

Ren

ault

Vol

ksw

a gen

GR

UPO

A A A A A A A A A

GR

UP

O A

- S

UB

CO

MP

AC

T - V

EÍC

ULO

S 1

.0 S

EM

AR

CO

ND

ICIO

NA

DO

GR

UP

O B

- S

UB

CO

MP

AC

T - V

EÍC

ULO

S 1

.0 C

OM

AR

CO

ND

ICIO

NA

DO

Page 106: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

106

TRA

NS.

M

M

M

M

M

M

M

M

M

M

M

M

M

DIS

TAN

CE

PER

UN

IT

13,9

12

,6

13,6

11

13

,9

12

12,7

10

13

,8

12

13,8

14

,7

13,8

FUEL

TY

PE

GAS

G

AS

GAS

B

i-com

b G

AS

GAS

G

AS

Bi-c

omb

GAS

G

AS

GAS

G

AS

GAS

LITE

R

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r

FUEL

C

APA

CIT

Y

48

48

42

45

46

50

48

50

51

51

51

45

45

BO

DY

TY

PE

Com

pact

C

ompa

ct

Com

pact

C

ompa

ct

Com

pact

C

ompa

ct

Com

pact

C

ompa

ct

Com

pact

C

ompa

ct

Com

pact

C

ompa

ct

Com

pact

ENG

INE

SIZE

1,6

1,3

1,6

1,4

1,6

1,6

1,6

1,6

1,6

1,6

1,8

1,6

1,8

DO

OR

S

2/4D

R

2/4D

R

2/4D

R

4DR

2/

4DR

4D

R

4DR

2D

R

4DR

4D

R

2/4D

R

4DR

4D

R

MO

DEL

Pal

io

Pal

io

Fies

ta

Cel

ta

Cor

sa

Clio

S

eat I

biza

Fo

x G

ol

Gol

Pow

er

Gol

P

olo

Pol

o

MA

KE

Fiat

Fi

at

Ford

G

M

GM

R

enau

lt S

eat

Vol

ksw

agen

V

olks

wa g

en

Vol

ksw

a gen

V

olks

wag

en

Vol

ksw

agen

V

olks

wa g

en

GR

UPO

D

D

D

D

D

D

D

D

D

D

D

D

D

TRA

NS.

M

M

M

M

DIS

TAN

CE

PER

UN

IT

10,6

15

14

,9

12

FUEL

TY

PE

GAS

G

AS

GAS

G

AS

LITE

R

Lite

r Li

ter

Lite

r Li

ter

FUEL

C

APA

CIT

Y

48

42

46

40

BO

DY

TY

PE

Com

pact

C

ompa

ct

Com

pact

C

ompa

ct

ENG

INE

SIZE

1,0

1,0

1,0

1,0

DO

OR

S

4DR

4D

R

4DR

4D

R

MO

DEL

Sie

na

Fies

ta S

edan

C

orsa

Sed

an

Clio

Sed

an

MA

KE

Fiat

Fo

rd

GM

R

enau

lt

GR

UPO

C

C

C

C

GR

UP

O C

- C

OM

PA

CT

- VE

ÍCU

LOS

SE

DA

N 1

.0 C

OM

AR

CO

ND

ICIO

NA

DO

GR

UP

O D

- C

OM

PA

CT

- VE

ÍCU

LOS

1.3

, 1.4

, 1.6

, 1.8

CO

M A

R C

ON

DIC

ION

AD

O

Page 107: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

107

TRA

NS.

M

M

M

M

M

M

M

M

M

DIS

TAN

CE

PER

UN

IT

11,6

11

,1

10,3

10

12

,7

13,8

14

13

,4

13,4

FUEL

TY

PE

GAS

B

i-com

b B

i-com

b G

AS

GAS

G

AS

GAS

G

AS

GAS

LITE

R

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r

FUEL

C

APA

CIT

Y

51

51

51

51

64

46

42

51

51

BO

DY

TY

PE

Sta

tion

Weg

on

Sta

tion

Weg

on

Sta

tion

Weg

on

Sta

tion

Weg

on

Sta

tion

Weg

on

Sta

tion

Weg

on

Sta

tion

Weg

on

Sta

tion

Weg

on

Sta

tion

Weg

on

ENG

INE

SIZE

1,6

1,3

1,8

1,8

1,8

1,6

1,4

1,6

1,8

DO

OR

S

4DR

4D

R

4DR

4D

R

4DR

4D

R

4DR

4D

R

4DR

MO

DEL

Pal

io W

eeke

nd

Pal

io W

eeke

nd

Pal

io W

eeke

nd

Pal

io W

eeke

nd

Esc

ort W

agon

C

orsa

Wa g

on

FIT

Par

ati

Par

ati

MA

KE

Fiat

Fi

at

Fiat

Fi

at

Ford

G

M

Hon

da

Vol

ksw

a gen

V

olks

wa g

en

GR

UPO

F F F F F F F F F

TRA

NS.

M

M

M

M

M

M

M

M

DIS

TAN

CE

PER

UN

IT

12

10,6

12

,1

13,6

11

,3

13,9

12

12

,7

FUEL

TY

PE

GAS

G

AS

Bi-c

omb

GAS

G

AS

GAS

G

AS

GAS

LITE

R

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

FUEL

C

APA

CIT

Y

48

48

48

42

45

46

50

48

BO

DY

TY

PE

Inte

rmed

iate

In

term

edia

te

Inte

rmed

iate

In

term

edia

te

Inte

rmed

iate

In

term

edia

te

Inte

rmed

iate

In

term

edia

te

ENG

INE

SIZE

1,3

1,6

1,8

1,6

1,8

1,6

1,6

1,6

DO

OR

S

4DR

4D

R

4DR

4D

R

4DR

4D

R

4DR

4D

R

MO

DEL

Sie

na

Sie

na

Sie

na

Fies

ta S

edan

C

orsa

Sed

an M

axx

Cor

sa S

edan

C

lio S

edan

S

eat C

ordo

ba

MA

KE

Fiat

Fi

at

Fiat

Fo

rd

GM

G

M

Ren

ault

Sea

t

GR

UPO

E E E E E E E E

GR

UP

O E

- IN

TER

ME

DIA

TE -

VE

ÍCU

LOS

SE

DA

N 1

.3, 1

.6 e

1.8

CO

M A

R C

ON

DIC

ION

AD

O

GR

UP

O F

- S

TATI

ON

WA

GO

N -

VE

ÍCU

LOS

1.3

, 1.6

, 1.8

CO

M A

R C

ON

DIC

ION

AD

O

Page 108: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

108

TRA

NS.

M

M

M

M

M

M

M

M

M

M

M

M

M

M

A M

M

M

M

DIS

TAN

CE

PER

UN

IT

10

10

11,4

8 8,7

11,7

11

,6

11,6

8 9,5

14,5

14

,5

13,8

10

10

13

,8

12,2

12

,2

12,4

FUEL

TY

PE

GAS

G

AS

GAS

G

AS

GAS

G

AS

GAS

G

AS

GAS

G

AS

GAS

G

AS

GAS

G

AS

GAS

G

AS

GAS

G

AS

Bi-c

omb

LITE

R

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r

FUEL

C

APA

CIT

Y

47

45

55

60

52

52

52

52

60

60

60

60

72

55

55

72

55

55

45

BO

DY

TY

PE

Full

Siz

e Fu

ll S

ize

Pre

miu

m

Full

Siz

e Fu

ll S

ize

Full

Siz

e Fu

ll S

ize

Full

Siz

e Fu

ll S

ize

Full

Siz

e Fu

ll S

ize

Full

Siz

e Fu

ll S

ize

Full

Siz

e Fu

ll S

ize

Full

Siz

e Fu

ll S

ize

Full

Siz

e Fu

ll S

ize

ENG

INE

SIZE

1,6

1,8

1,6

1,6

2,0

1,8

2,0

2,0

2,0

1,6

1,6

2,0

1,8

/ 2,0

1,

6 2,

0 1,

8 / 2

,0

2,0

1,6

1,6

DO

OR

S

4DR

4D

R

4DR

4D

R

4DR

4D

R

4DR

2D

R

4DR

4D

R

4DR

4D

R

4DR

4D

R

4DR

4D

R

4DR

4D

R

4DR

MO

DEL

C 3

S

tilo

Focu

s R

et

Bra

va

Ast

ra S

edan

Fle

x A

stra

Sed

an

Ast

ra

Ast

ra

Mer

iva

Peu

geot

307

M

egan

e M

e gan

e S

anta

na

Gol

f G

olf

San

t. Q

uant

um

Gol

f P

olo

Sed

an

Pol

o S

edan

Fle

x

MA

KE

Citr

oen

Fiat

Fo

rd

Fiat

G

M

GM

G

M

GM

G

M

Peu

geot

R

enau

lt R

enau

lt V

olks

wa g

en

Vol

ksw

agen

V

olks

wag

en

Vol

ksw

agen

V

olks

wag

en

Vol

ksw

agen

V

olks

wag

en

GR

UPO

G

G

G

G

G

G

G

G

G

G

G

G

G

G

G

G

G

G

G

GR

UP

O G

- FU

LL S

IZE

- V

EÍC

ULO

S C

OM

AR

CO

ND

ICIO

NA

DO

Page 109: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

109

TRA

NS.

M

M

M

M

M

M

M

M

M

M

A M

M

M

A M

DIS

TAN

CE

PER

UN

IT

9,5 9

10,5

11

,5

9,8

9,6

11,5

9 9,8

9,8

9,8

9,7

15,7

11

10

11

,5

FUEL

TY

PE

GAS

G

AS

GAS

G

AS

GAS

G

AS

GAS

G

AS

GAS

G

AS

GAS

G

AS

GAS

G

AS

GAS

G

AS

LITE

R

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

FUEL

C

APA

CIT

Y

63

63

63

57

72

75

57

57

72

65

65

65

60

55

55

63

BO

DY

TY

PE

Pre

miu

m

Pre

miu

m

Pre

miu

m

Pre

miu

m

Pre

miu

m

Pre

miu

m

Pre

miu

m

Pre

miu

m

Pre

miu

m

Pre

miu

m

Pre

miu

m

Pre

miu

m

Pre

miu

m

Pre

miu

m

Pre

miu

m

Pre

miu

m

ENG

INE

SIZE

2,0

1,8

2,4

2,2

2,2

3,0

2,2

2,0

4,1

2,0

2,0

2,0

1,8

1,6

1,8

2,0

DO

OR

S

4DR

4D

R

4DR

4D

R

4DR

4D

R

4DR

4D

R

4DR

4D

R

4DR

4D

R

4DR

4D

R

4DR

4D

R

MO

DEL

Mar

ea

Mar

ea

Mar

ea

Focu

s B

laze

r O

meg

a V

ectra

V

ectra

B

laze

r C

ivic

C

ivic

P

euge

ot 4

06

Lagu

na

Cor

olla

C

orol

la

Bor

a

MA

KE

Fiat

Fi

at

Fiat

Fo

rd

GM

G

M

GM

G

M

GM

H

onda

H

onda

P

euge

ot

Ren

ault

Toyo

ta

Toyo

ta

Vol

ksw

a gen

GR

UPO

H

H

H

H

H

H

H

H

H

H

H

H

H

H

H

H

TRA

NS.

M

M

A M

M

M

M

DIS

TAN

CE

PER

UN

IT

11,9

11

,6

9 9,8

11,6

10

10

FUEL

TY

PE

GAS

G

AS

Bi-c

omb

Bi-c

omb

Bi-c

omb

GAS

G

AS

LITE

R

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r

FUEL

C

APA

CIT

Y

55

58

58

58

58

60

60

BO

DY

TY

PE

Min

i Van

M

ini V

an

Min

i Van

M

ini V

an

Min

i Van

M

ini V

an

Min

i Van

ENG

INE

SIZE

2,0

2,0

2,0

2,0

1,8

1,6

2,0

DO

OR

S

4DR

4D

R

4DR

4D

R

4DR

4D

R

4DR

MO

DEL

Pic

asso

Za

fira

Zafir

a E

lega

nce

Zafir

a E

lite

Mer

iva

Sen

ic

Sen

ic

MA

KE

Citr

oen

GM

G

M

GM

G

M

Ren

ault

Ren

ault

GR

UPO

I I I I I I IG

RU

PO

H –

PR

EM

IUM

GR

UP

O I

- MIN

I VA

N

Page 110: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

110

TRA

NS.

M

M

M

M

M

M

M

M

M

DIS

TAN

CE

PER

UN

IT

12,3

11

,6

11,9

13

,5

12

11,9

12

,7

13

13,9

FUEL

TY

PE

GA

S G

AS

GA

S G

AS

Bi-c

omb.

G

AS

GA

S G

AS

GA

S

LITE

R

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r

FUEL

C

APA

CIT

Y

58

64

53

57

55

53

54

54

53

BO

DY

TY

PE

Pick

up

Pick

up

Pick

up

Pick

up

Pick

up

Pick

up

Pick

up

Pick

up

Pick

u p

ENG

INE

SIZE

1,5

1,5

1,6

1,6

1,8

1,6

1,6

1,8

1,6

DO

OR

S

2DR

2D

R

2DR

2D

R

2DR

2D

R

2DR

2D

R

2DR

MO

DEL

Stra

da

Fior

ino

Cou

rier

Cor

sa

Cor

sa-M

onta

na

Sav

eiro

V

an C

arga

S

avei

ro

Save

iro F

lex

MA

KE

Fiat

Fi

at

Ford

G

M

GM

V

olks

wag

en

Vol

ksw

a gen

V

olks

wag

en

Vol

ksw

agen

GR

UPO

J J J J J J J J J

TRA

NS.

A

DIS

TAN

CE

PER

UN

IT

12

FUEL

TY

PE

GAS

LITE

R

Lite

r

FUEL

C

APA

CIT

Y

55

BO

DY

TY

PE

Pre

miu

m

ENG

INE

SIZE

1,6

DO

OR

S

4DR

MO

DEL

Cor

olla

MA

KE

Toyo

ta

GR

UPO

K

TRA

NS.

M

DIS

TAN

CE

PER

UN

IT

8,2

FUEL

TY

PE

GAS

LITE

R

Lite

r

FUEL

C

APA

CIT

Y

46

BO

DY

TY

PE

Min

ivan

ENG

INE

SIZE

1,6

DO

OR

S

2DR

MO

DEL

Kom

bi

MA

KE

Vol

ksw

agen

GR

UPO

M

GR

UP

O J

- P

ICK

UP

PEQ

UE

NA

GR

UP

O K

– A

UTO

MA

TIC

GR

UP

O M

- K

OM

BI

Page 111: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

111

TRA

NS.

M

M

M

M

M

M

DIS

TAN

CE

PER

UN

IT

12,2

12

,2

12,2

12

12

,5

12,2

FUEL

TY

PE

Die

sel

Die

sel

Die

sel

Die

sel

Die

sel

Die

sel

LITE

R

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

FUEL

C

APA

CIT

Y

80

80

80

65

65

80

BO

DY

TY

PE

Van

V

an

Van

V

an

Van

V

an

ENG

INE

SIZE

2,0

2,0

2,0

2,6

2,0

2,5

DO

OR

S

2DR

3D

R

2DR

3D

R

3DR

2D

R

MO

DEL

Tow

ner

Duc

ato

Clu

b W

agon

H

-100

GL

Bes

ta

S prin

ter

MA

KE

Asi

a Fi

at

Ford

H

yund

ai

Kia

M

erce

des

GR

UPO

N

N

N

N

N

N

TRA

NS.

M

M

DIS

TAN

CE

PER

UN

IT

14,7

11

FUEL

TY

PE

GA

S G

AS

LITE

R

Lite

r Li

ter

FUEL

C

APA

CIT

Y

50

50

BO

DY

TY

PE

Min

i Van

M

ini V

an

ENG

INE

SIZE

1,0

1,3

DO

OR

S

3DR

4D

R

MO

DEL

Kan

goo

Dou

blo

MA

KE

Ren

ault

Fiat

GR

UPO

O

O

TRA

NS.

M

M

M

M

M

M

A M

A

DIS

TAN

CE

PER

UN

IT

9,8 8

12,3

6 7 11

7 9,7 9

FUEL

TY

PE

GAS

G

AS

GAS

D

iese

l G

AS

Die

sel

GAS

D

iese

l D

iese

l

LITE

R

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r Li

ter

Lite

r

FUEL

C

APA

CIT

Y

72

60

45

98

70

70

64

75

72

BO

DY

TY

PE

Pick

up

Pick

up

Pick

up

Pick

up

Pick

up

Pick

up

----

Pick

up

----

ENG

INE

SIZE

2,2

1,6

1,6

2,8

2,4

2,8

2,5

2,5

2,8

DO

OR

S

2DR

4D

R

4DR

4D

R

2DR

2D

R

4DR

4D

R

2DR

MO

DEL

Ran

ger

Eco

Spo

rt E

coS

port

F-25

0 X

LT W

20

S10

S

10

Free

land

er

L-20

0 T4

TD

I 4X

4

MA

KE

Ford

Fo

rd

Ford

Fo

rd

GM

G

M

Land

Rov

er

Mits

ubis

hi

Trol

ler

GR

UPO

P P P P P P P P P

GR

UP

O N

- V

AN

GR

UP

O O

– M

INI V

AN (C

OM

AR

CO

ND

ICIO

NA

DO

GR

UP

O P

- P

ICK

UP

Page 112: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

112

Anexo D - Tabelas de Tarifas de Locação de Veículos

TARIFA STANDARD

WKI / WJI PARA: Todas as localidades PAÍS: Brasil DATA EFETIVA: 01 Março 04 VALIDADE: Indeterminada

WKI WJI WKI/WJI Grupos

SIPP Diária Semanal Mensal Km Adic.70 Hr. Adic.71 Dia Adic.72

A 79,00 474,00 1.896,00 0,45 22,58 67,72B 110,00 660,00 2.640,00 0,60 31,44 94,30C 118,00 708,00 2.832,00 0,65 33,73 101,15D 140,00 840,00 3.360,00 0,75 40,01 120,01E 149,00 894,00 3.576,00 0,80 42,58 127,72F 158,00 948,00 3.792,00 0,85 45,16 135,44G 206,00 1.236,00 4.944,00 1,10 58,87 176,58H 238,00 1.428,00 5.712,00 1,30 68,01 204,01I 265,00 1.590,00 6.360,00 1,40 75,73 227,15J 134,00 804,00 3.216,00 0,70 38,30 114,87K 258,00 1.548,00 6.192,00 1,36 73,71 221,14M 163,00 978,00 3.912,00 0,85 46,58 139,72N 325,00 1.950,00 7.800,00 1,75 92,87 278,58O 227,00 1.362,00 5.448,00 1,20 64,87 194,58P 269,00 1.614,00 6.456,00 1,45 73,71 230,58

MÍN/ MÁX DIAS: WKI= 01/28, WJI= 28/31 dias

QUILOMETRAGEM: WKI = Livre, WJI = 3.000 km livres/ mês

70 Km adicional: É o valor pago pelo cliente a locadora quando a distância percorrida pelo veículo foi maior que a contratada. 71 Hora adicional: É o valor pago pelo cliente a locadora quando há atraso na devolução do veiculo em até 23 horas. 72 Dia adicional: É o valor pago pelo cliente a locadora quando há atraso na devolução do veiculo entre 1 a 6 dias.

Page 113: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

113

TARIFA 2CI

DIÁRIA KM LIVRE PARA: Todas as localidades PAÍS: Brasil DATA EFETIVA: 01 Março 04 VALIDADE: Indeterminada

Grupos Diária Semanal Mensal Hora adic. Dia adic. A 61,00 20,34 B 85,00 28,34 C 91,00 30,34 D 109,00 36,34 E 115,00 38,34 F 122,00 40,68 G 160,00 53,34 H 184,00 61,34 I 205,00 68,34 J 104,00 34,68 M 126,00 42,01 N 252,00 84,01 O 176,00 58,68 P 208,00 69,34

MÍN/ MÁX DIAS: 1/6

QUILOMETRAGEM: Livre

Page 114: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

114

TARIFA 2NI

SEMANAL – KM LIVRE PARA: Todas as localidades PAÍS: Brasil DATA EFETIVA: 01 Março 04 VALIDADE: Indeterminada

Grupos Diária Semanal Mensal Hora adic. Dia adic. A 367,00 17,49 52,43B 512,00 24,39 73,14C 549,00 26,15 78,43D 651,00 31,01 93,00E 693,00 33,01 99,00F 735,00 35,01 105,00G 958,00 45,63 136,86H 1.107,00 52,72 158,14I 1.232,00 58,68 176,00J 623,00 29,68 89,00M 758,00 36,11 108,29N 1.511,00 71,96 215,86O 1.056,00 50,30 150,86P 1251,00 59,58 178,71

MÍN/ MÁX DIAS: 6/30

QUILOMETRAGEM: Livre

Page 115: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

115

TARIFA HPI

100 KM LIVRES PARA: Todas as localidades PAÍS: Brasil DATA EFETIVA: 01 Março 04 VALIDADE: Indeterminada

Grupos Diária Semanal Dia adic. Hora adic. Km adic. A 51,00 308,00 44,01 17,13 0,45B 72,00 429,00 61,29 23,84 0,60C 77,00 460,00 65,74 25,58 0,65D 91,00 546,00 78,00 30,34 0,75E 97,00 581,00 83,01 32,29 0,80F 103,00 616,00 88,03 34,24 0,85G 134,00 803,00 114,77 44,64 1,10H 155,00 928,00 132,60 51,58 1,30I 172,00 1.034,00 147,64 57,43 1,40J 87,00 523,00 74,66 29,04 0,70M 106,00 636,00 90,81 35,33 0,85N 211,00 1.268,00 181,07 70,43 1,75O 148,00 885,00 126,47 49,19 1,20P 175,00 1.049,00 149,87 58,29 1,45

MÍN/ MÁX DIAS: 1/28

QUILOMETRAGEM: 100 Km livres/dia

Page 116: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

116

TARIFA BPI

KM CONTROLADA PARA: Todas as localidades PAÍS: Brasil DATA EFETIVA: 20 Jun 03 VALIDADE: Indeterminada

Grupos Diária Semanal Dia adic. Hora adic. Km rodado A 27,75 9,26 0,45B 40,50 13,51 0,60C 43,00 14,34 0,65D 52,50 17,51 0,75E 55,75 18,59 0,80F 59,00 19,68 0,85G 77,50 25,84 1,10H 87,50 29,18 1,30I 100,75 33,59 1,40J 51,50 17,18 0,70M 62,75 20,93 0,85N 121,25 40,43 1,75O 86,25 28,76 1,20P 100,25 33,43 1,45

MÍN/ MÁX DIAS: 1/ 7

QUILOMETRAGEM: Controlada

Page 117: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

117

TARIFA JMI

MENSAL – 3.000 KM LIVRES PARA: Todas as localidades PAÍS: Brasil DATA EFETIVA: 01 Março 04 VALIDADE: Indeterminada

Grupos Mensal Semana adic.73

Dia adic. Hora adic. Km adic.

A 1.109,00 277,00 39,61 13,21 0,45B 1.544,00 386,00 55,16 18,40 0,60C 1.657,00 414,00 59,17 19,73 0,65D 1.966,00 491,00 70,20 23,41 0,75E 2.092,00 523,00 74,71 24,91 0,80F 2.218,00 555,00 79,23 26,42 0,85G 2.892,00 723,00 103,29 34,44 1,10H 3.342,00 835,00 119,34 39,79 1,30I 3.721,00 930,00 132,88 44,30 1,40J 1.881,00 470,00 67,19 22,41 0,70M 2.289,00 572,00 81,73 27,25 0,85N 4.563,00 1.141,00 162,96 54,33 1,75O 3.187,00 797,00 113,82 37,95 1,20P 3.777,00 944,00 134,88 44,97 1,45

MÍN/ MÁX DIAS: 28/ 30

QUILOMETRAGEM: 3.000 km livres/mês

73 Semana adicional: É o valor pago pelo cliente a locadora quando há atraso na devolução do veiculo entre 1 a 3 semanas.

Page 118: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

118

TARIFA 51I

CORPORATE NÃO-DESCONTÁVEL PARA: Todas as localidades PAÍS: Brasil DATA EFETIVA: Abril 04 VALIDADE: Indeterminada

Grupos Diária Semanal Mensal Hora adic. Dia adic. A 67,00 402,00 1.005,00 19,15 57,43B 94,00 564,00 1.410,00 26,87 80,57C 100,00 600,00 1.500,00 28,58 85,71D 119,00 714,00 1.785,00 34,01 102,00E 127,00 762,00 1.905,00 36,30 108,86F 134,00 804,00 2.010,00 38,30 114,86G 175,00 1.050,00 2.625,00 50,01 150,00H 202,00 1.212,00 3.030,00 57,72 173,14I 225,00 1.350,00 3.375,00 64,30 192,86J 114,00 684,00 1.710,00 32,58 97,71M 139,00 834,00 2.085,00 39,72 119,14N 276,00 1.656,00 4.140,00 78,87 236,57O 193,00 1.158,00 2.895,00 55,15 165,43P 229,00 1.374,00 3.435,00 65,44 196,29

MÍN/ MÁX DIAS: 1/ não há

QUILOMETRAGEM: Livre

Page 119: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

119

Anexo E – Detalhes do Diagrama de Caso de Uso

Diagram Content Summary

• Sistema de Locadora de Veiculos • Pacote de Controle de Cobranca • Pacote de Controle de Contrato • Pacote de Controle de Relatorios • Pacote de Controle de Cadastro • Pacote de Controle de Reservas • Fazer Pagto Cartao • Validar Cartao • Fazer Pre-Autorizacao • Efetuar Pagto Faturado • Efetuar Pagto Cheque • Controlar Cobranca • Abrir Contrato • Alterar Cadastro • Fechar Contrato • Controlar Contrato • Cancelar Contrato • Relatorio de Contratos • Relatorio de Cliente • Relatorio de Veiculos • Emitir Relatorio • Controlar Cadastro • Manter Dados de Usuario • Manter Dados de Tarifa • Manter Dados de Cliente • Manter Dados de Veiculo • Consultar Reserva • Manter Dados de Reversa • Manter Dados... • Incluir Dados... • Alterar Dados... • Excluir Dados... • Usuario • Gerente • Adm Cartao • Agente

Diagram Content Detail

UseCase Fazer Pagto Cartao Parent : Pacote de Controle de Cobranca Include: Validar Cartao Super Class

Page 120: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

120

Controlar Cobranca

UseCase Validar Cartao Parent : Pacote de Controle de Cobranca Include by: Fazer Pagto Cartao, Fazer Pre-Autorizacao Communication Link communicationlink to Adm Cartao

UseCase Fazer Pre-Autorizacao Parent : Pacote de Controle de Cobranca Include: Validar Cartao, Abrir Contrato

UseCase Efetuar Pagto Faturado Parent : Pacote de Controle de Cobranca Super Class Controlar Cobranca

UseCase Efetuar Pagto Cheque Parent : Pacote de Controle de Cobranca Super Class Controlar Cobranca

UseCase Controlar Cobranca Parent : Pacote de Controle de Cobranca Subclasses Efetuar Pagto Cheque, Fazer Pagto Cartao, Efetuar Pagto Faturado Communication Link communicationlink to Adm Cartao Communication Link communicationlink to Usuario

UseCase Abrir Contrato Use Case Extends Hierarchy Controlar Contrato | +-Abrir Contrato Parent : Pacote de Controle de Contrato Include by: Fazer Pre-Autorizacao Extended by Consultar Reserva Extension Point Name : ExtensionPoint Extend from Controlar Contrato Super Class Controlar Contrato

UseCase Alterar Cadastro Use Case Extends Hierarchy Controlar Contrato | +-Alterar Cadastro Parent : Pacote de Controle de Contrato

Page 121: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

121

Extend from Controlar Contrato Super Class Controlar Contrato

UseCase Fechar Contrato Use Case Extends Hierarchy Controlar Contrato | +-Fechar Contrato Parent : Pacote de Controle de Contrato Extend from Controlar Contrato Super Class Controlar Contrato

UseCase Controlar Contrato Parent : Pacote de Controle de Contrato Extended by Abrir Contrato, Fechar Contrato, Alterar Cadastro, Cancelar Contrato Extension Point Name : ExtensionPoint Name : ExtensionPoint Name : ExtensionPoint Name : ExtensionPoint Name : ExtensionPoint Name : ExtensionPoint Subclasses Abrir Contrato, Fechar Contrato, Alterar Cadastro Communication Link communicationlink to Usuario

UseCase Cancelar Contrato Use Case Extends Hierarchy Controlar Contrato | +-Cancelar Contrato Parent : Pacote de Controle de Contrato Extend from Controlar Contrato

UseCase Relatorio de Contratos Use Case Extends Hierarchy Emitir Relatorio | +-Relatorio de Contratos Parent : Pacote de Controle de Relatorios Extend from Emitir Relatorio Super Class Emitir Relatorio

UseCase Relatorio de Cliente Use Case Extends Hierarchy Emitir Relatorio | +-Relatorio de Cliente

Page 122: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

122

Parent : Pacote de Controle de Relatorios Extend from Emitir Relatorio Super Class Emitir Relatorio

UseCase Relatorio de Veiculos Use Case Extends Hierarchy Emitir Relatorio | +-Relatorio de Veiculos Parent : Pacote de Controle de Relatorios Extend from Emitir Relatorio Super Class Emitir Relatorio

UseCase Emitir Relatorio Parent : Pacote de Controle de Relatorios Extended by Relatorio de Cliente, Relatorio de Contratos, Relatorio de Veiculos Extension Point Name : ExtensionPoint Name : ExtensionPoint Name : ExtensionPoint Name : ExtensionPoint Subclasses Relatorio de Cliente, Relatorio de Contratos, Relatorio de Veiculos Communication Link communicationlink to Gerente

UseCase Controlar Cadastro Parent : Pacote de Controle de Cadastro Extended by Manter Dados de Cliente, Manter Dados de Veiculo, Manter Dados de Usuario, Manter Dados de Tarifa Extension Point Name : ExtensionPoint Name : ExtensionPoint Name : ExtensionPoint Name : ExtensionPoint Subclasses Manter Dados de Cliente, Manter Dados de Tarifa, Manter Dados de Usuario, Manter Dados de Veiculo Communication Link communicationlink to Gerente

UseCase Manter Dados de Usuario Use Case Extends Hierarchy Controlar Cadastro | +-Manter Dados de Cliente | +-Manter Dados de Usuario Parent : Pacote de Controle de Cadastro Extend from Controlar Cadastro Manter Dados de Cliente

Page 123: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

123

Super Class Controlar Cadastro

UseCase Manter Dados de Tarifa Use Case Extends Hierarchy Controlar Cadastro | +-Manter Dados de Tarifa Parent : Pacote de Controle de Cadastro Extend from Controlar Cadastro Super Class Controlar Cadastro

UseCase Manter Dados de Cliente Use Case Extends Hierarchy Controlar Cadastro | +-Manter Dados de Cliente Parent : Pacote de Controle de Cadastro Extended by Manter Dados de Usuario Extension Point Name : ExtensionPoint Extend from Controlar Cadastro Super Class Controlar Cadastro Communication Link communicationlink to Usuario

UseCase Manter Dados de Veiculo Use Case Extends Hierarchy Controlar Cadastro | +-Manter Dados de Veiculo Parent : Pacote de Controle de Cadastro Extend from Controlar Cadastro Super Class Controlar Cadastro

UseCase Consultar Reserva Use Case Extends Hierarchy Manter Dados de Reversa | +-Controlar Contrato | +-Abrir Contrato | +-Consultar Reserva Parent : Pacote de Controle de Reservas Extend from Manter Dados de Reversa Abrir Contrato

UseCase Manter Dados de Reversa Parent : Pacote de Controle de Reservas Extended by Consultar Reserva Extension Point Name : ExtensionPoint

Page 124: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

124

Subclasses UseCase Communication Link communicationlink to Usuario

UseCase Manter Dados... Parent : Sistema de Locadora de Veiculos Extended by Incluir Dados..., Alterar Dados..., Excluir Dados... Extension Point Name : Incluir Dados Name : Alterar Dados Name : Excluir Dados

UseCase Incluir Dados... Use Case Extends Hierarchy Manter Dados... | +-Incluir Dados... Parent : Sistema de Locadora de Veiculos Extend from Manter Dados...

UseCase Alterar Dados... Use Case Extends Hierarchy Manter Dados... | +-Alterar Dados... Parent : Sistema de Locadora de Veiculos Extend from Manter Dados...

UseCase Excluir Dados... Use Case Extends Hierarchy Manter Dados... | +-Excluir Dados... Parent : Sistema de Locadora de Veiculos Extend from Manter Dados...

Actor Usuario Subclasses Gerente, Agente Communication Link communicationlink to Manter Dados de Cliente Communication Link communicationlink to Manter Dados de Reversa Communication Link communicationlink to Agente Communication Link communicationlink to Controlar Contrato Communication Link communicationlink to Controlar Cobranca

Actor Gerente Generalization Hierarchy Usuario | +-Gerente Super Class

Page 125: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

125

Usuario Communication Link communicationlink to Controlar Cadastro Communication Link communicationlink to Emitir Relatorio

Actor Adm Cartao Communication Link communicationlink to Validar Cartao Communication Link communicationlink to Controlar Cobranca

Actor Agente Generalization Hierarchy Usuario | +-Agente Super Class Usuario Communication Link communicationlink to Usuario

Package Pacote de Controle de Cobranca Parent : Sistema de Locadora de Veiculos Children: Fazer Pagto Cartao, Validar Cartao, Fazer Pre-Autorizacao, Efetuar Pagto Faturado, Efetuar Pagto Cheque, Controlar Cobranca

Package Pacote de Controle de Contrato Parent : Sistema de Locadora de Veiculos Children: Abrir Contrato, Alterar Cadastro, Fechar Contrato, Controlar Contrato, Cancelar Contrato

Package Pacote de Controle de Relatorios Parent : Sistema de Locadora de Veiculos Children: Relatorio de Contratos, Relatorio de Cliente, Relatorio de Veiculos, Emitir Relatorio

Package Pacote de Controle de Cadastro Parent : Sistema de Locadora de Veiculos Children: Controlar Cadastro, Manter Dados de Usuario, Manter Dados de Tarifa, Manter Dados de Cliente, Manter Dados de Veiculo

Package Pacote de Controle de Reservas Parent : Sistema de Locadora de Veiculos Children: Consultar Reserva, Manter Dados de Reversa

System Sistema de Locadora de Veiculos Children: UseCase, Efetuar Pagto Dinheiro, Efetuar Pagto Taxa Servico, UseCase2, , UseCase3, Pacote de Controle de Cobranca, Pacote de Controle de Contrato, Pacote de Controle de Relatorios, Pacote de

Page 126: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

126

Controle de Cadastro, Pacote de Controle de Reservas, , Manter Dados..., Incluir Dados..., Alterar Dados..., Excluir Dados...

Communication Link Communication Link End From Element : Gerente Navigable : True Visibility : Unspecified Communication Link End To Element : Controlar Cadastro Navigable : True Visibility : Unspecified

Communication Link Communication Link End From Element : Usuario Navigable : True Visibility : Unspecified Communication Link End To Element : Manter Dados de Reversa Navigable : True Visibility : Unspecified

Communication Link Communication Link End From Element : Gerente Navigable : True Visibility : Unspecified Communication Link End To Element : Emitir Relatorio Navigable : True Visibility : Unspecified

Communication Link Communication Link End From Element : Usuario Navigable : True Visibility : Unspecified Communication Link End To Element : Controlar Contrato Navigable : True Visibility : Unspecified

Communication Link Communication Link End From Element : Usuario Navigable : True Visibility : Unspecified Communication Link End To Element : Controlar Cobranca Navigable : True Visibility : Unspecified

Page 127: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

127

Communication Link Communication Link End From Element : Adm Cartao Navigable : True Visibility : Unspecified Communication Link End To Element : Validar Cartao Navigable : True Visibility : Unspecified

Page 128: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

128

Anexo F – Detalhes do Diagrama de Classes Diagram Content Summary

• Sistema de Locadora de Veiculos • IContrato • Cliente • Reserva • TiposDeTarifa • GrupoTarifa • GruposDeVeiculos • Contrato • Veiculo • Pagamento • Cartao • Cheque • Fatura • IPagamentoAdmCartao • ICliente • IReserva • IVeiculo • IGrupoVeiculo • ITipoDeTarifa • IGrupoTarifa

Diagram Content Detail

Class IContrato Stereotype : interface Realizied by: Contrato, Pagamento Operation Summary public abrirContrato() public alterarContrato() public fecharContrato() public cancelarContrato() public consultarContrato() public efetuarPagamento() public enviaDadosCobranca() Operation Detail public abrirContrato() Return Type : public alterarContrato() Return Type : public fecharContrato()

Page 129: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

129

Return Type : public cancelarContrato() Return Type : public consultarContrato() Return Type : public efetuarPagamento() Return Type : public enviaDadosCobranca() Return Type :

Class Cliente Parent : Sistema de Locadora de Veiculos Realization: ICliente Association association(0..*) to Contrato Association association(0..*) to Contrato Association association(0..*) to Reserva Attribute Summary private string clienteNome private string endereco private int cep private string cidade private string estado private int cpf private string rg private int cnh private date validadeCnh private date dataNascimento private int telefoneRes private int telefoneCel private int telefoneComl private string empresaNome private int empresaCnpj

Operation Summary public cadastrarCliente() public excluirCliente() public alterarCliente() public consultarCliente() Attribute Detail private string clienteNome private string endereco private int cep private string cidade private string estado private int cpf

Page 130: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

130

private string rg private int cnh private date validadeCnh private date dataNascimento private int telefoneRes private int telefoneCel private int telefoneComl private string empresaNome private int empresaCnpj Operation Detail public cadastrarCliente() Return Type : public excluirCliente() Return Type : public alterarCliente() Return Type : public consultarCliente() Return Type :

Class Reserva Parent : Sistema de Locadora de Veiculos Realization: IReserva Association association to Reserva Association association(0..1) to Contrato Association association(1) to Cliente Association association(1) to GrupoTarifa Association association(0..1) to Contrato Association association to Reserva Attribute Summary private tiime horaSaida private time horaDevolucao private date dataSaida private date dataDevolucao private int statusReserva private string numeroReserva

Operation Summary public cadastrarReserva() public cancelarReserva() public alterarReserva() public consultaReserva() Attribute Detail private tiime horaSaida private time horaDevolucao private date dataSaida private date dataDevolucao

Page 131: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

131

private int statusReserva private string numeroReserva Operation Detail public cadastrarReserva() Return Type : public cancelarReserva() Return Type : public alterarReserva() Return Type : public consultaReserva() Return Type :

Class TiposDeTarifa Parent : Sistema de Locadora de Veiculos Realization: ITipoDeTarifa Association association(1..*) to GruposDeVeiculos Attribute Summary private string tarifaNome private string tarifaId private string tarifaComentario private date tarifaValidade private date tarifaDataEfetiva private int tarifaKmFranquia

Operation Summary public cadastrarTarifa() public consultarTarifa() public excluirTarifa() public alterarTarifa() Attribute Detail private string tarifaNome private string tarifaId private string tarifaComentario private date tarifaValidade private date tarifaDataEfetiva private int tarifaKmFranquia Operation Detail public cadastrarTarifa() Return Type : public consultarTarifa() Return Type : public excluirTarifa()

Page 132: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

132

Return Type : public alterarTarifa() Return Type :

Class GrupoTarifa Parent : Sistema de Locadora de Veiculos Realization: IGrupoTarifa Association association(0..*) to Contrato Association association(0..*) to Contrato Association association(1..*) to Reserva Attribute Summary private float tarifaDiaria private float tarifaSemanal private float tarifaMensal private float tarifaKmAdicional private float tarifaHoraAdicional private float tarifaDiaAdicional

Operation Summary public alterarTarifa() public cadastrarTarifa() public consultarTarifa() public excluirTarifa() Attribute Detail private float tarifaDiaria private float tarifaSemanal private float tarifaMensal private float tarifaKmAdicional private float tarifaHoraAdicional private float tarifaDiaAdicional Operation Detail public alterarTarifa() Return Type : public cadastrarTarifa() Return Type : public consultarTarifa() Return Type : public excluirTarifa() Return Type :

Class GruposDeVeiculos Parent : Sistema de Locadora de Veiculos Realization: IGrupoVeiculo Subclasses

Page 133: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

133

Class11 Association association(0..*) to Veiculo Association association(0..*) to Contrato Association association(1..*) to TiposDeTarifa Association association(0..*) to Veiculo Attribute Summary private string grupoNome private string grupoComentario

Operation Summary public cadastrarGrupo() public consultarGrupo() public excluirGrupo() public alterarGrupo() Attribute Detail private string grupoNome private string grupoComentario Operation Detail public cadastrarGrupo() Return Type : public consultarGrupo() Return Type : public excluirGrupo() Return Type : public alterarGrupo() Return Type :

Class Contrato Parent : Sistema de Locadora de Veiculos Realization: IContrato Realizied by: Sistema de Locadora de Veiculos Association association(1) to Pagamento Association association(1) to Cliente Association association(1) to Veiculo Association association(0..1) to Reserva Association association(1) to GrupoTarifa Association association(1) to GruposDeVeiculos Association association(1) to Cliente Association association(0..1) to Reserva Association association(1) to GrupoTarifa Association association(1) to Veiculo Attribute Summary private string numeroContrato private date dataContrato private int codigoAgenteAbertura

Page 134: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

134

private int kmSaida private int qteCombustivelDeSaida private date dataSaida private time horaSaida private byte seguroVeiculo private byte seguroPessoal private byte seguroTerceiros private byte prePagto private float valorPrePagto private date dataPrevistaDevolucao private time horaPrevistaDevolucao private int qteKmAdicional private float valorKmAdicional private int qteHoraAdicional private float valorHoraAdicional private int qteDiaria private float valorDiaria private int qteSemana private float valorSemanal private int qteMensal private float valorMensal private int qteDiaAdicional private float valorDiaAdicional private int codigoAgenteFechamento private int kmChegada private int qteCombustivelChegada private byte cobrarCombustivel private date dataChegada private time horaChegada private string ajusteComentario private float valorSeguroPessoal private float valorSeguroVeiculo private float valorSeguroTerceiros private float valorAjuste private string statusContrato

Operation Summary public abrirContrato() public alterarContrato() public fecharContrato() public cancelarContrato() public consultaContrato() public efetuaPagamento() Attribute Detail private string numeroContrato private date dataContrato private int codigoAgenteAbertura private int kmSaida private int qteCombustivelDeSaida private date dataSaida private time horaSaida

Page 135: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

135

private byte seguroVeiculo private byte seguroPessoal private byte seguroTerceiros private byte prePagto private float valorPrePagto private date dataPrevistaDevolucao private time horaPrevistaDevolucao private int qteKmAdicional private float valorKmAdicional private int qteHoraAdicional private float valorHoraAdicional private int qteDiaria private float valorDiaria private int qteSemana private float valorSemanal private int qteMensal private float valorMensal private int qteDiaAdicional private float valorDiaAdicional private int codigoAgenteFechamento private int kmChegada private int qteCombustivelChegada private byte cobrarCombustivel private date dataChegada private time horaChegada private string ajusteComentario private float valorSeguroPessoal private float valorSeguroVeiculo private float valorSeguroTerceiros private float valorAjuste private string statusContrato Operation Detail public abrirContrato() Return Type : public alterarContrato() Return Type : public fecharContrato() Return Type : public cancelarContrato() Return Type : public consultaContrato() Return Type : public efetuaPagamento() Return Type :

Class Veiculo Parent : Sistema de Locadora de Veiculos

Page 136: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

136

Realization: IVeiculo Association association(0..*) to Contrato Association association(0..*) to Contrato Association association(1) to GruposDeVeiculos Association association(1) to GruposDeVeiculos Attribute Summary private string numeroChassi private string numeroPlaca private string fabricante private string marca private string cor private string anoModelo private int qtePorta private int kmInicial private string codigoChave private byte arCondicionado private byte direcaoHidraulica private byte radio private date dataCompra private date dataVistoria private date dataPrevVenda private int statusVeiculo private date dataLicenciamento private string otencia private int capacidadeCombustivel private string tipoCombustivel private int rendimentoCombustivel private string tipoCarroceria private int tipoTransmissao

Operation Summary public cadastarVeiculo() public consultarVeiculo() public alterarVeiculo() public excluirVeiculo() Attribute Detail private string numeroChassi private string numeroPlaca private string fabricante private string marca private string cor private string anoModelo private int qtePorta private int kmInicial private string codigoChave private byte arCondicionado private byte direcaoHidraulica private byte radio private date dataCompra private date dataVistoria

Page 137: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

137

private date dataPrevVenda private int statusVeiculo private date dataLicenciamento private string otencia private int capacidadeCombustivel private string tipoCombustivel private int rendimentoCombustivel private string tipoCarroceria private int tipoTransmissao Operation Detail public cadastarVeiculo() Return Type : public consultarVeiculo() Return Type : public alterarVeiculo() Return Type : public excluirVeiculo() Return Type :

Class Pagamento Parent : Sistema de Locadora de Veiculos Realization: IPagamentoAdmCartao, IContrato Subclasses Cartao, Cheque, Fatura Association association(1) to Contrato Attribute Summary private date dataPagamento private string tipoPagto private float valorTotal

Operation Summary public atualizaBaseDeDados() public emiteNotaFiscal() public atualizaStatusContrato() public validaCartao() public recebeDadosAdministradora() public enviaDadosAdministradora() public enviaDadosCobraca() Attribute Detail private date dataPagamento private string tipoPagto private float valorTotal Operation Detail public atualizaBaseDeDados()

Page 138: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

138

Return Type : public emiteNotaFiscal() Return Type : public atualizaStatusContrato() Return Type : public validaCartao() Return Type : public recebeDadosAdministradora() Return Type : public enviaDadosAdministradora() Return Type : public enviaDadosCobraca() Return Type :

Class Cartao Generalization Hierarchy Pagamento | +-Cartao Parent : Sistema de Locadora de Veiculos Super Class Pagamento Attribute Summary private float valorPreAutorizacao private int cartaoId private date cartaoValidade private int cartaoDigitoSeguraca private int numeroAutorizacao private int numeroPreAutorizacao Attribute Detail private float valorPreAutorizacao private int cartaoId private date cartaoValidade private int cartaoDigitoSeguraca private int numeroAutorizacao private int numeroPreAutorizacao

Class Cheque Generalization Hierarchy Pagamento | +-Cheque Parent : Sistema de Locadora de Veiculos Super Class Pagamento

Page 139: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

139

Attribute Summary private string nomeBanco private string numeroBanco private string numeroAgencia private string nomeAgencia private string numeroDoCheque private date dataEmissao Attribute Detail private string nomeBanco private string numeroBanco private string numeroAgencia private string nomeAgencia private string numeroDoCheque private date dataEmissao

Class Fatura Generalization Hierarchy Pagamento | +-Fatura Parent : Sistema de Locadora de Veiculos Super Class Pagamento Attribute Summary private string razaoSocial private string cnpj private string endereco private int telefone private string contato private int numeroAutorizacaoPagto Attribute Detail private string razaoSocial private string cnpj private string endereco private int telefone private string contato private int numeroAutorizacaoPagto

Class IPagamentoAdmCartao Stereotype : interface Realizied by: Pagamento Operation Summary public validaCartao() public recebeDadosAdministradora() public enviaDadosAdministradora()

Page 140: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

140

Operation Detail public validaCartao() Return Type : public recebeDadosAdministradora() Return Type : public enviaDadosAdministradora() Return Type :

Class ICliente Stereotype : interface Realizied by: Cliente Operation Summary public cadastrarCliente() public excluirCliente() public alterarCliente() public consultarCliente() Operation Detail public cadastrarCliente() Return Type : public excluirCliente() Return Type : public alterarCliente() Return Type : public consultarCliente() Return Type :

Class IReserva Stereotype : interface Realizied by: Reserva Operation Summary public cadastrarReserva() public cancelarReserva() public alterarReserva() public consultarReserva() Operation Detail public cadastrarReserva() Return Type : public cancelarReserva() Return Type : public alterarReserva()

Page 141: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

141

Return Type : public consultarReserva() Return Type :

Class IVeiculo Stereotype : interface Realizied by: Veiculo Operation Summary public cadastrarVeiculo() public consultarVeiculo() public alterarVeiculo() public excluirVeiculo() Operation Detail public cadastrarVeiculo() Return Type : public consultarVeiculo() Return Type : public alterarVeiculo() Return Type : public excluirVeiculo() Return Type :

Class IGrupoVeiculo Stereotype : interface Realizied by: GruposDeVeiculos Operation Summary public cadastrarGrupo() public consultarGrupo() public excluirGrupo() public alterarGrupo() Operation Detail public cadastrarGrupo() Return Type : public consultarGrupo() Return Type : public excluirGrupo() Return Type : public alterarGrupo()

Page 142: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

142

Return Type :

Class ITipoDeTarifa Stereotype : interface Realizied by: TiposDeTarifa Operation Summary public cadastrarTarifa() public consultarTarifa() public excluirTarifa() public alterarTarifa() Operation Detail public cadastrarTarifa() Return Type : public consultarTarifa() Return Type : public excluirTarifa() Return Type : public alterarTarifa() Return Type :

Class IGrupoTarifa Stereotype : interface Realizied by: GrupoTarifa Operation Summary public alterarTarifa() public cadastrarTarifa() public consultarTarifa() public excluirTarifa() Operation Detail public alterarTarifa() Return Type : public cadastrarTarifa() Return Type : public consultarTarifa() Return Type : public excluirTarifa() Return Type :

Package Sistema de Locadora de Veiculos

Page 143: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

143

Children: Class7, Class8, Class9, Class10, Class11, Package, Cliente, Contrato, Veiculo, Reserva, TiposDeTarifa, GrupoTarifa, GruposDeVeiculos, Pagamento, Cartao, Cheque, Fatura Realization: Contrato

Association Association End From Element : Cliente Multiplicity : 1 Navigable : True Association End To Element : Contrato Multiplicity : 0..* Navigable : True

Association Association End From Element : Reserva Multiplicity : 0..* Navigable : True Association End To Element : Cliente Multiplicity : 1 Navigable : True

Association Association End From Element : Reserva Multiplicity : 1..* Navigable : True Association End To Element : GrupoTarifa Multiplicity : 1 Navigable : True

Association Association End From Element : Reserva Multiplicity : 0..1 Navigable : True Association End To Element : Contrato Multiplicity : 0..1 Navigable : True

Association Association End From Element : GruposDeVeiculos Multiplicity : 1..* Navigable : True Association End To

Page 144: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

144

Element : TiposDeTarifa Multiplicity : 1..* Navigable : True

Association Association End From Element : GrupoTarifa Multiplicity : 1 Navigable : True Association End To Element : Contrato Multiplicity : 0..* Navigable : True

Association Association End From Element : GruposDeVeiculos Multiplicity : 1 Navigable : True Aggregation Kind : Aggregation Association End To Element : Veiculo Multiplicity : 0..* Navigable : True

Association Association End From Element : Contrato Multiplicity : 1 Navigable : True Association End To Element : Pagamento Multiplicity : 1 Navigable : True

Association Association End From Element : Veiculo Multiplicity : 1 Navigable : True Association End To Element : Contrato Multiplicity : 0..* Navigable : True

Page 145: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

145

Anexo G – Detalhes do Diagrama de Seqüência ‘Controlar Cobranca’

Detalhes do Diagrama de Seqüência ‘Controlar Cobranca’ – Parte #1/2

Diagram Content Summary

• Usuario • IContrato • c1:Contrato • Pagamento • Cheque

Diagram Content Detail

Actor Usuario Message Usuario insere dados para pagamento: tipoPagto, valorTotal, dataPagamento to IContrato Message Opcao fechar Contrato to IContrato Message Usuario insere dados adicionais de cobranca: nomeBanco, numeroBanco, nomeAgencia, numeroAgencia, numeroDoCheque, dataEmissao. to IContrato Parent : Diagrama de Sequencia do caso de uso 'Controlar Cobranca' (Parte #1/2)

LifeLine IContrato Message efetuarPagamento(tipoPagto, valorTotal, dataPagamento) to c1:Contrato Message fecharContrato() to c1:Contrato Message retorno to Usuario Return (Action) action detail Name : Return Message enviaDadosCobranca(nomeBanco, numeroBanco, nomeAgencia, numeroAgencia, numeroDoCheque, dataEmissao) to Cheque Message retorno to Usuario Return (Action) action detail Name : Return Parent : Diagrama de Sequencia do caso de uso 'Controlar Cobranca' (Parte #1/2)

LifeLine c1:Contrato Message atualizaBaseDeDados() to Pagamento Message emiteNotaFiscal(); to Pagamento Message atualizaStatusContrato(); to Pagamento Message <> to Pagamento Message retorno to IContrato Return (Action) action detail Name : Return Message <> to Cheque Message <> to Pagamento Destroy (Action) action detail Name : Destroy Message atualizaBaseDeDados() to Cheque

Page 146: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

146

Message emiteNotaFiscal(); to Cheque Message atualizaStatusContrato(); to Cheque Message <> to Cheque Destroy (Action) action detail Name : Destroy Parent : Diagrama de Sequencia do caso de uso 'Controlar Cobranca' (Parte #1/2)

LifeLine Pagamento Message retorno to c1:Contrato Return (Action) action detail Name : Return Message retorno to c1:Contrato Return (Action) action detail Name : Return Message retorno to c1:Contrato Return (Action) action detail Name : Return Parent : Diagrama de Sequencia do caso de uso 'Controlar Cobranca' (Parte #1/2)

LifeLine Cheque Message retorno to c1:Contrato Return (Action) action detail Name : Return Message retorno to c1:Contrato Return (Action) action detail Name : Return Message retorno to c1:Contrato Return (Action) action detail Name : Return Message retorno to IContrato Return (Action) action detail Name : Return Parent : Diagrama de Sequencia do caso de uso 'Controlar Cobranca' (Parte #1/2)

Detalhes do Diagrama de Seqüência ‘Controlar Cobranca’ – Parte #2/2

Diagram Content Summary

• Usuario • Administradora de Cartao • IContratoTela • c1:Contrato • Fatura • Cartao • IPagamentoAdmCartao

Diagram Content Detail

Actor Usuario

Page 147: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

147

Message Usuario insere dados adicionais de cobranca: numeroCartao, cartaoValidade, cartaoDigitoSeguranca. to IContratoTela Message Usuario insere dados adicionais de cobranca: razaoSocial, cnpj, endereco, telefone, contato, numeroAutorizacaoPagto. to IContratoTela Parent : Diagrama de Sequencia do caso de uso 'Controlar Cobranca' (Parte # 2/2)

Actor Administradora de Cartao Message retorno to IPagamentoAdmCartao Return (Action) action detail Name : Return Message retorno to IPagamentoAdmCartao Return (Action) action detail Name : Return Message retorno to IPagamentoAdmCartao Return (Action) action detail Name : Return Parent : Diagrama de Sequencia do caso de uso 'Controlar Cobranca' (Parte # 2/2)

LifeLine IContratoTela Message retorno to Usuario Return (Action) action detail Name : Return Message enviaDadosCobranca(numeroCartao, cartaoValidade, cartaoDigitoSeguranca) to Cartao Message enviaDadosCobranca(razaoSocial, cnpj, endereco, telefone, contato, numeroAutorizacaoPagto) to Fatura Message retorno to Usuario Return (Action) action detail Name : Return Parent : Diagrama de Sequencia do caso de uso 'Controlar Cobranca' (Parte # 2/2)

LifeLine c1:Contrato Message retorno to IContratoTela Return (Action) action detail Name : Return Message atualizaStatusContrato(); to Fatura Message <> to Fatura Message <> to Cartao Message <> to Fatura Destroy (Action) action detail Name : Destroy Message atualizaBaseDeDados() to Cartao Message emiteNotaFiscal(); to Cartao Message atualizaStatusContrato(); to Cartao Message <> to Cartao Destroy (Action) action detail Name : Destroy Message emiteNotaFiscal(); to Fatura Message atualizaBaseDeDados() to Fatura Parent : Diagrama de Sequencia do caso de uso 'Controlar Cobranca' (Parte # 2/2)

Page 148: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

148

LifeLine Fatura Message retorno to c1:Contrato Return (Action) action detail Name : Return Message retorno to IContratoTela Return (Action) action detail Name : Return Message retorno to c1:Contrato Return (Action) action detail Name : Return Message retorno to c1:Contrato Return (Action) action detail Name : Return Parent : Diagrama de Sequencia do caso de uso 'Controlar Cobranca' (Parte # 2/2)

LifeLine Cartao Message retorno to c1:Contrato Return (Action) action detail Name : Return Message retorno to c1:Contrato Return (Action) action detail Name : Return Message retorno to c1:Contrato Return (Action) action detail Name : Return Message <> to IPagamentoAdmCartao Message validaCartao(numeroCartao) to IPagamentoAdmCartao Message enviaDadosAdministradora() to IPagamentoAdmCartao Message recebeDadosAdministradora() to IPagamentoAdmCartao Message <> to IPagamentoAdmCartao Destroy (Action) action detail Name : Destroy Parent : Diagrama de Sequencia do caso de uso 'Controlar Cobranca' (Parte # 2/2)

LifeLine IPagamentoAdmCartao Message validaCartao(numeroCartao) to Administradora de Cartao Message retorno to Cartao Return (Action) action detail Name : Return Message enviaDadosAdministradora() to Administradora de Cartao Message retorno to Cartao Return (Action) action detail Name : Return Message recebeDadosAdministradora() to Administradora de Cartao Message retorno to Cartao Return (Action) action detail Name : Return Parent : Diagrama de Sequencia do caso de uso 'Controlar Cobranca' (Parte # 2/2)

Page 149: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

149

Anexo H – Detalhes do Diagrama de Atividades ‘Controlar Cobranca’

Diagram Content Summary

• InitialState • Seleciona opcao de fechamento de contrato. • Insere o valor e a data • Escolhe o tipo de pagamento • Sistema atualiza base de dados • Sistema emite nota fiscal • Sistema atualiza status do contrato • Insere dados adicionais do cheque: numero e nome do banco, numero e nome da agencia,

numero do cheque, data de emissao, data para pagamento. • Insere dados adicionais da empresa: CNPJ, Razao Social, endereco, telefone, contato,

numero A.P., data para pagamento, data emissao • Insere dados adicionais do cartao: Validade e numero do cartao. • Insere digito de seguranca • Envia dados para administradora • Recebe numero da transacao • SynchronizationBar • SynchronizationBar2 • FinalState • Usuario • Admin. de Cartao

Diagram Content Detail

Initial State InitialState Parent : Usuario Transition link to Seleciona opcao de fechamento de contrato.

Action State Seleciona opcao de fechamento de contrato. Parent : Usuario Transition link to Insere o valor e a data Transition link from InitialState

Action State Insere o valor e a data Parent : Usuario Transition link to Escole o tipo de pagamento Transition link from Seleciona opcao de fechamento de contrato.

Action State Escole o tipo de pagamento Parent : Usuario

Page 150: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

150

Transition link to Transition link from Insere o valor e a data

Action State Sistema atualiza base de dados Parent : Usuario Transition link to Sistema emite nota fiscal Transition link from

Action State Sistema emite nota fiscal Parent : Usuario Transition link to Sistema atualiza status do contrato Transition link from Sistema atualiza base de dados

Action State Sistema atualiza status do contrato Parent : Usuario Transition link to FinalState Transition link from Sistema emite nota fiscal

Action State Insere dados adicionais do cheque: numero e nome do banco, numero e nome da agencia, numero do cheque, data de emissao, data para pagamento. Parent : Usuario Transition link to Transition link from

Action State Insere dados adicionais da empresa: CNPJ, Razao Social, endereco, telefone, contato, numero A.P., data para pagamento, data emissaoParent : Usuario Transition link to Transition link from

Action State Insere dados adicionais do cartao: Validade e numero do cartao. Parent : Usuario Transition link to SynchronizationBar Transition link from

Action State Insere digito de seguranca Parent : Usuario Transition link to SynchronizationBar2 Transition link from SynchronizationBar

Action State Envia dados para administradora Parent : Admin. de Cartao

Page 151: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

151

Transition link to SynchronizationBar2 Transition link from SynchronizationBar

Action State Recebe numero da transacao Parent : Admin. de Cartao Transition link to Transition link from SynchronizationBar2

Decision Point Parent : Usuario Transition link [dinheiro] to Transition link [faturado] to Insere dados adicionais da empresa: CNPJ, Razao Social, endereco, telefone, contato, numero A.P., data para pagamento, data emissao Transition link [cheque] to Insere dados adicionais do cheque: numero e nome do banco, numero e nome da agencia, numero do cheque, data de emissao, data para pagamento. Transition link [cartao to Insere dados adicionais do cartao: Validade e numero do cartao. Transition link from Escole o tipo de pagamento

Decision Point Parent : Usuario Transition link to Sistema atualiza base de dados Transition link from , Insere dados adicionais da empresa: CNPJ, Razao Social, endereco, telefone, contato, numero A.P., data para pagamento, data emissao, Insere dados adicionais do cheque: numero e nome do banco, numero e nome da agencia, numero do cheque, data de emissao, data para pagamento., Recebe numero da transacao

Synchronization BarSynchronizationBar Transition link to Insere digito de seguranca Transition link to Envia dados para administradora Transition link from Insere dados adicionais do cartao: Validade e numero do cartao.

Synchronization BarSynchronizationBar2 Transition link to Recebe numero da transacao Transition link from Envia dados para administradora, Insere digito de seguranca

Final State FinalState Parent : Usuario Transition link from Sistema atualiza status do contrato

Page 152: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

152

SwimLane Usuario Children: InitialState, Seleciona opcao de fechamento de contrato., Insere o valor e a data, Escole o tipo de pagamento, Sistema atualiza base de dados, Sistema emite nota fiscal, Sistema atualiza status do contrato, FinalState, Insere dados adicionais do cheque: numero e nome do banco, numero e nome da agencia, numero do cheque, data de emissao, data para pagamento., Insere dados adicionais da empresa: CNPJ, Razao Social, endereco, telefone, contato, numero A.P., data para pagamento, data emissao, Insere dados adicionais do cartao: Validade e numero do cartao., Insere digito de seguranca

SwimLane Admin. de Cartao Children: Envia dados para administradora, Recebe numero da transacao

Page 153: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

153

Anexo I – Protótipos de Interface Gráfica.

Figura 47: Protótipo da Tela de Abertura de Contrato.

Page 154: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

154

Figura 48: Protótipo da Tela de Fechamento de Contrato de Locação.

Page 155: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

155

Figura 49: Protótipo da Tela de Cadastro de Veículos.

Page 156: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

156

Considerações Finais

Conforme proposto no início desse trabalho, mostrou-se a teoria através dos

conceitos e a prática através do estudo de caso, observou-se as etapas para realizar

um projeto de software utilizando a orientação a objetos com UML.

Pôde-se constatar que a documentação do projeto é muito importante para

que toda a equipe envolvida no processo de desenvolvimento do sistema trabalhe

em sincronismo, alcançando assim o mesmo objetivo: um sistema condizente com a

necessidade do cliente.

Apesar do processo de documentação consumir um tempo aparentemente

desnecessário, o qual poderia ser utilizado para efetuar outras atividades do projeto,

conclui-se que a documentação gerada no decorrer desse período é de grandíssima

utilidade, tanto para manter a equipe alinhada aos objetivos do projeto quanto para a

evolução do sistema.

Com a elaboração desse trabalho, conclui-se que é necessário seguir um

método eficaz de desenvolvimento para o sistema evitando a utilização do modelo

‘balbúrdia’. É necessário emprenhar-se na análise de requisitos para que não ocorra

retrabalho, evitando assim ultrapassar o orçamento do projeto e, na maioria das

vezes, a data limite e com isso a perda de dinheiro e tempo, respectivamente.

Constatou-se que, com a utilização da análise orientada a objetos, o

desenvolvimento de software ficou simples, pois os objetos possuem características

e ações retratando o mundo real. Pelo fato do software ser composto por objetos,

facilitou a manutenção e evolução do sistema, ficando transparente para o usuário

as alterações na implementação dos códigos.

Durante o trabalho, de acordo com o tema proposto, foi abordado apenas o

projeto do software orientado a objetos com UML, em uma etapa futura será dado

seqüência a esse trabalho onde pretende-se dar ênfase na implementação do

sistema.

Finalizando, a elaboração deste estudo foi muito gratificante principalmente,

porque através dele, pude reforçar os meus conhecimentos e assimilar novas

experiências relacionadas ao projeto de software orientado a objetos.

Page 157: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

157

Referências Bibliográficas BEZERRA, Eduardo. Princípios de análise e projeto de sistemas com UML. Rio

de Janeiro: Campus, 2002.

BORGES, José Antonio. Projeto MOTRIX. Disponível em:

<http://intervox.nce.ufrj.br/motrix/>. Acessado em: 02/Jul/06.

BOOCH, Grady et al. UML, guia do usuário. Rio de Janeiro: Elsevier, 2000.

FERREIRA, Aurélio Buarque de Holanda. Dicionário Aurélio Básico da Língua Portuguesa. Rio de Janeiro: Nova Fronteira, 1988, p. 603.

GOTTESDIENER, E., Business Rules as Requirements. Software Development,

1999. In: BEZERRA, Eduardo. Princípios de análise e projeto de sistemas com UML. Rio de Janeiro: Campus, 2002: 70.

Guia do Hardware.Net. ENIAC. Disponível em :

<http://www.guiadohardware.net/termos/eniac> Acessado em: 13/Jun/2006

MANDEL, T., The Elements of User Interface Design. Wiley, 1997. In:

PRESSMAN, Roger S. Engenharia de Software - Ed.5. Rio de Janeiro: McGraw-

Hill, 2002: 394.

MELO, Ana Cristina. Desenvolvendo aplicações com UML 2.0: do conceitual à implementação - 2ºed. Rio de Janeiro: Brasport, 2006.

POMPILHO, S. Análise essencial – Guia prático de análise de sistemas. Rio de

Janeiro: Infobook, 1995. In: TONSIG, Sergio Luiz. Engenharia de Software Análise e Projetos de Sistemas. São Paulo: Futura, 2003.

Page 158: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

158

PRESSMAN, Roger S. Engenharia de Software - Ed.5. Rio de Janeiro: McGraw-

Hill, 2002.

SOMMERVILLE, Ian. Engenharia de Software. São Paulo: Pearson Addison

Wesley, 2003.

SUN. Java Card. Disponível em

<http://java.sun.com/products/javacard/overview.html> Acessado em: 16/Jun/2006.

TONSIG, Sergio Luiz. Engenharia de Software Análise e Projetos de Sistemas. São Paulo: Futura, 2003.

WIKIPÉDIA. Linguagem procedural. Disponível em:

<http://pt.wikipedia.org/wiki/Linguagem_Procedural>. Acessado em: 09/Jul/06.

WIKIPÉDIA. Orientação a objeto. Disponível em:

<http://pt.wikipedia.org/wiki/Orientação_a_objeto>. Acessado em: 09/Jul/06.

WIKIPÉDIA. R.A.I.D. Disponível em: <http://pt.wikipedia.org/wiki/Raid>. Acessado

em: 31/Jul/06.

WIKIPÉDIA. Multiprocessamento. Disponível em:

<http://pt.wikipedia.org/wiki/Multiprocessamento>. Acessado em: 31/Jul/06.

WIKIPÉDIA. Sistema de Gerenciamento de Banco de Dados. Disponível em:

<http://pt.wikipedia.org/wiki/SGBD>. Acessado em: 31/Jul/06.

WIKIPÉDIA. Active Server Pages. Disponível em:

<http://pt.wikipedia.org/wiki/ASP>. Acessado em: 31/Jul/06.

WIKIPÉDIA. Rede. Disponível em: <http://pt.wikipedia.org/wiki/Rede> Acessado em

15/Jun/2006.

Page 159: TCC DRUMMOND - Projeto de software orientado a objetos com UML. Estudo de caso em uma locadora de veículos

159

WIKIPÉDIA. Rede de computadores. Disponível em:

<http://pt.wikipedia.org/wiki/Rede_de_computadores> Acessado em 15/Jun/2006.

WIKIPÉDIA. WEB. Disponível em: <http://pt.wikipedia.org/wiki/Web> Acessado em

27/Jun/2006.

WIKIPÉDIA. Brainstorming Disponível em:

<http://pt.wikipedia.org/wiki/Brainstorming > Acessado em: 30/Jul/2006.

WIKIPÉDIA. Cartão perfurado. Disponível em:

<http://pt.wikipedia.org/wiki/Cartão_perfurado> Acessado em: 13/Jun/2006

WIKIPÉDIA. Topologia. Disponível em: <http://pt.wikipedia.org/wiki/Topologia>.

Acessado em: 22/Ago/2006.

WIKIPÉDIA. Gestão de Riscos nos projetos de Software. Disponível em:

<http://pt.wikipedia.org/wiki/Gestão_de_Riscos_nos_projectos_de_Software>.

Acessado em: 22/Ago/2006.

WIKIPÉDIA. PDA. Disponível em:<http://pt.wikipedia.org/wiki/PDA>. Acessado em:

22/Ago/2006.

WIKIPÉDIA. Abstração. Disponível em:<http://pt.wikipedia.org/wiki/Abstração>.

Acessado em: 22/Ago/2006.

WIKIPÉDIA. Plataforma (informática). Disponível em:

<http://pt.wikipedia.org/wiki/Plataforma_(informática)>. Acessado em: 23/Ago/2006.

WIKIPÉDIA. Redundância (informática). Disponível em:

<http://pt.wikipedia.org/wiki/Redundância_(informática)>. Acessado em:

23/Ago/2006.