análise e projeto orientado a objeto usando uml

83
Análise e Projeto Orientado a Objeto Usando UML Lorena Borges Moreira Uberlândia, Dezembro/2000.

Upload: guilhermegielow

Post on 26-Jun-2015

791 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Análise e Projeto Orientado a Objeto Usando UML

Análise e Projeto Orientado a Objeto Usando UML

Lorena Borges Moreira

Uberlândia, Dezembro/2000.

, 23/12/05
<!--[if !mso]> <style> v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <o:DocumentProperties> <o:Author>user</o:Author> <o:Template>Normal</o:Template> <o:LastAuthor>Jesus Paixão Neto</o:LastAuthor> <o:Revision>2</o:Revision> <o:TotalTime>0</o:TotalTime> <o:LastPrinted>2000-12-27T06:01:00Z</o:LastPrinted> <o:Created>2001-10-24T20:02:00Z</o:Created> <o:LastSaved>2001-10-24T20:02:00Z</o:LastSaved> <o:Pages>95</o:Pages> <o:Words>16373</o:Words> <o:Characters>93329</o:Characters> <o:Company> </o:Company> <o:Lines>777</o:Lines> <o:Paragraphs>186</o:Paragraphs> <o:CharactersWithSpaces>114614</o:CharactersWithSpaces> <o:Version>9.2812</o:Version> </o:DocumentProperties> </xml><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:WordDocument> <w:HyphenationZone>21</w:HyphenationZone> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>0</w:DisplayVerticalDrawingGridEvery> <w:UseMarginsForDrawingGridOrigin/> <w:Compatibility> <w:FootnoteLayoutLikeWW8/> <w:ShapeLayoutLikeWW8/> <w:AlignTablesRowByRow/> <w:ForgetLastTabAlignment/> <w:LayoutRawTableWidth/> <w:LayoutTableRowsApart/> </w:Compatibility> </w:WordDocument> </xml><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <o:shapedefaults v:ext="edit" spidmax="3074"/> </xml><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <o:shapelayout v:ext="edit"> <o:idmap v:ext="edit" data="1"/> <o:regrouptable v:ext="edit"> <o:entry new="1" old="0"/> <o:entry new="2" old="0"/> </o:regrouptable> </o:shapelayout></xml><![endif]-->
Page 2: Análise e Projeto Orientado a Objeto Usando UML

Análise e Projeto Orientado a Objeto Usando UML

Lorena Borges Moreira

Monografia apresentada ao Curso de Ciência da Computação do Centro Universitário do Triângulo - Unit, como requisito básico à obtenção do grau de Bacharel em Ciência da Computação, sob a orientação do Prof. Ronaldo Castro de Oliveira, Msc.

Uberlândia, Dezembro/2000.

Page 3: Análise e Projeto Orientado a Objeto Usando UML

Análise e Projeto Orientado a Objeto Usando UML

Lorena Borges Moreira

Monografia apresentada ao Curso de Ciência da Computação do Centro Universitário do Triângulo - Unit, como requisito básico à obtenção do grau de Bacharel em Ciência da Computação.

Ronaldo Castro de Oliveira, Msc.

(Orientador )

Marcos Ferreira de Rezende , Msc.

(Coordenador de Curso)

Marcelo Fernandes dos Santos, Msc.

(Avaliador )

Edson Angotti Júnior, Msc.

(Avaliador )

Uberlândia, Dezembro/2000.

Page 4: Análise e Projeto Orientado a Objeto Usando UML

“A cada instante temos a liberdade de escolher, e toda escolha determina o sentido de nossas vidas.”

Olivia Hoblitzelles

Page 5: Análise e Projeto Orientado a Objeto Usando UML

DEDICATÓRIA

Dedico esse trabalho aos meus pais, meus irmão, meu esposo e aos meus professores que tanto me apoiaram e me ajudaram ao longo desses anos. Agradecendo sempre a Deus pela minha conquista.

Page 6: Análise e Projeto Orientado a Objeto Usando UML

Resumo

A Orientação a Objeto é uma tecnologia com bastante flexibilidade, produtividade. Devido a todos esses benefícios, grande maioria dos softwares comerciais especialmente os do ambiente Windows, já incorporam características orientadas a objetos. O desenvolvimento de sistemas sob uma metodologia Orientada a Objetos se torna bastante acelerado graças a reutilização de módulos funcionais e às facilidades oferecidas por este tipo de metodologia quando se utiliza a CASE. A UML (Unified Modeling Language – Linguagem Unificada de Modelagem) é a tentativa de padronização das metodologias de desenvolvimento de sistemas orientados a objetos e que foi criada por três grandes metodologistas: Grady Booch, James Rumbaugh e Ivar Jacobson. A UML baseia-se em diagramas que são modelados em visão de abstração, e se propõe ser uma modelagem definitiva de sistemas orientados a objeto, pois é uma modelagem unificada e os envolvidos no desenvolvimento do sistema tem uma facilidade de interpretação. A qualidade de um software se dá através da incorporação de métricas a serem utilizados afim de que se tenha produtividade e qualidade de um software. Enfim, orientação a objetos tem se mostrado como uma boa estratégia para o desenvolvimento de sistemas complexos e a UML tem tudo para dar certo pois facilitará às grandes empresas de desenvolvimento de software, com uma maior comunicação e aproveitamento dos modelos desenvolvidos.

Page 7: Análise e Projeto Orientado a Objeto Usando UML

SUMÁRIO

1 - Introdução...................................................................................................... 1

2 - Fundamentos da Orientação a Objeto.............................................................. 4

2.1- Enfoque e Histórico........................................................................................ 4

2.2 Definições Básicas para Orientação a Objeto................................................... 6

2.2.1 Objeto...................................................................................................... 6

2.2.2 Classe...................................................................................................... 7

2.2.3 Abstração................................................................................................. 8

2.2.4 Encapsulamento........................................................................................ 9

2.2.5 Herança.................................................................................................. 10

2.2.6 Comunicação com Mensagens................................................................ 11

2.2.7 Métodos de Organização........................................................................ 12

2.2.8 Polimorfismo........................................................................................... 12

2.3 - Benefícios da Orientação a Objetos............................................................. 13

2.4 – Conclusão.................................................................................................. 15

3 - Desenvolvendo Sistemas Orientados a Objetos.............................................. 16

3.1- Paradigmas do desenvolvimento de sistemas................................................. 16

3.1.1 – Ciclo de Vida Clássico......................................................................... 16

3.1.2 – Prototipação........................................................................................ 17

3.1.3 – Modelo Espiral.................................................................................... 19

3.2 – Fases de Desenvolvimento de um sistema.................................................... 21

3.2.1- Análise de Requisitos............................................................................. 21

3.2.2. Análise................................................................................................ 21

3.2.3. Projeto................................................................................................ 21

3.2.4. Programação....................................................................................... 22

3.2.5. Testes.................................................................................................. 22

3.3- Metodologias da Organização a Objetos...................................................... 22

, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530083 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000380033000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530082 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000380032000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530081 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000380031000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530080 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000380030000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530079 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000370039000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530078 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000370038000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530077 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000370037000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530076 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000370036000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530075 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000370035000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530074 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000370034000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530073 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000370033000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530072 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000370032000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530071 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000370031000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530070 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000370030000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530069 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000360039000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530068 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000360038000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530067 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000360037000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530066 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000360036000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530065 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000360035000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530064 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000360034000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530063 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000360033000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530062 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000360032000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530061 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000360031000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530060 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000360030000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530059 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000350039000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span><span style="mso-spacerun: yes"> </span>TOC \o &quot;2-9&quot; \t &quot;Título 1;1&quot; <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530058 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000350038000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
Page 8: Análise e Projeto Orientado a Objeto Usando UML

3.4 - Métodos Orientados a Objeto.................................................................... 23

3.4.1Coad/Yordon.......................................................................................... 24

3.4.2 - Booch.................................................................................................. 24

3.4.3 - Rumbaugh............................................................................................ 25

3.4.4 - Jacobson.............................................................................................. 25

3.5 - Projeto Orientado a Objeto......................................................................... 26

3.6 – Banco de Dados Orientado a Objeto.......................................................... 27

3.6.1-Como definir um Banco de dados Orientados a Objeto........................... 28

3.6.2- Benefícios dos Banco de dados Orientados a Objeto............................. 29

3.7- Linguagens Orientadas a Objetos.................................................................. 30

3.7.1-História das linguagens orientadas ao objeto............................................ 30

3.7.2-Benefícios das linguagens Orientadas a Objetos...................................... 31

3.7.3- Funcionalidade das linguagens orientadas ao objeto................................ 32

3.8 - Conclusão................................................................................................... 33

4 -Orientação a Objeto usando UML................................................................. 34

4.1- Origem da UML.......................................................................................... 34

4.2 - Uso da UML.............................................................................................. 38

4.3 - Diagramas propostos pela UML.................................................................. 39

4.4.- Diagramas de Classe................................................................................... 40

4.4.1 - Generalização :..................................................................................... 41

4.4.2- .Agregação........................................................................................... 43

-4.4.3 - Associação......................................................................................... 44

-4.4.4 - Dependências..................................................................................... 46

4.5 - Diagrama de Caso de Uso (USE CASE).................................................... 48

4.6 - Diagrama de Estado................................................................................. 53

4.7 - Diagrama de Sequência............................................................................ 55

4.8 - Diagrama de Colaboração....................................................................... 57

4.9 - Diagrama de Atividade............................................................................. 58

, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530111 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100310031000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530110 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100310030000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530109 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100300039000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530108 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100300038000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530107 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100300037000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530106 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100300036000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530105 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100300035000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530104 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100300034000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530103 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100300033000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530102 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100300032000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530101 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100300031000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530100 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100300030000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530099 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000390039000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530098 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000390038000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530097 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000390037000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530096 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000390036000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530095 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000390035000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530094 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000390034000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530093 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000390033000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530092 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000390032000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530091 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000390031000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530090 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000390030000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530089 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000380039000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530088 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000380038000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530087 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000380037000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530086 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000380036000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530085 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000380035000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530084 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003000380034000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
Page 9: Análise e Projeto Orientado a Objeto Usando UML

4.10 - Diagrama de Componente......................................................................... 60

4.11 - Diagrama de Implantação......................................................................... 62

4.12 - . Um processo para utilizar a UML......................................................... 63

4.13 – Conclusão................................................................................................ 65

5 - Qualidade de software Orientado a Objeto.................................................... 66

5.1 – Conceitos de Qualidade.............................................................................. 66

5.2 – Produtividade............................................................................................. 69

5.3 – Métricas de Software.................................................................................. 70

5.4 - Categorização das Métricas........................................................................ 70

5.4.1 - Métricas Orientadas ao Tamanho......................................................... 72

5.2.2 – Métricas Orientadas à função............................................................... 73

5.5 - Métricas de Qualidade do Software......................................................... 74

5.6 – Métricas Orientadas a Objeto e a UML...................................................... 75

5.6 – Escolha das Métricas.................................................................................. 75

5.4.1 – Métricas de planejamento e controle.................................................... 76

5.4.2 – Métricas de análise.............................................................................. 76

5.4.2 – Métricas de projeto............................................................................. 77

5.4.3 – Métricas de implementação.................................................................. 77

5.4 –Testes de um Software................................................................................. 78

5.5 – Conclusão.................................................................................................. 79

6 - Conclusão..................................................................................................... 80

7 - Referências Bibliográficas.............................................................................. 82

, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530133 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100330033000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530132 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100330032000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530131 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100330031000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530130 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100330030000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530129 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100320039000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530128 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100320038000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530127 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100320037000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530126 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100320036000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530125 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100320035000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530124 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100320034000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530123 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100320033000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530122 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100320032000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530121 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100320031000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530120 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100320030000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530119 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100310039000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530118 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100310038000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530117 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100310037000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530116 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100310036000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530115 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100310035000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530114 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100310034000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530113 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100310033000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530112 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100310032000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
Page 10: Análise e Projeto Orientado a Objeto Usando UML

LISTA DE FIGURAS

Figura 2.1 – Evolução completa da orientação a objeto [WIN93]............................... 6

Figura 2.2- Exemplo de classe – Classe Pessoas........................................................ 7

Figura 2.3 – Exemplo de um Encapsulamento. .[MAR93]........................................... 9

Figura 2.4 – Exemplo de Herança............................................................................ 10

Figura 2.5 – Exemplos de mensagens [MAR93]....................................................... 11

Figura 2.6- Exemplo de Polimorfismo....................................................................... 13

Figura 3.1 - Esquema do ciclo de vida clássico [PRE95].......................................... 17

Figura 3.2 Prototipação [PRE95]............................................................................. 19

Figura 3.3 Modelo Espiral [PRE95]......................................................................... 20

Figura 3.4 – Exemplo de uma criação de um Banco de Dados [KHO94].................. 28

Figura 4.1 – Evolução da UML [FUR98]................................................................. 35

Figura 4..2 – Exemplo de uma generalização normal [FUR98].................................. 41

Figura 4.3 – Exemplo de uma generalização de sobreposição[FUR98]..................... 42

Figura 4.4 – Exemplo de uma generalização completa [FUR98]................................ 43

Figura 4.5 – Exemplo de uma agregação [FUR98]................................................... 43

Figura4.6 – Exemplo de uma agregação compartilhada[FUR98]............................... 44

Figura 4.7 – Exemplo de uma agregação de composição [FUR98]........................... 44

Figura 4.7 – Essa figura representa um Metamodelo................................................. 45

Figura 4.8 – Exemplo de uma dependência entre classes [FUR98]............................ 46

Figura 4.9 – Diagrama de classe – Vídeo Locadora.................................................. 47

Figura4.10 – Exemplo de uma classe........................................................................ 47

Figura 4.11 - Exemplo de representação de um caso de uso..................................... 49

Figura 4.12 - Exemplo de representação de um caso de uso com ponto de extensão. 50

Figura 4.13 - Representação de Ator....................................................................... 51

Figura 4.14 - Representa o Relacionamento de caso de uso...................................... 52

Figura 4.15 Exemplo de Caso de uso de uma Vídeo Locadora................................. 52

, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530159 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100350039000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530158 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100350038000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530157 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100350037000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530156 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100350036000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530155 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100350035000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530154 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100350034000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530153 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100350033000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530152 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100350032000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530151 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100350031000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530150 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100350030000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530149 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100340039000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530148 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100340038000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530147 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100340037000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530146 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100340036000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530145 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100340035000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530144 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100340034000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530143 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100340033000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530142 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100340032000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530141 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100340031000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530140 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100340030000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530139 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100330039000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530138 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100330038000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530137 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100330037000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530136 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100330036000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530135 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100330035000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span><span style="mso-spacerun: yes"> </span>TOC \f F \t &quot;Legenda&quot; \c <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530134 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100330034000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
Page 11: Análise e Projeto Orientado a Objeto Usando UML

Tabela 4-1 Informações dos relacionamentos........................................................... 53

Figura 4.17 – Diagrama de Sequencia – Vídeo Locadora......................................... 56

Figura 4.18 – Diagrama de Claboração – Vídeo Locadora....................................... 58

Figura 4.19 – Diagrama de Atividade....................................................................... 60

Figura 4.20 – Diagrama de Componentes.[BAR98]................................................. 62

Figura 4.21 – Diagrama de implantação– Associações entre Nodes.[BAR98]........... 63

Figura 5.1 – Categorização dos fatores de qualidade [ARA97]................................. 67

Tabela 5-1 Mapeamento dos Requisitos de qualidade na OO[ARA.97]................... 69

Figura 5.2 – Métricas de Software [PRE95]............................................................. 71

Figura 5.3 – Métricas Orientadas ao tamanho [PRE95]............................................ 72

, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530169 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100360039000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530168 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100360038000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530167 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100360037000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530166 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100360036000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530165 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100360035000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530164 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100360034000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530163 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100360033000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530162 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100360032000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530161 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100360031000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530160 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100360030000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
Page 12: Análise e Projeto Orientado a Objeto Usando UML

LISTA DE TABELAS

Tabela 4-1 Informações dos relacionamentos........................................................... 53

Tabela 5-1 Mapeamento dos Requisitos de qualidade na OO[ARA.97]................... 69

, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530171 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100370031000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span><span style="mso-spacerun: yes"> </span>TOC \c &quot;Tabela&quot; <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-begin'></span> PAGEREF _Toc502530170 \h <span style='mso-element:field-separator'></span><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003500300032003500330030003100370030000000</w:data> </xml><![endif]-->
, 23/12/05
<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->
Page 13: Análise e Projeto Orientado a Objeto Usando UML

1 - Introdução

Existem no mercado muitos livros e outras referências bibliográficas apresentando os conceitos da Tecnologia de Objetos e os benefícios de sua utilização. Além disso, a grande maioria dos softwares comerciais, especialmente os do ambiente Windows, já incorporam características orientadas a objetos. O encapsulamento de propriedades, métodos em objetos, a complexidade, confiabilidade e integridade, são algumas das características da tecnologia orientadas a objetos.

