Ir p/ primeira página Antonio Francisco do Prado prado@dc.ufscar.br Engenharia de Software

Preview:

Citation preview

Ir p/ primeira página

Antonio Francisco do Pradoprado@dc.ufscar.br

Engenharia de Software

Ir p/ primeira página

Sumário

Ir p/ primeira página

Visão Geral – Fatores Críticos

Ir p/ primeira página

Tempo

Ir p/ primeira página

TESTES : Mostram a presença de erros e não sua ausência

10 caminhos14

< 21 vezes

Início

Fim

Testes

Ir p/ primeira página

Bomba !

Analista

Usuário

Comunicação

Ir p/ primeira página

O que era

necessário !

O que foisolicitado pelo

Usuário

O que foi Especificado

pelo desenvolvedor

O que foi Implementado

peloprogramador

Comunicação

Ir p/ primeira página

Onde está o erro ?

Sistema

OUTROS FATORES CRÍTICOS

•Software é um artefato invisível•Falta de consenso

Documentação e outros fatores

Ir p/ primeira página

CONSEQUÊNCIAS

• Software não atende as necessidades do usuário;• Desentendimentos entre usuários e desenvolvedor;• Perda de tempo e dinheiro; e• Problemas judiciários.

Ir p/ primeira página

Solução

Desenvolver com Engenharia de Software que: PREOCUPA-SE: com a qualidade do produto e do processo de desenvolvimento do produto BUSCA: A criação de soluções econômicas para problemas práticos COMPREENDE: Uma Metodologia Integrada para todo o ciclo de vida do software:

Análise e EspecificaçãoProjeto, Implementação e TesteManutenção

Ir p/ primeira página

Visão Geral - PDS

Ir p/ primeira página

Fases do desenvolvimento de

Software Coleta de fatos ou Identificação dos requisitos Modelagem ou Especificação

Análise Projeto

Implementação Teste

Ir p/ primeira página

Coleta de Fatos

Documentos Entrevistas Reuniões Questionários Observação

Ir p/ primeira página

Modelagem: Enfoques

DECOMPOSIÇÃO FUNCIONAL

FLUXO DE DADOS ENTIDADES E

RELACIONAMENTOS ORIENTADO A OBJETOS ORIENTADO A

COMPONENTES

Ir p/ primeira página

Pagar Funcionários

Horistas

Obter Horas

Trabalhadas

Calcular

Pagamento

Emitir Contra

Cheque

CalcularPagtoBruto

Calcular Descontos

Calcular

Pagto

Líquido

Decomposição Funcional

Ir p/ primeira página

ObterHT

Funcionário

Serviço

Imposto

CalcularPagto

EmitirContraCheque

Funcionário

Fluxo de Dados

Ir p/ primeira página

Funcionário

Serviço

Recolhe

Emprega

Imposto

N

1

N

M

HT

Entidades e Relacionamentos

Ir p/ primeira página

DSOO

Sistema

Problemas

Orientado a Objetos

Mundo Real

Ir p/ primeira página

Orientado a Componentes

Ir p/ primeira página

Visual Java

Ir p/ primeira página

Acesso a BD com componentes

Ir p/ primeira página

JOIN

entre

as

Tabel

as

Acesso a BD com componentes

Ir p/ primeira página

Componentes em Delphi

Internet

Ir p/ primeira página

BD

TDataBase

TTable

TDataSource

DatabaseName: DBDEMOS TableName: Animal.db

Alias Name: DBDEMOSName: DBDEMOS

DataSet:

TTable

Acesso a BD em Delphi

Ir p/ primeira página

Edição de Cena no Jazmine

Ir p/ primeira página

Cenas no Jazmine

Ir p/ primeira página

Java Beans em Aplicações

Ir p/ primeira página

Java Beans na WEB

Ir p/ primeira página

Análise

Identi- ficação deRequisitos

Projeto

Implementação

Teste

Versão

123

Modelo Espiral

P D S Atual

Ir p/ primeira página

Sumário

Ir p/ primeira página

Princípios da OO

Abstração Encapsulamento Classe e Objeto Herança Escala(Todo-Parte) Associação Conexão de Mensagem Polimorfismo Genericidade

Ir p/ primeira página

Propriedades

Modelo

Descrição

