Projeto de Sistemas de
Software (PSS)
Prof. Carlos J. P. Lucena
Assunto
• Técnicas de projeto
– Utilizadas para o desenvolvimento de
software
– Orientado a objetos
– Promovendo a reutilização de software
© 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
© 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)
© 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)
© 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
© LES/PUC-Rio
Equipe
• Prof. Carlos Lucena
– [email protected]
• Instrutores
– Ingrid Nunes
• [email protected]
– Camila Nunes
• [email protected]
– Daniela Brauner
• [email protected]
– Elder Cirilo
• [email protected]
– Andrew Costa
• [email protected]
© LES/PUC-Rio
Agenda
Março
03/03
Apresentação do Curso e Visão Geral
10/03
UML (Casos de Uso e Diagrama de Classes)
17/03
UML (Diagrama de Seqüência)
Arquitetura J2EE (Servlet + JSP)
24/03
Design Patterns
31/03
Apresentação do Trabalho de Design Patterns
© LES/PUC-Rio
Agenda
Abril
07/04
Agentes (teoria e exemplos)
14/04
Frameworks OO
Dúvidas do sobre o Trabalho Final
28/04
Trabalho Final: Apresentação inicial
© LES/PUC-Rio
Agenda
Maio
05/05
Linhas de Produto Software
Entrega do Trabalho Experimental
12/05
Programação Orientada a Aspectos
19/05
Trabalho Final: Apresentação do Problema (Diagrama
de Features)
26/05
Trabalho Final: Apresentação (Diagramas de Casos de
Uso e Diagramas de Classes)
© LES/PUC-Rio
Agenda
Junho
02/06
Trabalho Final: Apresentação (Diagramas de
Seqüência)
09/06
Trabalho Final: Apresentação (Diagr. Classe e Seq.
Refinados + Patterns)
16/06
Trabalho Final: Apresentação (Diagr. Classe e Seq.
Refinados + Demo)
23/06
Trabalho Final: Apresentação Final (Documentação +
Demo Final)
30/06
Trabalho Final: Entrega do Documento
07/07 – Divulgação das Notas Finais
© 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])
Daniela Brauner ([email protected])
Elder Cirilo ([email protected])
Andrew Costa ([email protected])
– Wiki
• http://web.teccomm.les.inf.pucrio.br/index.php/Projeto_de_Sistemas_de_Software
– Grupo
• Página do Grupo
– http://br.groups.yahoo.com/group/pss-puc-rio-20081
• Enviar mensagem: [email protected]
• Entrar no grupo: [email protected]
© LES/PUC-Rio
Apoio Educacional
• Horário de Atendimento
– 2as feiras - das 16h às 18h
• Ingrid Nunes
– 3as feiras - das 19h às 21h
• Andrew Costa
– 4as feiras - das 13h às 15h
• Elder Cirilo
– 5as feiras - das 10h às 12h
• Camila Nunes
© LES/PUC-Rio
Projeto de Sistemas de
Software (PSS)
Visão Geral
Reuso de Software
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
© 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
© 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
© 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
© LES/PUC-Rio
Padrões de Projeto
(Design Patterns)
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
© 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
© 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
© 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
© 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
© LES/PUC-Rio
Exemplo: Adapter Pattern
• Você já precisou ligar seu laptop na
tomada num país estrangeiro?
© LES/PUC-Rio
Exemplo: Adapter Pattern
• Existem diversos adaptadores
© LES/PUC-Rio
Exemplo: Adapter Pattern
O plug do laptop
espera outra
interface
A tomada oferece
uma interface
O adaptador
converte uma
interface na outra
© LES/PUC-Rio
Exemplo: Adapter Pattern
• Suponha que você tem um sistema
que usa o componente A
Interfaces
compatíveis
Componente
A
Seu
sistema
© LES/PUC-Rio
Exemplo: Adapter Pattern
• Porém o fornecedor do componente A
faliu…
• Você precisa utilizar o componente de
outro fornecedor
Componente
A
Seu
sistema
© LES/PUC-Rio
Exemplo: Adapter Pattern
• Porém, o fornecedor do componente B
oferece uma interface incompatível
com o seu sistema
Interfaces
incompatíveis
Componente
B
Seu
sistema
© LES/PUC-Rio
Exemplo: Adapter Pattern
• Para não correr riscos, você cria um
adaptador
Interfaces
compatíveis
Seu
sistema
Sem alteração
de código
Adaptador
Código novo
© LES/PUC-Rio
Interfaces
compatíveis
Componente
B
Sem alteração
de código
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”
© LES/PUC-Rio
Frameworks
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
© LES/PUC-Rio
Estendendo Frameworks
• Frameworks
– Genéricos
– Estendidos para criar uma aplicação ou subsistema 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
© LES/PUC-Rio
Estrutura de um framework
• Um framework separa o que é fixo (frozenspots) do que é variável (hot-spots)
Specific
Application Code
#1
© LES/PUC-Rio
Exemplo framework
• Framework de Análise e Persistência
de dados
#2
Anal.
Estatística
#1
MySQL
Hot-Spot #1
Tipo de persistência
Hot-Spot #2
Algoritmo de Análise
Implementação do
Hot-Spot #1
Implementação do
Hot-Spot #2
© LES/PUC-Rio
Linha de Produto
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
© 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
© LES/PUC-Rio
Linhas de Produto de Software
Domínio de Aplicação /
Estratégia de Mercado
pertencem
compartilham
Arquitetura
Produtos
construídos por
Componentes
© LES/PUC-Rio
Linhas de Produto de Software
© LES/PUC-Rio
Exemplo de LP
• Exemplo: Indústria Automobilística
• Carro
– Caixa de Marcha
• Automática
• Manual
Pontos de Variação
Variantes
– Motor
• Diesel
• Gasolina
– Tipo de Motor
• 1.0
• 1.6
– ...
© LES/PUC-Rio
Agentes de Software
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
© LES/PUC-Rio
Evolução dos Paradigmas de ES
• Linguagens Assembler
• Abstração Funcional
• Programação
Estruturada
Tempo
• Orientação a Objetos
• Componentes
• ...
• Agentes de Software
© 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
© 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
© LES/PUC-Rio
Projeto de Sistemas de
Software (PSS)
Exemplo de Trabalho Final
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
– Examplos
• JEMS (https://submissoes.sbc.org.br/)
• ConfMaster (http://www.confmaster.net/)
• ConfTool (http://www.conftool.net/)
• EasyChair (http://www.easychair.org/)
© LES/PUC-Rio
ExpertCommittee
© LES/PUC-Rio
EC – Feature Model
© LES/PUC-Rio
EC – Use Case Diagram
© LES/PUC-Rio
EC – Class Diagram (Core)
© LES/PUC-Rio
EC – Class Diagram (Agentes)
© LES/PUC-Rio
EC - Arquitetura
© LES/PUC-Rio
Download

Projeto de Sistemas de Software (PSS) - (LES) da PUC-Rio