Você está na página 1de 68

Objetivos

• Identificar os problemas comuns do


Desenvolvimento do Software
• Introduzir as Metodologias para
Desenvolvimento de Software
• Apresentar o Paradigma de Objetos e
• Apresentar a UML – Unified Modeling Language.
Problemas Típicos
• Os prazos não são cumpridos,
• Há dificuldade em se estimar preço,
• A funcionalidade esperada não é obtida,
• Há necessidade de manutenções freqüente,
• As correções introduzem mais erros,
• Ocorrências inesperadas durante o uso.
Falha nossa ...
• (1986) Pacientes morrem de overdose de radiação
No East Texas Cancer Center o computador Therac-25
administrou doses fatais em 2 pacientes com câncer por falha
no software de controle.

• (1993) Aeroporto de Denver


Bugs no software do sistema de bagagem atrasaram em
meses a operação do aeroporto, que acabou inaugurado em
1994 com um sistema semi-automático a um custo de US$ 80
milhões.

• (2000) Bug, quem estava com medo ?


O problema é grande
Acompanhando um grupo de
Cerca de 100 Projetos de Software Concluídos
Durante 1 ano com sucesso
16%

Não concluídos Cancelados


Ameaçados 53% 31%

Fonte : Standish Group,1995.


O Desenvolvedor
Superar as Reduzir custo
expectativas dos Aumentar a
clientes Qualidade

Atualização
Tecnológica Posição no mercado
Ferramentas Comercialização
Globalização
Uma tecnologia madura tem ...
• Custos bem definidos,
• Prazos estimados com precisão,
• Intensa padronização,
• Repetibilidade e
• Previsibilidade.

• Ex. Indústria da Construção Civil, exemplo Plano 100.


A tecnologia de software ...
• É uma indústria nova (<50 anos),
• O produto não é muito bem conhecido,
• Os métodos são quase todos artesanais,
• O processo não está bem definido, e
• Os padrões mudam constantemente
Como obter qualidade ?
• Qualidade é fruto de um gerenciamento
adequado do processo.
• É preciso ter um processo!
• Qualidade é fruto de um projeto eficiente.
O Engenheiro ...
• CIVIL
– Cria plantas das construções antes de construir
– O empreiteiro constrói a casa seguindo a planta
• MECÂNICO
– Faz o desenho da peça antes de fabricá-la
– O ferramenteiro fabrica a peça conforme o
desenho
E o Engenheiro de Software ?
Qualidade depende de um projeto
• Um projeto representa simplificadamente o que se está
construindo.
• Cria-se um modelo do que se está projetando.
• A modelagem permite controlar a qualidade.
• Pode-se testar e simular o modelo.
• O modelo permite que o projetista e o construtor
(e o cliente) tenham as mesma visão do problema.

Como é um projeto (planta) de software ?


Como é um modelo de software ?
Engenharia de Software
• Utilizar procedimentos de engenharia para criar
software
• Projetar antes de construir (Desenhar o software,
UML)
• Criar peças separadamente e integrar só no final
(objetos)

• A UML e a Orientação a Objetos permitem


consolidação da Engenharia de Software
Novo Paradigma (Objetos)
• Nova forma de ver um software
• Objetos :
– Dão uma visão completa do problema,
– Padronização e Reutilização (custo e prazo)
– Aumentam a qualidade do sistema
– Construção passa a ser integração
Enfoque tradicional para a
Construção de Sistemas
• Baseia-se na compreensão do sistema
como um conjunto de programas que
executam processos sobre dados.
Programa
Processos

Dados
Novo enfoque – Modelagem por Objetos
• Vê o mundo como uma coletânea de objetos
que interagem entre si, apresentam
características próprias que são representadas
pelos seus atributos (DADOS) e operações
(PROCESSOS).
Classe

Processos

Dados
Enfoques : Tradicional X Novo

Programa Classe
Processos Atributos

Dados
Processos
Qualidade Modelo Objeto
• Objetos indicam maturidade
– Padronização, Re-aproveitamento
– Projetar antes de construir

• Objetos permitem o gerenciamento


– Redução do re-trabalho
– Custos e Prazos bem definidos
– Construção passa a ser Integração
Reutilização é o pulo do gato!

Criar
Componentes
Componentes Reutilizáveis
(objetos)