Custo

Preço Venda

Operações

Faturar

Garantir

Requisitar

Propriedades

Tamanho

Velocidade

Número Instruções

Operações

+ * / - = ÷

Abstração

Ir p/ primeira página

297 + 333 = 630

Requisitar ( Modelo : string )

Requisitar ( HP 97 )

Não interessa !

• Acessar diretamente as Propriedades

• Saber “como” são realizadas as Operações

Encapsulamento

Torna disponível apenas a assinatura ou protótipo dos métodos.

Por exemplo:

Ir p/ primeira página

classe Pessoa

objeto Maria objeto Pedro

Classe e Objeto

Ir p/ primeira página

Pessoa

NomeEndereçoTelefoneIdadeAltura

Registrar()Matricular()Pagar()Estudar()Cadastrar()

ATRIBUTOS

MÉTODOS

Pedro

Maria

Objetos

Ir p/ primeira página

Rosa

Vermelha

PR

Orquídea

Lilas

MG

Flor

Espécie

Cor

Região

Flor

Flor do Limão

Branca

SP

Construtor

Ir p/ primeira página

BC 4580

97

98

XP 3244

Carro

Placa

Ano

Modelo

Carro

MJ 1256

96

97

97

98

Construtor

Ir p/ primeira página

Exercício 01

Ir p/ primeira página

Sistema Hospitalar

Baseado nos princípios da Abstração e Encapsulamento, especificar:

Duas classes de um sistema Hospitalar, com seus principais atributos e métodos, incluindo os construtores.

Ir p/ primeira página

Pessoa

Estudante Professor Funcionário Diretor

Herança

Ir p/ primeira página

Peso BrutoPeso líquidoAlturaMotor

Veículo

ProprietárioPlacaAnoModeloMarca

Herança – Exemplo

Ir p/ primeira página

Pessoa

NomeEndereçoTelefone

Estudante

MatrículaCursoAnoGraduação

Professor

TítuloSalario

Herança - Notação

Ir p/ primeira página

NomeEndereço Idade Telefone

Matrícula

TempoServiço

Cargo

Salário

Funcionário Vendedor

Código

Comissão

RegiãoTrabalho

Funcionário/Vendedor

8

$

Pessoa

Herança Múltipla

Ir p/ primeira página

Exercício 02

Ir p/ primeira página

Sistema Acadêmico

Considerando que o domínio tenha: Pessoa

ProfessorDedicação exclusivaTempo Parcial

AlunoResidente(interno)Externo

Funcionário Monitor é um aluno que tem

atribuições de professor.Especifique o Modelo de classes usando

herança.

Ir p/ primeira página

TODO

PARTES

Agregação

Ir p/ primeira página

Item 1: Relógio Item 2: Computador

PEDIDO

TODO

PARTES

Agregação

Ir p/ primeira página

Pedido Número: 125 Data: 03 Fev 2000 Situação: PendenteItem Descrição Qtd Preço Total01 Cadeira 3 15,00 45,0002 Mesa 2 40,00 80,0003 Relógio 1 50,00 50,0004 Computador 1 900,00 900,00 Total Geral 1.075,00

Pedido

ItemPedido

Agregação por valor

Ir p/ primeira página

Código

Período

Área

Numero MatriculaNomeEndereço

Curso

Aluno

1..N

Agregação por referência

Ir p/ primeira página

Faz

Cliente

Pedido

Associação

Ir p/ primeira página

Biblioteca

BIBLIOTECA

LIVRO

USUÁRIO

NomeEndereço

IdentidadeNomeEndereço

TítuloISBNSituação

EmprestarLivroReceberLivro

Validar UsuárioRegistrar Empréstimo

Validar LivroMudar Situação

EMPRÉSTIMO

0..N

0..N

0..10..1

Associação

Ir p/ primeira página

Estudante Teste

SalaNota

realiza

Link de Atributo

Ir p/ primeira página

Exercício 03

Ir p/ primeira página

Sistema Acadêmico

Especifique o Modelo de Classes, para um domínio Acadêmico, no qual:

Escola tem Departamentos Departamentos têm Professores e

Cursos. Alunos freqüentam cursos Cursos são ministrados aos alunos

pelos professores Cada Departamento é dirigido por

um Professor( membro do departamento)

