engenharia de software e orientação a objeto aspectos avançados em engenharia de software aula 1...

26
Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF

Upload: internet

Post on 17-Apr-2015

105 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Engenharia de Software e Orientação a Objeto Aspectos Avançados em Engenharia de Software Aula 1 Fernanda Campos DCC/UFJF

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.