Engenharia de
Software
Antonio Francisco do Prado
[email protected]
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
Início
14
10 caminhos
< 21 vezes
Fim
TESTES : Mostram a presença de erros e não sua
ausência
Ir p/ primeira
página
Comunicação
Analista
Usuário
Ir p/ primeira
página
Comunicação
O que foi
solicitado pelo
Usuário
O que foi Especificado
pelo desenvolvedor
O que foi
Implementado
pelo
programador
O que era
necessário !
Ir p/ primeira
página
Documentação e
outros fatores
Onde está o erro ?
Sistema
OUTROS FATORES CRÍTICOS
•Software é um artefato invisível
•Falta de consenso
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ção
Projeto, Implementação
e Teste
Manutençã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
Decomposição Funcional
Pagar Funcionários
Horistas
Obter Horas
Calcular
Emitir Contra
Trabalhadas
Pagamento
Cheque
Calcular
Pagto
Bruto
Calcular
Descontos
Calcular
Pagto
Líquido
Ir p/ primeira
página
Fluxo de Dados
Serviço
Obter
HT
Funcionário
Funcionário
Imposto
Calcular
Pagto
Emitir
Contra
Cheque
Ir p/ primeira
página
Entidades e
Relacionamentos
Serviço
1
Emprega
HT
N
Funcionário
M
Recolhe
N
Imposto
Ir p/ primeira
página
Orientado a Objetos
Mundo
Real
DSOO
Sistema
Problemas
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
Acesso a BD com
componentes
Ir p/ primeira
página
Componentes em Delphi
Internet
Ir p/ primeira
página
TData
Source
TTable
TDataBase
BD
DataSet:
TTable
DatabaseName:
DBDEMOS
TableName:
Animal.db
Alias Name:
DBDEMOS
Name:
DBDEMOS
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
P D S Atual
Análise
Identificação
de
Requisitos
3
2
1
Projeto
Implementação
Versão
Teste
Modelo Espiral
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
PropriedadesEstudante Pr
Modelo
Tamanho
Descrição
Velocidade
Custo
Número Instruções
Preço Venda
Operações
Operações
Faturar
+ * / - =

÷