Ir p/ primeira página

Quando será que você vai aprender minha linguagem ?

Conexão de Mensagem

Ir p/ primeira página

Abram seuslivros na página 36

Qual apróximalição?

Mensagens entre objetos

Ir p/ primeira página

BIBLIOTECA

NomeEndereço

EmprestarLivro

ReceberLivro

USUÁRIO

Identidade

Nome

Endereço

ValidarUsuário

Registrar Empréstimo

LIVRO

Título

ISBNSituação

ValidarLivroMudar Situação

0..N

0..10..1

EMPRÉSTIM

O

0..N

Livro

ValidarUsuário

RegistrarEmpréstimo

ValidarLivro

Mudar Situação

Solicita Livro

Conexão de Mensagem -

Exemplo

empresta ou devolve

Empre

strar

Livr

o

E-mail

Inter-face

Ir p/ primeira página

Conexão de Mensagem – Especificação com Modelo de Seqüência

:Biblioteca : AtorUsuário

Interface Empresta Livro

:Usuário : Livro

Solicita um livro

Solicita Info Usuário

Dados Usuário

EmprestarLivro(DadosLivro)

ValidarUsuário()

Solicita Info Livro

Dados Livro

ValidarLivro()

MudarSituação()

Livro SolicitadoRegistrarEmpréstimo()

Ir p/ primeira página

Orientação a Eventos

Sinalização com estímulo:• Externo:

• Handle( inteiro sem sinal )• Fluxo de Dados ( Dados Pedido )

• Interno (Condição):• Tempo ( Fim de Semana )• Temperatura ( 10 < t < 30 )• Outros

Ir p/ primeira página

TBUTTON :BOTÃO1

TFORM1 :FORM1

program Project1; uses Forms, . . . begin APPLICATION.Initialize; APPLICATION.CreateForm(TForm1, Form1); APPLICATION.Run; end.

TAPPLICATION :APPLICATION

Evento:

OnClick

TFORM1.Botão1Click begin

Edit1.Text := ‘325,00’ ; end

Eventos - Exemplo

Ir p/ primeira página

SistemaOperacional

Objeto1Objeto1

Método1Método1 MétodoMMétodoM. . .

. . . ObjetoN

Método1 . . .

Eventos - Tratamento

ObjetoN

Ir p/ primeira página

95 + 5 = 100

+

Janela ( )

Janela ( 1 x 2 , 2 )

Janela ( 1 x 2 , 2, Azul )

Polimorfismo

1 4 6

5 66 33

4 7 0

11 5 9

5 4 7

2 1 55

Ir p/ primeira página

Redesenhar (NovoCentro:Ponto);

MoverFigura (NovoCentro:Ponto) { . . .

Redesenhar (NovoCentro);

. . . }

Polimorfismo - Exemplo

Ir p/ primeira página

Exercício 04

Ir p/ primeira página

Classe Pessoa

Classe Cliente

Atributos Nome, Endereço, e Telefone

Métodos Construtor com Nome Construtor com Nome, Endereço, e

Telefone Construtor de cópia

Atributos Cpf e Dívida

Métodos Construtor com Cpf Construtor de cópia

Ir p/ primeira página

T,k: Integer

Array

k..k T

Parametrizada (Template)

Genericidade ou Tipos Genéricos

Ir p/ primeira página

DC

Ir p/ primeira página

Modificadores de Visibilidade:Modificadores de Visibilidade:

•PrivatePrivate

•ProtectedProtected

•ImplementedImplemented

•PublicPublic

Carro

Placa : StringDescricao : StringSituacao : Integer

Carro(Placa : String)SelecionarCarrosDisponíveis()EncontrarCarro(Placa : String)

Visão Lógica

Ir p/ primeira página

AluguelAluDataInicio : Date = current date

CarroCarPlaca : StringCarDescricao : StringCarSituacao : Integer = 0CarAno : IntegerCarKm : IntegerCarPrecoKm : CurrencyCarTaxaDiaria : CurrencyCarObservacao : String

ClienteCliCpf : StringCliNome : StringCliEndereco : StringCliTelefone : StringCliDivida : Currency = 0

0..n

0..n

0..n

0..n

Diagrama de Classes

Ir p/ primeira página

Modelo de classes

