Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

57
Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena

Transcript of Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

Page 1: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

Projeto de Sistemas de Software (PSS)

Prof. Carlos J. P. Lucena

Page 2: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Assunto

• Técnicas de projeto– Utilizadas para o desenvolvimento de software

– Orientado a objetos

– Promovendo a reutilização de software

Page 3: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Ementa

• Revisão de UML– Princípios de Modelagem

– Diagrama e Descrição de Casos de Uso

– Diagrama de Classes

– Diagrama de Seqüências

• Introdução à Arquitetura J2EE

• Reuso de Software– Overview

– Design Patterns

– Frameworks

– Linha de Produtos de Software

Page 4: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Ementa

• Introdução a Agentes– Conceitos básicos

– Plataforma JADE

• Introdução a Orientação a Aspectos– Conceitos básicos

– AspectJ (Exemplos)

Page 5: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Avaliação

• Avaliação– Freqüência e participação do aluno (FP)

– Trabalho Experimental (TE)

• Projetar (utilizando UML) e implementar uma aplicação em Java

– Trabalho sobre Padrões de Projeto (TPP)

• Apresentar alguns padrões de projeto e implementá-los (em Java) em exemplos simples

– Trabalho Final (TF)

• Projetar e implementar (em Java) uma Linha de Produto de Software

• Derivar um produto

• Utilizar padrões de projetos e agentes de software

Nota Final = (0,25 * TE) + (0,15 * TPP) + (0,5 * TF) +- (0.1 * FP)

Page 6: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Avaliação

• Trabalhos– Trabalho Experimental (TE)

• Preparatório para o trabalho final

– Trabalho Final (TF)

• Acompanhamento semanal dos progressos do trabalho

• Documentação baseada num documento padrão a ser disponibilizado

• Principais artefatos gerados

– Diagramas UML (Casos de Uso, Classes, Seqüência)

– Descrição dos Casos de Uso

– Código

Page 7: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Equipe

• Prof. Carlos Lucena– [email protected]

• Instrutores– Ingrid Nunes

[email protected]

– Camila Nunes

[email protected]

Page 8: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Agenda

Agosto11/08 Apresentação do Curso e Visão Geral

18/08 UML (Casos de Uso e Diagrama de Classes)

25/08 UML (Diagrama de Seqüência)

Arquitetura J2EE (Servlet + JSP)

Page 9: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Agenda

Setembro01/09 Design Patterns

08/09 Apresentação do Trabalho de Design Patterns

15/09 Agentes (teoria e exemplos)

22/09 Frameworks OO

Dúvidas do sobre o Trabalho Final

29/09 Linhas de Produto Software

Page 10: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Agenda

Outubro06/10 Trabalho Final: Apresentação inicial

Entrega do Trabalho Experimental

13/10 Programação Orientada a Aspectos

20/10 Trabalho Final: Apresentação do Problema (Diagrama de Features)

27/10 Trabalho Final: Apresentação (Diagramas de Casos de Uso e Diagramas de Classes)

Page 11: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Agenda

Novembro03/11 Trabalho Final: Apresentação (Diagramas de Seqüência)

10/11 Trabalho Final: Apresentação (Diagr. Classe e Seq. Refinados + Patterns)

17/11 Trabalho Final: Apresentação (Diagr. Classe e Seq. Refinados + Demo)

24/11 Trabalho Final: Apresentação Final (Documentação + Demo Final)

01/12 Trabalho Final: Entrega do Documento

08/12 – Divulgação das Notas Finais

Page 12: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Apoio Educacional

• Recursos– Aulas

• Segunda-feira, das 13h às 16h• Fundação Padre Leonel Franca - 13o Andar

– Atendimento• Ingrid Nunes ([email protected])• Camila Nunes ([email protected])

– Wiki• http://web.teccomm.les.inf.puc-rio.br/index.php/Projeto_de_Si

stemas_de_Software

– Grupo• Página do Grupo

– http://br.groups.yahoo.com/group/pss-puc-rio-20082

• Enviar mensagem: [email protected]• Entrar no grupo: pss-puc-rio-20082-

[email protected]

Page 13: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Apoio Educacional

• Horário de Atendimento– 2as feiras - das 16h às 18h

• Ingrid Nunes

– 6as feiras - das 10h às 12h

• Camila Nunes

Page 14: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

Projeto de Sistemas de Software (PSS)

Visão Geral

Page 15: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

Reuso de Software

Page 16: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

ES baseada em Reuso

• Reuso de Sistemas– Uma aplicação pode ser reutilizada incorporando-se à

outros sistemas sem necessidade de mudança ou com algumas configurações

• Reuso de Componentes – Componentes de software que implementam um conjunto

