engenharia de software e orientação a objeto aspectos avançados em engenharia de software aula 1...
TRANSCRIPT
![Page 1: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/1.jpg)
Engenharia de Software e Orientação a Objeto
Aspectos Avançados em
Engenharia de Software
Aula 1
Fernanda Campos
DCC/UFJF
![Page 2: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/2.jpg)
Por que Engenharia de Software e Orientação a
Objetos?
![Page 3: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/3.jpg)
SW ESTÁ FICANDO MAIS COMPLEXO
• 1960 - 3 200 linhas• 1970 - 28 000 linhas• 1980 - 3,4 M linhas• 1990 - 3-5 M linhas
![Page 4: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/4.jpg)
CUSTOS
• Custos de desenvolvimento são muito altos.
• Elevam-se os custos de manutenção• década de 70 e 80: 60-65% dos custos totais
• atualmente: 70-80% dos custos totais
![Page 5: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/5.jpg)
CENÁRIO
• Vivendo uma revolução na indústria de software• complexidade
• confiabilidade
• capacidade de projeto
• flexibilidade
• velocidade de desenvolvimento
• facilidade de manutenção
![Page 6: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/6.jpg)
FLEXIBILIDADE FRENTE A MUDANÇAS
• Mudanças nos processos de negócio do usuário• década de 40: 10 anos
• década de 60-70: 5 anos
• década de 90: 2 anos
• século 21: 6 meses
![Page 7: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/7.jpg)
HISTÓRICO
• A primeira abordagem OO para desenvolvimento de software surgiu na década de 60, mas foram necessários 20 anos para que seu uso se tornasse mais popular.
• Na primeira metade dos anos 90 a OO foi a escolha de muitos desenvolvedores.
• Cada vez mais a OO tem substituído outras abordagens clássicas de desenvolvimento.
![Page 8: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/8.jpg)
VANTAGENS
• Benefícios de desenvolvimento e técnicos.• Tecnologias de objetos direcionam para reuso
e reuso de componentes direciona para o desenvolvimento mais rápido e de alta qualidade.
• Sistemas OO são mais fáceis de serem adaptados
• ...
![Page 9: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/9.jpg)
REUTILIZAÇÃO
• Usar novamente algo que foi feito.• Em hardware
• projetar baseado em componentes
• integrar componentes
• desenvolver novos quando necessário
• Em software• todos os artefatos gerados ao longo do processo
• código
![Page 10: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/10.jpg)
OBJETIVOS DA REUTILIZAÇÃO
• Permitir uma ampla utilização de todos os tipos de informação encontradas em situação de desenvolvimento
• Exemplo• requisitos
• especificação
• código
• testes
• todas as atividades
![Page 11: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/11.jpg)
BENEFÍCIOS DA REUTILIZAÇÃO
• Menos produção de software novo:• aumento da produtividade
• ganho de qualidade
• ganho de confiabilidade
• conhecimento adquirido pode ser compartilhado
![Page 12: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/12.jpg)
TÉCNICAS PARA REUTILIZAÇÃO
• Repositórios (meio de armazenamento)• Análise de domínio• Engenharia reversa• Orientação a objetos• Design Patterns (padrões de projetos)• .....
![Page 13: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/13.jpg)
ORIENTAÇÃO A OBJETOS
• Tecnologia que enxerga os sistemas como sendo coleção de objetos interagentes
• Paradigma de desenvolvimento • Envolve todas as atividades de
desenvolvimento
![Page 14: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/14.jpg)
ORIENTAÇÃO A OBJETOS
• Alavancas• Evolução tecnológica
• Distribuição de processamento
• Tecnologia cliente-servidor
• Internet
• Tecnologia JAVA
• Aplicações Web
• Unificação das metodologias OO
![Page 15: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/15.jpg)
ORIENTAÇÃO A OBJETOS
• O termo orientação a objetos significa organizar o mundo real como uma coleção de objetos.
• Dos objetos nos interessa a sua estrutura de dados e um conjunto de operações que manipulam estes dados.
• Os objetos, a sua estrutura de dados e o conjunto de operações são selecionados de acordo com objetivos bem estabelecidos
![Page 16: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/16.jpg)
BENEFÍCIOS DA ANÁLISE E PROJETO OO
• Reduz complexidade através de melhoria do grau de abstração
• Melhora produtividade a longo prazo, permitindo a reutilização pelos desenvolvedores
• Torna mais fácil a comunicação entre clientes e desenvolvedores
![Page 17: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/17.jpg)
MODELO DE PROCESSO OO
• Qualquer modelo de processo pode ser adaptado para OO, porém temos que reconhecer que os sistemas OO tendem a evoluir no tempo.
• Assim sendo um modelo de processo evolutivo, junto com uma abordagem que incentiva o reuso de componentes é o ideal para OO.
• Modelos usados:• Modelo Espiral Evolutivo com Reutilização.
• RUP
• Modelos ágeis ....
![Page 18: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/18.jpg)
CONCEITOS
• Objetos e atributos• Métodos e mensagens• Classes e relacionamentos• Encapsulamento• Herança• Polimorfismo
![Page 19: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/19.jpg)
IDENTIFICANDO OS ELEMENTOS DE UM MODELO OO
• Os elementos a serem identificados são:
• Classes e objetos
• Atributos
• Operações e mensagens
![Page 20: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/20.jpg)
Identificando classes e objetos
• Podemos iniciar a identificação de objetos examinando a definição do problema ou fazendo uma varredura na descrição
• Objetos são determinados identificando cada nome e devem ser colocados numa tabela.
• Sinônimos devem ser anotados
![Page 21: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/21.jpg)
Os objetos se manifestam em uma das seguintes maneiras:
• Entidades externas: (outros sistemas, equipamentos ou pessoas) que produzem ou consomem informações a serem usadas pelo software
• Coisas: (relatórios, cartas, sinais) que são parte do domínio da informação do problema.
• Ocorrência ou evento: (propriedade de transferir ou executar uma serie de movimentos) que ocorrem dentro do contexto da operação do sistema.
• Papéis: (gerentes engenheiros, vendedores) desempenhados por pessoas que interagem com o sistema.
• Unidades organizacionais: (divisões, grupos, equipes) que são relevantes para aplicação.
• Lugares: (andar da manufatura, escrit´rio0 que estabelecem o contato entre o problema e a função principal do sistema.
• Estruturas: (veículos, sensores e computadores) que definem a classe de objetos ou, no extremo, relacionam classes e objetos.
![Page 22: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/22.jpg)
Especificando Atributos
• É o atributo que define o objeto, que esclarece o que o objeto significa no contexto do problema.
• Atributos descrevem um objeto que foi selecionado no modelo de análise
• Devem ser selecionados os atributos que pertencem ao objeto
• Que tipo de dados definem o objeto no contexto do problema?
![Page 23: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/23.jpg)
Definindo Operações
• Operações definem o comportamento do objeto e modificam os atributos.
• Uma operação deve conhecer a natureza dos atributos do objeto e ser implementada de forma que seja permitida a manipulação das estruturas de dados derivadas dos atributos.
![Page 24: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/24.jpg)
Operações podem:
• Manipular dados (adicionar, deletar, reformatar, selecionar)
• Executar uma computação • Monitorar um objeto pela ocorrência de
um evento de controle.
![Page 25: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/25.jpg)
Exercício
Identifique os objetos a partir das sentenças do seguinte problema do B&B.
• Tom e Sue estão implantando uma pousada numa pequena cidade de New England. Eles terão três quartos para hóspedes. Eles querem um sistema para gerenciar as reservas e para monitorar despesas e ganhos. Quando um cliente potencial telefona para a reserva, eles irão verificar a agenda e se existir vaga eles entrarão com o nome do cliente, endereço, numero de telefone, datas, concordância do preço, número do cartão de crédito e número(s) do(s) apartamento(s). Reservas devem ser garantidas pelo pagamento de um dia.
• Reservas poderão ser feitas sem garantias até uma data definida. Se não confirmada até a data a reserva será cancelada.
![Page 26: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF](https://reader035.vdocuments.pub/reader035/viewer/2022070311/552fc118497959413d8c8ef9/html5/thumbnails/26.jpg)
Exercício
Identifique os objetos a partir das sentenças do seguinte problema do consultório dentário.
• Tom está iniciando a prática de dentista numa cidade pequena. Ele terá uma assistente de dentista, uma higienista e uma recepcionista. Ele quer um sistema para gerenciar as consultas.
• Quando um paciente telefonar para uma consulta, a recepcionista irá verificar o calendário e irá tentar agendar o paciente o mais breve possível para preencher os horários disponíveis. Se o paciente concordar com a consulta proposta, a recepcionista entrará com a consulta, com o nome do paciente e o horário proposto. O sistema irá verificar o nome do paciente e completar detalhes necessários a partir do arquivo do paciente, incluindo o número de identidade do paciente. Após cada exame ou limpeza, o higienista ou assistente irá marcar a consulta como terminada, adicionando comentários e agendando nova visita, se apropriado.
• O sistema irá executar buscas pelo nome do paciente e pela data. Detalhes dos arquivos do paciente são mostrados junto com as informações da consulta. A recepcionista pode cancelar consultas. A recepcionista pode imprimir uma lista de notificação para lembrar de telefonar dois dias antes das consultas. O sistema inclui o número de telefone do paciente a partir do seu arquivo. A recepcionista também pode imprimir
diariamente ou semanalmente calendários de trabalho com todos os pacientes.