Pretende-se com esse trabalho mostrar a aplicabilidade da tecnologia orientada a objeto, permitindo a fácil compreensão dos seus benefícios, o entendimento das metodologias e técnicas existentes. Explicando os significados de classes, objeto, mensagens e outras entidades comuns da orientação a objetos. Juntamente com a UML (Unified Modeling Language – Linguagem Unificada de Modelagem) que é uma unificação de três grande metodologias, criadas por por Grady Booch, James Rumbaugh, e Ivar Jacobson e que passou por um processo de padronização pela OMG (Object Management Group) e é agora um padrão OMG.

Um software de qualidade garante a segurança de pessoas e a disponibilidade de serviços essenciais à população. De fato, empresas que desenvolvem software de qualidade são mais competitivas, o que é muito importante para a sobrevivência das mesmas em um mercado cada vez mais globalizado. Da mesma forma, as empresas que consomem software de alta qualidade têm chances maiores de manter e conquistar mercados. Em geral, com a utilização de software de qualidade a sociedade pode dispor de melhores produtos a um menor custo. Por isso um dos principais objetivos da Engenharia de Software é contribuir para a produção de software de qualidade.

Uma métrica , permite quantificar um atributo de um produto do processo de desenvolvimento de software ou do próprio processo de concepção. O termo produto tanto se poderá aplicar a definições de requisitos, como a especificações funcionais, código fonte ou código executável. Uma "boa" métrica deverá auxiliar no desenvolvimento de modelos capazes de estimar os parâmetros de um processo ou produto e não apenas descrevê-los. Para tal deverá ter as seguintes características: validade, objetividade, baixo custo. A uso da UML e uso das métricas dá ao software uma maior garantia devido todos os seus benefícios.

Page 14: Análise e Projeto Orientado a Objeto Usando UML

No capítulo 02 será apresentado a Orientação a Objeto, definindo os conceitos básicos da tecnologia tais como: objeto, classe, encapsulamento, herança, métodos, polimorfismo, mensagens, etc. e esclarecer sobre os benefícios da Tecnologia de Objetos.

Já no capítulo 03 será apresentado os termos específicos de um produto , esclarecendo sobre os desenvolvimento de um sistemas orientado a objetos. Fala-se também sobre os ciclos de desenvolvimento, do banco de dados, as metodologias, os métodos, da análise e o projeto orientados a objeto, das fases de desenvolvimento e das linguagens orientadas a objetos.

E o capítulo 04 será apresentada a notação UML mostrando todos os diagramas que a UML apresenta e exemplos e terá ênfase nos diagramas de classe, Use Case e de seqüência.

O capítulo 05 apresenta algumas conceitos básicos da qualidade e como consegui-los através do uso das métricas de falando das qualidades que a UML veio trazer a orientação a objeto.

Por fim, o capítulo 06 encerra o documento com uma avaliação, dizendo porque da orientação a objeto e quais as vantagens da UML e se essa modelagem será uma grande revelação.

Page 15: Análise e Projeto Orientado a Objeto Usando UML

2 - Fundamentos da Orientação a Objeto

Este capitulo, apresenta sucintamente história da Orientação a Objetos, define os principais conceitos associados a todos os sistemas orientados a objetos, e fala genericamente os benefícios da Orientação a Objetos.

2.1- Enfoque e Histórico

A utilização da Orientação a Objetos não é novidade no mundo da informática. Já existia nos anos 60, um conexão com uma linguagem chamada Simula-67, desenvolvida por Kristin Nygard e Ole-Johan Dahl. Simula-67 representava conceitos de classes, rotinas correlatadas e subclasses muito parecidas com as atuais linguagens orientadas a objeto [WIN93].

Entretanto, o uso da Tecnologia de Objetos como metodologia básica para o desenvolvimento de sistemas, abrangendo todo o ciclo desde a análise até a construção de códigos, é uma prática recente. Apenas na década de 80 surgiram os primeiros estudos sobre o uso da Orientação a Objetos para especificação de projetos de sistemas.

Em paralelo a isso tudo, as linguagens Orientação a Objetos foram tornando-se populares, e muitos ambientes de desenvolvimento iniciaram sua jornada para gradativamente suportar os mecanismos desta tecnologia. Além disso, ferramentas CASE (Computer-Aided Software Engineering – Engenharia de Software Auxiliada por Computador) passaram a representar as diversas notações existentes, tentando se adequar a uma disciplina ainda em fase de concepção. Apesar dos conceitos serem os mesmos, cada metodologista adotou uma notação própria e, o que é pior, denominações diversas para tais conceitos.

Já podemos sentir alguma das influências da orientação a objeto. Padrões de linguagens começam a integrar com extensões ao objeto para linguagens de programação populares como Pascal, C e COBOL.

Page 16: Análise e Projeto Orientado a Objeto Usando UML

Ferramentas de desenvolvimento, que são os componentes de suporte para as linguagens, estão sendo adotadas rapidamente a fim de facilitar o design, a codificação e a depuração de programas orientados a objeto. Os ambientes de desenvolvimento para as interfaces do usuário também já se encontram em uso, contando com sistemas padrões de janelas, que permitem a criação mais rápida de aplicativos interativos a partir de bibliotecas existentes.

Nem todos os componentes da arquitetura orientada a objeto previstos para os anos 90 estão atualmente em uso. O sucesso comercial completo dependerá da convergência e integração dos sistemas, linguagens, ferramentas, banco de dados e biblioteca pré-elaboradas para dar suporte à criação e implementação de sistemas em grande escala com arquiteturas ao objeto.

A Figura 2.1 mostra uma previsão da evolução completa para a integração da orientação a objeto.

, 23/12/05
<!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter"/> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"/> <v:f eqn="sum @0 1 0"/> <v:f eqn="sum 0 0 @1"/> <v:f eqn="prod @2 1 2"/> <v:f eqn="prod @3 21600 pixelWidth"/> <v:f eqn="prod @3 21600 pixelHeight"/> <v:f eqn="sum @0 0 1"/> <v:f eqn="prod @6 1 2"/> <v:f eqn="prod @7 21600 pixelWidth"/> <v:f eqn="sum @8 21600 0"/> <v:f eqn="prod @7 21600 pixelHeight"/> <v:f eqn="sum @10 21600 0"/> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/> <o:lock v:ext="edit" aspectratio="t"/> </v:shapetype><v:shape id="_x0000_i1026" type="#_x0000_t75" style='width:258pt; height:192.75pt' o:ole="" fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image001.png" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1026" DrawAspect="Content" ObjectID="_1065451781"> </o:OLEObject> </xml><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shapetype id="_x0000_t202" coordsize="21600,21600" o:spt="202" path="m0,0l0,21600,21600,21600,21600,0xe"> <v:stroke joinstyle="miter"/> <v:path gradientshapeok="t" o:connecttype="rect"/> </v:shapetype><v:shape id="_x0000_s1128" type="#_x0000_t202" style='position:absolute; left:0;text-align:left;margin-left:52.2pt;margin-top:.35pt;width:272.4pt; height:200.25pt;z-index:27;mso-position-horizontal-relative:text; mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1128'/> </v:shape><![endif]-->
Page 17: Análise e Projeto Orientado a Objeto Usando UML

Figura 2.1 – Evolução completa da orientação a objeto [WIN93]

2.2 Definições Básicas para Orientação a Objeto

As idéias fundamentais a tecnologia baseada em objetos incluem: Objetos, Classes, Abstração, Encapsulamento, Herança, Comunicação com Mensagens, Métodos de organização, Polimorfismo. Cada uma dessas idéias será discutidas nas seções que se seguem.

2.2.1 Objeto

Objeto é um substantivo que pode ser abstrato ou real, sobre o qual armazenamos dados e operações que manipulam os dados. Que se tem como exemplo uma pessoa, um avião, etc.

Um objeto é a ocorrência específica (instância) de uma classe e é similar a uma entidade de uma tabela no modelo relacional somente até o ponto onde representa uma coleção de dados relacionados com um tema em comum.

Por exemplo, o nome ou CPF de um Empregado são dados que pertencem à entidade (Organização) ou ao objeto (Pessoas).Pessoas é uma mesma organização. Uma instância de Empregado é uma pessoa específica.

A diferença entre objeto e entidade é que entidade se preocupa meramente com os dados, só armazenamos um registro para cada entidade e o objeto se preocupa com os dados e os métodos através dos quais os dados estão manipulados e podem incluir tipos de registros múltiplos.

, 23/12/05
<!--[if gte vml 1]><v:line id="_x0000_s1027" style='position:absolute; left:0;text-align:left;flip:y;z-index:2;mso-position-horizontal-relative:text; mso-position-vertical-relative:text' from="152.55pt,14.4pt" to="152.55pt,21.6pt" o:allowincell="f"/><![endif]-->
Page 18: Análise e Projeto Orientado a Objeto Usando UML

2.2.2 Classe

Classe é uma coleção de objetos que podem ser descritos com os mesmos atributos e as mesmas operações. Representa uma idéia ou um conceito simples e categoriza objetos que possuem propriedades similares, configurando-se em um módulo para a criação de novas instâncias.

A Figura 2.2 mostra um exemplo de uma classe de Pessoas

Figura 2.2- Exemplo de classe – Classe Pessoas

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1027" type="#_x0000_t75" style='width:273pt;height:199.5pt' o:ole="" fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image004.gif" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1027" DrawAspect="Content" ObjectID="_1065451782"> </o:OLEObject> </xml><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1031" type="#_x0000_t202" style='position:absolute;left:0; text-align:left;margin-left:59.4pt;margin-top:14.7pt;width:287.65pt;height:206.45pt; z-index:3;mso-position-horizontal-relative:text; mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1031'/> </v:shape><![endif]-->
Page 19: Análise e Projeto Orientado a Objeto Usando UML

2.2.3 Abstração

Quando usamos a abstração, admitimos que o que estamos considerando é complexo. Pois é uma das formas fundamentais de se lidar com complexidade. O resultado deste processo de abstração é conhecido como Modelo Conceitual.

Dentro do paradigma de Orientação a Objeto, abstração denota características essencias a um objeto que o destingue de outros tipos de objetos provendo fronteiras bem definidas entre diferentes visões.[YOU93]

Abstração de procedimento é o principio de que qualquer operação com um efeito bem definido pode ser tratada por seus usuários como uma entidade única, mesmo que a operação seja realmente conseguida através de alguma seqüência de operações de nível mais baixo.[YOU93]

Por exemplo, para entendermos o funcionamento das plantas, dividimo-las em três partes básicas: raiz, caule e folhas. Estudamos cada uma de suas partes, abstraindo as demais. Para cada parte, identificamos funções diferentes e bem delimitadas. A raiz é responsável pela absorção de água e sais minerais, o caule transporta os materiais coletados para as folhas e estas, através destes materiais fornecidos, produzem, através de fotossíntese, alimento para toda a planta. Da mesma forma podemos analisar um mecanismo complexo como o computador ao dividi-lo em três partes: CPU, teclado e vídeo. Ao estudarmos cada uma destas partes isoladamente, diferenciando o que realmente importa para cada caso, podemos entender o micro como um todo

A abstração de dados, é um outro mecanismo de abstração mais poderoso. Este princípio pode ser usado como base para a organização do pensamento e a especificação das responsabilidades de um sistema.

Abstração focaliza a visão externa de um objeto, separando:

• Comportamento: descrito pela interface dos métodos da classe

• Implementação: composta pelas variáveis de instancia e corpo dos métodos

2.2.4 Encapsulamento

Page 20: Análise e Projeto Orientado a Objeto Usando UML

O empacotamento de dados e métodos juntas é chamada de encapsulamento. O objeto esconde seus dados de outros objetos e permite que os dados sejam acessados somente por meio dos próprios métodos de objetos.

O encapsulamento esconde, dos usuários de um objeto, os detalhes da implementação interna. Os usuários compreendem quais operações podem ser solicitadas de um objeto, mas não conhecem os detalhes de como a operação é executada.

A Figura 2.3, ilustra um objeto. As estruturas de dados no centro podem ser usadas apenas com as operações constantes do anel exterior.

Figura 2.3 – Exemplo de um Encapsulamento. .[MAR93]

Na Figura 2.3 cada objeto tem encapsuladas, a estrutura dos dados e as operações. Uma estrutura de dados fica no núcleo de um objeto. A estrutura de dados pode ser utilizada apenas com esses métodos. Esta restrição de acesso é chamada de Encapsulamento. O encapsulamento protege os dados contra corrupção.

2.2.5 Herança

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1028" type="#_x0000_t75" style='width:359.25pt;height:199.5pt' fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image005.wmz" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1129" type="#_x0000_t202" style='position:absolute;left:0;text-align:left;margin-left:9pt;margin-top:5.7pt; width:374.1pt;height:207.65pt;z-index:28;mso-position-horizontal-relative:text; mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1129'/> </v:shape><![endif]-->
Page 21: Análise e Projeto Orientado a Objeto Usando UML

É o mecanismo de compartilhamento automático de métodos e dados entre classes, subclasses.

A Figura 2.4 mostra um exemplo de herança onde classe Pessoa divide em duas Pessoas Físicas e Jurídicas

Figura 2.4 – Exemplo de Herança

A Figura 2.4 os objetos pertencentes às classes Pessoa Física e Pessoa Jurídica terão as seis propriedades que lhe são características (as três comuns, mais as três particulares). Isto ocorre em função das classes Pessoa Física e Pessoa Jurídica serem subclasses da classe Pessoa e, portanto, herdarem as suas propriedades.

Uma superclasse herda propriedades de sua classe-mãe; uma superclasse herda propriedades das subclasses, e assim por diante. Uma subclasse herda tipos de dados e métodos, e tem seus métodos e, às vezes, tipos de dados próprios. Uma classe pode ter sua própria estrutura de dados e métodos, bem como herdá-los de sua superclasse. Chamamos de herança múltipla quando uma classe herda propriedades de mais de uma superclasse.

2.2.6 Comunicação com Mensagens

Uma mensagem é uma solicitação para executar a operação indicada, em um determinado objeto, e devolver a resposta. Esta mensagem contém o nome do objeto, o nome da operação e, às vezes, um grupo de parâmetros.

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1113" type="#_x0000_t202" style='position:absolute;left:0;text-align:left;margin-left:9pt;margin-top:38.85pt; width:374.25pt;height:169.55pt;z-index:24;mso-position-horizontal-relative:text; mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1113'/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1029" type="#_x0000_t75" style='width:359.25pt;height:162pt' o:ole="" fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image007.gif" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1029" DrawAspect="Content" ObjectID="_1065451783"> </o:OLEObject> </xml><![endif]-->
Page 22: Análise e Projeto Orientado a Objeto Usando UML

A programação baseada em objetos é uma forma de projeto modular no qual o mundo é visto em termos de objetos, operações, métodos e mensagens trocadas entre objetos, como mostra a Figura 2.5.

Figura 2.5 – Exemplos de mensagens [MAR93]

2.2.7 Métodos de Organização

Métodos especificam como uma as operações vão ser codificadas no software. Quando um objeto executa um serviço, dizemos que ele apresenta um determinado comportamento, ou seja, uma reação. O comportamento do objeto será resultado da ação efetuada sobre ele, e da função que esta ação chamou.

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1030" type="#_x0000_t75" style='width:330pt;height:249pt' fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image008.wmz" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1132" type="#_x0000_t202" style='position:absolute;left:0;text-align:left; margin-left:23.55pt;margin-top:6.25pt;width:345.35pt;height:257pt;z-index:29; mso-position-horizontal-relative:text;mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1132'/> </v:shape><![endif]-->
Page 23: Análise e Projeto Orientado a Objeto Usando UML

Os métodos trabalha em resposta às mensagens e manipulam os valores das variáveis de instância. De fato, os métodos detêm o único mecanismo para alteração dos valores de variáveis de instância. Os métodos também podem enviar mensagens a outros objetos, requisitando ação ou informação.

2.2.8 Polimorfismo

Permite que o programa trate uniformemente objetos que pertencem a classe diferentes, isto é, o programa envia a mesma mensagem a objetos de diferentes classe resultando um comportamento diferente.

Existem alguns tipos de Polimorfismo, que estão citados abaixo:

• Paramétrico: quando uma função funciona uniformemente sobre uma gama de tipos.

• de Inclusão: através do mecanismo de herança de objeto pode pertencer a um número infinito de classes, aplicação do princípio de substituição.

• por Overloading: mesmo nome de variável utilizado para denotar diferentes funções. É o contexto que decide que função utilizar.

• por Coerção: operação semântica é utilizada para converter argumento para tipo necessário.

A Figura 2.6 mostra um exemplo de polimorfismo onde os objetos Saldo Poupança, Saldo fundo de ações, Saldo fundo balanceado Saldo renda fixa, relacionam com a superclasse Saldo.

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1026" type="#_x0000_t202" style='position:absolute;left:0;text-align:left; margin-left:23.4pt;margin-top:59.4pt;width:330.6pt;height:164.95pt;z-index:1; mso-position-horizontal-relative:text;mso-position-vertical-relative:text' o:allowincell="f" stroked="f" strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1026'/> </v:shape><![endif]-->
Page 24: Análise e Projeto Orientado a Objeto Usando UML