de funções podem ser reutilizados

• Reuso de Funções– Componentes de software que implementam uma única

função podem ser reutilizados

Page 17: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Benefícios do Reuso

• Maior confiabilidade– Componentes já utilizados e testados em outros sistemas

são mais confiáveis que novos componentes

• Redução dos riscos de processo– Menos incerteza nos custos de reuso comparado aos custos de

desenvolvimento

• Uso efetivo de especialistas– O especialista desenvolve software reutilizável encapsulando seu

conhecimento, ao invés de desenvolver as mesmas funcionalidades repetidas vezes em diferentes projetos

• Uso efetivo de padrões– O uso de padrões organizacionais agiliza o desenvolvimento pois

estabelece uma base comum de comunicação e garante a consistência

• Desenvolvimento acelerado– Evitando o desenvolvimento de produtos “originais” é possível acelerar a

produção e a validação

Page 18: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Problema do Reuso

• Aumento nos custos de manutenção– Dificuldade de adaptar componentes sem o código fonte

• Dificuldade em encontrar e adaptar componentes reutilizáveis

• Síndrome do “não-foi-inventado-aqui”– Falta de confiança no componente

– Desenvolvedor prefere reimplementar pois acredita poder aprimorá-lo

Page 19: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Reuso de Projeto e Implementação

• Neste curso, serão abordados algumas técnicas que propiciam o reuso de projeto e implementação em sistemas OO– Padrões de Projeto (Design Patterns)

– Frameworks

– Linhas de Produto

Page 20: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

Padrões de Projeto(Design Patterns)

Page 21: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Definição: Padrão

“Cada padrão descreve um problema que ocorre repetidas vezes em nosso ambiente, e então descreve o núcleo da sua solução para aquele

problema, de tal maneira que seja possível usar essa solução milhões de vezes sem nunca fazê-la

da mesma forma duas vezes.”

Christopher Alexander sobre padrões em arquitetura de construções

Page 22: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Definição: Padrão de Projeto

“Os padrões de projeto são descrições de objetos que se comunicam e classes que são customizadas para resolver um problema de

projeto genérico em um contexto específico.”

Gamma, Helm, Vlissides & Johnson, sobre padrões de projeto em software

Page 23: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Padrões de Projeto

• Formas de reutilizar conhecimento abstrato sobre problemas e soluções

• Descrições de problemas e essências de soluções

• Aplicáveis em classes de problemas bem conhecidos

• Soluções que funcionam, tornando-se “receitas” para situações similares

• OBS: Desde que estas soluções tenham sido projetadas com flexibilidade

Page 24: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Bibliografia

• Bibliografia– Design Patterns: Elements

of Reusable Object-Oriented Software

• Publicado em 1994

• Autores: – Erich Gamma

– John Vlissides

– Ralph Jonhson

– Richard Helm

• conhecidos como:– “The Gang of Four” (GoF)

• Contém 23 padrões de projeto

Page 25: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Benefícios

• Aprendizagem com a experiência dos outros

– Identificação de problemas comuns de projeto de software

– Utilização de soluções testadas e bem documentadas

– Ajuda um novato a agir mais como um experiente

• Aumento da produtividade

• Melhoria na qualidade do projeto OO

– Normalmente utilizam boas práticas de OO

– Utilizam eficientemente polimorfismo, herança e composição

• Vocabulário comum

– Uso de soluções conhecidas facilita a comunicação e documentação

• Ajuda na conversão de um modelo de análise em um modelo de implementação

Page 26: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Exemplo: Adapter Pattern

• Você já precisou ligar seu laptop na tomada num país estrangeiro?

??

Page 27: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Exemplo: Adapter Pattern

• Existem diversos adaptadores

Page 28: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Exemplo: Adapter Pattern

O plug do laptop espera outra

interface

O adaptador converte uma interface na

outra

A tomada oferece uma interface

Page 29: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Exemplo: Adapter Pattern

• Suponha que você tem um sistema que usa o componente A

Seu sistema

ComponenteA

Interfaces compatíveis

Page 30: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Exemplo: Adapter Pattern

• Porém o fornecedor do componente A faliu…

• Você precisa utilizar o componente de outro fornecedor

Seu sistema

ComponenteA

Page 31: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Exemplo: Adapter Pattern

• Porém, o fornecedor do componente B oferece uma interface incompatível com o seu sistema

Seu sistema

Componente B

Interfaces incompatíveis

Page 32: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Exemplo: Adapter Pattern

• Para não correr riscos, você cria um adaptador

Seu sistema

Interfaces compatíveis

Adaptador Componente B

Interfaces compatíveis

Sem alteração de código

Sem alteração de código

Código novo

Page 33: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Exemplo: Adapter Pattern

• Problema– Como adaptar a interface de dois componentes?

• Solução– Adapter Pattern

• “Converte a interface para outra interface que o cliente espera encontrar. O adaptador permite que componentes com interfaces incompatíveis trabalhem juntos”

Page 34: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

Frameworks

Page 35: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Frameworks de Aplicação

• Framework de aplicação– Projeto constituído de uma coleção de classes concretas e

abstratas, e de interfaces entre elas

• Instância do framework– Implementada pela adição de detalhes específicos e pela

instanciação das classes abstratas

• Frameworks– Entidades “relativamente” grandes que podem ser

reutilizadas

Page 36: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Estendendo Frameworks

• Frameworks– Genéricos

– Estendidos para criar uma aplicação ou sub-sistema específico

• Estender um framework envolve– Adicionar classes concretas que herdam operações

das classes abstratas do framework

• Problemas: – complexidade

– tempo necessário para usá-los efetivamente

Page 37: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Estrutura de um framework

• Um framework separa o que é fixo (frozen-spots) do que é variável (hot-spots)

SpecificApplication Code

#1

Page 38: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Exemplo framework

• Framework de Análise e Persistência de dados

Hot-Spot #1Tipo de persistência

Hot-Spot #2Algoritmo de Análise

Implementação do Hot-Spot #1

Implementação do Hot-Spot #2

#1MySQL

#2Anal.

Estatística

Page 39: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

Linha de Produto

Page 40: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Linhas de Produto de Software

• Conjunto de sistemas– Compartilham características comuns e gerenciáveis que

satisfazem às necessidades de um segmento particular do mercado.

• Produtos derivados– chamados de família de produtos

• Arquitetura SPL– Conjunto de features comuns e variáveis de uma família

de produtos

Page 41: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Linhas de Produto de Software

• A maioria dos sistemas não são novos

• Construir pontos de variação usando artefatos da linha de produto– Arquiteturas Comuns

– Componentes

Construídos com Pontos de Variação

Page 42: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Linhas de Produto de Software

Produtos

Domínio de Aplicação / Estratégia de Mercado

pertencem

Arquiteturacompartilham

Componentes

construídos por

Page 43: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Linhas de Produto de Software

Page 44: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Exemplo de LP

• Exemplo: Indústria Automobilística

• Carro– Caixa de Marcha

• Automática

• Manual

– Motor

• Diesel

• Gasolina

– Tipo de Motor

• 1.0

• 1.6

– ...

Pontos de Variação

Variantes

Page 45: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

Agentes de Software

Page 46: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Cenário Atual

• Com os avanços do desenvolvimento de aplicações distribuídas na Internet, a introdução de componentes de software com algum tipo de auto-controle está se tornando usual

• Os sistemas de software deverão estar– Em todo o lugar

– Sempre conectados (disponíveis)

– Sempre ativos para executar requisições de usuários

Page 47: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Evolução dos Paradigmas de ES

• Linguagens Assembler

• Abstração Funcional

• Programação Estruturada

• Orientação a Objetos

• Componentes

• ...

• Agentes de Software

Tempo

Page 48: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

O que são Agentes?

• Inteligência Artificial– Um agente é pró-ativo, inteligente, e deve ser altamente

interativo (P2P) em vez de participar de uma arquitetura cliente-servidor

• Engenharia de Software– Um agente é um componente de software com processos

internos de execução (threads), tanto pró-ativo quanto reativo, e que pode participar de protocolos de interação complexos e com estado

Page 49: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

Exemplos de Agentes

• Buscam, negociam e montam pacotes de viagens

• Representam usuários em um sistema de leilão (negociam produtos)

• Buscam informações de interesse de usuários na Internet

• Realizam monitoramento de estado e enviam alertas

Page 50: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

Projeto de Sistemas de Software (PSS)

Exemplo de Trabalho Final

Page 51: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

ExpertCommittee

• Análise do Domínio– Sistema para gerenciamento de conferências

• Suportam a maioria das tarefas administrativas de conferencias

• Gerenciamento mais fácies destes eventos mais fáceis

• Redução o tempo gasto

– Exemplos

• JEMS (https://submissoes.sbc.org.br/)

• ConfMaster (http://www.confmaster.net/)

• ConfTool (http://www.conftool.net/)

• EasyChair (http://www.easychair.org/)

Page 52: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

ExpertCommittee

Page 53: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

EC – Feature Model

Page 54: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

EC – Use Case Diagram

Page 55: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

EC – Class Diagram (Core)

Page 56: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

EC – Class Diagram (Agentes)

Page 57: Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.

© LES/PUC-Rio

EC - Arquitetura