Projeto de Sistemas de Software (PSS)

Slides:



Advertisements
Apresentações semelhantes
Soluções elegantes para problemas recorrentes
Advertisements

Projeto Qualified Curriculum
Desenvolvimento de aplicativos Orientados a Objetos: Definição e Características THIAGO IDEALI.
Introdução a Engenharia de Software de Sistemas Multi-Agentes
Engenharia de Software
UML Visões – Parte 2.
(Unified Modeling Language)
Engenharia de Software
Orientação por Objectos > Modelo de Processo OO > Identificação de Classe e Objectos Aula 12.
INTRODUÇÃO A INFORMÁTICA
Projeto de Sistemas de Software(PSS) Baldoino F. dos S. Neto
Engenharia de Software de Sistemas Multi-Agentes Seminários 2008 – 2º Semestre Agentes Inteligentes Inovações Tecnológicas.
Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.
Projeto de Sistemas de Software (PSS) Prof. Carlos J. P. Lucena.
Metodologias Equipe do Curso de ES para SMA
Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques Seminário LES – 7 de abril de.
Professor: Rogério Lopes Disciplina: Engenharia de Software II Fortium Sistemas da Informação Engenharia de Software II.
Engenharia de Requisitos
Trabalho de Conclusão de Curso Moisés Alves Carneiro Filho
Aspectos Avançados em Engenharia de Software Aula 3 Fernanda Campos
RUP: Fluxo de Análise e Projeto
Como Desenvolver Sistemas de Informação
Gerencia de Projeto OO Aspectos Avançados em Engenharia de Software Aula 5 Fernanda Campos DCC/UFJF.
Visão Geral do Desenvolvimento de Sistemas e Papéis no Desenvolvimento de Software Marcely Dias
Classes e objetos Modelagem
Classes e objetos P. O. O. Prof. Grace.
DIAGRAMA DE COMPONENTES
Aplicativos Web Com Orientação a Objetos
Engenharia de Requisitos
José Roberto Blaschek Gerência do Escopo José Roberto Blaschek.
Frameworks - Introdução
Aluno: Mário Monteiro Orientador: Sérgio Soares 1.
Fundamentos da Engenharia de Software
Engenharia de Software de Sistemas Multi-Agentes Seminários 2009 – 1º Semestre Agentes Inteligentes Inovações Tecnológicas.
Linguagens Orientadas a Objeto
. Smalltalk HISTÓRICO . Década de 60 – POO . Dynabook (Alan Kay)
Análise e Projeto de Sistemas UNIVERSIDADE DE CRUZ ALTA Ciência da Computação 2010/1.
Arquitetura do Software
GERENCIAMENTO DE REDES UTILIZANDO O PROTOCOLO SNMP
Prof. Alexandre Vasconcelos
DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade Universidade.
Projeto de Banco de Dados
 Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini.