Ir p/ primeira página

Modelo de Objetos

Ir p/ primeira página

SQL MVCASE generated SQL data.

CREATE TABLE Table_Cliente (cpf VARCHAR(255),nome VARCHAR(255),endereco VARCHAR(255),PRIMARY KEY (cpf ) );CREATE TABLE Table_Pedido (codigoPedido VARCHAR(255),data VARCHAR(255),cpf VARCHAR(255) REFERENCES Table_Cliente(cpf),PRIMARY KEY (codigoPedido ) );CREATE TABLE Table_ItemPedido (quantidade INTEGER,Table_ItemPedido_ID INTEGER,codigoPedido VARCHAR(255) REFERENCES Table_Pedido(codigoPedido),codigoProduto VARCHAR(255) REFERENCES Table_Produto(codigoProduto),PRIMARY KEY (Table_ItemPedido_ID ) );CREATE TABLE Table_Produto (codigoProduto VARCHAR(255),descricao VARCHAR(255),PRIMARY KEY (codigoProduto ) );

Ir p/ primeira página

UML - Visão LógicaUML - Visão Lógica

Navegabilidade

Funcionario

Matricula

Dependente

Nome

Ir p/ primeira página

Direção da Navegabilidade

CREATE TABLE Funcionario( Matricula VARCHAR(40) NOT NULL UNIQUE, PRIMARY KEY(Matricula)) CREATE TABLE Dependente( Nome VARCHAR(30), Matricula VARCHAR(40) NOT NULL UNIQUE, FOREIGN KEY (Matricula) REFERENCES Funcionario, DependenteId NUMBER(5), PRIMARY KEY(DependenteId))

Funcionario

Matricula

Dependente

Nome

Ir p/ primeira página

Relacionamentos de Dependênciae Implementação

ServidorBD

Pedido

Dependência

Implementação

interfacePedido

<<Interface>>

Conecta()

Exibir()

Ir p/ primeira página

Sumário

Ir p/ primeira página

Estudo de caso DISTRIBUIDORA DE PRODUTOS

Uma distribuidora recebe pedidos de produtos. O pedido é aceito se o cliente e o produto estiverem previamente cadastrados. Caso contrário, o pedido é devolvido ao cliente. Ao final da semana, a distribuidora emite requisições de produtos para os fornecedores, previamente cadastrados, com base nos pedidos recebidos. Quando o fornecedor envia catálogo de seus produtos o cadastro de produto é atualizado. Periodicamente a distribuidora envia catálogo dos produtos para seus clientes. Quando os produtos são fornecidos, a distribuidora confere as notas de entregas dos fornecedores com a requisições, devolve as notas de entregas que estiverem com erros e atende aos pedidos dos clientes, emitindo as respectivas faturas.

Ir p/ primeira página

Exercício 05

Ir p/ primeira página

Use Case

Ir p/ primeira página

DadosCliente

AtorCliente CadastrarCliente

MensagemCadastro

UML - Use CaseUML - Use CaseDiagrama de Use Case

Ir p/ primeira página

AlugarCarro

LiquidarDivida

CadastrarCliente

DevolverCarro

AtorCliente

Msg01, Carro Alugado

Msg05, Recibo

Msg03

DadosAluguel

DadosPagamento DadosCliente

Msg02, Recibo

DadosDevolução

Use Case por Ator

Ir p/ primeira página

Relacionamento <<uses>>

ValidarCliente

Cliente RealizarPedido

<<uses>>

Relacionamento <<extends>>

CadastrarCliente

ClienteRealizarPedido

<<extends>>

dadosPedido

msg02

dadosPedido

msg02

Relacionamentos em Use Cases

Ir p/ primeira página

Ator Usuário Msg01, Livro Solicitado

Dados Empréstimo

EmprestarLivro

Curso Normal:

1. Usuário solicita um livro.2. Sistema solicita informações do usuário.3. Usuário informa seus dados(Identidade, Nome e e-mail).4. Sistema verifica que existe o usuário associado à Identidade.5. Sistema solicita informações do livro.6. Cliente informa o nome do livro.7. Sistema verifica que o livro existe e está disponível.8. Sistema muda a situação do livro para “emprestado”.9. Sistema registra o empréstimo do livro para o usuário.10. Sistema entrega o livro para o usuário.