Figura 2.6- Exemplo de Polimorfismo

2.3 - Benefícios da Orientação a Objetos

Os sistemas orientados a objetos podem representar melhor o mundo real, uma vez que a percepção e o raciocínio do ser humano estão relacionados diretamente com o conceito de objetos. Este fato permite uma modelagem mais perfeita e natural. Além desta característica, a Orientação a Objeto oferece muitos outros benefícios:

• A mesma notação é usada desde a análise até o projeto e a implementação

• Esta abordagem incentiva os desenvolvedores a trabalharem e pensarem em termos do domínio da aplicação durante a maior parte do ciclo de vida, ou seja, dedicação maior à fase de análise.

• Ocorre uma redução na quantidade de erros com conseqüente diminuição do tempo desperdisado nas etapas de codificação e teste, visto que os problemas são detectados mais cedo e corrigidos antes da implementação.

• Melhora a comunicação entre desenvolvedores e usuários já que o sistema refletirá o modelo do negócio. Os modelos na orientação a objetos espelham a estrutura e o comportamento dos objetos do negócio, diminuindo o buraco existente nas outras abordagens que tratam dados e funções separadas.

• No desenvolvimento baseado em objetos há uma redução no tempo de manutenção, pois as revisões são mais fáceis e mais rápidas já que o problema é de fácil acesso.

• Favorece a reutilização, pois ocorre a construção de componentes mais gerais, estáveis e independentes.

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1031" type="#_x0000_t75" style='width:315pt;height:156.75pt' o:ole="" fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image010.wmz" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="Word.Picture.8" ShapeID="_x0000_i1031" DrawAspect="Content" ObjectID="_1065451784"> </o:OLEObject> </xml><![endif]-->
Page 25: Análise e Projeto Orientado a Objeto Usando UML

• Facilidade de extensão, visto que objetos têm sua interface bem definida. A criação de novos objetos que se comunicam com os já existentes não obriga o desenvolvedor a conhecer o interior destes últimos.

O mercado tem se mostrado cada vez mais competitivo, exigindo das empresas maior flexibilidade para atender às mudanças externas. Para responder a estas imposições com resultados positivos, as empresas devem se tornar mais flexíveis, produtivas e com produtos de maior qualidade. Para a obtenção destes benefícios empresarias é preciso que suas áreas internas incorporem estas características.

Como o desenvolvimento de sistemas, acaba por herdar as mesmas exigências. Flexibilidade, produtividade e qualidade são exatamente o que a orientação a objetos vem a oferecer. Produtividade pela facilidade de reutilização onde o programador modifica a funcionalidade de um programa por meio de substituição de elementos ou objetos antigos por novos ou apenas acrescentando novos objetos à aplicação Qualidade pelo fato do encapsulamento reduzir a interferência múltipla entre os módulos do sistema. Como as dependências entre os objetos tendem a não existir, reduz-se a probabilidade de uma alteração em uma classe de objetos introduzir erro em outras. E como os componentes são utilizados por várias aplicações, demonstram boa qualidade pois já foram testados exaustivamente. Já a Flexibilidade é obtida através dos mecanismos de herança e polimorfismo, onde desenvolvem-se sistemas com menor redundância de código, acelerando o processo através do aproveitamento de código existente e facilitando a manutenção.

No mundo atual dos negócios a habilidade de aumentar ou alterar a funcionalidade de sistemas rapidamente para permitir as mudanças se torna uma grande vantagem competitiva. Mas, existem muitas dúvidas, pois às vezes os benefícios em relação a Orientação a Objetos não ficam claros. Os investimentos no início são consideráveis e os resultados somente podem ser obtidos a médio e longo prazos.

2.4 – Conclusão

Conclui-se que a Orientação a Objetos está voltada a todos esses conceitos citados neste capítulo. E que esses conceitos, conduzem os programadores a escreverem comandos com alto nível de abstração. No próximo capítulo falaremos do desenvolvimento de sistemas orientados a objetos mostrando todos os conceitos para um se desenvolver um software.

Page 26: Análise e Projeto Orientado a Objeto Usando UML

3 - Desenvolvendo Sistemas Orientados a Objetos

Este capitulo apresenta termos que são específicos a determinados produtos, como a linguagem, um banco de dados, a análise e o projeto, as fases de um projeto, os paradigmas da orientação a objeto, e quais são os métodos orientados a objeto, falando das funcionalidades, benefícios, e contando de forma suscita a história de cada um , onde tudo começou.

3.1- Paradigmas do desenvolvimento de sistemas

3.1.1 – Ciclo de Vida Clássico

Existem diversas configurações possíveis para um ciclo de desenvolvimento. A mais comum é o paradigma do ciclo de vida clássico que é também chamado de modelo em cascata onde as atividades são seqüenciais, sendo que o projeto só é iniciado após a conclusão da análise, a implementação após o projeto e o teste e a manutenção após a implementação. Modelado em função da engenharia convencional, o paradigma do ciclo de vida clássico abrange nas seguintes atividades: engenharia de sistemas, análise, projeto, implementação, teste e manutenção como mostra a Figura 3.1.

Page 27: Análise e Projeto Orientado a Objeto Usando UML

Figura 3.1 - Esquema do ciclo de vida clássico [PRE95]

O ciclo de vida clássico é o paradigma mais antigo e mais usado na engenharia de software, mas, alguns problemas ainda persistem. O estilo primeiro análise, depois projeto, depois implementação e só então teste e manutenção é uma abordagem problemática, independente de ser aplicada sobre todo o sistema ou sobre apenas parte dele. Muitas vezes, soluções de análise surgem quando o desenvolvedor já está implementando, pois nesse momento ele possui uma bagagem maior sobre o domínio da aplicação. E o ciclo de vida clássico, tem muita dificuldade em acomodar a incerteza natural que existe no começo de muitos projetos.

Mesmo assim, o ciclo de vida clássico, tem um lugar definido e importante no trabalho da engenharia de software e continua sendo o modelo procedimental mais amplamente usado pela engenharia de software.

3.1.2 – Prototipação

A prototipação é um processo que faz com que o desenvolvedor crie um modelo de software que será implementado. O modelo pode assumir uma das três formas: um protótipo em papel ou modelo baseado em PC que retrata a interação homem - máquina que faz com que o usuário entenda que interação ocorrerá; um protótipo de trabalho que implementa algum subconjunto da função exigida do software; um programa existente que executa parte ou toda função desejada, mas que tem outras características que serão melhoradas.

A Figura 3.2 ilustra a seqüência de eventos para o paradigma de prototipação. Como todos as abordagens ao desenvolvimento de software, a prototipação inicia-se com a coleta dos requisitos onde o desenvolvedor se reúnem e definem os objetivos do software, ocorre então um projeto rápido que concentra-se na representação daqueles aspectos que serão visíveis ao usuário, este leva a construção de

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1032" type="#_x0000_t75" style='width:370.5pt;height:170.25pt' o:ole=""> <v:imagedata src="./mono1522000_arquivos/image012.png" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1032" DrawAspect="Content" ObjectID="_1065451785"> </o:OLEObject> </xml><![endif]-->
Page 28: Análise e Projeto Orientado a Objeto Usando UML

um protótipo que é avaliado pelo cliente e o usuário e é usado para refinar os requisitos para o software a ser desenvolvido. Um processo de iteração ocorre quando é feita uma refinação do protótipo para satisfazer as necessidades do cliente, fazendo que ao mesmo tempo, o desenvolvedor compreenda melhor o que precisa ser feito.

Existem alguns problemas com a prototipação pela seguintes razões onde o cliente pega em mãos um produto inacabado pois na pressa da implementação não levou em consideração a qualidade global e a manutenção a longo prazo e exige ótimo funcionamento. E devido a rapidez com que o protótipo é implementado o programador pode fazer concessões que futuramente podem ser esquecidas, fazendo assim que o produto tenha uma má qualidade.

Mesmo tendo problemas, a prototipação é um paradigma eficiente da engenharia de software. A regra é que o programador e o cliente concordem que o protótipo seja construído para servir como mecanismo a fim de definir os requisitos e que depois será descartado e o software real será projetado, levando em conta qualidade e a manutenção.

Figura 3.2 Prototipação [PRE95]

3.1.3 – Modelo Espiral

O modelo espiral foi desenvolvido para abranger as melhores características do ciclo de vida clássico e a prototipação, acrescentando mais um elemento que falta a esses paradigmas a análise de riscos.

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1033" type="#_x0000_t75" style='width:232.5pt;height:228.75pt' fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image014.png" o:title="" croptop="1204f" cropbottom="1605f"/> </v:shape><![endif]-->
Page 29: Análise e Projeto Orientado a Objeto Usando UML

O modelo representado na Figura 3.3, define quatro importantes atividades representada pelos quatro quadrantes na mesma:

Planejamento à determinação dos objetivos, alternativas e restrições;

Análise de Riscos à análise de alternativas e identificação e resolução dos riscos;

Engenharia à desenvolvimento do produto no “nível seguinte”;

Avaliação feita pelo cliente à avaliação dos resultados da engenharia do produto.

Durante o primeiro giro ao redor do espiral, os objetivos, alternativas e restrições são definidos e os riscos são identificados e analisados. Se a análise dos riscos indicar que há incertezas nos requisitos, a prototipação pode ser usada no quadrante da engenharia para ajudar tanto o desenvolvedor quanto o cliente.

Figura 3.3 Modelo Espiral [PRE95]

O cliente avalia o trabalho de engenharia, e apresenta sugestões para modificações. Com as sugestões dadas pelo cliente, ocorre a fase de planejamento e análise de riscos e em cada arco do espiral, a conclusão da análise dos riscos resulta numa decisão “prosseguir/não prosseguir”, pois se os riscos forem grandes, o projeto pode até ser encerrado.

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1034" type="#_x0000_t75" style='width:373.5pt;height:204.75pt' o:ole="" fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image016.png" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1034" DrawAspect="Content" ObjectID="_1065451786"> </o:OLEObject> </xml><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1137" type="#_x0000_t202" style='position:absolute;left:0;text-align:left;margin-left:1.8pt; margin-top:12.45pt;width:388.6pt;height:212.55pt;z-index:31; mso-position-horizontal-relative:text;mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1137'/> </v:shape><![endif]-->
Page 30: Análise e Projeto Orientado a Objeto Usando UML

O próprio modelo é relativamente novo e não tem sido tão amplamente usado como o ciclo de vida clássico ou a prototipação. Demorará muitos anos até que a eficácia desse importante novo paradigma possa ser determinada com certeza absoluta.[PRE95]

3.2 – Fases de Desenvolvimento de um sistema

Existem cinco fases no desenvolvimento de sistemas de software: análise de requisitos, análise, projeto, programação e testes. Estas cinco fases não devem ser executadas na ordem descrita acima, mas concomitantemente de forma que problemas detectados numa certa fase modifiquem e melhorem as fases desenvolvidas anteriormente de forma que o resultado global gere um produto de alta qualidade e performance.

3.2.1- Análise de Requisitos

Esta fase captura as intenções e necessidades dos usuários do sistema a ser desenvolvido.

3.2.2. Análise

A fase de análise está preocupada com as primeiras abstrações (classes e objetos) e mecanismos que estarão presentes no domínio do problema. As classes são modeladas e ligadas através de relacionamentos com outras classes.

3.2.3. Projeto

Na fase de design, o resultado da análise é expandido em soluções técnicas. Novas classes serão adicionadas para prover uma infra-estrutura técnica: a interface do usuário e de periféricos,

Page 31: Análise e Projeto Orientado a Objeto Usando UML

gerenciamento de banco de dados, comunicação com outros sistemas, dentre outros. As classes do domínio do problema modeladas na fase de análise são mescladas nessa nova infra-estrutura técnica tornando possível alterar tanto o domínio do problema quanto a infra-estrutura. O design resulta no detalhamento das especificações para a fase de programação do sistema.

3.2.4. Programação

Na fase de programação, as classes provenientes do design são convertidas para o código da linguagem orientada a objetos escolhida (a utilização de linguagens procedurais é extremamente não recomendada). Dependendo da capacidade da linguagem usada, essa conversão pode ser uma tarefa fácil ou muito complicada. A programação é uma fase separada e distinta onde os modelos criados são convertidos em código.

3.2.5. Testes

Um sistema normalmente é rodado em testes de unidade, integração, e aceitação. Os testes de unidade são para classes individuais ou grupos de classes e são geralmente testados pelo programador. Os testes de integração são aplicados já usando as classes e componentes integrados para se confirmar se as classes estão cooperando uma com as outras como especificado nos modelos. Os testes de aceitação observam o sistema como uma “ caixa preta” e verificam se o sistema está funcionando como o especificado na análise.

3.3- Metodologias da Organização a Objetos

As metodologias atuais para a análise e projeto orientados a objeto são variadas. Algumas misturam a técnica top-down ( de baixo para cima) de análise estruturada com regras ditadas por projetistas experientes. Muitas técnicas também são desenvolvidas com a ajuda de notação automatizada e para representação de classes, métodos, mensagens e hereditariedade.

Para fazer o estudo de metodologias Orientadas a Objeto, é necessário conhecer as pessoas que estão por trás deste tipo de metodologia, pois lá, existe uma grande diversidade de idéias.

Page 32: Análise e Projeto Orientado a Objeto Usando UML

Assim, a avaliação e comparação dos tipos de metodologias é uma atividade difícil e complexa. Por exemplo, o método Booch,1994 usa o termo objeto e instancia como sinônimos. Berard (1989,1991) já utiliza o termo objeto de uma forma mais genérica, incluindo classes e meta-classes. Enquanto que esta diferença em termos de terminologia pode parecer puramente acadêmica, a aplicação destes métodos e significantemente influenciada por esta distinção.

A completa especificação das várias metodologias varia dramaticamente. Por exemplo, alguns descrevem apenas o processo, outros apresentam uma notação gráfica, enquanto que outros combinam as notações com o processo.

3.4 - Métodos Orientados a Objeto

Métodos orientados a objeto procuraram tanto redefinir quanto estender métodos existentes. A teoria OMT(Object Modeling Techinique ) de Rumbaugh e a técnica de Shlaer/Mellor são duas óbvias beneficiadas da modelagem funcional e de dados; o método Martin/Odell constrói sua análise orientada a objeto sobre a estrutura de trabalho da Engenharia da Informação. Utilizando-se da notação de transição de estado, a análise orientada a objeto consolida a notação rigorosa da teoria de autônomos finitos com conceitos de objetos

Métodos de modelagem orientados a objeto começaram a aparecer entre meados de 70 e início dos anos 80– período de 1989-1994 o numero de métodos relatados saltou de menos de 10 para mais de 50.[FUR98]

3.4.1Coad/Yordon

Peter Coad e Ed Yourdon, com seu enfoque simples e eficaz, dividiram a análise orientada a objeto como sendo classes e objetos. A análise orientada a objeto de Coad/Yourdon utiliza algumas técnicas para descrever um sistema onde pode citar estrutura que é uma representação de um domínio de problema que está diretamente relacionado às competências do sistema, o sujeito que organizam o trabalho baseado nos requerimento iniciais através de um mecanismo de agrupamento de classes e objetos, os atributos é algum tipo de dado onde cada objeto possui um valor independente e os serviço que define o que o objeto pode fazer ou que é de sua responsabilidade fazer.

O diagrama que Coad/Yourdon sugere para representar tais conceitos é basicamente um único e a característica significativa de um objeto e de uma classe é definida dentro de um símbolo do objeto. Para

Page 33: Análise e Projeto Orientado a Objeto Usando UML

relacionar um objeto a outro, Coad/Yourdon empregam conectores e associações. O conector ou associação pode ser uma generalização, especificação, todo ou parte, instância a instância ou uma conexão de mensagem. A conexão de objetos utilizando-se das associações de Coad/Yourdon permite estudar como as classes e os objetos relacionam-se entre si. Essa habilidade em conectar objetos utilizando diferentes associações faz do método de Coad/Yourdon algo flexível e capaz de reagir à maioria das situações de negócio.

3.4.2 - Booch

Grady Booch,1994 propôs um método que consistia no emprego de técnicas de desenho orientado a objeto, apesar de ter sido estendido para contemplar também a análise Orientada a Objeto. Booch, descreve um objeto como sendo um modelo do mundo real que consiste de dados e habilidades para o tratamento desses dados. Uma vez tendo sido localizados e definidos os objetos, esses passam a servir de base para os módulos do sistema ou são considerados módulos relacionados. Descreve o desenho estruturado e o desenho Orientado a Objeto como sendo visões ortogonais de como um sistema deveria ser criado. O resultado, de acordo com Booch, é a geração de código adicional e monos dados, pois as estruturas são derivadas dos processos e esses necessitam interagir com dados.

