análise e projeto de sistemas - downloadportal.sereduc.com · modelando casos de uso...

57
Profª Rafaella Matos Análise e Projeto de Sistemas

Upload: nguyenkhue

Post on 21-Oct-2018

216 views

Category:

Documents


2 download

TRANSCRIPT

Profª Rafaella Matos

Análise e Projeto de Sistemas

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 [email protected]

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 [email protected]

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 [email protected]

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 [email protected]

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 [email protected]

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 [email protected]

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 [email protected]

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 [email protected]

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 [email protected]

Atributos A casa do nosso exemplo poderia ser representada

pelos seguintes atributos:

Engenharia de Software [email protected]

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 [email protected]

Métodos

Voltando ao nosso objeto de estudo, pode-se

enumerar alguns métodos (ações):

Engenharia de Software [email protected]

• 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 [email protected]

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 [email protected]

Classe

Quais classes poderiam conter o objeto Casa do

nosso exemplo?

Engenharia de Software [email protected]

Condomínio de casas

Classe

Vamos tomar outro objeto como exemplo: Edifício

Engenharia de Software [email protected]

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

Engenharia de Software [email protected]

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 [email protected]

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 [email protected]

Orientação a objetos - Encapsulamento

Empacotamento:

De dados (atributos)

De operações sobre estes dados (métodos)

Engenharia de Software [email protected]

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 [email protected]

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 [email protected]

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 [email protected]

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 [email protected]

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 [email protected]

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 [email protected]

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 [email protected]

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 [email protected]

Técnica Coad/Yourdon

Utiliza um modelo único para todas as fases

Torna o desenvolvimento mais simples e

compreensível

Engenharia de Software [email protected]

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 [email protected]

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 [email protected]

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 [email protected]

Técnica UML

Unified Modelling Language

Unificação dos métodos OMT, Booch e OOSE

Engenharia de Software [email protected]

Modelagem orientada a objetos

Engenharia de Software [email protected]

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 [email protected]

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 [email protected]

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 [email protected]

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 [email protected]

Análise de sistemas

Engenharia de Software [email protected]

Objetivo da análise de sistemas

Engenharia de Software [email protected]

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 [email protected]

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 [email protected]

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 [email protected]

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 [email protected]

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 [email protected]

Caso de uso A inclui caso de uso B, é extendido

pelo caso de uso C e especializado pelo caso de

uso D

Caso de uso para sacar dinheiro

Engenharia de Software [email protected]

Exercício 2

Engenharia de Software [email protected]

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.”

Exercício 2 - Solução

Engenharia de Software [email protected]

Diagrama de sequência

Engenharia de Software [email protected]

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 [email protected]

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 [email protected]

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

Diagrama de sequência

Engenharia de Software [email protected]

Diagrama de sequência – Mensagem

de retorno

Engenharia de Software [email protected]

Exercício 3

[email protected]

Construa um modelo de caso de uso para a

seguinte situação: