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

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

Embed Size (px)

Citation preview

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