3.4.3 - Rumbaugh

Rumbaugh,1991 com o seu método que fora desenvolvido pela GECorporation, também conhecido como técnica de Modelagem de Objetos (OMT – Object Modeling Technique). Baseado na modelagem semântica de dados, o método Rumbaugh tornou-se um enfoque testado e maduro, cobrindo as diversas fases do desenvolvimento Orientado a Objeto. A notação empregada por Rumbaugh é parecida com a dos métodos estruturados e utiliza a notação de modelo de objeto que suporta conceitos de modelagem de dados (atributos/relacionamento), objetos(composição/agregação) e herança. Também é empregada para categorizar classes e instâncias. O ponto forte do método Rumbaugh é a notação utilizada e o enfoque relativamente conservador no uso da teoria de objetos. Por outro lado, um problema apresentado é a falta de notação específica para representar a passagem de mensagem de um objeto a outro.

3.4.4 - Jacobson

Jacobson,1992 sua técnica, criou as bases para os métodos Objet_Oriented Software Engineering(OOSE) e Objectory. O que diferencia Jacobson de outros métodos Orientados a Objeto é o seu foco em casos de uso e a categorização de pessoas e equipamentos dependendo de seu papel no sistema global. A análise no método de Jacobson é baseada em modelos de requerimentos e análise que consistem de um conjunto de casos de uso, de um modelo de domínio de problema e de uma descrição da interface. Seguindo a criação do modelo de análise, são gerados diagramas baseados no modelo que também descrevem comunicação entre blocos. Um dos pontos fracos do enfoque original da OOSE de

Page 34: Análise e Projeto Orientado a Objeto Usando UML

Jacobson é a notação simplista usada para objetos de domínio. Por outro lado, o método Objectory tem sido adaptado para a engenharia de negócio, onde as idéias são usadas para modelar e melhorar processos.

3.5 - Projeto Orientado a Objeto

Para suportar programação orientada ao objeto, as ferramentas de analise deverá dar ênfase em identificação dos objetos e definição de classes, organização hierárquica das classes, reutilização de classes e elaboração de frameworks de aplicações a partir de bibliotecas de classes.

O projeto orientado a Objeto oferece vantagens significativas. Pois boas técnicas de projeto garantem o máximo de proveito de uma linguagem de programação orientada ao objeto, mesmo que não existem boas bibliotecas de classes. Um projeto orientado ao objeto também resulta em menos códigos de programação. Originam sistemas flexíveis para mudanças é o caso da flexibilidade que está presente no projeto, isto quer dizer, quando é necessária a mudança, a característica de hereditariedade permite a reutilização e extensão de modelos existentes.

A modularidade da técnica orientada a objeto facilita o trabalho da equipe de desenvolvimento como um todo, pelo fato de os dados e os processos estarem dentro de um objeto. Finalmente, as técnicas orientadas a objeto é mais completa, não somente para o analista como para o usuário, porque ela organiza e compreende o problema muito naturalmente.

3.6 – Banco de Dados Orientado a Objeto

Os banco de dados foram desenvolvidos para suportar aplicações de grande volumes de processos. Nos anos 70, os banco de dados hierárquicos, as aplicações e os dados fora divididos. [KHO94]

Aplicações de linguagens orientadas a objeto e sistemas exigem muito de um banco de dados capacitado, tais como continuidade, simultaneidade e transações, dos seus ambientes. E devido essas necessidades que levaram a criação de banco de dados orientados a objeto, como mostra Figura 3.4.

A Figura 3.4 as setas maiores mostra a herança, isto quer dizer, que banco de dados orientados a objeto herdam características e habilidades de banco de dados tradicionais.

Page 35: Análise e Projeto Orientado a Objeto Usando UML

A funcionalidade de banco de dados é necessária para assegurar o compartilhamento e a continuidade das informações nas aplicações. É através dos banco de dados que os usuários podem obter o estado em que o objeto se encontra.

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1035" type="#_x0000_t75" style='width:359.25pt;height:267pt' o:ole="" fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image018.wmz" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="Word.Picture.8" ShapeID="_x0000_i1035" DrawAspect="Content" ObjectID="_1065451788"> </o:OLEObject> </xml><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1112" type="#_x0000_t202" style='position:absolute;left:0;text-align:left;margin-left:9pt;margin-top:9pt; width:374.2pt;height:274.9pt;z-index:23;mso-position-horizontal-relative:text; mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1112'/> </v:shape><![endif]-->
Page 36: Análise e Projeto Orientado a Objeto Usando UML

Figura 3.4 – Exemplo de uma criação de um Banco de Dados [KHO94]

3.6.1-Como definir um Banco de dados Orientados a Objeto

Para definirmos um banco de dados orientado a objetos pode usar como referência, as seguintes definições:

A orientação a objeto é definida como:

Orientação a Objeto = Tipagem de dados abstratos

+ Herança

+Identidade de objeto

As habilidades de banco de dados são definidos assim:

Habilidades de Banco de Dados = Persistência

+Continuidade

+Transação

+Recuperação

+Consulta

+Versão

+Integridade

Page 37: Análise e Projeto Orientado a Objeto Usando UML

+Segurança

+Desempenho

Banco de dados Orientados a Objetos é definido assim:

Banco de dados Orientados a Objeto = Orientação a Objeto

+Habilidades de Banco de Dados

Portanto, o Banco de dados orientados a objeto, nada mais é que uma integração desta duas tecnologias.

3.6.2- Benefícios dos Banco de dados Orientados a Objeto

O banco de dados orientados a objeto não somente completam as linguagens orientadas a objeto, como tem suas vantagens em comparação ao atual modelo relacional, pelo suporte e aplicações mais complexas, aumento da capacidade de programação e desempenho, melhoria no acesso navegacional, simplificação do controle de concorrência e menor risco referencial de integridade.

Os banco de dados orientados a objetos pode armazenar não só componentes de aplicações complexas, como também grandes estruturas dados. Mesmo com grande números de objetos não sofrem diminuição de desempenho porque os objetos não precisam ser partidos e remontados pelas aplicações, independente da complexidade das propriedades dos objetos da aplicação.

3.7- Linguagens Orientadas a Objetos

3.7.1-História das linguagens orientadas ao objeto

Page 38: Análise e Projeto Orientado a Objeto Usando UML

A linguagem Assembler foi a primeira linguagem de computador que introduziram a

representação de instruções de máquinas subjacentes. Alguns dos primeiros assemblers incluem Soap

para o IBM 650 (meados de 1950) e Sap para o IBM 704 (fim dos anos 50). A primeira programação d

alto nível foi o desenvolvimento do FORTRAN, que introduziu vários conceitos importantes de

linguagem de programação, incluindo variáveis, matrizes e estruturas de controle.

Linguagens de programação de alto nível que seguiram FORTRAN e tiveram larga aceitação

incluem PL/1, Algol, COBOL ( ainda uma linguagem muito popular). Algol ( uma das primeiras

linguagens estruturais em escritório) usaram barras para separar nomes de variáveis dentro de segmentos

de programas . Isto deu origem o blocos Begin... End em ALGOL 60.

Outro importante fator no desenvolvimento das linguagens de programação foi a linguagem

funcional de programação Lisp ,introduzida no inicio dos anos 50 e meados dos anos 60.

A principal força por trás do desenvolvimento comercial das linguagens Orientadas ao Objeto foi

o Smalltalk , projetado pelo Xerox Palo Alto Research Center ( PARC ) .

Com o surgimento de C, nos anos 80, como uma linguagem popular para programação em todas

as plataformas, as suas extensões de Orientação a Objeto tem sido uma razão básica para o próprio

aumento de atenção à programação voltado ao objeto, e argumento para o maior uso de C ++ . C++ é

uma extenção Orientado ao Objeto de C.[WIN93]

Page 39: Análise e Projeto Orientado a Objeto Usando UML

3.7.2-Benefícios das linguagens Orientadas a Objetos

A possibilidade de mostrar um caminho natural para a modelação de um fenômeno complexo do

mundo real, é um benefício para um produtor de software, pois suporta o paradigma da Orientação a

Objeto. Para o programadores acostumados com a tradicional programação, está tecnologia veio ajudar

no desenvolvimento de um programa, pois os programas tem poucas linhas de codificação, que é um

conceito- chave da programação orientada a objeto ,alguns comandos com espaços preenchidos e

módulos que são mais compreensíveis.

As bibliotecas de classes predefinidas, um componente das linguagens Orientadas a Objeto

maduras são também um benefício do uso da linguagem Orientado a Objeto, em exemplo é o Smalltalk

onde as programações feitas com Smalltalk, pode ser feita com objetos e mensagens já existentes na

biblioteca.

Linguagens e programação Orientada a Objeto contém algumas características que pode

considerar também como desvantagens , que é o caso dos programas rodarem mais lentamente do que os

outros escritos em linguagens procedurais. Outro problema, também é que um programador preciso,

com freqüência, estuda uma extensa biblioteca de classes antes de se tornar um perito em linguagem

Orientada a Objeto. Mas não deixa de ser uma linguagem bastante utilizada e aceitada nos dias de hoje

3.7.3- Funcionalidade das linguagens orientadas ao objeto

As linguagens Orientadas a Objeto apresentam sintaxe para dirigir o paradigma e suportar a força

do mecanismo de hereditariedade e mensagens que permitem a reutilização de classes e bibliotecas de

classes.

Page 40: Análise e Projeto Orientado a Objeto Usando UML

A funcionalidade da orientação a objeto está ligada as funcionalidades básicas das linguagens

orientadas a objeto que são elas os métodos, as mensagens, os objetos, as classes e a herança. Que são

todas muito importante na construção de um programa orientado a objeto.

3.8 - Conclusão.

Conclui-se que a que a Tecnologia a Objetos é um grande avanço em software. Pois para os

programadores ficou mais fácil de codificar um software devido a grande índice de funcionalidades. No

próximo capítulo falaremos sobre a UML que é uma unificação de três grande metodologias e que será

um grande avanço para a comunidade de desenvolvedores em orientação a objetos.

Page 41: Análise e Projeto Orientado a Objeto Usando UML

4 -Orientação a Objeto usando UML

Este capitulo fala sobre a UML que é uma linguagem de modelagem unificada e que foi criada por três metodologistas: Booch, Jacobson e Rumbaugh e de todos os digramas propostos pela a UML

4.1- Origem da UML

A Origem da UML (Unified Modeling Language – Linguagem Unificada de Modelagem) deu-se a partir da fusão da metodologia de Grady Booch e a Metodologia OMT (Object Modeling Technique – Técnica de Modelagem de Objetos) de James Rumbaugh, e posteriormente com a inclusão da metodologia OOSE (Object-Oriented Software Engineering – Engenharia de Software Orientada a Objetos) de Ivar Jacobson. Grady Booch e James Rumbaugh juntaram forças através da Rational Corporation para compor uma unificação completa de seus trabalhos. Em outubro de 1995, lançaram um rascunho do Método Unificado na versão 0.8, sendo esse o primeiro resultado concreto de seus esforços.

Também em outubro de 1995, Ivar Jacobson juntou-se à equipe de unificação incluindo algumas idéias do método OOSE. Como os autores Booch, Rumbaugh e Jacobson estavam motivados em criar uma linguagem de modelagem unificada que tratasse assuntos referentes a sistemas complexos e de missão crítica, que se tornasse poderosa o suficiente para modelar qualquer tipo de aplicação de tempo real, cliente/servidor ou outros tipos de software padrões.[FUR98]

A Figura 4.1 mostra a evolução de UML. As suas primeiras versões até chegar na versão que está sendo estudada hoje.

A idéia central da UML é fazer com que os arquitetos de sistemas trabalhem com Análise e Projeto Orientados a Objetos a partir de uma linguagem consistente para especificação, visualização, construção e documentação dos aspectos do software, bem como para a modelagem do negócio.

Page 42: Análise e Projeto Orientado a Objeto Usando UML

Figura 4.1 – Evolução da UML [FUR98]

Além de definir uma notação gráfica, conjunto de símbolos padrões, a qual reúne os melhores artifícios das técnicas existentes no mercado, eles se propuseram a especificar em detalhes toda a semântica desejável de um modelo de sistema. Esta semântica define todos os elementos que compõem o modelo, suas características e relacionamentos, facilitando a efetiva comunicação entre os profissionais que a utilizam. Também foram estabelecidos os vários diagramas que compõem este modelo, porém não se formalizou nenhum método ou metodologia que define a seqüência deles, já que este não foi objetivo principal da especificação. Nos próximos anos deverão surgir diversos métodos no mercado que fazem uso desta notação e semântica.

Essa iniciativa fez tanto sucesso que várias empresas de peso no mundo da informática uniram-se à empreitada na forma de parceria.

O OMG (Object Management Group – Grupo de Manejamento em Objetos) é um organismo que fornece diretrizes para a indústria de software, através de especificações de padrões, cuja missão é promover a teoria e a prática da Tecnologia de Objetos para o desenvolvimento de sistemas de computação distribuída. Durante o ano de 1997, o conjunto de documentos da UML foi submetido ao

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1036" type="#_x0000_t75" style='width:361.5pt;height:237pt' fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image020.wmz" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1038" type="#_x0000_t202" style='position:absolute;left:0;text-align:left;margin-left:9pt;margin-top:8.4pt; width:376.85pt;height:244.85pt;z-index:4;mso-position-horizontal-relative:text; mso-position-vertical-relative:text' o:allowincell="f" strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1038'/> </v:shape><![endif]-->
Page 43: Análise e Projeto Orientado a Objeto Usando UML

OMG para avaliação e adoção desta linguagem como o padrão para a descrição da arquitetura de software. A proposta representou uma mesma direção das melhores experiências na Tecnologia de Objetos. No dia 17 de novembro, o conselho de diretores do OMG acolheu a proposta e a instituiu como padrão. Não se deve duvidar que a Tecnologia de Objetos veio para ficar. Mais do que uma disciplina exata e bem definida, a Orientação a Objeto impõe maior qualidade, produtividade e profissionalismo na construção de sistemas.

A UML vai além de uma simples padronização em busca de uma notação unificada, uma vez que contém conceitos novos que não são encontrados em outros métodos orientados a objeto. A UML recebeu influência das técnicas de modelagem de dados (diagrama de entidade e relacionamento), modelagem de negócio (work flow), modelagem de objetos e componentes, e incorporou idéias de vários autores. Buscou-se unificar as perspectivas entre os diversos tipos de sistemas e fases de desenvolvimento de forma que permitisse levar adiante determinados projetos que antes não eram possíveis pelos métodos existentes.

A UML pode ser usada para:

a) Mostrar fronteiras de um sistema e suas funções principais utilizando atores e casos de uso;

b) Ilustrar a realização de casos de uso com diagramas de interação;

c) Representar uma estrutura estática de uma sistema utilizando diagramas de classe;

d) Modelar o comportamento de objetos com diagramas de comportamento (diagrama de estado,

diagrama de atividade, diagrama de seqüência e diagrama de colaboração;

e) Revelar a arquitetura de implementação física com diagramas de implementação (diagrama de

componente e diagrama de distribuição);

f) Estender sua funcionalidade através de estereótipos.

A UML consolida um conjunto de conceitos essenciais para modelagem visual que geralmente são acordados por vários métodos atuais e ferramentas do mercado. Tais conceitos são encontrados em uma variedade de aplicações embora nem todos sejam necessários nas diversas partes da aplicação, ou seja, a UML por oferecer uma linguagem de modelagem visual apresenta três benefícios:

• Visualização: os relacionamentos existentes entre os diversos componentes da aplicação podem ser

visualizados de forma a antever o produto final;

• Gerenciamento : da complexidade, cada aspecto do sistema é desenhado à parte em um modelo

específico para que se possa estudar e compreender a estrutura, o comportamento e os possíveis

particionamentos físicos, bem como identificar oportunidades de reutilização de componentes;

Page 44: Análise e Projeto Orientado a Objeto Usando UML

• Comunicação: através da utilização de símbolos padrões torna-se possível uma comunicação direta

e não ambígua entre os participantes do projeto com relação aos detalhes de comportamento do

sistema.

A UML fornece mecanismos de extensibilidade e de especialização para apoiar conceitos essenciais.

Ela pode e deve apoiar linguagens de programação, bem como métodos e processos de modelos de construção. Pode ainda suportar múltiplas linguagens de programação e métodos de desenvolvimento sem dificuldade excessiva.

4.2 - Uso da UML

A UML é usada no desenvolvimento dos mais diversos tipos de sistemas. Ela abrange sempre qualquer característica de um sistema em um de seus diagramas e é também aplicada em diferentes fases do desenvolvimento de um sistema, desde a especificação da análise de requisitos até a finalização com a fase de testes.

O objetivo da UML é descrever qualquer tipo de sistema, em termos de diagramas orientado a objetos. Naturalmente, o uso mais comum é para criar modelos de sistemas de software, mas a UML também é usada para representar sistemas mecânicos sem nenhum software. Aqui estão alguns tipos diferentes de sistemas com suas características mais comuns:

• Sistemas de Informação: Armazenar, pesquisar, editar e mostrar informações para os usuários. Manter grandes quantidades de dados com relacionamentos complexos, que são guardados em bancos de dados relacionais ou orientados a objetos.

• Sistemas Técnicos: Manter e controlar equipamentos técnicos como de telecomunicações, equipamentos militares ou processos industriais. Eles devem possuir interfaces especiais do equipamento e menos programação de software de que os sistemas de informação. Sistemas Técnicos são geralmente sistemas real-time.

• Sistemas Real-time Integrados: Executados em simples peças de hardware integrados a telefones celulares, carros, alarmes etc. Estes sistemas implementam programação de baixo nível e requerem suporte real-time.

• Sistemas Distribuídos: Distribuídos em máquinas onde os dados são transferidos facilmente de uma máquina para outra. Eles requerem mecanismos de comunicação sincronizados para garantir a

Page 45: Análise e Projeto Orientado a Objeto Usando UML

integridade dos dados e geralmente são construídos em mecanismos de objetos como CORBA, COM/DCOM ou Java Beans/RMI.

• Sistemas de Software: Definem uma infra-estrutura técnica que outros softwares utilizam. Sistemas Operacionais, bancos de dados, e ações de usuários que executam ações de baixo nível no hardware, ao mesmo tempo que disponibilizam interfaces genéricas de uso de outros softwares.

• Sistemas de Negócios: descreve os objetivos, especificações (pessoas, computadores etc.), as regras (leis, estratégias de negócios etc.), e o atual trabalho desempenhado nos processos do negócio.

É importante perceber que a maioria dos sistemas não possuem apenas uma destas características acima relacionadas, mas várias delas ao mesmo tempo. Sistemas de informações de hoje, por exemplo, podem ter tanto características distribuídas como real-time. E a UML suporta modelagens de todos estes tipos de sistemas.

4.3 - Diagramas propostos pela UML

O modo de descrever os vários aspectos de modelagem pela UML é através de diagrama. Um diagrama é uma apresentação gráfica de uma coleção de elementos de modelo, freqüentemente mostrado como um gráfico conectado de relacionamentos e outros elementos do modelo.

Modelar um sistema complexo é uma tarefa extensiva sendo necessária a descrição de vários aspectos diferentes incluindo o funcional (estrutura estática e interação dinâmica), não funcional (tempo de processamento, confiabilidade, produção) e organizacional (organização do trabalho, mapeamento e código).

A UML distingue as noções de modelo e diagrama. Modelo contém informações a respeito dos elementos subjacentes de um sistema em estudo de maneira independente de como são apresentados visualmente. Diagrama, é uma vizualização particular de certos elementos de tipos de um modelo e geralmente expõe apenas um subconjunto de informação detalhada sobre esses elementos.

Os diagramas propostos são os diagramas de classe, Caso de Uso, Diagramas de Estado, Diagrama de Seqüência, Diagrama de Colaboração, Diagrama de Atividade, Diagrama de Componente, Diagrama de Implantação.

Page 46: Análise e Projeto Orientado a Objeto Usando UML

4.4.- Diagramas de Classe

O Diagrama de classes expressa de uma forma geral a estrutura estática de um sistema, contém classes e associações entre elas. Uma classe descreve um conjunto de elementos. Uma associação é um conjunto de ligações. Objetos são instâncias das classes. O relacionamento entre as classes é chamado de associação e o relacionamento entre objetos é chamado de ligação.

Lembrando o que objeto é uma unidade real ou abstrata. Um objeto é uma pessoa, um carro, um lugar ,etc. e a classe é a representação de um conjunto de objetos(reais ou abstratos). Um grupo de pessoas onde as pessoas são os objetos e o grupo de objetos(pessoas) seria a classe.

O Diagrama de Classe é essência da UML resultado de um combinação de diagrama proposto pela UML, Booch e vários outros métodos. Há quatro tipos principais de relacionamento no diagrama de classes:

4.4.1 - Generalização :

Indica relacionamento entre um elemento mais geral e um elemento mais específico (superclasse e subclasse), também conhecido como herança ou classificação. O elemento mais específico pode conter somente informação adicional acerca do elemento mais geral. Existem alguns tipos de generalizações (Herança) que varia em sua utilização a partir de situação. As generalizações são: generalização normal e restrita.

Generalização Normal:

Na generalização normal a classe mais específica, chamada de subclasse, herda tudo da classe mais geral, chamada de superclasse. Os atributos, operações e todas as associações são herdadas.

Figura 4..2 – Exemplo de uma generalização normal [FUR98]

Uma classe pode ser tanto uma subclasse quanto uma superclasse, se ela estiver uma hierarquia de classes que é um gráfico onde as classes estão ligadas através de generalizações.

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1100" type="#_x0000_t202" style='position:absolute;left:0;text-align:left;margin-left:1.8pt; margin-top:59.7pt;width:388.55pt;height:87.85pt;z-index:18; mso-position-horizontal-relative:text;mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1100'/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1037" type="#_x0000_t75" style='width:373.5pt;height:80.25pt' fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image022.wmz" o:title=""/> </v:shape><![endif]-->
Page 47: Análise e Projeto Orientado a Objeto Usando UML

A generalização normal é representada por uma linha entre duas classes que fazem o relacionamento, sendo que coloca-se um seta no lado da figura onde encontra-se a superclasse indicando a generalização (herança), como podemos ver a Figura 4.2.

Generalização Restrita

Uma restrição aplicada a uma generalização especifica informações mas i precisas sobre como a generalização deve ser estendida no futuro. As restrições a seguir definem as generalizações restritas com mais de um subclasse:

Generalizações de Sobreposição e Disjuntiva:

Generalização de sobreposição significa que quando subclasses herdam de uma superclasse por sobreposição, novas subclasses destas podem herdar mais de uma subclasse. A generalização disjuntiva é exatamente ao contrário da sobreposição e a generalização é utilizada como padrão.

A Figura 4.3 mostra a generalização de sobreposição, onde anfíbio é subclasse do terrestre e do aquático

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1038" type="#_x0000_t75" style='width:359.25pt;height:246.75pt' fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image024.wmz" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1082" type="#_x0000_t202" style='position:absolute;left:0;text-align:left;margin-left:9pt;margin-top:2.7pt; width:374pt;height:253.9pt;z-index:14;mso-position-horizontal-relative:text; mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1082'/> </v:shape><![endif]-->
Page 48: Análise e Projeto Orientado a Objeto Usando UML

Figura 4.3 – Exemplo de uma generalização de sobreposição[FUR98]

Generalização Completa e Incompleta :

Uma restrição simbolizando que uma generalização é completa significa que todas as subclasses já foram especificadas, e não existe mais possibilidade de outra como mostra a Figura 4.4 enquanto a generalização incompleta é exatamente o contrário da completa e é assumida como padrão da linguagem.

Figura 4.4 – Exemplo de uma generalização completa [FUR98]

4.4.2- .Agregação

Usada para denotar relacionamentos todo/parte. As palavras chaves usadas para identificar uma agregação são: “consiste em”, “contém”, “é parte de”.

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1039" type="#_x0000_t202" style='position:absolute;left:0;text-align:left;margin-left:-5.4pt; margin-top:1.9pt;width:417.55pt;height:63.55pt;z-index:5; mso-position-horizontal-relative:text;mso-position-vertical-relative:text' o:allowincell="f" stroked="f" strokecolor="white"> <v:textbox style='mso-next-textbox:#_x0000_s1039'/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1040" type="#_x0000_t75" style='width:403.5pt;height:56.25pt' fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image028.wmz" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1039" type="#_x0000_t75" style='width:381pt;height:165pt' fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image026.wmz" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1083" type="#_x0000_t202" style='position:absolute;left:0;text-align:left;margin-left:1.8pt; margin-top:9pt;width:395.8pt;height:172.75pt;z-index:15; mso-position-horizontal-relative:text;mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1083'/> </v:shape><![endif]-->
Page 49: Análise e Projeto Orientado a Objeto Usando UML

Figura() – Exemplo de uma agregação entre duas classes

Figura 4.5 – Exemplo de uma agregação [FUR98]

Existem tipos especiais de agregação que são as agregações compartilhadas e as compostas.

Agregação Compartilhada :

Fala-se que é compartilhada quando uma das classes é uma parte, ou está contida na outra, mas esta parte pode está contida nas outras várias vezes em um mesmo momento.

Figura4.6 – Exemplo de uma agregação compartilhada[FUR98]

Como pode ver a Figura4.5 uma pessoa pode ser membro de um time ou vários times em um determinado momento.

Agregação de Composição:

Falamos que é uma agregação de composição onde uma classe que está contida na outra “vive” e constitui a outra. Se o objeto da classe que contém for destruído, as classes da agregação de composição serão destruídas juntamente já que as mesmas fazem parte da outra. Como mostra a Figura 4.7.

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1041" type="#_x0000_t75" style='width:380.25pt;height:47.25pt' fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image030.wmz" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1139" type="#_x0000_t202" style='position:absolute;left:0;text-align:left;margin-left:1.8pt; margin-top:6.3pt;width:395.75pt;height:55.4pt;z-index:32; mso-position-horizontal-relative:text;mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1139'/> </v:shape><![endif]-->
Page 50: Análise e Projeto Orientado a Objeto Usando UML

Figura 4.7 – Exemplo de uma agregação de

composição [FUR98]

-4.4.3 - Associação

Utilizada para denotar relacionamentos entre classes não correlatadas. Na UML um associação é definida como um relacionamento que descreve um conjunto de vínculos, onde vínculo é definido como uma conexão semântica entre tuplas(registros de tabelas) de objetos.

A Figura 4.7 mostra um metamodelo – representação das principais características da associação

Associação

1

{ordenado} 2..*

Regra

multiplicidade: Multiplicidade

0..* navegabilidade: Booleano 0..1

agregado: Booleano

alterabilidade: Booleano

ordenado: Booleano

1 Participante Qualificador 0..*

Tipo Atributo

Figura 4.7 – Essa figura representa um Metamodelo

Os atributos compreende os seguintes papéis

, 23/12/05
<!--[if gte vml 1]><v:group id="_x0000_s1138" style='position:absolute; left:0;text-align:left;margin-left:45pt;margin-top:37.8pt;width:331.2pt; height:252pt;z-index:26' coordorigin="3168,3024" coordsize="6624,5040" o:allowincell="f"> <v:rect id="_x0000_s1116" style='position:absolute;left:5904;top:3024;width:1296; height:432' filled="f"/> <v:shapetype id="_x0000_t110" coordsize="21600,21600" o:spt="110" path="m10800,0l0,10800,10800,21600,21600,10800xe"> <v:stroke joinstyle="miter"/> <v:path gradientshapeok="t" o:connecttype="rect" textboxrect="5400,5400,16200,16200"/> </v:shapetype><v:shape id="_x0000_s1117" type="#_x0000_t110" style='position:absolute; left:6336;top:3488;width:288;height:288'/> <v:rect id="_x0000_s1118" style='position:absolute;left:4896;top:4640;width:3312; height:2160' filled="f"/> <v:line id="_x0000_s1119" style='position:absolute' from="4896,5210" to="8208,5210"/> <v:line id="_x0000_s1120" style='position:absolute' from="6480,3776" to="6480,4640"/> <v:shape id="_x0000_s1121" type="#_x0000_t110" style='position:absolute; left:8208;top:5904;width:288;height:288'/> <v:line id="_x0000_s1122" style='position:absolute' from="8496,6074" to="9216,6074"/> <v:rect id="_x0000_s1123" style='position:absolute;left:8784;top:7488;width:1008; height:576' filled="f"/> <v:rect id="_x0000_s1124" style='position:absolute;left:3168;top:7488;width:1008; height:576' filled="f"/> <v:line id="_x0000_s1125" style='position:absolute' from="9216,6074" to="9216,7514"/> <v:line id="_x0000_s1126" style='position:absolute;flip:y' from="3744,6074" to="3744,7514"/> <v:line id="_x0000_s1127" style='position:absolute' from="3744,6074" to="4896,6074"/> </v:group><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1042" type="#_x0000_t75" style='width:373.5pt;height:58.5pt' fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image032.wmz" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1140" type="#_x0000_t202" style='position:absolute;left:0;text-align:left;margin-left:1.8pt; margin-top:3.2pt;width:388.7pt;height:66.45pt;z-index:33; mso-position-horizontal-relative:text;mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1140'/> </v:shape><![endif]-->
Page 51: Análise e Projeto Orientado a Objeto Usando UML

• Multiplicidade – especifica o número de instâncias que participa na associação;

• Navegabilidade – especifica se ligações (instância de associação) podem ser navegadas na direção do papel sendo considerado;

• Indicador de agregação – especifica se a instância do tipo associado ao papel, corresponde ao todo (inteiro, parte) na associação. Somente um dos papéis de uma associação pode ter um conjunto de indicadores de agregação para verdadeiro. Se a multiplicidade é maior que 1, várias instâncias jogam o papel do todo e compartilham as partes;

• Alterabilidade – especifica se a semântica da associação são preservados quando uma instância do tipo que participa no papel é substituído por outra instância;

• Ordenação – aplicada enquanto o valor de multiplicidade é maior que 1, significa que as instâncias são ordenadas.

• Um papel da associação pode também incluir um conjunto de atributos, estes valores implementam uma partição do conjunto de objetos da classe associada.

-4.4.4 - Dependências

É um relacionamento entre elementos, um independente e outro dependente, onde uma mudança no elemento independente afetará o elemento dependente.

Uma relação dependente é simbolizada por uma linha tracejada com uma seta no final de um dos lados do relacionamento. E sobre essa linha o tipo de depêndência que existe entre as duas classes. As classes “Amigas” provenientes do C++ são um exemplo de um relacionamento de dependência.

Figura 4.8 – Exemplo de uma dependência entre classes [FUR98]

Podem ser organizadas em pacotes com seus modelos subjacentes ou como pacotes separados que são construído mediante pacotes de modelo subjacentes.

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1043" type="#_x0000_t75" style='width:373.5pt;height:53.25pt' fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image035.wmz" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1141" type="#_x0000_t202" style='position:absolute;left:0;text-align:left;margin-left:1.8pt; margin-top:9.6pt;width:388.6pt;height:61.4pt;z-index:34; mso-position-horizontal-relative:text;mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1141'/> </v:shape><![endif]-->
Page 52: Análise e Projeto Orientado a Objeto Usando UML

A Figura 4.9 mostra um diagrama de classes representando um sistema de uma Vídeo Locadora, onde tem três classes (Locação, Cliente, Locação-Item).

Na Uml, classes individuais são representadas como um retângulo sólido com um, dois ou três compartimentos. O primeiro compartimento, é para o nome da classe e é obrigatório, os outros dois compartimentos, são opcionais e podem ser usados para listar respectivamente os atributos e as operações definidas para a classe.

Figura 4.9 – Diagrama de classe – Vídeo Locadora

A Figura 4.10 mostra uma classe como é definida a classe

Classe

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1114" type="#_x0000_t202" style='position:absolute;left:0; text-align:left;margin-left:145.8pt;margin-top:16.85pt;width:100.75pt; height:79.85pt;z-index:25;mso-position-horizontal-relative:text; mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1114'/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1044" type="#_x0000_t75" style='width:366pt;height:312pt' fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image037.wmz" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1142" type="#_x0000_t202" style='position:absolute;left:0;text-align:left;margin-left:9pt;margin-top:10.8pt; width:381.45pt;height:319.7pt;z-index:35;mso-position-horizontal-relative:text; mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1142'/> </v:shape><![endif]-->
Page 53: Análise e Projeto Orientado a Objeto Usando UML

Figura4.10 – Exemplo de uma classe

O diagrama de classe é tão rico em sua capacidade de modelagem que, não raramente, buscamos um detalhamento muito extenso de especificação cedo demais na perspectiva conceitual.

4.5 - Diagrama de Caso de Uso (USE CASE)

Os diagramas de caso de uso fornecem um modo de descrever a visão externa do sistema e suas interações com o mundo exterior, representando uma visão de alto nível de funcionalidade intencional mediante o recebimento de um tipo de requisição do usuário, ou seja, os diagramas de caso de uso permitem modelar o sistema de forma que se consiga ver como o sistema vai se comportar com a interação do mundo exterior, mediante a função (caso de uso) que o usuário possa executar, não sendo importante como funciona o sistema internamente [FUR98].

Os propósitos primários dos casos de uso são:

• Descrever os requerimentos funcionais do sistema de maneira que haja uma concordância de visão

do sistema entre usuários e desenvolvedores;

• Fornecer uma descrição consistente e clara sobre as responsabilidades que devem ser cumpridas

pelo sistema, além de formar a base de como vai ser feita a interface do sistema;

• Oferecer as possíveis situações do mundo real para o teste do sistema, ou seja, na fase de teste você