Integrar os
Componentes
Conceitos ligados a Objetos
• Classe
• Atributos
• Processos
• Herança
• Polimorfismo
• Encapsulamento (Objetos)
• Mensagem
Classe
• Classe é a representação de um conjunto de
coisas reais ou abstratas que são
reconhecidas como sendo do mesmo tipo
por compartilhar as mesmas características
de atributos, operações, relações e
semântica.
Representação Gráfica de Classe

Nome da Classe PESSOA

+Nome:Char
+Atributos:Tipo=Valor Inicial +DataNascimento:long

MostrarNome():Char
+Processos(Parâmetro):Tipo Retornado CalcularIdade():int
:
Classe (Tipo)
• Classe é uma descrição de tipo que
relaciona um número de objetos, isto é, um
modelo que define a estrutura e capacidades
de uma instância de objeto.
Exemplo de Classe como tipo ...

VEICULOS RODADEVEICULO
+Modelo:Char +ModeloDaRoda:Char
+Cor:Char +MedidaDoAro:int
+QuantidadeDeRodas:int +MaterialDeFabricação:Char
+Rodas:RODADEVEICULO +Cor:Char
+Ignição()
+MostraModelo()
+Acelerar()
+MostraCor()
+QualModelo()
+MostraMedidaDoAro()
+QualCor()
+QualRoda(Rodas):Char
Atributos
• Atributo é a menor unidade que em si possui
significância própria e inter-relacionada com o
conceito lógico da classe à qual pertence.
• Apresenta um princípio de atomicidade, ou seja,
do armazenamento de um valor simples em célula.

• Um indivíduo possui NOME, SEXO, etc ...