Garantir
Requisitar
Abstração
Ir p/ primeira
página
Encapsulamento
Torna disponível apenas
a assinatura ou
protótipo dos métodos.
Por exemplo:
297 + 333 = 630
Requisitar ( Modelo : string )
Requisitar ( HP 97 )
Não interessa !
• Acessar diretamente as Propriedades
• Saber “como” são realizadas as Operações
Ir p/ primeira
página
Classe e Objeto
classe Pessoa
objeto Maria
objeto Pedro
Ir p/ primeira
página
Objetos
A
T
R
I
B
U
T
O
S
M
É
T
O
D
O
S
Maria
Pedro
Ir p/ primeira
página
Construtor
Orquídea
Lilas
MG
Flor
Flor do Limão
Espécie
Branca
SP
Cor
Região
Flor
Rosa
Vermelha
PR
Ir p/ primeira
página
Construtor
XP 3244
97
Carro
98
Placa
Ano
MJ 1256
Modelo
96
Carro
97
BC 4580
97
98
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
Herança
Pessoa
Estudante
Professor
Funcionário
Diretor
Ir p/ primeira
página
Herança – Exemplo
Proprietário
Placa
Ano
Modelo
Marca
Veículo
Peso Bruto
Peso líquido
Altura
Motor
Ir p/ primeira
página
Herança - Notação
Ir p/ primeira
página
Pessoa
Nome
Endereço
Telefone
Idade
Herança Múltipla
Vendedor
Funcionário
8
Matrícula
TempoServiço
Código
Comissão
Cargo
$
RegiãoTrabalho
Salário
Funcionário/Vendedor
Ir p/ primeira
página
Exercício 02
Ir p/ primeira
página
Sistema Acadêmico
Considerando que o domínio tenha:
 Pessoa
 Professor
 Dedicação exclusiva
 Tempo Parcial
 Aluno
 Residente(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
Agregação
TODO
PARTES
Ir p/ primeira
página
Agregação
TODO
PEDIDO
PARTES
Item 1: Relógio
Item 2: Computador
Ir p/ primeira
página
Pedido Número: 125
Data: 03 Fev 2000
Situação: Pendente
Item Descrição Qtd Preço Total
01 Cadeira
3
15,00
45,00
02 Mesa
2
40,00
80,00
03 Relógio
1
50,00
50,00
04 Computador 1 900,00 900,00
Total Geral
1.075,00
Pedido
Agregação
por valor
ItemPedido
Ir p/ primeira
página
Curso
Código
Período
Área
Agregação
por referência
1..N
Aluno
Numero
Matricula
Nome
Endereço
Ir p/ primeira
página
Associação
Cliente
Faz
Pedido
Ir p/ primeira
página
Biblioteca
Associação
BIBLIOTECA
USUÁRIO
Identidade
Nome
Endereço
Nome
Endereço
EmprestarLivro
ReceberLivro
0..1
0..1
0..N
LIVRO
Título
ISBN
Situação
Validar
Usuário
Registrar
Empréstimo
0..N
Validar Livro
Mudar Situação
Ir p/ primeira
página
realiza
Estudante
Link de
Atributo
Teste
Sala
Nota
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
Mensagens entre objetos
Abram seus
livros na
página 36
Qual a
próxima
lição?
Ir p/ primeira
página
empresta ou devolve
Interface
USUÁRIO
BIBLIOTECA
Identidade
Nome
Endereço
Nome
E-mail
Endereço
ValidarLivro
ReceberLivro
Mudar Situação
EmprestarLivro
ValidarUsuário
0..1
0..1
0..N
LIVRO
Registrar
Empréstimo
Título
ISBN
Situação
ValidarLivro
Mudar Situação
0..N
Conexão de
Mensagem Exemplo
Ir p/ primeira
página
Conexão de Mensagem –
Especificação com Modelo de
Seqüência
Interface
:Usuário :Biblioteca
:
Empresta Livro
AtorUsuário
Solicita um livro
: Livro
Solicita Info Usuário
Dados Usuário
ValidarUsuário()
Solicita Info Livro
Dados Livro
EmprestarLivro(DadosLivro)
ValidarLivro()
MudarSituação()
RegistrarEmpréstimo()
Livro Solicitado
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
program Project1;
TAPPLICATION :
uses
APPLICATION
Forms, . . .
begin
APPLICATION.Initialize;
APPLICATION.CreateForm(TForm1, Form1);
APPLICATION.Run;
end.
TFORM1.Botão1Click
begin
Edit1.Text := ‘325,00’ ;
end
TFORM1 :
FORM1
Evento:
OnClick
TBUTTON :
BOTÃO1
Eventos - Exemplo
Ir p/ primeira
página
Sistema
Operacional
Eventos Tratamento
Objeto1
Método1
...
...
MétodoM
ObjetoN
...
Método1
Ir p/ primeira
página
Polimorfismo
Janela ( )
Janela ( 1 x 2 , 2 )
Janela ( 1 x 2 , 2, Azul )
95 + 5 = 100
1
4
6
5
66
33
4
7
0
11
+
5
9
5
4
7
2
1
55
Ir p/ primeira
página
MoverFigura (NovoCentro:Ponto)
{...
Redesenhar
(NovoCentro);
...}
Polimorfismo Exemplo
Redesenhar (NovoCentro:Ponto);
Ir p/ primeira
página
Exercício 04
Ir p/ primeira
página
Classe Pessoa


Atributos
 Nome, Endereço, e Telefone
Métodos
 Construtor com Nome
 Construtor com Nome, Endereço, e Telefone
 Construtor de cópia
Classe Cliente


Atributos
 Cpf e Dívida
Métodos
 Construtor com Cpf
 Construtor de cópia
Ir p/ primeira
página
Genericidade ou
Tipos Genéricos
T,k: Integer
Array
k..k
T
Parametrizada (Template)
Ir p/ primeira
página
DC
Ir p/ primeira
página
Visão Lógica
Modificadores de Visibilidade:
•Private
•Protected
•Implemented
•Public
Ir p/ primeira
página
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ógica
Navegabilidade
Funcionario
Matricula
Dependente
Nome
Ir p/ primeira
página
Direção da
Navegabilidade
Funcionario
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))
Matricula
Dependente
Nome
Ir p/ primeira
página
Relacionamentos de Dependência
e Implementação
ServidorBD
<<Interface>>
Conecta()
Dependência
interfacePedido
Exibir()
Implementação
Pedido
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
UML - Use Case
Diagrama de Use Case
DadosCliente
AtorCliente
CadastrarCliente
MensagemCadastro
Ir p/ primeira
página
Use Case por Ator
AlugarCarro
DadosAluguel
DadosDevolução
Msg02, Recibo
Msg01,
Carro Alugado
DadosCliente
DadosPagamento
Msg05,
Recibo
DevolverCarro
AtorCliente
Msg03
CadastrarCliente
LiquidarDivida
Ir p/ primeira
página
Relacionamentos em
Use Cases
Relacionamento Relacionamento
<<uses>>
<<extends>>
dadosPedido
dadosPedido
Cliente
RealizarPedido
RealizarPedido
Cliente msg02
<<uses>>
<<extends>>
msg02
ValidarCliente
CadastrarCliente
Ir p/ primeira
página
Especificação de Modelo de
caso de uso
Dados Empréstimo
EmprestarLivro
Ator Usuário
Msg01, Livro Solicitado
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.
Ir p/ primeira
página
Modelo de Caso de Uso –
Fluxos alternativos
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.
Ir p/ primeira
página
Exercício 06
Ir p/ primeira
página
Número:
Use Case:
Descrição:
Ator:
01
AtenderPedido
Este use case trata do pedido do Cliente.
Cliente
Cliente
AtenderPedido
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:
Cliente
Interface
Pedido
:Cliente
:Produto
:Pedido
: Item
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.
2.
3.
4.
5.
Blocos previamente testados
Interfaces bem definidas
Plug-In
Mostra apenas o que interessa
Suporta:
• reuso direto através
de instâncias
• Criação de componentes
mais específicos
Ir p/ primeira
página
Componentes e
Interfaces
Web.war
Html
JSP
Servlet
ClienteHome
Cliente.jar
<<interfaces>>
Cliente
Servidor WEB
Servidor Aplicação
Ir p/ primeira
página
Arquitetura em camadas
Regras de Negocio e Banco de Dados
para um domínio de Aplicações, fornecendo
as seguinte principais vantagens:
•Reuso de código previamente testado
•Evita duplicação do código nas aplicações
•Facilita a manutenção
FramePrincipal.java
Cliente
FrameAluguel.java
FrameCliente.java
FrameCarro.java
Regras de
Negócio
Banco de Dados
"LocadoraClient.jar"
Locadora.db
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 Aspectos
2.Padrões
3.Frameworks
4.Agentes de Software
5.Web Services
6.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.
Ir p/ primeira
página
Download

Material