pode utilizar as situações de interação do usuário com o sistema que é modelado no diagrama de caso

de uso e fazer teste com o sistema.

Um diagrama de caso de uso é um gráfico de atores, um conjunto de casos incluído por um limite de domínio, comunicação, participação e associações entre atores, assim como generalizações entre casos de uso.

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1045" type="#_x0000_t75" style='width:85.5pt;height:1in' o:ole="" fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image039.gif" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1045" DrawAspect="Content" ObjectID="_1065451789"> </o:OLEObject> </xml><![endif]-->
Page 54: Análise e Projeto Orientado a Objeto Usando UML

O diagrama de caso de uso é formado basicamente por quatro elementos que incluem: ator, caso de uso, interação, sistema.

O propósito de um caso de uso é especificar um serviço que o sistema fornece a seus usuários, ou seja, caso de uso é a função que uma classe pode desempenhar sem que se preocupe com essa função internamente.

Um caso de uso é uma unidade coerente de funcionalidade fornecida por um sistema, ou classe, manifestada por seqüências de mensagens trocadas entre o sistema e uma ou mais interações externas (chamadas de atores), junto com ações executadas por um sistema.

A implementação de um tipo de caso de uso é apresentada como uma colaboração de objetos e vínculos junto com as possíveis seqüências de fluxos de mensagens que produzem efeito do caso de uso. Diagramas de interação mostram as seqüências de mensagens entre objetos que implementam o caso de uso.

Um diagrama de caso de uso é modelado através de uma elipse contendo o nome do caso de uso. O nome do caso de uso pode ser colocado embaixo da elipse.

Caso de Uso OU

Caso de Uso

Figura 4.11 - Exemplo de representação de um caso de uso

O ponto de extensão é uma localização dentro de um caso de uso na qual seqüência de ações de outros casos de uso pode ser inserida. Cada ponto de extensão deve ter um único nome dentro de um caso de uso. Pontos de extensão podem ser listados em um compartimento do caso de uso com o cabeçalho ponto de extensão. O qual pode ser visto a representação na Figura 4.12.

Caso de Uso

ponto de extensão

seqüência de ações

, 23/12/05
<!--[if gte vml 1]><v:rect id="_x0000_s1064" style='position:absolute;left:0;text-align:left; margin-left:109.8pt;margin-top:.2pt;width:172.8pt;height:108pt;z-index:-31; mso-position-horizontal-relative:text;mso-position-vertical-relative:text' o:allowincell="f" filled="f" stroked="f"/><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:oval id="_x0000_s1042" style='position:absolute;left:0;text-align:left; margin-left:124.2pt;margin-top:7.35pt;width:136.8pt;height:93.6pt;z-index:-34; mso-position-horizontal-relative:text;mso-position-vertical-relative:text' o:allowincell="f"/><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:line id="_x0000_s1043" style='position:absolute;left:0;text-align:left;z-index:7; mso-position-horizontal-relative:text;mso-position-vertical-relative:text' from="124.2pt,22.95pt" to="261pt,22.95pt" o:allowincell="f"/><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:oval id="_x0000_s1065" style='position:absolute; left:0;text-align:left;margin-left:59.4pt;margin-top:4.45pt;width:122.4pt; height:57.6pt;z-index:-30;mso-position-horizontal-relative:text; mso-position-vertical-relative:text' o:allowincell="f"/><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:rect id="_x0000_s1067" style='position:absolute;left:0;text-align:left; margin-left:52.2pt;margin-top:2pt;width:352.8pt;height:122.4pt;z-index:-28; mso-position-horizontal-relative:text;mso-position-vertical-relative:text' o:allowincell="f" filled="f" stroked="f"/><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:oval id="_x0000_s1066" style='position:absolute;left:0;text-align:left; margin-left:297pt;margin-top:11.65pt;width:93.6pt;height:36pt;z-index:11; mso-position-horizontal-relative:text;mso-position-vertical-relative:text' o:allowincell="f"/><![endif]-->
Page 55: Análise e Projeto Orientado a Objeto Usando UML

Figura 4.12 - Exemplo de representação de um caso de uso com ponto de extensão.

Um ator é um papel do objeto ou objeto externo de um sistema que interage diretamente com ele como parte de uma coerente unidade de trabalho (um caso de uso). Um elemento ator caracteriza o papel desempenhado por um objeto externo; um objeto físico pode desempenhar vários papéis e portanto ser modelado por vários atores.

Um ator pode ser representado como um retângulo de classe com o estereótipo “ator”. O estereótipo padrão para um ator é uma figura de “stick man” com o nome de um ator embaixo da figura. Como pode ver na figura 4.11.

Existem vários relacionamentos padrões entre casos de uso ou entre atores e casos de uso:

• Communicates (Comunicar) – A participação de um ator em um caso de uso. Este é o único relacionamento entre atores e casos de uso.

• Extends (Prolongar) – Um relacionamento extends de caso de uso A para caso de uso B indica que uma instância de caso de uso B pode incluir (sujeito para especificar condições especificadas na extensão) o comportamento especificado por A. Comportamento especificado por vários (prolongadores) de um simples caso de uso destino pode ocorrer dentro de uma simples instância de caso de uso.

• Use (Usa) – Um relacionamento uses de um caso de uso A para caso de uso B indica que uma instância do caso de uso A também incluirá o comportamento como especificado por B.

Figura 4.13 - Representação de Ator

, 23/12/05
<!--[if gte vml 1]><v:rect id="_x0000_s1068" style='position:absolute; left:0;text-align:left;margin-left:52.2pt;margin-top:9pt;width:266.4pt; height:136.8pt;z-index:-27;mso-position-horizontal-relative:text; mso-position-vertical-relative:text' o:allowincell="f" filled="f" stroked="f"/><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1046" type="#_x0000_t75" style='width:251.25pt;height:171pt' fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image044.wmz" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1102" type="#_x0000_t202" style='position:absolute;left:0;text-align:left;margin-left:73.8pt; margin-top:9pt;width:266.55pt;height:179pt;z-index:19; mso-position-horizontal-relative:text;mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1102'/> </v:shape><![endif]-->
Page 56: Análise e Projeto Orientado a Objeto Usando UML

O relacionamento de Comunicação entre um ator e um caso de uso é representado através de uma linha sólida entre o ator e o caso de uso.

Um relacionamento “estende” entre caso de uso é representado por uma seta de generalização do caso de uso fornecendo a extensão para a base do caso de uso. A seta é nomeada com o estereótipo <<estende>>.

Um relacionamento “usa” entre casos de uso é representado por uma seta de generalização do caso de uso fazendo o uso para o caso de uso sendo usado. A seta é nomeada com o estereótipo <<usa>>.

A Figura 4.14 será apresentada a modelagem dos relacionamentos de caso de uso. Todos os elementos decorridos anteriormente formam o diagrama de caso de uso.

Colocar Pedido <estende>> Requisistar Pedido

<<usa>>

Cliente

Pedir produto

Figura 4.14 - Representa o Relacionamento de caso de uso

A Figura 4.15 mostra um exemplo de uma aplicação de diagrama e especificação de casos de uso para uma Vídeo Locadora, onde ocorre interações com entre o cliente e gerente da Vídeo Locadora. A

, 23/12/05
<!--[if gte vml 1]><v:rect id="_x0000_s1063" style='position:absolute; left:0;text-align:left;margin-left:8.55pt;margin-top:22.7pt;width:403.2pt; height:3in;z-index:-32;mso-position-horizontal-relative:text; mso-position-vertical-relative:text' o:allowincell="f" filled="f" stroked="f"/><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:group id="_x0000_s1115" style='position:absolute; left:0;text-align:left;margin-left:16.2pt;margin-top:9pt;width:381.6pt; height:187.45pt;z-index:20' coordorigin="2592,2592" coordsize="7632,3749" o:allowincell="f"> <v:oval id="_x0000_s1049" style='position:absolute;left:2727;top:2592;width:576; height:432' o:regroupid="2"/> <v:line id="_x0000_s1050" style='position:absolute' from="3024,3029" to="3024,4181" o:regroupid="2"/> <v:line id="_x0000_s1051" style='position:absolute' from="2592,3317" to="3456,3317" o:regroupid="2"/> <v:line id="_x0000_s1052" style='position:absolute' from="3024,4181" to="3312,4613" o:regroupid="2"/> <v:line id="_x0000_s1053" style='position:absolute;flip:x' from="2736,4181" to="3024,4613" o:regroupid="2"/> <v:line id="_x0000_s1054" style='position:absolute' from="3744,3317" to="4896,3317" o:regroupid="2"/> <v:oval id="_x0000_s1055" style='position:absolute;left:4896;top:2741;width:1584; height:1008' o:regroupid="2" filled="f"/> <v:oval id="_x0000_s1056" style='position:absolute;left:8640;top:2736;width:1584; height:984' o:regroupid="2" filled="f"/> <v:oval id="_x0000_s1059" style='position:absolute;left:4752;top:5333;width:1728; height:1008' o:regroupid="2" filled="f"/> <v:line id="_x0000_s1106" style='position:absolute' from="5616,3744" to="5616,5328" o:regroupid="2"> <v:stroke endarrow="block"/> </v:line><v:line id="_x0000_s1108" style='position:absolute;flip:x' from="6480,3456" to="8640,3456" o:regroupid="2"> <v:stroke endarrow="block"/> </v:line></v:group><![endif]-->
Page 57: Análise e Projeto Orientado a Objeto Usando UML

especificação do caso de uso possui informação de cada relacionamento, incluindo quem inicia a ação o numero de caso de uso, nome do caso de uso e sua descrição.

Figura 4.15 Exemplo de Caso de uso de uma Vídeo Locadora

A Tabela 4.1 mostra as especificações de cada case. Dizendo quem inicia a ação, a descrição do caso e qual é o caso.

Tabela 4-1 Informações dos relacionamentos

Nro Caso de uso Quem inicia a ação Descrição do caso de uso

1 Efetuar Locação Gerente O gerente pega a fita a ser emprestada pelo cliente

2 Fazer Devolução Cliente O cliente entrega a fita ser devolvida a Locadora para o gerente

3 Fazer Reservas Cliente O cliente faz reserva do filme que não está na locadora naquele momento

4 Efetua Pagamento Cliente O cliente efetua o pagamento do filme locado para o gerente

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1047" type="#_x0000_t75" style='width:358.5pt;height:192pt' fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image047.wmz" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1143" type="#_x0000_t202" style='position:absolute;left:0;text-align:left;margin-left:9pt;margin-top:6.55pt; width:374pt;height:200pt;z-index:36;mso-position-horizontal-relative:text; mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1143'/> </v:shape><![endif]-->
Page 58: Análise e Projeto Orientado a Objeto Usando UML

4.6 - Diagrama de Estado

O diagrama de estado é tipicamente um complemento para a descrição das classes. Este diagrama mostra todos os estados possíveis que objetos de uma certa classe podem se encontrar e mostra também quais são os eventos do sistemas que provocam tais mudanças. Os diagramas de estado não são escritos para todas as classes de um sistema, mas apenas para aquelas que possuem um número definido de estados conhecidos e onde o comportamento das classes é afetado e modificado pelos diferentes estados.

Diagramas de estado capturam o ciclo de vida dos objetos, subsistemas e sistemas. Eles mostram os estados que um objeto pode possuir e como os eventos (mensagens recebidas, timer, erros, e condições sendo satisfeitas) afetam estes estados ao passar do tempo.

Diagramas de estado possuem um ponto de início e vários pontos de finalização. Um ponto de início (estado inicial) é mostrado como um círculo todo preenchido, e um ponto de finalização (estado final) é mostrado como um círculo em volta de um outro círculo menor preenchido. Um estado é mostrado como um retângulo com cantos arredondados. Entre os estados estão as transições, mostrados como uma linha com uma seta no final de um dos estados. A transição pode ser nomeada com o seu evento causador. Quando o evento acontece, a transição de um estado para outro é executada ou disparada. Veja a Figura 4.16

Uma transição de estado normalmente possui um evento ligado a ela. Se um evento é anexado a uma transição, esta será executada quando o evento ocorrer. Se uma transição não possuir um evento ligado a ela, a mesma ocorrerá quando a ação interna do código do estado for executada (se existir ações internas como entrar, sair, fazer ou outras ações definidas pelo desenvolvedor). Então quando todas as ações forem executadas pelo estado, a transição será disparada e serão iniciadas as atividades do próximo estado no diagrama de estados.

A Figura 4.16 mostra um diagrama de estado de um pedido de locação de um filme. Quando recebe-se um pedido de filme a se locado, ele inseri na respectiva classe de tal forma que um novo objeto seja criado nela. No caso, esse pedido de locação de um filme será passado por várias mudanças de estado contemplando posições de “em análise”, ”reserva”, ”alugar”.

Page 59: Análise e Projeto Orientado a Objeto Usando UML

Figura 4.16 – Diagrama de Estados – Diagrama de estados - Pedido de locação de um filme.

4.7 - Diagrama de Sequência

Um diagrama de seqüência mostra a colaboração dinâmica entre os vários objetos de um sistema. O mais importante aspecto deste diagrama é que a partir dele percebe-se a seqüência de mensagens enviadas entre os objetos. Ele mostra a interação entre os objetos, alguma coisa que acontecerá em um ponto específico da execução do sistema. O diagrama de seqüência consiste em um número de objetos mostrado em linhas verticais. O decorrer do tempo é visualizado observando-se o diagrama no sentido vertical de cima para baixo. As mensagens enviadas por cada objeto são simbolizadas por setas entre os objetos que se relacionam.

Diagramas de sequência possuem dois eixos: o eixo vertical, que mostra o tempo e o eixo horizontal, que mostra os objetos envolvidos na sequência de uma certa atividade. Eles também mostram as interações para um cenário específico de uma certa atividade do sistema.

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1048" type="#_x0000_t75" style='width:366.75pt;height:229.5pt' fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image049.wmz" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1134" type="#_x0000_t202" style='position:absolute;left:0;text-align:left;margin-left:9pt;margin-top:4.55pt; width:381.5pt;height:237.1pt;z-index:30;mso-position-horizontal-relative:text; mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1134'/> </v:shape><![endif]-->
Page 60: Análise e Projeto Orientado a Objeto Usando UML

No eixo horizontal estão os objetos envolvidos na seqüência. Cada um é representado por um retângulo de objeto (similar ao diagrama de objetos) e uma linha vertical pontilhada chamada de linha de vida do objeto, indicando a execução do objeto durante a seqüência, como exemplo citamos: mensagens recebidas ou enviadas e ativação de objetos. A comunicação entre os objetos é representada como linha com setas horizontais simbolizando as mensagens entre as linhas de vida dos objetos. A seta especifica se a mensagem é síncrona, assíncrona ou simples. As mensagens podem possuir também números seqüenciais, eles são utilizados para tornar mais explícito as seqüência no diagrama.

Em alguns sistemas, objetos rodam concorrentemente, cada um com sua linha de execução (thread). Se o sistema usa linhas concorrentes de controle, isto é mostrado como ativação, mensagens assíncronas, ou objetos assíncronos. Como mostra a Figura 4.17 um diagrama de seqüência de uma Vídeo Locadora onde está apresentando os passo e processos para o aluguel de uma fita.

Figura 4.17 – Diagrama de Sequencia – Vídeo Locadora

Os diagramas de sequência podem mostrar objetos que são criados ou destruídos como parte do cenário documentado pelo diagrama. Um objeto pode criar outros objetos através de mensagens. A mensagem que cria ou destrói um objeto é geralmente síncrona, representada por uma seta sólida.

4.8 - Diagrama de Colaboração

Um diagrama de colaboração mostra de maneira semelhante ao diagrama de seqüência, a colaboração dinâmica entre os objetos. Normalmente pode-se escolher entre utilizar o diagrama de colaboração ou o diagrama de seqüência.

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1049" type="#_x0000_t75" style='width:359.25pt;height:173.25pt' fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image051.wmz" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1144" type="#_x0000_t202" style='position:absolute;left:0; text-align:left;margin-left:9pt;margin-top:5.15pt;width:374.3pt;height:181.15pt; z-index:37;mso-position-horizontal-relative:text; mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1144'/> </v:shape><![endif]-->
Page 61: Análise e Projeto Orientado a Objeto Usando UML

No diagrama de colaboração, além de mostrar a troca de mensagens entre os objetos, percebe-se também os objetos com os seus relacionamentos. A interação de mensagens é mostrada em ambos os diagramas. Se a ênfase do diagrama for o decorrer do tempo, é melhor escolher o diagrama de seqüência, mas se a ênfase for o contexto do sistema, é melhor dar prioridade ao diagrama de colaboração.

O diagrama de colaboração é desenhado como um diagrama de objeto, onde os diversos objetos são mostrados juntamente com seus relacionamentos. As setas de mensagens são desenhadas entre os objetos para mostrar o fluxo de mensagens entre eles. As mensagens são nomeadas, que entre outras coisas mostram a ordem em que as mensagens são enviadas. Também podem mostrar condições, interações, valores de resposta, e etc. O diagrama de colaboração também pode conter objetos ativos, que executam paralelamente com outros. A Figura 4.18. mostra um vídeo locadora, em que mostra desde o pedido do cliente para o empréstimo da fita, até o ato de devolução.