Representando um Atributo
Visibilidade NomeDoAtributo : TipoDeExpressão = ValorInicial
• Visibilidade 
– (+) Visibilidade Pública (valor default)
– (#) Visibilidade Protegida
– (-) Visibilidade Privada
• Nome do Atributo é a identificação do atributo.
• Tipo de Expressão é uma especificação que depende da linguagem
de programação e do tipo de implementação de um atributo.
• Valor inicial é uma expressão que também depende da linguagem
de programação utilizada para o valor inicial do atributo no
momento inicial da criação de um objeto. O valor inicial é
opcional (o sinal de igual também é omitido).
Processos
• É a lógica contida em uma classe para
designar-lhe um comportamento, capaz de
manipular os atributos do objeto.

• Ex.: Cálculo da idade de uma pessoa em


uma classe [indivíduo].
Representando um Processo
Visibilidade NomeDoProcesso (Parâmetro) : ExpressãoDeTipoDeRetorno

• Visibilidade
– (+) Visibilidade Pública (valor default)
– (#) Visibilidade Protegida
– (-) Visibilidade Privada
• Nome da Processo
– É a identificação do Processo.
Representando um Processo
Visibilidade NomeDoProcesso (Parâmetro) : ExpressãoDeTipoDeRetorno

• Parâmetro
– É uma lista de valores separados por vírgula que a
operação irá usar para o processamento.
• Expressão de Tipo de Retorno
– É uma especificação dependente da linguagem de
programação sobre o tipo de implementação do
valor retornado pela operação. Se o tipo de retorno
é omitido a operação não devolve um valor.
Herança
• É a capacidade de um novo objeto tomar
atributos e operações de um objeto
existente, permitindo criar classes
complexas sem repetir código.
• A nova classe simplesmente herda seu nível
base de características de um ante-passado
na hierarquia de classe.
Herança

Automóvel Generalização

Automóvel
Esportivo

Porsche Especificação
Polimorfismo
• Palavra originária do grego “muitas formas“.

• Tais formas se referem aos vários


comportamentos que uma mesma operação
pode assumir.
Polimorfismo

APLICAÇÃO FINANCEIRA

+CalcularSaldo()

RENDA FIXA POUPANÇA FUNDO DE AÇÕES

+CalcularSaldo() +CalcularSaldo() +CalcularSaldo()


Objeto
• Um objeto é uma ocorrência específica
(instância) de uma classe.

Uma pessoa Um Automóvel Um Documento Uma Região


Mensagem
• É o estimulo (Mensagem) ao objeto,
acionando uma determinada operação
fazendo com que o mesmo responda ou
assuma determinado estado.
Mensagem

OBJETO

Produto Final
Pedido Matéria Prima Processo Produtivo

Mensagem Atributos Operações


Resposta
Como obter vantagens do paradigma de objetos ?
•Aprender a pensar em objetos
–Técnica de CRC

•Modelar os problemas com objetos


–CASE, Diagramas da UML

•Projetar a solução com objetos


–Padrões de projeto

•Transformar objetos em componentes


–CASE, geração de código

•Estabelecer uma metodologia de trabalho


–Sugerir um processo de organização
Um novo processo ...
... Centrado no modelo do sistema

Usuário
Análise Projeto
Requisitos OOA OOD
Do
Problema Modelo do
Sistema

Produto Integração RAD Componentes


Final
Evolução Metodológica
Metodologia

Histórico e Diagramas da UML


Metodologias de Objetos Dominantes (1993)
Aplicações técnicas Sistemas de Informação

Shlaer-Mellor
C/C++ Booch

Rumbaugh

Wirfs-Brock
Smalltalk Coad Yourdon
e
4GL Martin-Odel

Unix Windows
Métodos Semelhantes ...
• Métodos
– OOA/AAD (Coad-Yourdon)
– OMT (Rumbaugh)
– OOSE – Jacobson
– Booch
– Shlaer-Mellor
– Martin-Odell

• Critérios
– Conjunto de Diagramas utilizados
– Notação de cada diagrama
OMT - Rumbaugh

Empresa
Nome:Integer
CGC:Integer
Endereco:Integer
Comprar( )
Produzir( ) Produtos
FecharNegocio( ) Codigo:Integer
Descricao:Integer
Preco:Integer
Estoque:Integer
VerificarEstoque( )
Vende Novo( )
Retirar( )
OOA/OOD - Coad-Yourdon

Empresa
Nome:Integer
CGC:Integer
Endereco:Integer
Comprar( )
Produzir( ) Produtos
FecharNegocio( ) Codigo:Integer
Descricao:Integer
Preco:Integer
m Estoque:Integer
1 VerificarEstoque( )
Vende Novo( )
Retirar( )
Booch

Empresa
Nome:Integer
CGC:Integer
Endereco:Integer
Comprar( )
Produzir( ) Produtos
FecharNegocio( ) Codigo:Integer
Descricao:Integer
1 Preco:Integer
Estoque:Integer
VerificarEstoque( )
Vende
1..n Novo( )
Retirar( )
Shlaer-Mellor

Empresa
Nome:Integer
CGC:Integer
Endereco:Integer
Comprar( )
Produzir( ) Produtos
FecharNegocio( ) Codigo:Integer
Descricao:Integer
Preco:Integer
Estoque:Integer
VerificarEstoque( )
Vende Novo( )
Retirar( )
Martin-Odell

Empresa
Nome:Integer
CGC:Integer
Endereco:Integer
Comprar( )
Produzir( ) Produtos
FecharNegocio( ) Codigo:Integer
Descricao:Integer
Preco:Integer
Estoque:Integer
VerificarEstoque( )
Vende Novo( )
Retirar( )
UML – Unified Modeling Language

Empresa
-Nome:Integer
-CGC:Integer
-Endereco:Integer
+Comprar( )
+Produzir( ) Produtos
+FecharNegocio( ) -Codigo:Integer
-Descricao:Integer
1 -Preco:Integer
-Estoque:Integer
+VerificarEstoque( )
Vende +Novo( )
+Retirar( )
Metodologias de Objetos Dominantes (1993)
Aplicações técnicas Sistemas de Informação

Shlaer-Mellor
C/C++ Booch

Rumbaugh

Smalltalk
e
UML Wirfs-Brock
Coad Yourdon
4GL Martin-Odel

Unix Windows
Evolução da UML
Feed Back Público
Set/97 UML 1.1 Industrialização

Jan/97 UML 1.0 Padronização


Parceiros
Jun/96 e Ou/96 UML 0.9 e 0.91 da UML

Out/95 Unified Method 0,8 Unificação

Booch/93 OMT-2
Outros
Métodos Booch/91 OMT-1 OOSE Fragmentação
Histórico da UML
• Tentativa de unificação da notação
• Todos usavam os mesmos conceitos
• Busca do melhor em cada método
• Padronização da representação
• A UML 1.0 é publicada em 13/01/97
http://www.rational.com
• Tradução para o Português 03/11/97
http://usuarios.dialdata.com.br/deboni
UML (The Unified Modeling Language)
• Introduzida em 1997, a Unified Modeling
Language (UML) rapidamente se tornou
aceita pelo mercado de software como
uma linguagem gráfica padrão, destinada
à especificação, à construção, à
visualização e à documentação de
sistemas complexos de software.
UML (The Unified Modeling Language)
• A UML oferece a qualquer pessoa envolvida na
produção, instalação e manutenção de software
uma notação padronizada para expressar o
projeto de um sistema. Abrange elementos
conceituais como processos comerciais e
funções de sistema, além de elementos
concretos, como classes de linguagens de
programação, esquemas de bancos de dados e
componentes de software reutilizáveis.
UML (The Unified Modeling Language)
• A UML é uma linguagem de modelagem
de objetos.

• A UML é a linguagem padrão para


especificar, visualizar, documentar e
construir artefatos de um sistema.
O que compõe a UML
• Um conjunto de diagramas *
• Uma notação padronizada *
• Uma proposta de método **
• Um glossário de termos ***

* É o que vamos conhecer no curso


** Um desejo difícil de ser alcançado
*** Disponível na internet
Diferentes partes de um software

Documentação Comportamento
externo

Arquitetura Estrutura
De De
Implementação Suporte
Comportamento
interno
Comportamento Externo
• Descrição de cenários de integração entre
elementos externos e o sistema :

– Diagramas de Casos de Usos


Sistema
Interação
Caso de Uso

Ator
Estrutura de Suporte
• Estrutura das partes que formam o sistema e
suas relações internas

– Diagramas de Classes
– Diagramas de Pacotes
Diagrama de Classes
Associação
Pedido Cliente
-CodigoDoCliente:Integer
-LimiteDeCredito:Integer
+IncluirPedido( ) 1 1 Classe
+AtenderPedido( )
1
Agregação

Multiplicidade Atributos
Pedido, item
-Quantidade:Integer
+IncuirItemPedido( )
+CalcularTotalPedido( )
Operações
Diagrama de Pacotes
Pessoa

Parte

Indivíduo Organização
Comportamento Dinâmico
• Resposta aos estímulos externos, e a
comunicação entre as partes internas do
sistema e das classes
– Diagramas de Estados (dentro de uma classe)
– Diagramas de Seqüência (entre classes)
– Diagramas de Atividade (entre classes)
– Diagramas de Colaboração (entre classes)
Diagrama de Estados
Pedido enviado Alteração de pedido Cancelamento de
solicitada Pedido solicitado

Registrando Alterando Cancelando


pedido pedido pedido
Pedido para análise Pedido será Pedido
requisitado cancelado cancelado
Pedido para
Analisando pedido aprovação Aprovando
Pedido não pode ser pedido
Atendido no Pedido já pode Pedido será atendido
momento Ser atendido
Pedido
Colocando pedido atendido
Atendendo pedido
Em pendência
Diagrama de Seqüência
Objeto 1:
:Nome da
Nome da Objeto 2 Objeto 3
Classe
Classe
Nome do Ator
Classe do Ator
3. Operação
1. evento (Lista de
2. operação Parâmetros)
Texto 5. Operação
De (Lista de
Script Parâmetros)
4. Operação
(Lista de
Parâmetros)
Diagrama de Atividade
[ condição 1 ]
Atividade 1 Atividade 2

[ condição 2 ]

Atividade 3 Atividade i

[ condição de sincronização ]

Atividade n
Diagrama de Colaboração
3 : operação (lista de parâmetros)

1 : evento

2 : operação
Objeto 1:nome
Objeto 2
Da classe

Nome do Ator: 4 : operação (lista de parâmetros)


Classe do Ator 5 : operação
(lista de parâmetros)
Objeto 3:nome
:nome da classe
Da classe
Fluxo de objeto
Arquitetura de Implementação
• Descrição dos componentes de software que
formam o sistema e a arquitetura de
hardware

– Diagramas de Componentes
– Diagramas de Implantação
Diagrama de Componentes
Programas
Sistema Registro.EXE
Cobrança.EXE De
Cobrança
Bibliotecas

Curso.DLL Pessoa.DLL
Curso Usuário

Classes
Curso.CLS Aluno.CLS Professor.CLS
Diagrama de Implantação
Entrada de
Pedido 1
PC * FAX

Recebimento 1
PC 1 Servidor

Compra Impressora*
PC 1
Documentação
• Notação coerente em todo modelo
• Relacionamento entre diagramas
• Glossário de termos padronizados

Linguagem Unificada de Modelagem


UML – Unified Modeling Language
Relações entre os diagramas
Comportamento
Externo Casos de Uso

Comportamento
Interno

Eventos Colaboração Atividades Estados

Estrutura Classes Pacotes

Implementação Componentes Implantação

Você também pode gostar