APLICANDO O PROCESSO DIRIGIDO POR RESPONSABILIDADES PARA A CRIAÇÃO DE UM SUBFRAMEWORK PARA VALIDAÇÃO SINTÁTICA DE FÓRMULAS Autores: Rafael Hornung Simone.
Programação Orientada à Objetos
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS EM JAVA
SISTEMAS DISTRIBUIDOS Aula 4
Abr-17 Atividades, Artefatos e Responsáveis da Disciplina de Análise e Projeto Fluxo de análise e projeto.
Design Pattern (Padrões de Projeto)
Aplicações Web com Orientação a Objetos
RUP - Cap. 4 – Processo Centrado na Arquitetura
Padrões de Interação com o Usuário
April 05 Prof. Ismael H. F. Santos - 1 Módulo I Princípios e Padrões de Projeto de SW em Java Professores Eduardo Bezerra –
Padrão de desenvolvimento
April 05 Prof. Ismael H. F. Santos - 1 Modulo I Princípios e Padrões de Projeto de SW em Java Professores Eduardo Bezerra –
© 2007 by Pearson Education ©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reuso de Software.
Padrões de projeto M.Sc. Sílvio Bacalá Jr..
Objetos Distribuídos Frameworks Orientados a Objetos.
Frameworks e Componentes Daniel Fernando Pavelec.
1 - Introdução a Padrões de Projeto
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
PADROES DE PROJETO PROF. OSIEL MARLON. PADRÕES DE PROJETO INTRODUÇÃO Padrões de projeto têm emergido como uma das mais promissoras abordagens para a melhoria.
IF 718 Análise e Projeto de Sistemas Augusto Sampaio Vitor Braga (Estágio docência) Camila Sá (Monitora) Parte do material cedido pela Qualiti Software.
SOA SOA – Arquitetura Orientada a Serviços Conceitos e Aplicações
Processos de Software Ludimila Monjardim Casagrande 1º Semestre Desenvolvimento e Qualidade.
Jadson Xavier Muller Oliveira.  É difícil encontrar alguma definição consensual de padrão.  Definição aceitável: - São idéias que foram úteis em algum.
1 Introdução aos Padrões de Projetos Créditos: Prof. Fabio Kon - IME/USP Adaptações: Prof. Nécio de Lima Veras.
Introdução a Padrões de Projeto Padrões de Projeto Orientado a Objetos Profa. Danielle Martin Universidade de Mogi das Cruzes.
Programação Orienta a Objetos (SI) Análise e Projetos de Sistemas (LCC) 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão.
Padrões de Projeto Aula 12 – Padrão Adapter. PADRÃO ADAPTER Soluções simples para problemas reais! 2.
Transcrição da apresentação:

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 Introdução à Arquitetura J2EE Reuso de Software 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 Introdução a Orientação a Aspectos Conceitos básicos Plataforma JADE Introdução a Orientação a Aspectos AspectJ (Exemplos) © LES/PUC-Rio

Nota Final = (0,25 * TE) + (0,15 * TPP) + (0,5 * TF) +- (0.1 * FP) 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) Trabalho Final (TF) 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 Instrutores lucena@inf.puc-rio.br Ingrid Nunes ingridnunes@les.inf.puc-rio.br Camila Nunes camila@les.inf.puc-rio.br Daniela Brauner dani@les.inf.puc-rio.br Elder Cirilo ecirilo@inf.puc-rio.br Andrew Costa andrew@les.inf.puc-rio.br © 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

07/07 – Divulgação das Notas Finais 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 Atendimento Wiki Grupo Segunda-feira, das 13h às 16h Fundação Padre Leonel Franca - 13o Andar Atendimento Ingrid Nunes (ingridnunes@les.inf.puc-rio.br) Camila Nunes (camila@les.inf.puc-rio.br) Daniela Brauner (dani@les.inf.puc-rio.br) Elder Cirilo (ecirilo@inf.puc-rio.br) Andrew Costa (andrew@les.inf.puc-rio.br) Wiki http://web.teccomm.les.inf.puc-rio.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: pss-puc-rio-20081@yahoogrupos.com.br Entrar no grupo: pss-puc-rio-20081-subscribe@yahoogrupos.com.br © 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 Reuso de Componentes 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 Publicado em 1994 Autores: conhecidos como: 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 Seu sistema Componente A © LES/PUC-Rio

Exemplo: Adapter Pattern Porém o fornecedor do componente A faliu… Você precisa utilizar o componente de outro fornecedor Seu sistema Componente A © 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 Seu sistema Componente B © LES/PUC-Rio

Exemplo: Adapter Pattern Para não correr riscos, você cria um adaptador Interfaces compatíveis Interfaces compatíveis Seu sistema Adaptador Componente B Sem alteração de código Código novo Sem alteração de código © 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” © 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 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 © LES/PUC-Rio

Estrutura de um framework Um framework separa o que é fixo (frozen-spots) do que é variável (hot-spots) Specific Application Code #1 © LES/PUC-Rio

Implementação do Hot-Spot #1 Implementação do Hot-Spot #2 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 Produtos Arquitetura compartilham Componentes construídos por © 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 Motor Diesel Gasolina Tipo de Motor 1.0 1.6 ... Pontos de Variação Variantes © 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 Orientação a Objetos Componentes ... Agentes de Software Tempo © LES/PUC-Rio

O que são Agentes? Inteligência Artificial Engenharia de Software 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