Figura 4.18 – Diagrama de Claboração – Vídeo Locadora

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1050" type="#_x0000_t75" style='width:358.5pt;height:229.5pt' fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image053.wmz" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1145" type="#_x0000_t202" style='position:absolute;left:0;text-align:left;margin-left:9pt;margin-top:16.2pt; width:374pt;height:237.25pt;z-index:38;mso-position-horizontal-relative:text; mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1145'/> </v:shape><![endif]-->
Page 62: Análise e Projeto Orientado a Objeto Usando UML

4.9 - Diagrama de Atividade

Diagramas de atividade capturam ações e seus resultados. Eles focam o trabalho executado na implementação de uma operação (método), e suas atividades numa instância de um objeto. O diagrama de atividade é uma variação do diagrama de estado e possui um propósito um pouco diferente do diagrama de estado, que é o de capturar ações (trabalho e atividades que serão executados) e seus resultados em termos das mudanças de estados dos objetos.

Os estados no diagrama de atividade mudam para um próximo estágio quando uma ação é executada (sem ser necessário especificar nenhum evento como no diagrama de estado). Outra diferença entre o diagrama de atividade e o de estado é que podem ser colocadas como “swimlanes”. Uma swimlane agrupa atividades, com respeito a quem é responsável e onde estas atividades residem na organização, e é representada por retângulos que englobam todos os objetos que estão ligados a ela (swimlane).

Um diagrama de atividade é uma maneira alternativa de se mostrar interações, com a possibilidade de expressar como as ações são executadas, o que elas fazem (mudanças dos estados dos objetos), quando elas são executadas (sequência das ações), e onde elas acontecem (swimlanes).

Um diagrama de atividade pode ser usado com diferentes propósitos inclusive:

• Para capturar os trabalhos que serão executados quando uma operação é disparada (ações). Este é o uso mais comum para o diagrama de atividade.

• Para capturar o trabalho interno em um objeto.

• Para mostrar como um grupo de ações relacionadas podem ser executadas, e como elas vão afetar os objetos em torno delas.

• Para mostrar como uma instância pode ser executada em termos de ações e objetos.

• Para mostrar como um negócio funciona em termos de trabalhadores (atores), fluxos de trabalho, organização, e objetos (fatores físicos e intelectuais usados no negócio).

O diagrama de atividade mostra o fluxo sequencial das atividades, é normalmente utilizado para demonstrar as atividades executadas por uma operação específica do sistema. Consistem em estados de ação, que contém a especificação de uma atividade a ser desempenhada por uma operação do sistema. Decisões e condições, como execução paralela, também podem ser mostrados na diagrama de atividade. O diagrama também pode conter especificações de mensagens enviadas e recebidas como partes de ações executadas. Veja a Figura 4.19

Page 63: Análise e Projeto Orientado a Objeto Usando UML

Figura 4.19 – Diagrama de Atividade

4.10 - Diagrama de Componente

O diagrama de componente e o de execução são diagramas que mostram o sistema por um lado funcional, expondo as relações entre seus componentes e a organização de seus módulos durante sua execução.

O diagrama de componente descreve os componentes de software e suas dependências entre si, representando a estrutura do código gerado. Os componentes são a implementação na arquitetura física dos conceitos e da funcionalidade definidos na arquitetura lógica (classes, objetos e seus relacionamentos). Eles são tipicamente os arquivos implementados no ambiente de desenvolvimento.

Um componente é mostrado em UML como um retângulo com uma elipse e dois retângulos menores do seu lado esquerdo. O nome do componente é escrito abaixo ou dentro de seu símbolo.

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1051" type="#_x0000_t75" style='width:366.75pt;height:210.75pt' o:ole="" fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image055.wmz" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1051" DrawAspect="Content" ObjectID="_1065451791"> </o:OLEObject> </xml><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1146" type="#_x0000_t202" style='position:absolute;left:0;text-align:left;margin-left:9pt;margin-top:9pt; width:381.5pt;height:218.85pt;z-index:39;mso-position-horizontal-relative:text; mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1146'/> </v:shape><![endif]-->
Page 64: Análise e Projeto Orientado a Objeto Usando UML

Componentes são tipos, mas apenas componentes executáveis podem ter instâncias. Um diagrama de componente mostra apenas componentes como tipos. Para mostrar instâncias de componentes, deve ser usado um diagrama de execução, onde as instâncias executáveis são alocadas em nodes.

A dependência entre componentes pode ser mostrada como uma linha tracejada com uma seta, simbolizando que um componente precisa do outro para possuir uma definição completa. Com o diagrama de componentes é facilmente visível detectar que arquivos .dll são necessários para executar a aplicação .Como pode ver a Figura 4.20

Componentes podem definir interfaces que são visíveis para outros componentes. As interfaces podem ser tanto definidas ao nível de codificação (como em Java) quanto em interfaces binárias usadas em run-time (como em OLE). Uma interface é mostrada como uma linha partindo do componente e com um círculo na outra extremidade. O nome é colocado junto do círculo no final da linha. Dependências entre componentes podem então apontar para a interface do componente que está sendo usada.

Page 65: Análise e Projeto Orientado a Objeto Usando UML

Figura 4.20 – Diagrama de Componentes.[BAR98]

4.11 - Diagrama de Implantação

O diagrama de implantação mostra a arquitetura física do hardware e do software no sistema. Pode mostrar os atuais

computadores e periféricos, juntamente com as conexões que eles estabelecem entre si e pode mostrar também os tipos de conexões entre esses computadores e periféricos. Especifica-se também os componentes executáveis e objetos que são alocados para mostrar quais unidades de software são executados e em quais destes computadores são executados.

O diagrama de implantação demonstra a arquitetura run-time de processadores, componentes físicos (devices), e de software que rodam no ambiente onde o sistema desenvolvido será utilizado. É a última descrição física da topologia do sistema, descrevendo a estrutura de hardware e software que executam em cada unidade.

O diagrama de implantação é composto por componentes, que possuem a mesma simbologia dos

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1052" type="#_x0000_t75" style='width:374.25pt;height:179.25pt' fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image057.wmz" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1087" type="#_x0000_t202" style='position:absolute;left:0;text-align:left; margin-left:1.35pt;margin-top:6.5pt;width:388.5pt;height:186.7pt;z-index:16; mso-position-horizontal-relative:text;mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1087'/> </v:shape><![endif]-->
Page 66: Análise e Projeto Orientado a Objeto Usando UML

componentes do diagrama de componentes, nodes, que significam objetos físicos que fazem parte do sistema, podendo ser uma máquina cliente numa LAN, uma máquina servidora, uma impressora, um roteador, etc., e conexões entre estes nodes e componentes que juntos compõem toda a arquitetura física do sistema. Mostrada na Figura 4.21.

Figura 4.21 – Diagrama de implantação– Associações entre Nodes.[BAR98]

4.12 - . Um processo para utilizar a UML

A UML contém notações e regras que torna possível expressar modelos orientados a objetos. Mas ela não prescreve como o trabalho tem que ser feito, ou seja, não possui um processo de como o trabalho tem que ser desenvolvido. Já que a UML foi desenvolvida para ser usada em diversos métodos de desenvolvimento.

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1088" type="#_x0000_t202" style='position:absolute;left:0;text-align:left; margin-left:-5.4pt;margin-top:9pt;width:403.2pt;height:151.2pt;z-index:17; mso-position-horizontal-relative:text;mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1088'/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1053" type="#_x0000_t75" style='width:395.25pt;height:144.75pt' fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image059.wmz" o:title=""/> </v:shape><![endif]-->
Page 67: Análise e Projeto Orientado a Objeto Usando UML

Para usar a UML com sucesso é necessário adotar algum tipo de método de desenvolvimento, especialmente em sistema de grande porte onde a organização de tarefas é essencial. A utilização de um processo de desenvolvimento torna mais eficiente calcular o progresso do projeto, controlar e melhorar o trabalho.

Um processo de desenvolvimento descreve “o que fazer”, “como fazer”, “quando fazer”, e “porque deve ser feito”. Este também descreve um número de atividades que devem ser executadas em uma certa ordem. Quando são definidas e relacionadas as atividades de um processo, um objetivo específico é alcançado.

Em seu uso normal, a palavra “processo” significa uma relação de atividades que devem ser executadas em uma certa ordem sem importar o objetivo, regras ou material a ser usado. No processo de desenvolvimento da engenharia de software, é necessário saber o objetivo final do processo, definir regras a serem seguidas e adotar um método fixo de desenvolvimento.

Um método (processo) tradicional de desenvolvimento orientado a objetos é dividido em análise de requisitos, análise, design (projeto), implementação, e testes. A análise de requisitos captura as necessidades básicas funcionais e não-funcionais do sistema que deve ser desenvolvido. A análise modela o problema principal (classes, objetos) e cria um modelo ideal do sistema sem levar em conta requisitos técnicos do sistema. O design expande e adapta os modelos da análise para um ambiente técnico, onde as soluções técnicas são trabalhadas em detalhes. A implementação consiste em codificar em linguagem de programação e banco de dados os modelos criados. E as atividades de testes devem testar o sistema em diferentes níveis, verificando se o mesmo corresponde as expectativas do usuário.

Existe um processo desenvolvido pela Rational Inc., mesma empresa que desenvolveu a UML, que monta duas visões do desenvolvimento de um sistema: visão gerencial e técnica. A visão técnica utiliza as tradicionais atividades de análise, design e implementação, enquanto a visão gerencial utiliza as seguintes fases no desenvolvimento de cada geração do sistema.

• Início: Define o escopo e objetivo do projeto;

• Elaboração: Desenvolve o produto em detalhes através de uma série de interações. Isto envolve mais análise, design e programação;

• Transição: Gera o sistema para o usuário final, incluindo as atividades de marketing, suporte, documentação e treinamento.

Cada fase no ciclo é executada em séries de interações que podem sobrepor outras fases. Cada interação consiste tipicamente em atividades tradicionais como análise e design, mas em diferentes proporções dependendo da fase em que esteja a geração do sistema em desenvolvimento.

Page 68: Análise e Projeto Orientado a Objeto Usando UML

Ferramentas modernas devem dar suporte não apenas para linguagens de modelagem e programação, mas devem suportar um método de desenvolvimento de sistemas também. Isso inclui conhecimento das fases em um processo, ajuda online, e aconselhamentos do que fazer em cada fase do desenvolvimento, suporte a desenvolvimento interativo e fácil integração com outras ferramentas.

4.13 – Conclusão

Conclui-se que a UML é uma unificação bastante avançada e que facilitará as empresas no seu processo de desenvolvimento de seus softwares, pois permite uma maior comunicação e entendimento nas pessoas envolvidas neste processo. No próximo capitulo falaremos um pouco das métricas necessárias para obter um bom software e UML e as métricas que dá maior qualidade aos software, uma boa produtividade ou seja o tempo de produção é menor.

Page 69: Análise e Projeto Orientado a Objeto Usando UML

5 - Qualidade de software Orientado a Objeto

Este capitulo mostra alguns aspecto importante para se obter a qualidade de um software, quais são as medidas possíveis para que o software tenha mais qualidade, metodologias e ferramentas que estão sendo utilizada no processo. Citando da UML como uma notação de qualidade para o desenvolvimento de um software.

5.1 – Conceitos de Qualidade

Existem várias definições sobre qualidade de software. Mas [PRE95]apresenta uma definição muito interessante:

• Requisitos de software é a base sobre a qual a qualidade é medida. Falta de conformidade com os requisitos é falta de qualidade.

• Padrões específico definem um conjunto de critérios de desenvolvimento que orientam a maneira como um software passa pelo trabalho de engenharia. Se os critérios não forem seguidos, o resultado será a falta de qualidade.

• Existe um conjunto de requisitos implícitos que não são mencionados (exemplo uma boa manutenção). Se um software apresenta conformidade com os requisitos explícitos e falha em atender aos requisitos implícitos , então a qualidade do software é suspeita.

Os fatores da qualidade de um software pode ser medida através de uma série de fatores que variam de acordo com as aplicações e com os clientes. São chamados fatores de qualidade de software. A categorização de uma boa classificação é mostrada na Figura 5.1. Os fatores de qualidade são classificados segundo os aspectos de alteração, migração de ambientes e caracterização operacional.

Page 70: Análise e Projeto Orientado a Objeto Usando UML

Figura 5.1 – Categorização dos fatores de qualidade [ARA97]

Cada fator apresentado acima pode ser explicado como:

• Revisão do Produto, compostos pelos seguintes fatores:

• Manutenibilidade – corrigir defeitos;

• Flexibilidade – alterar software

• Testabilidade – testar software;

• Operação do Produto, compostos pelos seguintes fatores:

• Correção – a função do produto atenda o cliente;

• Confiabilidade – realizar funções esperadas sempre, o tempo todo;

• Eficiência – executa a melhor maneira do hardware, onde está instalado;

• Integridade – indica a extensão que uma pessoa pode acessar o sistema;

• Usabilidade – esforço para aprender, operar, preparar entrada e entender e interpretar a saída produzida pelo o produto;

• Transição de Produto, compostos pelos seguintes fatores:

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1054" type="#_x0000_t75" style='width:337.5pt;height:253.5pt' fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image061.wmz" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1110" type="#_x0000_t202" style='position:absolute;left:0;text-align:left;margin-left:16.2pt; margin-top:2.25pt;width:352.6pt;height:261.25pt;z-index:21; mso-position-horizontal-relative:text;mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1110'/> </v:shape><![endif]-->
Page 71: Análise e Projeto Orientado a Objeto Usando UML

• Portabilidade – esforço para transferir o programa de um hardware para outro;

• Reusabilidade – parte do programa que pode ser utilizada em outra aplicação;

• Interoperabilidade – esforço necessário para juntar um sistema a outro.

Preocupar com a qualidade de software, existem algumas razões . Ninguém gosta de software com bugs. Bugs podem causar prejuízos que variam desde a mera necessidade de reiniciar o sistema operacional até à perda de satélites de milhões de dólares. Os problemas de qualidade tendem a aumentar com o uso maciço das tecnologias de processamento distribuído, onde é muito mais difícil prever o que pode dar errado.

O aumento de qualidade sempre é acompanhado por aumento de produtividade e redução de custos na forma de menos retrabalho e menor índice de refugo. Isto sem falar na maior satisfação do cliente, que pode ser refletida muitas vezes em maior participação no mercado. Os esforços em melhoria da qualidade não podem ter seu foco no produto apenas (fazer software melhor), mas principalmente no processo (fazer melhor o software).

A Tabela 5.1 mostra um mapeamento dos requisitos de qualidade na Orientação a Objeto.

Quando se tem uma qualificação em todo o processo de software, o software sofre menos manutenção, e as manutenções necessárias são feitas muito mais rapidamente. Isto libera recursos para o desenvolvimento de software novo, acelerando o desenvolvimento; mais o software pode ser reutilizado; e o processo de desenvolvimento pode ser continuamente melhorado para aumentar sua eficiência. Especificamente, são fundamentais o compromisso da alta administração (de informática e usuária) e dos desenvolvedores, incluindo aí seus gerentes imediatos.

Tabela 5-1 Mapeamento dos Requisitos de qualidade na OO[ARA.97]

REQUISITOS DE QUALIDADE

DESCRIÇÃO RECURSOS DA TECNOLOGIA ORIENTADA A

OBJETO

Correção/Verificação Está associado com a operação correta do software

Obtido pela certificação dos objetos

Robusto O sistema deve ser robusto para situações de execuções.

Modularidade, encapsulamento e abstração

Extensível O sistema deve suportar alterações ou evoluções, de

Modularidade, encapsulamento e

Page 72: Análise e Projeto Orientado a Objeto Usando UML

acordo com as necessidade do negócio

abstração

Reusável Reusabilidade de códigos e de projetos ajudam na qualidade e produtividade

Modularidade, encapsulamento e abstração

Integridade Software deve manter integridade contra acessos não autorizados. Não permite alterações acidentais.

Modularidade, encapsulamento e abstração

Compatível Compatibilidade com os sistemas existentes

Modularidade, encapsulamento e abstração

Eficiente Eficiência no desempenho, administração do projeto, depuração de códigos, entres outros.

Modularidade, encapsulamento e abstração

Portátil Portabilidade do sistema entre ambientes e linguagem é importante para o software.

Abstração

Facilidade de uso Facilidade de uso dos recursos do ambiente de desenvolvimento como CASE e os compiladores

Abstração

Manutenção Estatísticas mostra o custo de 70% está mapeado para as manutenções.

Abstração

5.2 – Produtividade

