Post on 21-Oct-2018
O problema da pedra
O cliente nos dá a seguinte missão:
“Traga-me uma pedra”
Quando você entrega a pedra...
...o cliente diz:
“Sim, mas..., na verdade..., o
que eu queria era uma
pequena pedra azul”. Engenharia de Software prof.rafaella.matos@gmail.com
O problema da pedra
Você traz a pequena pedra azul
...o cliente diz:
“Sim, mas..., na verdade...,
eu realmente queria uma
pequena pedra esférica e
azul”.
Engenharia de Software prof.rafaella.matos@gmail.com
O problema da pedra
Quando você lhe entrega uma pequena pedra
esférica e azul, ...
...o cliente diz:
“Sim, mas..., na verdade..., o
que eu realmente queria era
uma pequena pedra
esférica de mármore azul”.
Engenharia de Software prof.rafaella.matos@gmail.com
O problema da pedra
Quando você lhe entrega uma pequena pedra
esférica de mármore azul, ...
...o cliente diz:
“Era isso que eu queria.”
Engenharia de Software prof.rafaella.matos@gmail.com
O que aconteceu?
Talvez o cliente mudou o desejo sobre o que queria
Porém ele está convencido de que expressou seus
desejos claramente
Mas na verdade,
Foi o desenvolvedor que nao entendeu
Engenharia de Software prof.rafaella.matos@gmail.com
O que significa analisar?
Separar um todo (objeto) em seus elementos ou
partes componentes
Trabalho de análise:
Desenvolver estudos que geralmente partem de
problemas complexos, na forma de sistemas, e que
são melhor compreendidos quando são separados
em partes menores
Engenharia de Software prof.rafaella.matos@gmail.com
Objeto Algo disinguível
Contém atributos (ou propriedades)
Possui um comportamento
Possuem identidade São diferentes, mesmo que os atributos sejam idênticos
Exemplos: O parágrafo de um documento
A janela em um computador
O aluno José
O carro do João
...
Engenharia de Software prof.rafaella.matos@gmail.com
Objeto Vamos considerar uma casa como
nosso “objeto” de estudo
Analisando este objeto, a casa, podemos deduzir
que a mesma possui algumas características que
pertencem a ela própria. Por exemplo, uma casa possui
Um número
Um endereço
Tamanho
Cor
...
Engenharia de Software prof.rafaella.matos@gmail.com
Atributos
Atributos São os elementos que caracterizam o objeto
Exemplo: Cor é um atributo para Carro
Estado civil é um atributo para Funcionário
Quantidade é um atributo para Livros
Atributos podem ter valores: Prata é um valor para Cor
Casado é um valor para Estado civil
5 é um valor para Quantidade
Engenharia de Software prof.rafaella.matos@gmail.com
Atributos A casa do nosso exemplo poderia ser representada
pelos seguintes atributos:
Engenharia de Software prof.rafaella.matos@gmail.com
Casa
Endereço: Av. Guararapes
Número: 200
Cor: Branco
Tamanho: 120 m²
Qtd de quartos: 3
Podemos alterar esses atributos?
Métodos Operações que visam
Introduzir (setters)
Recuperar (getters)
Modificar
Exemplos: Pintar é um método que visa mudar o atributo Cor
do objeto carro
getEstadoCivil é um método que recupera o valor do atributo Estado civil
Vender é um método que altera o atributo Quantidade
Valores de atributos
Engenharia de Software prof.rafaella.matos@gmail.com
Métodos
Voltando ao nosso objeto de estudo, pode-se
enumerar alguns métodos (ações):
Engenharia de Software prof.rafaella.matos@gmail.com
• Pintar
• Construir
• Derrubar
Exercício 1 Para atender as necessidades de informação de uma
biblioteca universitária foi proposto um sistema que deve
atender as seguintes características:
O cadastro dos usuários da biblioteca com endereço completo. Os
usuários podem ser classificados em 3 grupos: Professores, Alunos e
Funcionários.
O cadastro das obras da biblioteca, que podem ser classificadas em:
Livros, periódicos, revistas, monografias, etc.
A língua em que se encontra o exemplar da obra
Os autores da obra
As editoras dos exemplares com o ano de edição de cada exemplar
Identifique os possíveis objetos com seus respectivos atributos e
métodos
Classe Agrupamento de objetos com:
A mesma estrutura de dados (definida pelos atributos ou propriedades)
O mesmo comportamento
Abstração que descreve uma atividade importante para uma aplicação
Exemplos:
Parágrafo
Janela
Aluno
Carro
...
Engenharia de Software prof.rafaella.matos@gmail.com
Exemplo de uma classe
Conta bancária
Composta por (atributos)
número
nome do Cliente
saldo
limite
O que fazemos em uma conta (métodos)
sacar um valor x
depositar um valor x
imprimir o nome do titular da conta
transferir x para a conta y
Engenharia de Software prof.rafaella.matos@gmail.com
Classe
Quais classes poderiam conter o objeto Casa do
nosso exemplo?
Engenharia de Software prof.rafaella.matos@gmail.com
Condomínio de casas
Classe
Vamos tomar outro objeto como exemplo: Edifício
Engenharia de Software prof.rafaella.matos@gmail.com
As classes Casa e Edifício
possuem características e
métodos comuns
Características Métodos
Endereço Pintar
Número Construir
Cor Derrubar
Tamanho
Orientação a objetos
Muitas definições:
“Pode ser vista como uma abordagem de modelagem e
desenvolvimento que facilita a construção de sistemas
complexos a partir de componentes individuais.”
“O desenvolvimento orientado a objetos é a técnica de
construção de software na forma de uma coleção estruturada
de implementações de tipos abstratos de dados.”
“A orientação a objetos é uma forma de organizar o software
como uma coleção de objetos discretos que incorporam
estrutura de dados e comportamento.”
Engenharia de Software
Orientação a objetos
Se caracteriza por:
Abstração
Encapsulamento
Herança
Polimorofismo
Engenharia de Software prof.rafaella.matos@gmail.com
Orientação a objetos - Abstração
Enfoque dos aspectos mais importantes de um objeto
Visão externa
O que ele faz
Ignora as características internas
Como deve ser implementado
Engenharia de Software prof.rafaella.matos@gmail.com
Orientação a objetos - Encapsulamento
Empacotamento:
De dados (atributos)
De operações sobre estes dados (métodos)
Engenharia de Software prof.rafaella.matos@gmail.com
Orientação a objetos - Herança
Compartilhamento de atributos e operações entre as
classes numa relação hierárquica
Permite que uma classe seja gerada a partir de outra
já existente
Exemplo:
Classe Automóvel herda da classe Veículo algumas
propriedades e operações
Vantagem:
Redução de trabalho
Engenharia de Software prof.rafaella.matos@gmail.com
Orientação a objetos - Herança
Uma classe pode ser definida de uma forma
abrangente e posteriormente refinada em subclasses
Cada subclasse herda todas as propriedades e
operações de sua superclasse (que não precisam ser
repetidas) adicionando apenas as suas específicas
Engenharia de Software prof.rafaella.matos@gmail.com
Orientação a objetos - Herança
Tipos de herança:
Herança simples
Uma subclasse tem somente uma superclasse
Herança múltipla
Uma subclasse herda simultaneamente de várias superclasses
Engenharia de Software prof.rafaella.matos@gmail.com
Orientação a objetos - Polimorfismo
Uma mesma operação pode se comportar de forma
diferente em classes diferentes
Exemplo:
Operação calcular o perímetro
Diferente para as instâncias de classe círculo e polígono
Operação mover
Diferente para janela de computador e peça de xadrez
Engenharia de Software prof.rafaella.matos@gmail.com
Desenvolvimento orientado a objetos
Diz respeito aos procedimentos de concepção de
sistemas a partir dos conceitos básicos apresentados
Corresponde as principais fases do ciclo de vida dos
softwares:
Análise
Projeto
Implementação
Engenharia de Software prof.rafaella.matos@gmail.com
Desenvolvimento orientado a objetos
Técnicas para desenvolvimento OO
OMT – Object Modelling Technique
Técnica de Booch
Técnica de Coad/Yourdon
Técnica de Shlaer/Mellor
Técnica OOSE (Jacobson)
Técnica Fusão
Técnica UML
Engenharia de Software prof.rafaella.matos@gmail.com
Object Modelling Technique - OMT Dividida em 4 fases:
Análise
Projeto de sistema
Projeto de objetos
Implementação
Características
Separação clara entre análise e projeto
Inclusão de todos os conceitos de orientação a objetos
Alguns conceitos específicos do método
Fase de análise
Baseada em 3 diagramas relacionados entre si que representam os modelos de objetos, dinâmico e funcional
Engenharia de Software prof.rafaella.matos@gmail.com
Técnica de Booch
Dividida em 3 fases:
Análise de requisitos
Análise de domínios
Projeto (com maior ênfase)
Apresenta diagramas:
De classes
De transição de estados
De objetos
Temporais
De módulos
De processos
Engenharia de Software prof.rafaella.matos@gmail.com
Técnica Coad/Yourdon
Utiliza um modelo único para todas as fases
Torna o desenvolvimento mais simples e
compreensível
Engenharia de Software prof.rafaella.matos@gmail.com
Técnica Shlaer/Meelor
Fornece um conjunto integrado de modelos de
análise que depois são traduzidos (Recursive
Design) durante o projeto
Engenharia de Software prof.rafaella.matos@gmail.com
Técnica OOSE (Jacobson)
Centrada em casos de uso (Use Cases)
Permite aprofundar o entendimento de como o
sistema deve ser realmente utilizado
Engenharia de Software prof.rafaella.matos@gmail.com
Técnica Fusão
Integração das técnicas OMT e Booch
Dois modelos de objeto e interface visam
representar os aspecto estáticos e dinâmicos do
problema
Engenharia de Software prof.rafaella.matos@gmail.com
Técnica UML
Unified Modelling Language
Unificação dos métodos OMT, Booch e OOSE
Engenharia de Software prof.rafaella.matos@gmail.com
Modelo
Abstração que tem como propósito:
Entender um problema antes de solucioná-lo
Com modelos é possível:
Simular e testar sistemas antes de construí-los
Facilitar a comunicação com os usuários e os
outros membros da equipe de desenvolvimento
Visualizar e reduzir a complexidade dos problemas
a tratar
Engenharia de Software prof.rafaella.matos@gmail.com
Linguagem de Modelagem Unificada
- UML
Linguagem gráfica
Utilizada para
Visualizar
Especificar
Construir
Documentar
Artefatos de um sistema
computacional orientado
a objetos
Engenharia de Software prof.rafaella.matos@gmail.com
UML
De acordo com Ericson e Siau (2007) 5
diagramas são os mais utilizados por usuários de
UML
Diagramas de atividade
Diagramas de caso de uso
Diagramas de sequência
Diagramas de classe
Diagramas de estado
Engenharia de Software prof.rafaella.matos@gmail.com
UML
Modelos gráficos são utilizados principalmente
com 3 finalidades:
Como meio para facilitar discussões sobre um
sistema existente proposto
Como meio para documentação de um sistema
existente
Como descrição detalhada que pode ser utilizada
na geração da implementação do sistema
Engenharia de Software prof.rafaella.matos@gmail.com
Objetivo da análise de sistemas
Engenharia de Software prof.rafaella.matos@gmail.com
Capturar o “O QUE” o sistema construído deverá fazer
Análise de sistemas orientada a objetos visa descobrir: Casos de uso
Classes limítrofes
Classes de controle (atividade)
Classes de entidade
Fornecer colaborações ou interações que permtiam dar o resultado desejado através da execução do caso de uso
Classes limítrofes
Engenharia de Software prof.rafaella.matos@gmail.com
Classes de intercade com o usuário
Interfaces
Janelas
Etc
Fornecem protótipos de telas que deverão ser
continuamente validados pelos usuários
Classes de entidade
Engenharia de Software prof.rafaella.matos@gmail.com
Classes de negócio
Implementações diretas dos tipos de negócio
São mapeadas uma a uma em relação aos tipos
de negócio
Classes de controle
Engenharia de Software prof.rafaella.matos@gmail.com
Responsáveis pelo controle da execução de um
caso de uso
Contém fluxos de controle de programação
como
If, then, else, while...
Modelando casos de uso
Engenharia de Software prof.rafaella.matos@gmail.com
Casos de uso
Não são tarefas isoladas
Geralmente existem relacionamentos entre casos de uso
Estereótipos de associação entre casos de uso fornecidos pela UML:
Include – a execução de um caso de uso implica a execução de outro caso de uso
Extend– a execução de um caso de uso poderá ou não ativar a execução de outro caso de uso
Generalization – um caso de uso poderá ser uma generalização ou especialização de outro caso de uso
Estereótipos de associação entre
casos de uso
Engenharia de Software prof.rafaella.matos@gmail.com
Caso de uso A inclui caso de uso B, é extendido
pelo caso de uso C e especializado pelo caso de
uso D
Exercício 2
Engenharia de Software prof.rafaella.matos@gmail.com
Construa um modelo de caso de uso para a seguinte
situação fictícia:
“Estamos criando um serviço de entregas. Nossos
clientes podem nos requisitar a entrega de volumes.
Alguns volumes são considerados de maior valor por
nossos clientes e, portanto, eles gostariam de ter tais
volumes segurados durante o transporte. Contratamos
então uma companhia de seguros para segurar
volumes de valor.”
Diagrama de sequência
Engenharia de Software prof.rafaella.matos@gmail.com
Diagramas de sequência são construídos para
cada caso de uso
Um caso de uso pode possuir vários fluxos de
execução
Cada diagrama de sequência deverá especificar
apenas um fluxo
Diagrama de sequência
Engenharia de Software prof.rafaella.matos@gmail.com
São utilizados para determinar a sequência de
eventos que ocorrem em um determinado caso
de uso
Baseiam-se nos diagramas de casos de uso e
diagramas de classes
Diagrama de sequência
Engenharia de Software prof.rafaella.matos@gmail.com
Os atores são os mesmos descritos nos diagramas de casos de uso, a diferença é que contém uma linha de vida
Linha de vida representa o tempo que um objeto existiu durante um processo
Mensagens demonstram a ocorrência de eventos, que normalmente forçam a chamada de algum método em algum dos objetos envolvidos no processo