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