Especificação de Modelo de caso de uso

Ir p/ primeira página

Cursos Alternativos:

Alternativa 4. Usuário não está cadastrado 4.1 Sistema emite emite Msg01 informando que o usuário não está cadastrado e encerra o caso de uso.

Alternativa 7. Livro não existe ou já está emprestado 7.1 Sistema emite Msg01 informando que o livro não existe ou já está emprestado encerra o caso de uso.

Modelo de Caso de Uso – Fluxos alternativos

Ir p/ primeira página

Exercício 06

Ir p/ primeira página

Número: 01 Use Case: AtenderPedido Descrição: Este use case trata do pedido do Cliente. Ator: Cliente

AtenderPedido

Cliente

Questão:• Completar o Use Case.

Diagrama de Use Case

Ir p/ primeira página

Exercício 07

Ir p/ primeira página

Diagrama de Sequência atenderPedido - Curso Normal:

: Item Pedido

Cliente InterfacePedido

:Cliente :Produto :Pedido

Questão:• Completar o Diagrama.

Ir p/ primeira página

Sumário

Ir p/ primeira página

DBC

Ir p/ primeira página

Componentes ?

1. Blocos previamente testados2. Interfaces bem definidas3. Plug-In4. Mostra apenas o que interessa5. Suporta:

• reuso direto através de instâncias• Criação de componentes mais específicos

Ir p/ primeira página

Componentes e Interfaces

Cliente.jarClienteHome

Cliente

<<interfaces>>

Servidor WEB Servidor Aplicação

Web.war

HtmlJSPServlet

Ir p/ primeira página

FramePrincipal.java

FrameCliente.java

FrameCarro.java

FrameAluguel.java

"LocadoraClient.jar"

Locadora.db

Cliente

Regras de Negócio

Banco de Dados

Regras de Negocio e Banco de Dadospara um domínio de Aplicações, fornecendoas seguinte principais vantagens:

•Reuso de código previamente testado•Evita duplicação do código nas aplicações•Facilita a manutenção

Arquitetura em camadas

Ir p/ primeira página

Diagrama de Componentes

Ir p/ primeira página

Diagrama de Componentes

Ir p/ primeira página

Outras Tecnologias

1.Orientação a Aspectos2.Padrões3.Frameworks4.Agentes de Software5.Web Services6.XML e outras LPs WEB

Ir p/ primeira página

Conclusão

Orientação a Objetos Banco de Dados OO(componentes) D B C com Padrões, Frameworks, Aspectos

e outras técnicas Engenharia de Domínio Componentes Distribuídos Aplicações com reutilização de

Componentes Evita redundância Facilita a manutenção Sistemas mais confiáveis

Programação “Plug in” Ambientes que suportam todo o PDS DBC e Banco de Objetos: Futuro do PDS

Ir p/ primeira página

Estudo de caso proposto SISTEMA HOTELEIRO

Deseja-se modelar um sistema para um pequeno hotel que atenda aos seguintes requisitos: · Quando o Cliente telefona ou vem até o hotel e pede para reservar um quarto o funcionário verifica se existe quarto disponível no período solicitado. Caso positivo, é feita a reserva do quarto. Caso negativo, é informado ao cliente a não disponibilidade do quarto.· Quando o cliente não mais desejar o quarto reservado o funcionário providencia o cancelamento da reserva, disponibilizando novamente o quarto.· Quando o cliente não comparecer ao hotel para hospedar-se até as 12:00 horas do dia da Reserva, deve ser cancelada a sua Reserva.· Quando o cliente ocupar um quarto, reservado previamente, o funcionário faz o registro do cliente. Caso o quarto não esteja reservado uma mensagem de rejeição será emitida. Caso contrário, um pacote com informações úteis e a confirmação serão fornecidos ao Cliente.· Quando o cliente deixar o hotel e solicitar que providencie sua saída, será fornecida a respectiva conta, e o quarto será tornado indisponível para a limpeza.· O cliente pode pagar a conta à vista ou usando cartão de crédito. Caso use cartão de crédito, é verificado sua situação para aceitar ou rejeitar o cartão. Esta verificação é feita por telefone.· Quando o quarto estiver limpo, após uma ocupação, o gerente torna-o disponível.