A produtividade na obtenção de um software corresponde à produção de um software no menor tempo possível, pois utiliza recursos aceitáveis desde do desenvolvimento até a colocação do software em produção, onde o software passa por processo de manutenção. Uma boa produtividade está na reutilização de software, onde objetos prontos e testados são reutilizados na produção de outros softwares. Quanto maior a reutilização maior a produtividade, pois quanto maior o número de objetos prontos, menor o tempo para a preparação do sistema.

Page 73: Análise e Projeto Orientado a Objeto Usando UML

Uma outra estratégia para uma boa produtividade está na conversação de paradigmas procedural para a orientação a objetos. É um esforço investido na análise, e as características de encapsulamento promovidas com o uso das técnicas Orientadas a Objetos , provocam um ganho muito grande na fase de implementação, através da redução dos tempos de testes.

5.3 – Métricas de Software

Métricas de software referem-se a uma ampla variedade de medidas de software de computador e alguns casos são utilizados no desenvolvimento de Orientação a Objeto. A medição de um software capacita os profissionais da área de informática a qualificar, administrar e planejar mais os sistemas. Essas métricas oferecem mais compreensão sobre o processo de engenharia de software e do produto que produz, auxiliam também na requisição dos recursos.

5.4 - Categorização das Métricas

No mundo das medições podem ser divididas em duas categorias na qual podemos citar: Medidas diretas – tudo aquilo que se pode fazer convenções específicas para a medição e que sejam estabelecidas antecipadamente, tendo como exemplo o comprimento de um parafuso, e as Medidas indiretas – coisas difíceis de ser avaliadas como qualidade e eficiência e tem como exemplo a qualidade do parafuso.

Na engenharia de software pode-se considerar como medidas diretas, os custos, esforços, linhas de código, velocidade da execução, tamanho da memória, e os defeitos que são visto ao longo espaço de tempo. Já as medidas indiretas, são definidas como funcionalidade, complexidade, confiabilidade, manutenção.

Conforme [PRE95], que o domínio das métricas podem ser divididas em mais categorias como: métricas de Produtividade que concentram-se na saída do processo de engenharia de software, métricas de Qualidade que oferecem uma indicação de quanto o software adequa-se às exigências implícitas e explícitas do cliente, métricas técnicas que concentram-se na característica do software e não no processo no qual o software doi desenvolvido, métricas orientadas ao tamanho, são usadas para compilar as medições diretas da saída e da qualidade da engenharia de software, métricas orientadas a função oferecem medidas indiretas e métricas orientadas à pessoas compilam informações sobre a maneira como as pessoas desenvolvem software de computador e percepções humanas sobre a efetividade das ferramentas e métodos. Como mostra a Figura 5.2.

Page 74: Análise e Projeto Orientado a Objeto Usando UML

Figura 5.2 – Métricas de Software [PRE95]

5.4.1 - Métricas Orientadas ao Tamanho

Métricas de software orientadas ao tamanho são medidas diretas do software e do processo por meio do qual ele é desenvolvido. Se uma organização de software mantiver registros simples, uma tabela de dados orientada ao tamanho poderá ser criada como mostra a Figura 5.3. A tabela relaciona cada projeto de desenvolvimento de software que foi incluído no decorrer dos últimos anos aos correspondentes dados orientados ao tamanho deste projeto. A partir dos dados brutos contidos na tabela, um conjunto de métricas de qualidade e de produtividade orientadas ao tamanho pode ser desenvolvido para cada projeto. Médias podem ser computadas levando-se em consideração todos os projetos.

As médias podem serem computadas levando em conta todos os projetos da seguinte forma:

Produtividade = KLOC/pessoa-mês

Qualidade = defeitos/KLOC

Outras métricas também podem ser computadas como:

, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_i1055" type="#_x0000_t75" style='width:294.75pt;height:243.75pt' o:ole="" fillcolor="window"> <v:imagedata src="./mono1522000_arquivos/image063.png" o:title=""/> </v:shape><![endif]-->
, 23/12/05
<!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1055" DrawAspect="Content" ObjectID="_1065451792"> </o:OLEObject> </xml><![endif]-->
, 23/12/05
<!--[if gte vml 1]><v:shape id="_x0000_s1111" type="#_x0000_t202" style='position:absolute;left:0;text-align:left;margin-left:52.2pt; margin-top:2.85pt;width:309.65pt;height:252pt;z-index:22; mso-position-horizontal-relative:text;mso-position-vertical-relative:text' o:allowincell="f" stroked="f"> <v:textbox style='mso-next-textbox:#_x0000_s1111'/> </v:shape><![endif]-->
Page 75: Análise e Projeto Orientado a Objeto Usando UML

Custo = $/LOC

Documentação = páginas de documentação/KLOC

Projeto Esforço $ KLOC Pags. Docum. Erros Pessoas

aaa-01

ccc-04

fff-03

.

.

.

24

62

43

.

.

.

168

440

314

.

.

.

12.1

27.2

20.2

.

.

.

365

1224

1050

.

.

.

29

89

64

3

5

6

Figura 5.3 – Métricas Orientadas ao tamanho [PRE95]

Conforme [Pre95] as métricas orientadas ao tamanho provocam controvérsias e não são universalmente aceitas como a melhor maneira de se medir o processo de desenvolvimento de software. A maior parte da controvérsia gira em torno do uso das linhas de código (LOC – linhas de codigo) como uma medida-chave. Por outro lado, os opositores afirmam que as medidas LOC são dependentes da linguagem de programação utilizada na codificação do projeto, que elas penalizam programas bem projetados, porém mais curtos, que elas não podem acomodar facilmente linguagens não-procedurais e que seu uso em estimativas requer um nível de detalhes que pode ser difícil de conseguir.

5.2.2 – Métricas Orientadas à função

São medidas indiretas do software e do processo por meio do qual foi desenvolvido. Ao invés de contar as linhas de código, a métrica orientadas a função, concentra-se na funcionalidade do programa. Foram proposta pela primeira vez por Albrecht, que sugeriu uma abordagem à medição da produtividade chamada método do ponto-por-função.

Um dos princípios da análise de pontos-por-função focaliza-se na perspectiva de como os usuários "enxergam" os resultados que um sistema produz. A análise considera as várias formas com que os usuários interagem com o sistema, com os seguintes objetivos:

• Fornecer medidas consistentes;

• Medir funcionalidades que o usuário solicita ou recebe;

Page 76: Análise e Projeto Orientado a Objeto Usando UML

• Independência da tecnologia;

• Método simples.

As métricas orientadas à função apresentam vários benefícios, dentre eles podemos citar o seguintes:

• Uma ferramenta para dimensionar aplicações;

• Um veículo para quantificar custo, esforço e tempo;

• Um veículo para calcular índices de produtividade e qualidade;

• Um fator de normalização para comparar software.

Tal métrica parece ser útil e funcional para o desenvolvimento tradicional, mas apresenta algumas falhas com o modelo de desenvolvimento em orientação a objeto (OO), pois alguns atributos do design invalidam o cálculo de alguns pontos-por-função. As características fundamentais de orientação a objeto têm efeito de reduzir a validade da contagem de funções para a avaliação de esforço e recursos necessários para a execução de um projeto.

A métrica de pontos por função foi originalmente projetada para sistemas de informação comerciais. Para acomodar estas aplicações, a dimensão dos dados foi enfatizada para a exclusão de dimensões funcionais e de controle. Por esta razão, a medida de pontos por função era adequada para muitos sistemas de engenharia. Um número de extensões para a medida básica de pontos por função tem sido propostas para remediar esta situação.

5.5 - Métricas de Qualidade do Software

A qualidade de um software pode ser medida ao longo do processo de desenvolvimento até a entrega ao cliente e aos usuários. Métricas usadas antes que o software esteje prontos para serem entregues oferecem uma base quantitativa para se tornar decisões que se referem aos testes e projeto. Métricas de qualidade incluem a complexidade do programa, modularidade efetiva, e além disso o tamanho do programa.

O uso da métrica de qualidade é descrito como o componente-chave da garantia estatística da qualidade, ou seja, ao acrescentar informações adicionais sobre os tipos de defeitos descobertos e suas causas, pode oferecer um mecanismo para ações de planejamento para corrigir os elementos do processo de software que introduzem defeitos.

Page 77: Análise e Projeto Orientado a Objeto Usando UML

5.6 – Métricas Orientadas a Objeto e a UML

A tecnologia orientada a objetos utiliza uma variedade de estruturação da abstração na programação, no projeto e na análise. Vale ressaltar três importantes macanismos dessas abstrações: um deles é a abstração de dados e funções, outro é a herança, e por ultimo o mecanismo de mensagem para controle e comunicação entre objetos.

Existem várias propostas para métricas OO que levam em consideração as características básicas e interações do sistema como: número de classes, número de cases, número de métodos, médias de métodos, médias de métodos por classe, linhas de código por método, profundidade máxima da hierarquia de classes, a relação existente entre métodos públicos e privados.

Devido ao benefícios que a UML oferece que é comunicar com os requisitos de software, caracterizar a arquitetura lógica e física de um sistema, focalizar na arquitetura em vez da implementação e direcionar programadores, aumentando a produtividade e diminuindo risco é que faz com que a UML dá uma passo maior para a qualidade de um software. Pode também ajudar o programador na tarefa de controle de interfaces, que é um dos pontos importantes para construir um software de qualidade, baixo custo de manutenção.

5.6 – Escolha das Métricas

O sucesso de um programa de medição depende de sua aplicação. A maioria das falhas ocorridas estão na dificuldade de realização prática das métricas e seu efetivo uso. Isso ocorre de um planejamento deficiente das métricas.

Para a escolha de uma métrica existe um mecanismo simples e eficaz e que foi proposto por Basili e Rumbaugh, chamada GQM (Goals, Questions, Metric – Metas ,Questões e Métricas),[ARA97] onde as métricas são planejadas, projetadas e implementadas a partir de um foco adequado.

5.4.1 – Métricas de planejamento e controle

Page 78: Análise e Projeto Orientado a Objeto Usando UML

As métricas da fase de planejamento e controle devem estabelecer as seguintes medidas:

• para apoiar os requisitos alocados ao sistema, e as mudanças que levam ao replanejamento;

• indicadores de atividades de planejamento como quantidade de atividades, prazos , complexidades, número de pontos de avaliação de resultados

5.4.2 – Métricas de análise

As métricas da fase da análise devem estabelecer as seguintes medidas:

• complexidade de partições – através da quantidade de objetos de negócios envolvidos;

• de complexidade de objetos, através da indicação de ponto de função;

• de quantidade de produtos elaborados durante a fase de análise e também a quantidade de avaliações técnicas realizadas sobre estes produto.

5.4.2 – Métricas de projeto

As métricas da fase de projeto devem estabelecer as seguintes medidas:

• de alocação de processamento entre os elementos de hardware, considerando estrutura do cliente-servidor;

• de quantidade totais de componentes especificados;

• do grau de reutilização, ou seja quantidade de componentes reutilizados em relação aos componentes total;

• de quantidade de atividades de validação e testes planejados e realizados sobre os componentes;

• de tempos planejados e realizados.

5.4.3 – Métricas de implementação

Page 79: Análise e Projeto Orientado a Objeto Usando UML

As métricas da fase de implementação devem estabelecer as seguintes medidas:

• de quantidade totais de componentes implementados;

• de quantidade de atividades de validação e testes realizados e registrados sobre os componentes;

• de revisões de técnicas formais relacionadas com padrões e normas.

5.4.4 – Métricas de testes

As métricas da fase de testes devem estabelecer as seguintes medidas:

• quantidade de classe de testes executadas para desempenho, volume, confiabilidade e integridade de processos de negócios;

• de revisões formais relacionadas com especificação de requisitos alocados ao projeto.

5.4 –Testes de um Software

A atividade de teste de um software é um elemento critico da garantia da qualidade software e representa última revisão de especificação, projeto e codificação.

O destaque crescente do software como elemento de sistema e os custos envolvidos em falhas de software, são forças, para uma ativodade de teste mais cautelosa e mas planejada, pois uma organização pode gastar uma porcentagem significativa em teste no final do projeto.

São estabelecidas uma série de regras que podem servir como objetivos de testes:[PRE95]

1. Atividade de teste é o processo de executar um programa com a intenção de descobrir um erro.

2. Um bom caso de teste é aquele que tem uma elevada probabilidade de revelar um erro ainda não

descoberto.

3. Um teste bem sucedido é aquele que revela um erro ainda não descoberto.

Os objetivos mostrado acima revela que um teste bem sucedido é aquele que não encontra nenhum

Page 80: Análise e Projeto Orientado a Objeto Usando UML

erro. Pois se a atividade de teste for conduzida com sucesso, ela descobrirá o erro no software

5.5 – Conclusão

Conclui-se que para ter qualidades e produtividade de software é necessário utilizar algumas

medidas e fazendo alguns testes .As métricas são utilizadas para que se tenha um software de maior

qualidade e os testes são os responsáveis por grande parte do esforço técnico no processo de

desenvolvimento de um software. Um processo de desenvolvimento, é preciso medir custo, produtividade

e qualidade não só do produto final mas do processo com um todo. E a UML, juntamente com as métricas

faz com que os softwares tenha produtividade maior e uma qualidade satisfatória no seu estado final.

Page 81: Análise e Projeto Orientado a Objeto Usando UML

6 - Conclusão

Atualmente, verifica-se que as empresas, necessitam cada vez mais de rapidez e agilidade e que a Orientação a Objeto visa estimular essa necessidade, através dos conceito de classes de objetos, que contribui fortemente para a estabilidade das estruturas de software, tanto dos dados - atributos, quanto dos procedimentos - métodos. Além disso, promove maior flexibilidade e conseqüente facilidade para realizar modificações evolutivas destas estruturas. Com isso o processo de trabalho torna-se muito mais ágil e rápido, pois a construção do software começa logo após o início da análise. Que já é uma vantagem muito evolutiva sobre a Análise e Projeto Estruturados onde o processo de desenvolvimento é do modo cascata, em que as fases de análise, projeto e codificação são todas separadas.

A UML trará uma estabilidade muito grande aos desenvolvedores em orientação a objeto, pois a organização da modelagem em visão e a divisão de diagramas especificando características estáticas e dinâmicas do sistema, torna-se mais fácil de ser utilizada e fará com que qualquer tipo de comportamento seja visualizado em diagramas. Facilitará as grande empresas de desenvolvimento de software, devido a maior comunicação e aproveitamento dos modelos desenvolvidos pelos seus vários analistas. Tendo assim software de maior qualidades e uma excelente produtividade devido aos recursos oferecidos pela UML.

Sabe-se também que o mundo vem exigindo mais do mercado e que os clientes estão cada vez mais exigente, levando as empresas a reverem seus conceitos de qualidade, custo e produtividade, fazendo com que tenha suas criatividade inovadas para se possa sobressair no mercado de concorrência E o orientados a objetos juntamente com a UML terá significativa importância para que as empresas se mantenham competitivas no mundo globalizado, fornecendo sistemas flexíveis que suportem seus negócios com qualidade e capacidade de rápida adequação frente às mudanças impostas pelo mercado.

Hoje, orientação a objetos é sinônimo de um paraíso prometido, e o caminho sendo descoberto. Com isso, compreendê-la está sendo um desafio pois quando este caminho estiver totalmente disponível, só conseguirão percorrê-lo aqueles que possuírem uma correta compreensão desta tecnologia.

Page 82: Análise e Projeto Orientado a Objeto Usando UML
Page 83: Análise e Projeto Orientado a Objeto Usando UML

7 - Referências Bibliográficas

[ARA97] ARAKAKI, Reginaldo, Metodologia Para Avaliação de Qualidade e Produtividade em Processos de Desenvolvimento de Software Orientado a Objetos. São Paulo: Universidade de São Paulo, Escola Politécnica, 1997, 267p. (Tese Doutorado).

[BAR97] BARROS, Pablo Fernando do Rêgo, UML Linguagem de Modelagem Unificada. Aracaju: Universidade Tiradentes, Centro de Ciências Formais e Tecnológicas, 1998, 74p. (Tese,Mestrado).

[FUR98] FURLAN, Davi J., Modelagem de Objetos através da UML, MAKRON Books, 1998, 329p.

[KHO95] KHOSHAFIN, Cetrag, Banco de Dados Orientados a Objetos. Tradução:TruteInformática. Rio de Janeiro: InfoBook,1994.

[MAR94] MARTIN, James, Princípios de análise e projeto baseados em Objetos. Tradução Cristina Bazán. Rio de Janeiro: Campus,1994.486p.

[PRE95] PRESSMAN, Roger S., Engenharia de Software. Tradução de José Carlos Barbosa dos Santos. São Paulo: Makron Books,1995. 1055p.

[WIN93] WINBLAD, Ann L.,EDWARDS, Samuel D.,KING, David R., Software Orientado ao Objeto. Tradução de Denise de Souza Boccia. São Paulo: Makron Books,1993.313p.

[YOU92] COAD, Peter, YOURDON, Edward. Análise baseada em Objetos. 2Ed. Rio de Janeiro: Campus, 1992. 215p.