Sumário. Desenho de Software. Arquitectura e Desenho. Objectivos. Engenharia de Software. Caracterização

Tamanho: px
Começar a partir da página:

Download "Sumário. Desenho de Software. Arquitectura e Desenho. Objectivos. Engenharia de Software. Caracterização"

Transcrição

1 Engenharia de Software Desenho de Software António Rito Silva Sumário Caracterização Objectivos Problemas Qualidades Técnicas Avaliação e Validação Casos Notáveis Exemplo Conclusões Desenho de Software 2 Objectivos Desenho é o processo da passagem do espaço do problema para o espaço da solução. À descrição da solução também se chama desenho. O desenho descreve uma solução para o problema que satisfaz os seus requisitos note-se que muitas outras soluções satisfazendo os mesmo requisitos são possíveis Arquitectura e Desenho O processo de desenho deve considerar dois aspectos: Descrever para os clientes o que o sistema faz - Arquitectura de Software Descreve as funções do sistema Está relacionado com os documentos de requisitos Descrever para a equipa de desenvolvimento como o sistema faz - Desenho de Programas Uma descrição dos principais algoritmos As estruturas e os fluxos de dados Desenho de Software 3 Desenho de Software 4

2 Decomposição O processo de desenho usa sempre alguma forma de decomposição. Existem duas estratégias de decomposição: Desenho Funcional em que o estado do sistema está centralizado e é partilhado pelas funções que manipulam esse estado Desenho com Objectos em que o sistema é visto como um conjunto de objectos que encapsulam a informação que manipulam. Os clientes têm usualmente uma visão mais funcional do sistema... Problemas Porquê este desenho? Dado um conjunto de requisitos vários desenhos são possíveis Abordagens top-down versus bottomup Propagação de alterações A evolução do software pode obrigar a um re-desenho Não existe uma única decomposição A tirania da decomposição principal Desenho de Software 5 Desenho de Software 6 Qualidades Independência Coesão Ligação Inteligibilidade Integridade Adaptabilidade Componentes Independentes Um desenho de qualidade facilita o entendimento, a implementação, os testes, as alterações e as adaptações do desenho. Mais ainda, facilita o seguimento dos requisitos no desenho A independência entre componentes é uma qualidade do desenho que permite algumas das propriedades acima Para medir a independência entre componentes usam-se duas medidas: Coesão intra-componente Ligação inter-componentes Desenho de Software 7 Desenho de Software 8

3 Coesão Intra-Componente Um componente é coeso se todos os seus elementos estão envolvidos na satisfação dos objectivos do componente Quando não existe coesão, ao modificar uma determinada função é necessário procurar em todos os componentes as partes relativas à função O tipo de coesão determina a localidade das alterações Coesão de Objecto Cada operação fornece a funcionalidade que permite que os atributos do objecto sejam modificados, inspeccionados e usados, numa base de disponibilização de serviços Desenho de Software 9 Desenho de Software 10 Ligação Inter-Componentes Dois componentes dizem-se fortemente ligados quando existe uma grande dependência entre eles Dois componentes dizem-se fracamente ligados quando existe uma fraca dependência entre eles Dois componentes dizem-se desligados quando são completamente independentes A ligação entre componentes depende de: As referências entre componentes Os dados passados entre componentes O controlo entre componentes O nível de complexidade da interface entre componentes Níveis de Ligação Ligação de Conteúdo verifica-se quando um componente conhece a estrutura interna de outro componente Qualquer alteração interna pode ter repercussões nos restantes componentes Ligação de Partilha verifica-se quando vários componentes partilham um conjunto de dados Todos os componentes dependem da estrutura dos dados partilhados, por exemplo, variáveis globais Desenho de Software 11 Desenho de Software 12

4 Níveis de Ligação Ligação de Controlo verifica-se quando um componente passa parâmetros que controlam a actividade de outro componente O componente controlado não pode funcionar independentemente do componente controlador Ligação de Estrutura verifica-se quando uma estrutura de dados é usada para passar informação entre componentes A formatação e organização dos dados gera uma dependência entre os componentes Ligação de Dados verifica-se quando dados são passados entre componentes Apenas tipos de dados simples são passados Inteligibilidade Influência a inteligibilidade: Coesão e Ligação o componente pode ser entendido sem referir outros componentes Nomes os nomes têm significado e reflectem entidades do espaço do problema e do espaço da solução Documentação a documentação justifica e relaciona o desenho com o espaço do problema Complexidade grau de encapsulamento da complexidade dos algoritmos Desenho de Software 13 Desenho de Software 14 Adaptabilidade A qualidade que determina facilidade de adaptação a novos requisitos Requer: Ligação fraca Abstracções estáveis Self-contained um componente constituído por interfaces fornecidas e interfaces requeridas Técnicas Estilos arquitecturais Desenho funcional Desenho com objectos Padrões de desenho Refactorização do desenho Técnicas de aperfeiçoamento do desenho Desenho de Software 15 Desenho de Software 16

5 Arquitecturas de Software A arquitectura associa os requisitos identificados no sistema com os componentes que os vão implementar Uma arquitectura de software é constituída por dois elementos básicos: Componentes que definem as computações Conectores que descrevem as interacções entre componentes Um estilo arquitectural define uma família de sistemas com o mesmo padrão de organização estrutural: Vocabulário de tipos componente e conector Conjunto de restrições sobre as possíveis combinações de componentes e conectores Desenho de Software 17 Estilos Arquitecturais Camadas Repositórios... Desenho de Software 18 Camadas Criptografia Interface ficheiros Gestão de chaves Autenticação Utilizadores Camadas: Propriedades Vantagens Desenvolvimento incremental pois o desenho possui vários níveis de abstracção Evolução pois a alteração de uma camada apenas vai afectar as camadas imediatamente acima e abaixo Reutilização pois permitem diferentes implementações de uma camada Desvantagens Por vezes é difícil estruturar o problema em níveis de abstracção Problemas de desempenho devido à coordenação entre as camadas Desenho de Software 19 Desenho de Software 20

6 Repositórios Repositórios: Propriedades Aplicação 2 Exemplos Base de dados Aplicação 1 Aplicação 3 Ambientes de desenvolvimento Blackboard Vantagem Repositório (dados partilhados) Constitui uma arquitectura aberta uma vez que a representação dos dados está acessível a diversos fabricantes de componentes Desvantagem Aplicação 6 Aplicação 5 Aplicação 4 Dependência dos dados partilhados pois estes devem estar numa representação aceitável para a todos os componentes Desenho de Software 21 Desenho de Software 22 Desenho Funcional Baseado na decomposição do sistema num conjunto de funções As funções partilham o estado global do sistema que se encontra centralizado As funções podem possuir estado local, mas apenas durante a duração da sua execução Desenho Funcional Os detalhes dos algoritmos estão nas funções mas o estado não está escondido pelo que: A alteração do estado global por uma função pode ter efeitos colaterais com um impacto indesejável noutras funções As funções têm mais tendência a serem alteradas que os dados Desenho de Software 23 Desenho de Software 24

7 Desenho com Objectos Princípios Encapsulação restrição no acesso à representação interna Abstracção eliminação do irrelevante e amplificação do essencial Modularidade construção à custa de elementos de menor granularidade Desenho com Objectos Primitivas Objecto agrega os dados e as operações que os manipulam Classe especifica um conjunto de objectos, a sua interface, estrutura e implementação Herança uma classe pode ser definida como extensão ou restrição de outra Polimorfismo uma variável pode, em tempo de execução, referir objectos de classes diferentes Desenho de Software 25 Desenho de Software 26 Desenho com Objectos Objectivos o resultado final do desenvolvimento deve ter as seguintes qualidades: Reutilização capacidade de ser reutilizado parcialmente ou como um todo noutros programas Extensibilidade facilidade de adaptação às alterações de especificação de modo a se alcançar o princípio do Aberto/Fechado Desenho com Objectos Herança versus Delegação reutilização white-box versus black-box estática (tempo de compilação) versus dinâmica (tempo de execução) encapsulação número de objectos Desenho de Software 27 Desenho de Software 28

8 Padrões de Desenho Verifica-se que: Existem problemas que ocorrem recorrentemente É possível identificar classes de soluções As soluções reflectem as forças em conflito Não existem soluções óptimas Padrões de Desenho Considere-se o jogo de xadrez. Para se ser um bom jogador de xadrez é necessário: Aprender os movimentos permitidos, como termina o jogo,... (primitivas) Saber que se deve ocupar centro do tabuleiro (princípios) Estudar os jogos dos grandes mestres (padrões) Desenho de Software 29 Desenho de Software 30 Padrões de Desenho Os padrões descrevem uma cultura de desenvolvimento de programas, permitindo desta forma a reutilização de conhecimento Descrevem soluções que evoluíram ao longo do tempo Têm como motivação inicial o trabalho do arquitecto Christopher Alexander Padrões de Desenho Os padrões capturam a essência das soluções bem sucedidas aos problemas que recorrentemente surgem quando se desenvolvem programas Para além da solução, os padrões descrevem o problema e o contexto em que o problema surge Desenho de Software 31 Desenho de Software 32

9 Padrões de Desenho Propriedades capturam o conhecimento da experiência fornecem um vocabulário e conhecimento comuns estimulam a reutilização de conhecimento são os blocos de construção de uma arquitectura fornecem um esquema pré-definido para implementação, descrevendo as suas partes, as suas colaborações e responsabilidades identificam e dão nome a abstracções que estão acima das classes e das instâncias documentam a arquitectura dos programas Padrão de Desenho Proxy Providenciar um representante ou substituto (Proxy) para um objecto com vista a controlar o acesso ao objecto quando o objecto não pode ser acedido pelos meios normais O objecto real: realiza o trabalho fica escondido pelo Proxy Desenho de Software 33 Desenho de Software 34 Motivação Uma razão para controlar o acesso a um objecto é adiar o custo total de criação e inicialização, até ao momento em que é realmente necessário utilizar esse objecto Exemplo Editor de documentos que permite ter objectos gráficos embebidos nos documentos Restrições: objectos gráficos podem ser imagens grandes dispendiosas de criar a abertura de um documento deve ser rápida deve-se evitar criar todos os objectos na abertura Solução: criar os objectos dispendiosos apenas por pedido (on demand), ou seja, apenas quando a imagem se torna visível Desenho de Software 35 Desenho de Software 36

10 Problemas da Solução O que colocar no documento em substituição da imagem real? Como esconder o facto da imagem ser criada por pedido para não complicar a implementação do editor? Solução: Proxy de Imagem Usar outro objecto: um Proxy de imagem O Proxy actua como substituto da imagem real Desenho de Software 37 Desenho de Software 38 Proxy de Imagem O Proxy de imagem é responsável por: criar a imagem real quando o editor pede para a exibir, invocando a operação de desenho (Draw) enviar pedidos subsequentes directamente para a imagem. Para tal, mantém uma referência para a imagem real responder a pedidos relativos ao tamanho, sem ter que instanciar a imagem. Por esse motivo, guarda o tamanho da imagem (altura e largura) Diagrama de Classes Desenho de Software 39 Desenho de Software 40

11 Aplicabilidade Sempre que houver necessidade de ter uma referência mais versátil e sofisticada para um objecto do que um simples ponteiro Situações comuns: Proxy remoto - providencia um representante local de um objecto que se encontra num espaço de endereçamento diferente Proxy virtual - cria objectos dispendiosos apenas por pedido Proxy de protecção - controla o acesso ao objecto original Smart Reference - é um substituto de um ponteiro básico que, executa acções adicionais, quando o objecto é acedido Desenho de Software 41 Forças Substituir um objecto por um Proxy, ou vice-versa, deve ser transparente Desenho de Software 42 Estrutura Subject (Graphic) Participações define uma interface comum para o RealSubject e o Proxy. Desta forma, o Proxy pode ser usado sempre que é esperado o RealSubject Proxy (ImageProxy) mantém uma referência que lhe permite aceder ao objecto real (RealSubject) fornece uma interface idêntica ao Subject, para que o Proxy possa ser substituído pelo RealSubject controla o acesso ao objecto real e pode ser responsável pela sua criação e destruição Desenho de Software 43 Desenho de Software 44

12 Participações/Colaborações RealSubject (Image) define o objecto real que o Proxy representa Colaborações Proxy envia pedidos ao RealSubject quando apropriado depende do tipo de Proxy Consequências Introduz um nível de indirecção no acesso a um objecto A indirecção tem muitas utilizações: Proxy remoto permite esconder o facto do objecto residir num espaço de endereçamento distinto Proxy virtual permite executar optimizações como a criação de um objecto por pedido Proxy de protecção e Smart References permite a execução de tarefas adicionais de arrumação (housekeeping), quando o objecto é acedido Desenho de Software 45 Desenho de Software 46 Consequências Geralmente, os objectos reais não acedem aos seus Proxies Como o Proxy e o objecto têm a mesma interface, podem ser facilmente substituídos um pelo outro Refactorização do Desenho Desenvolver programas úteis hoje e reutilizáveis amanhã Prototipar na primeira passagem Expandir o protótipo inicial Consolidar Construir agregações a partir de herança Criar super-classes abstractas Criar classe vazia Criar variável de instância Desenho de Software 47 Desenho de Software 48

13 Prototipar na Primeira Passagem Contexto Resolver inicialmente o problema Obter resultados, ainda que parciais, rapidamente Problema Não se constróem programas a partir do zero É difícil saber com exactidão quais são os requisitos É difícil desenhar imediatamente um programa que resolve os requisitos e está preparado para resistir à mudança Prototipar na Primeira Passagem Solução O desenho inicial deve resolver os requisitos conhecidos Os programas devem crescer não serem construídos Utilizar programas existentes Programar por diferença Estratégias Substantivos implicam objectos, verbos implicam operações Reutilizar objectos existentes por herança Correr agora, e melhorar mais tarde Evitar generalidade prematura Desenho de Software 49 Desenho de Software 50 Expandir o Protótipo Inicial Contexto Programas bem sucedidos raramente são estáticos mas terão que evoluir Problema O programa é aplicado em novas situações, pelo que é necessário proceder a alterações As alterações levam à diminuição da qualidade do programa: estrutura e inteligibilidade. Expandir o Protótipo Inicial Solução Localizar as alterações em novas subclasses Resulta uma hierarquia que modela uma história de alterações Estratégias Derivar de código existente em vez de o modificar Reutilizar objectos existentes por herança Correr agora, e melhorar mais tarde Evitar generalidade prematura Desenho de Software 51 Desenho de Software 52

14 Contexto Consolidar À medida que os objectos evoluem começa-se a esclarecer como é que se pode melhorar o desenho Problema Programas reutilizáveis raramente surgem após uma primeira etapa de análise Objectos têm a capacidade de se alterar de forma controlada: novas funcionalidades e melhorar a qualidade Variações encontram-se nas folhas da hierarquia Solução Refactorizar o programa Aumentar a generalidade e integridade estrutural dos objectos Agregações a Partir de Herança Contexto A hierarquia de classes que surge após a prototipagem e expansão possui as funcionalidades necessárias mas não é elegante nem reutilizável Devem ser seguidos os seguintes princípios de desenho: Factorizar diferentes implementações em subcomponentes Separar métodos que não comunicam Enviar mensagens para componentes em vez de para this Desenho de Software 53 Desenho de Software 54 Agregações a Partir de Herança Problema A herança é utilizada extensivamente nas fases de prototipagem e expansão pois: A herança é suportada ao nível da linguagem Não é claro se um relacionamento é is-a ou has-a até que as subclasses se tornem mais estáveis A herança facilita a partilha de operações e variáveis, white box, possibilitando obter rapidamente resultados Agregações a Partir de Herança Solução Factorizar parte de uma classe numa nova classe. Suponha-se que A é uma subclasse de C: Adicionar uma instância de C como variável de instância de A Mudar as referências para as variáveis e funções herdadas de C por referências para a variável de instância Retirar a relação de herança entre A e C Desenho de Software 55 Desenho de Software 56

15 Agregações a Partir de Herança Consequências A transformação de herança em agregação tem alguns benefícios: A coesão e a capsulação podem ser melhoradas por se dividir uma classe em duas Agregados podem mudar as sua componentes em tempo de execução explorando o polimorfismo Classes separadas podem ser reutilizadas e evoluir de forma independente Um agregado pode ter mais do que uma instância de um dado componente Criar Super-Classes Abstractas Contexto A hierarquia de classes que surge após a prototipagem e expansão possui as funcionalidades necessárias mas não é elegante nem reutilizável Devem ser seguidos os seguintes princípios de desenho: Hierarquias de classes devem ser profundas O topo da hierarquia de classes deve abstracto Subclasses devem ser especializações Desenho de Software 57 Desenho de Software 58 Criar Super-Classes Abstractas Problema A mesma abstracção pode surgir em diferentes partes do programa pois: Uma prática comum é estender um programa por cópia e alteração Diferentes membros da equipa podem implementar a mesma funcionalidade Solução Suponha-se que as classes C1 e C2 partilham uma abstracção: Adicionar uma nova classe A1 Fazer A1 super-classe de C1 e C2 Determinar o comportamento comum a C1 e C2 Alterar C1 e C2 de modo a que a implementação da sua parte comum seja a mesma Mover as funções comuns para A1 e apagar de C1 e C2 Desenho de Software 59 Criar Super-Classes Abstractas Consequências A consolidação de abstracções tem os seguintes benefícios: Reduz o tamanho do programa A separação de abstracções melhora a inteligibilidade e a reutilização Limita a propagação de erros no código, devido a haver menos cópia Desenho de Software 60

16 Introduzir Objecto Null Técnica de re-factorização para substituir muitas ocorrências de if (customer == null) plan = BillingPan.basic(); else plan = customer.getplan(); por plan = customer.getplan(); Desenho da Solução Desenho de Software 61 Desenho de Software 62 Procedimento 1. Criar uma subclasse da classe original e introduzir o comportamento nulo 1. Criar a operação isnull() em ambas as classes (retorna true apenas na subclasse) 2. Compilar 3. Em todos os locais onde se retorna um null deve-se passar a retornar o objecto null 4. Em todos os locais que comparam uma variável da classe original com null substituir com uma invocação a isnull() 5. Compilar e testar Procedimento 6. Identificar todos os casos em que se invoca uma operação se o objecto for diferente de null e se executa um comportamento alternativo se for null 7. Para cada um dos casos identificados acima redefine-se a operação da classe null com o comportamento alternativo 8. Remover a condição de verificação para cada caso em que se usa o comportamento 9. Compilar e testar Desenho de Software 63 Desenho de Software 64

17 class Site... Customer getcustomer() { return _customer; } Customer _customer; Exemplo class Customer... public String getname() {...} public BillingPan getplan() {...} public PaymentHistory gethistory() {...} public class PaymentHistory... int getweeksdelinquentinlastyear() String customername; if (customer == null) customername = occupant ; else customername = customer.getname(); Exemplo class NullCustomer extend Customer { public boolean isnull() { return true; } } class Customer... public boolean isnull() { return false; } protected Customer() {} // clients do need to not know about null class static Customer newnull() { return new NullCustomer(); } COMPILE AND TEST Desenho de Software 65 Desenho de Software 66 Exemplo class Site... Customer getcustomer() { return (_customer == null)? Customer.newNull(): _customer; } Customer customer = site.getcustomer(); BillingPlan plan; if (customer.isnull()) plan = BillingPlan.basic(); else plan = customer.getplan(); String customername; if (customer.isnull()) customername = occupant ; else customername = customer.getname(); Exemplo class NullCustomer... public String getname() { return occupant ; } public Plan getplan() { return BillingPlan.basic(); } String customername = customer.getname(); Plan customerplan() = customer.getplan(); COMPILE AND TEST COMPILE AND TEST Desenho de Software 67 Desenho de Software 68

18 Aperfeiçoamento do Desenho Desenho por contrato Protótipos de desenho Desenho por Contrato Utiliza-se a técnica de desenho por contrato para assegurar que o desenho satisfaz a sua especificação Um componente, dito cliente, que necessita dos serviços de outro componente, dito fornecedor, pelo qual celebram um contrato que especifica: as obrigações mútuas, chamados de pré-condições os benefícios, chamados de pós-condições as restrições de coerência, chamadas de invariantes Facilitam o desenvolvimento separado, a reutilização, os testes, a verificação da coerência entre as cláusulas, a verificação da correcção da implementação, documentam o desenho,... Desenho de Software 69 Desenho de Software 70 fill is require in_valve.open out_valve.closed... code... ensure in_valve.closed out_valve.closed is_full end Desenho por Contrato invariant is_full = (0.95 * capacity < gauge ) and (gauge <= 1.05 * capacity) Protótipos de Desenho Permitem verificar se a solução de desenho vai de facto resolver o problema O protótipo deve focar apenas no aspecto de desenho sobre o qual existem dúvidas Frequentemente são descartáveis Desenho de Software 71 Desenho de Software 72

19 Validação e Verificação Validação certificar se o desenho satisfaz todos os requisitos do utilizador Verificação certificar se a solução incorpora as qualidades de desenho requeridas Existem várias técnicas: Validação Matemática pode ser difícil mas muito útil para alguns aspectos críticos Métricas de Desenho permitem quantificar a qualidade Comparação de Desenhos para avaliar os compromissos Métricas de Desenho Não se pode gerir aquilo que não se controla e não se pode controlar aquilo que não se consegue medir. Tom DeMarco As seguintes métricas propostas por Robert Martin medem a qualidade do desenho com objectos. Considera módulos reutilizáveis de componentes: Ligação de Fora/Dentro (LFD): número de classes de fora do módulo que dependem de classes de dentro do módulo Ligação de Dentro/Fora (LDF): número de classes de dentro do módulo que dependem de classes fora do módulo Instabilidade (I): I = LDF / (LFD + LDF), I=0 indica estabilidade e I=1 indica instabilidade do módulo Desenho de Software 73 Desenho de Software 74 Métricas de Desenho Princípio do Aberto/Fechado Um sistema não pode ter todos os módulos estáveis Um módulo deve ser aberto à extensão e fechado à modificação Desta forma, os módulos estáveis devem ser muito abstractos enquanto que os módulos instáveis devem ser muito concretos Uma medida de abstracção: Abstracção (A): A = número de classes abstractas do módulo / número total de classes do módulo, A=0 significa que é concreto e A=1 que é abstracto Métricas de Desenho É desejável que os módulos estejam próximos da sequência principal Distância (D): D = (A+I-1) / 2 1 abstracção (0,1) sequência principal instabilidade 1 (1,0) Desenho de Software 75 Desenho de Software 76

20 Comparação de Desenhos Uma especificação possibilita muitos desenhos Deve-se construir diversas soluções para o problema usando diferentes estilos arquitecturais Decidir qual o melhor desenho para os objectivos do sistema Tabelas de comparação definem para cada atributo de qualidade se um particular estilo arquitectural o suporta ou não Tabela de pesos indica qual a prioridade que cada atributo de qualidade tem para o sistema a desenvolver, permite calcular um valor para cada estilo arquitectural Documentação do Desenho Devem ser apresentadas quais as razões do desenho que indiquem os aspectos críticos e os compromissos da solução Utilizar as notações necessárias para exprimir o desenho e as suas propriedades, por exemplo, UML Desenho de Software 77 Desenho de Software 78

Padrões de Desenho. Padrões de Desenho

Padrões de Desenho. Padrões de Desenho Padrões de Desenho Motivação inicial trabalho do arquitecto Christopher Alexander A Pattern Language publicado em 1997 Descreveu o uso de padrões em edifícios e áreas urbanas Definiu o conceito de padrão

Leia mais

Desenho de Software. Sumário

Desenho de Software. Sumário (QJHQKDULDGD3URJUDPDomR Desenho de Software Carla Ferreira Carla.Ferreira@dei.ist.utl.pt Sumário Objectivos Problemas Qualidades Técnicas Avaliação e Validação Casos Notáveis Exemplo Conclusões Desenho

Leia mais

ARQUITETURA E DESENHO

ARQUITETURA E DESENHO ARQUITETURA E DESENHO DE SOFTWARE CMP 1063 Prof. Me. Fábio Assunção Parte 2 DESENHO DE SOFTWARE Espaço do problema Espaço da solução. Interpretação não literal. Orientação à escrita. Orientação à diagramação.

Leia mais

Engenharia da Programação 2003/2004

Engenharia da Programação 2003/2004 Instituto Superior Técnico Engenharia da Programação 2003/2004 Primeiro Teste 31/10/2003 Número: Turma: Nome: Escreva o seu número em todas as folhas do teste. O tamanho das respostas deve ser limitado

Leia mais

Definição. Arquitecturas de Software. Modelo de Referência. Estilo Arquitectural. Arquitecturas de Software

Definição. Arquitecturas de Software. Modelo de Referência. Estilo Arquitectural. Arquitecturas de Software Arquitecturas de Software Arquitecturas de Software António Rito Silva Rito.Silva@inesc-id.pt Definição A arquitectura de software de um programa ou sistema computacional é a estrutura ou estruturas do

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro Programação Orientada a Objetos 1.1 - Perspectiva histórica: Conceitos A evolução das linguagens de programação tem-se feito na procura de ferramentas: -cada vez mais próximas da percepção humana - e que

Leia mais

Engenharia de Software

Engenharia de Software UNIVERSIDADE DE LISBOA INSTITUTO SUPERIOR TÉCNICO Engenharia de Software LEIC/LETI, 3 o Ano, 2 o Semestre 2 o Teste, 8 de Junho de 2016 Nome: Número: Este teste tem um conjunto de 10 perguntas de escolha

Leia mais

INF011 Padrões de Projeto. 15 Proxy

INF011 Padrões de Projeto. 15 Proxy INF011 Padrões de Projeto 15 Proxy Sandro Santos Andrade sandroandrade@ifba.edu.br Instituto Federal de Educação, Ciência e Tecnologia da Bahia Departamento de Tecnologia Eletro-Eletrônica Graduação Tecnológica

Leia mais

Modelo do Mundo Real. Abstração. Interpretação

Modelo do Mundo Real. Abstração. Interpretação Modelo do Mundo Real Mundo Real Abstração Interpretação Sistema de Software Modelo Algoritmo Abstração: O modelo precisa capturar apenas as características do mundo real que são importantes para o sistema

Leia mais

Desenho de Software. António Rito Silva - João Pereira

Desenho de Software. António Rito Silva - João Pereira Desenho de Software António Rito Silva - Rito.Silva@ist.utl.pt João Pereira Joao@inesc-id.pt Sumário Caracterização Objectivos Problemas Qualidades Técnicas Avaliação e Validação Casos Notáveis Exemplo

Leia mais

Engenharia de Software

Engenharia de Software Engenharia de Software Design Principles Representando SW em UML OO em C Pattens úteis para embedded Rodrigo M A Almeida Design Principles Design Principles são guias para decompor as funcionalidades e

Leia mais

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto Suporte para Programação Orientada a Objeto Cristiano Lehrer Categoria das Linguagens que Suportam POO Suporte a POO acrescentado a uma linguagem já existente: C++ (também suporta programação procedural

Leia mais

Projeto Orientado a Objetos

Projeto Orientado a Objetos Projeto Orientado a Objetos Conjunto de atividades que têm como objetivo a criação de um modelo orientado a objetos de um sistema de software de acordo com os requisitos especificados Estratégia geral

Leia mais

Diagramas de Classe. Sumário. Introdução aos Diagramas de Classe

Diagramas de Classe. Sumário. Introdução aos Diagramas de Classe 38 Diagramas de Classe Sumário Introdução aos Diagramas de Classe Notação base Classes Níveis de modelação Relações entre as classes Decorações Extensões 39 Génese Use Cases Permitem modelar a captura

Leia mais

Os diagramas de use case capturam os requisitos funcionais do sistema.

Os diagramas de use case capturam os requisitos funcionais do sistema. 109/166 Diagramas de Classe Sumário Colaborações Orientação aos Objectos Diagramas de Classe I conceitos base Diagramas de Classe II conceitos avançados Relações conceitos avançados Diagramas de objectos

Leia mais

Padrões de Projeto. Padrões de Projeto. Além dos 23 Padrões GoF. Os 23 Padrões de Projeto. Documentação de um Padrão. Classificação dos Padrões

Padrões de Projeto. Padrões de Projeto. Além dos 23 Padrões GoF. Os 23 Padrões de Projeto. Documentação de um Padrão. Classificação dos Padrões DCC / ICEx / UFMG Padrões de Projeto Padrões de Projeto Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Um padrão é uma descrição do problema e a essência da sua solução Documenta boas soluções para

Leia mais

PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO. Projeto de Programas PPR0001

PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO. Projeto de Programas PPR0001 PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO Projeto de Programas PPR0001 QUALIDADE DO PROJETO 2 3 Qualidade do Projeto de Software Modularidade: gerar particionamento em elementos que executam funções

Leia mais

4 Conceito de Herança

4 Conceito de Herança 4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança

Leia mais

Qualidade. Ana Madureira

Qualidade. Ana Madureira Qualidade Ana Madureira Qualidade da Informação A qualidade de uma informação é apreciada em função da sua pertinência (adaptação às necessidades do sistema de gestão). Três características permitem medir

Leia mais

Diagramas de Package

Diagramas de Package 190 Diagramas de Package À medida que os sistemas software se tornam mais complexos e o número de classes aumenta: Torna-se difícil efectuar a gestão das diversas classes A identificação de uma classe

Leia mais

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 15 PROFª BRUNO CALEGARO

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 15 PROFª BRUNO CALEGARO UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 15 PROFª BRUNO CALEGARO Santa Maria, 08 de Novembro de 2013. Contextualização Nas próximas aula iremos começar a modelar e projetar sistemas

Leia mais

Web Presentation Patterns - Controllers

Web Presentation Patterns - Controllers Instituto Superior Técnico 29 de Novembro de 2004 1 2 3 Page Controller Front Controller 4 5 Porquê Usar Web Applications Não necessita instalar software no cliente. Acesso universal fácil. Interface comum

Leia mais

Estilo: BlackBoard. BlackBoard = repositório de dados compartilhados

Estilo: BlackBoard. BlackBoard = repositório de dados compartilhados Estilo: BlackBoard Útil para problemas no qual não há uma solução determinística Uma coleção de programas independentes que trabalham cooperativamente em uma estrutura de dados comum (blackboard) Vários

Leia mais

GRASP. Nazareno Andrade (baseado em Hyggo Almeida e Jacques Sauvé)

GRASP. Nazareno Andrade (baseado em Hyggo Almeida e Jacques Sauvé) GRASP Nazareno Andrade (baseado em Hyggo Almeida e Jacques Sauvé) O que vimos na última aula? Introdução a padrões O que são? Por que utilizá-los? Padrões GRASP O que são? Quais serão apresentados na disciplina?

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Curso Profissional de Gestão e Programação de Sistemas Informáticos Disciplina: Programação e Sistemas de Informação Programação Orientada a Objetos Módulos 9/10/11 POO 2016/2017 História A OO surgiu no

Leia mais

Visões Arquiteturais. Visões Arquiteturais

Visões Arquiteturais. Visões Arquiteturais Visões Arquiteturais Separar diferentes aspectos em visões separadas com o objetivo de gerenciar complexidade. Cada visão descreve diferentes conceitos da Engenharia. Visões permitem reduzir a quantidade

Leia mais

A modelagem é tida como a parte central de todas as atividades para a construção de um bom sistema, com ela podemos:

A modelagem é tida como a parte central de todas as atividades para a construção de um bom sistema, com ela podemos: Módulo 6 Análise Orientada a Objeto É interessante observar como a análise orientada a objeto utiliza conceitos que aprendemos há muito tempo: objetos, atributos, classes, membros, todos e partes. Só não

Leia mais

Sumário. Processo de Desenvolvimento. Objectivos. Problemas. Engenharia de Software. Caracterização. Técnicas Avaliação e Validação Exemplo Conclusões

Sumário. Processo de Desenvolvimento. Objectivos. Problemas. Engenharia de Software. Caracterização. Técnicas Avaliação e Validação Exemplo Conclusões Engenharia de Software Processo de Desenvolvimento António Rito Silva Rito.Silva@inesc-id.pt Sumário Caracterização Objectivos Problemas Qualidades Técnicas Avaliação e Validação Exemplo Conclusões Processo

Leia mais

Padrões de Projeto de Software

Padrões de Projeto de Software Padrões de Projeto de Software Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático Padrões Básicos Information Expert Creator High Cohesion Low Coupling Controller Padrões Avançados

Leia mais

Conceitos de Programação Orientada por Objectos. Rui Camacho Programação 2

Conceitos de Programação Orientada por Objectos. Rui Camacho Programação 2 Conceitos de Programação Orientada por Objectos Um Problema Problema: Existem, hoje em dia, aplicações complexas e de grande dimensão que é preciso desenvolver e manter de modo eficiente utilizando equipas

Leia mais

Engenharia de Software

Engenharia de Software UNIVERSIDADE DE LISBOA INSTITUTO SUPERIOR TÉCNICO Engenharia de Software LEIC/LETI, 3 o Ano, 2 o Semestre Repescagem do 2 o Teste, 1 de Julho de 2016 Nome: Número: Este teste tem um conjunto de 10 perguntas

Leia mais

Processos de software

Processos de software Processos de software 1 Processos de software Conjunto coerente de atividades para especificação, projeto, implementação e teste de sistemas de software. 2 Objetivos Introduzir modelos de processos de

Leia mais

Programação Orientada a Objetos 2 Flávio de Oliveira Silva, M.Sc.

Programação Orientada a Objetos 2 Flávio de Oliveira Silva, M.Sc. Orientação a Objetos Revisão Conceitos CLASSE CLASSIFICAÇÃO GENERALIZAÇÃO ESPECIALIZAÇÃO HERANÇA INTERFACES POLIMORFISMO SOBRECARGA ENCAPSULAMENTO ABSTRAÇÃO MODULARIZAÇÃO 9 CLASSE Classe é um agrupamento

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação 4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança

Leia mais

Introdução à Análise e Projeto de Sistemas

Introdução à Análise e Projeto de Sistemas Introdução à I. O Que vamos fazer na Disciplina? Saber uma linguagem de programação orientada a objeto (OO) não é suficiente para criar sistemas OO Tem que saber Análise e Projeto OO (APOO) Isto é, Análise

Leia mais

Engenharia de Software

Engenharia de Software Sumário Engenharia de Software Modelos de desenvolvimento de software Fases de desenvolvimento Programação modular Abordagem top-down e bottom-up Linguagens de programação: Compilação / Interpretação Aplicação

Leia mais

Laboratório de programação II

Laboratório de programação II Laboratório de programação II Herança e Polimorfismo Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Herança Mecanismo da Orientação a Objeto que permite criar novas classes aproveitando

Leia mais

UML (Unified Modelling Language)

UML (Unified Modelling Language) UML (Unified Modelling Language) Curso de Especialização DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior Referências: Booch, G. et al. The Unified Modeling Language User Guide

Leia mais

Diagramas de Use Case Resumo

Diagramas de Use Case Resumo 0 Diagramas de Use Case Resumo Os diagramas de Use Case permitem definir os requisitos funcionais de um sistema: que serviços deve fornecer; a quem os deve fornecer. Notação diagramática facilita o diálogo

Leia mais

Conceitos de Programação Orientada a Objetos

Conceitos de Programação Orientada a Objetos Conceitos de Programação Orientada a Objetos Tatyana Bitencourt Com as técnicas de orientação a objeto, é possível obter resultados considerados impossíveis pensando de maneira estruturada. Como Java não

Leia mais

Engenharia da Programação

Engenharia da Programação Engenharia da Programação LEIC 4º ano, 1º Semestre, ano lectivo de 2002-03 2º Exame (o exame é composto por 10 perguntas (1-10) cotadas com 1 valor cada) Data: 8 de Fevereiro de 2003 Duração Exame: 1h30

Leia mais

Visões Arquiteturais. Visões Arquiteturais. Visões Arquiteturais. Visão Conceitual

Visões Arquiteturais. Visões Arquiteturais. Visões Arquiteturais. Visão Conceitual Visões Arquiteturais Separar diferentes aspectos em visões separadas com o objetivo de gerenciar complexidade. Cada visão descreve diferentes conceitos da Engenharia. Visões permitem reduzir a quantidade

Leia mais

Engenharia de Software 2006/2007

Engenharia de Software 2006/2007 Instituto Superior Técnico Engenharia de Software 2006/2007 Segundo Teste (perguntas 5-10, 70 minutos) Primeiro Exame (perguntas 1-10, 120 minutos) 29/6/2007 Nome: Número: Escreva o seu número em todas

Leia mais

BCC Engenharia de Software Professor Rodrigo Andrade

BCC Engenharia de Software Professor Rodrigo Andrade BCC Engenharia de Software 2017.1 Professor Rodrigo Andrade Aula Passada Implementação, Manutenção e Execução dos testes Implementação e Manutenção de Funcionalidades Qualidade de código visão caixa preta

Leia mais

Desenho. Indice. 1. Introdução. 2. Definição da Arquitectura. 3. Interfaces e desenho da Arquitectura

Desenho. Indice. 1. Introdução. 2. Definição da Arquitectura. 3. Interfaces e desenho da Arquitectura Desenho Patrícia Macedo Joaquim Filipe João Ascenso Engenharia de Software 2005/2006 EST, Setúbal Indice 1. Introdução 2. Definição da Arquitectura 3. s e desenho da Arquitectura Engenharia de Software

Leia mais

3.1 Reflexão Computacional

3.1 Reflexão Computacional 3 Adaptação Dinâmica Adaptação dinâmica é a capacidade de um sistema ser modificado durante sua execução para se adequar a novas necessidades. Recentemente, esse tem se tornado um tópico de pesquisa proeminente

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. JAVA6 e Programação Orientada Pelos Objectos, F. Mário Martins, FCA, Julho de 2009.

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. JAVA6 e Programação Orientada Pelos Objectos, F. Mário Martins, FCA, Julho de 2009. JAVA6 e Programação Orientada Pelos Objectos, F. Mário Martins, FCA, Julho de 2009. Thinking in Java, 4 th Edition, Bruce Eckel. 1 1 - Introdução 1.1 - Perspectiva histórica: Conceitos A evolução das linguagens

Leia mais

Programação por Objectos Introdução. Introdução 1/18

Programação por Objectos Introdução. Introdução 1/18 Programação por Objectos Introdução LEEC@IST Introdução 1/18 História (1) [60s] Simula-67, Dahl e Nygaard da Univ. de Oslo Primeira linguagem com conceitos OO. [70s] Smalltalk, da Xerox Primeira implementação

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro Programação Orientada a Objetos 1.1 - Perspectiva histórica: Conceitos A evolução das linguagens de programação tem-se feito na procura de ferramentas: -cada vez mais próximas da percepção humana - e que

Leia mais

Engenharia de Software. Projeto de Arquitetura

Engenharia de Software. Projeto de Arquitetura Engenharia de Software Projeto de Arquitetura O que já vimos? Introdução a Engenharia de Software Processos de Software Desenvolvimento Ágil de Software Engenharia de Requisitos Modelagem de sistemas (outra

Leia mais

CONCEITOS BÁSICOS E MODELO DE PROJETO

CONCEITOS BÁSICOS E MODELO DE PROJETO CONCEITOS BÁSICOS E MODELO DE PROJETO Projeto Detalhado de Software (PDS) Profa. Cynthia Pinheiro Na aula passada... Abstração Arquitetura Padrões de Projeto Separação por interesses (por afinidades) Modularidade

Leia mais

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática 1 - Introdução 1.1 - Perspectiva histórica: Conceitos A evolução das linguagens de programação tem-se feito na procura de ferramentas: - cada vez mais próximas da percepção humana - e que permitam lidar

Leia mais

Sumário. Engenharia de Requisitos. Definição de Requisito. Objectivos. Engenharia de Software. Caracterização Objectivos Problemas Qualidades

Sumário. Engenharia de Requisitos. Definição de Requisito. Objectivos. Engenharia de Software. Caracterização Objectivos Problemas Qualidades Engenharia de Software Engenharia de Requisitos António Rito Silva Rito.Silva@inesc-id.pt Sumário Caracterização Objectivos Problemas Qualidades Factores Não-Técnicos Técnicas Avaliação e Validação Casos

Leia mais

3 Medição de Software

3 Medição de Software 3 Medição de Software À medida que a engenharia de software amadurece, a medição de software passa a desempenhar um papel cada vez mais importante no entendimento e controle das práticas e produtos do

Leia mais

Sumário. Escrita de Programas. Qualidades. Objectivos. Engenharia de Software. Caracterização. Técnicas Casos Notáveis Conclusões

Sumário. Escrita de Programas. Qualidades. Objectivos. Engenharia de Software. Caracterização. Técnicas Casos Notáveis Conclusões Engenharia de Software Escrita de Programas António Rito Silva Rito.Silva@inesc-id.pt Sumário Caracterização Objectivos Qualidades Técnicas Casos Notáveis Conclusões Escrita de Programas 2 Objectivos O

Leia mais

Notas de Aula 03: Introdução a Orientação a Objetos e a UML

Notas de Aula 03: Introdução a Orientação a Objetos e a UML Notas de Aula 03: Introdução a Orientação a Objetos e a UML Objetivos da aula: Introduzir os conceitos da Orientação à Objetos (O.O) Introduzir os conceitos da UML Relacionar os processos às ferramentas

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador) Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça Problema: Definir uma dependência um-para-muitos entre objetos, de forma quando o estado

Leia mais

Mo#vação. Objec#vo. Estudar uma abordagem de desenvolvimento de so9ware orientada pelos objectos. Linguagens usadas: UML (Unified Modeling Language)

Mo#vação. Objec#vo. Estudar uma abordagem de desenvolvimento de so9ware orientada pelos objectos. Linguagens usadas: UML (Unified Modeling Language) Mo#vação Esta disciplina mostra como construir um bom alicerce para desenvolver so9ware orientado pelos objectos Ensina técnicas de análise e desenho para ajudar a produzir so9ware orientado pelos objectos

Leia mais

Classes e Objetos. Sintaxe de classe em Java

Classes e Objetos. Sintaxe de classe em Java Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação Solução do Segundo Teste 23 de Janeiro de 2012 09:00 10:30 Nome: Número: 1. (1.0) Explique em que consiste a abstracção de dados, usando os termos barreiras de abstracção, encapsulação

Leia mais

BASES DE DADOS I LTSI/2. Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011

BASES DE DADOS I LTSI/2. Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011 BASES DE DADOS I LTSI/2 Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011 Conceitos Introdutórios Dados versus Informação A informação é actualmente encarada como

Leia mais

Bases de Dados. Parte I: Conceitos Básicos

Bases de Dados. Parte I: Conceitos Básicos Bases de Dados Parte I Conceitos Básicos 1 Definições Básicas Dados: factos conhecidos que têm algum significado e que podem ser guardados. Base de dados (BD): conjunto de dados que se relacionam entre

Leia mais

Motivação. Estrutura de Dados. Motivação. Motivação. Por que estudar os tipos de dados? Duas são as principais preocupações em um projeto de software

Motivação. Estrutura de Dados. Motivação. Motivação. Por que estudar os tipos de dados? Duas são as principais preocupações em um projeto de software Estrutura de Dados Aula 01 -Tipos Abstratos de de Dados Prof. Ms. Luiz Alberto Contato: lasf.bel@gmail.com Motivação Por que estudar os tipos de dados? Duas são as principais preocupações em um projeto

Leia mais

Escrita de Programas. António Rito Silva

Escrita de Programas. António Rito Silva Escrita de Programas António Rito Silva Rito.Silva@inesc-id.pt Sumário Caracterização Objectivos Qualidades Técnicas Casos Notáveis Conclusões Escrita de Programas 2 Objectivos O desenho pode não ter abordado

Leia mais

Manutenção Leitura: Sommerville; Pressman

Manutenção Leitura: Sommerville; Pressman Manutenção Leitura: Sommerville; Pressman Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 1 Manutenção de software É modificar um programa depois que ele

Leia mais

" ##$#$!% # & #$#$ !!!!"!

 ##$#$!% # & #$#$ !!!!! " ##$#$!% # & #$#$ Abstract Factory, Builder, Singleton, Factory Method, Prototype, Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy, Chain of Responsability, Command, Interpreter, Iterator,

Leia mais

Complexidade do Software

Complexidade do Software Complexidade do Software Sistemas de software são complicados Os requisitos modernos tendem a complicálo cada vez mais: Alta confiabilidade; Alto desempenho; Desenvolvimento rápido e barato Precisamos

Leia mais

LEIC-A / MEIC-A 2007/2008 (1º

LEIC-A / MEIC-A 2007/2008 (1º 1/11 LEIC-A / MEIC-A 2007/2008 (1º Semestre) Teste (versão A) 08 de Janeiro de 2008, 09:00 (120 minutos) Nome: Primeira Parte (5 valores) PERGUNTA RESPOSTA 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 Segunda

Leia mais

Palavras Reservadas da Linguagem Java

Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java: Categorias Tipos de dados primitivos Literais Pseudo-variáveis Desvio e controle de fluxo Pacotes Exceções Modificadores de

Leia mais

Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU

Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU Aula 5 POO 1 Encapsulamento Profa. Elaine Faria UFU - 2019 Sobre o Material Agradecimentos Aos professores José Gustavo e Fabiano, por gentilmente terem cedido seus materiais. Os slides consistem de adaptações

Leia mais

DS: notação. Falta-nos apenas dar exemplos de DSS que contenham a criação de objectos temporários e sua posterior destruição.

DS: notação. Falta-nos apenas dar exemplos de DSS que contenham a criação de objectos temporários e sua posterior destruição. DS: notação Falta-nos apenas dar exemplos de DSS que contenham a criação de objectos temporários e sua posterior destruição. Martins 2008 147 DS: notação Martins 2008 148 DS: notação Mensagem condicional

Leia mais

Diagramas de Use Case

Diagramas de Use Case 86/170 Diagramas de Use Case Sumário Definição de requisitos. Diagramas de Use Case I conceitos base Diagramas de Use Case II conceitos avançados Resumo Exercícios Definição de Requisitos 87/170 Definição

Leia mais

Análise e modelação de sistemas. Classe T13: Passando da análise ao Desenho

Análise e modelação de sistemas. Classe T13: Passando da análise ao Desenho Análise e modelação de sistemas Classe T13: Passando da análise ao Desenho 2 Programa Organizando os diagramas Da análise ao desenho Pacotes Estereó;pos Classes de análise vs classes de desenho Estereó;pos

Leia mais

Exemplos de Estilos Arquiteturais. Estilos Arquiteturais. Estilos Arquiteturais. Estilo: Pipe e Filtros

Exemplos de Estilos Arquiteturais. Estilos Arquiteturais. Estilos Arquiteturais. Estilo: Pipe e Filtros Estilos Arquiteturais Em geral sistemas seguem um estilo, ou padrão, de organização estrutural Os estilos diferem: nos tipos de componentes que usa na maneira como os componentes interagem com os outros

Leia mais

SSC Engenharia de Software. Prof. Paulo C. Masiero

SSC Engenharia de Software. Prof. Paulo C. Masiero SSC - 5764 Engenharia de Software Prof. Paulo C. Masiero Processo de Software: Fases ou Subprocessos DEFINIÇÃO CONSTRUÇÃO MANUTENÇÃO Análise de Sistema Análise de Requisitos Projeto Projeto Processo pelo

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/50 Herança revisão (1) A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse

Leia mais

Programação com Objectos. 2º Teste 2015/2016 1º Semestre

Programação com Objectos. 2º Teste 2015/2016 1º Semestre 1/7 2015/2016 1º Semestre 13 de Janeiro de 2016, 18:30 (120 minutos) 2º Teste Nome: Número: Primeira Parte (3 valores) PERGUNTA RESPOSTA Segunda Parte (7 valores) PERGUNTA 1.1 2.1 1.2 2.2.1 1.3 2.2.2 1.4

Leia mais

Encapsulamento. Separa a interface de um objeto dos detalhes de seu funcionamento interno. Caixa preta 2/27

Encapsulamento. Separa a interface de um objeto dos detalhes de seu funcionamento interno. Caixa preta 2/27 Encapsulamento Encapsulamento entrada Caixa preta saída 2/27 Separa a interface de um objeto dos detalhes de seu funcionamento interno Encapsulamento Esconder os detalhes de implementação de um componente

Leia mais

MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE)

MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE) MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE) g BREVE HISTÓRICO g CARACTERÍSTICAS g CONCEITOS DE PROGRAMAÇÃO ORIENTADA A OBJETOS g MODELAGEM DE ANÁLISE E DE PROJETO 1 I. BREVE HISTÓRICO Em fins dos anos

Leia mais

Algoritmos de pesquisa. Tabelas de dispersão/hash

Algoritmos de pesquisa. Tabelas de dispersão/hash Algoritmos de pesquisa Tabelas de dispersão/hash Introdução Motivação: Considerar o problema de pesquisar um determinado valor num vetor. Se o vetor não está ordenado, a pesquisa requer O(n) de complexidade.

Leia mais

Programação em Comunicações. Programação Orientada por Objectos. Ademar Aguiar.

Programação em Comunicações. Programação Orientada por Objectos. Ademar Aguiar. Programação em Comunicações Programação Orientada por Objectos www.fe.up.pt/~aaguiar ademar.aguiar@fe.up.pt 1 Objectivos Apresentar os princípios e conceitos base sobre orientação por objectos (objectos,

Leia mais

Introdução à Modelagem Conceitual 1. Conceitos Básicos

Introdução à Modelagem Conceitual 1. Conceitos Básicos Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução à Modelagem Conceitual 1. Conceitos Básicos Luiz A M Palazzo Agosto, 2010 Roteiro A disciplina Noção

Leia mais

Professor Emiliano S. Monteiro

Professor Emiliano S. Monteiro Professor Emiliano S. Monteiro To-Do Doing Done Conhecer os processos de desenvolvimento habilita o aluno a realizar uma melhor escolha de processo para uso em projetos futuros. A vantagem de conhecer

Leia mais

Bases de Dados. Parte I: Conceitos Básicos. Parte I

Bases de Dados. Parte I: Conceitos Básicos. Parte I Bases de Dados Parte I Conceitos Básicos Ricardo Rocha DCC-FCUP 1 Definições Básicas Dados: factos conhecidos que têm algum significado e que podem ser guardados. Base de dados (BD): conjunto de dados

Leia mais

ACH2002. Orientação a Objetos

ACH2002. Orientação a Objetos ACH2002 Orientação a Objetos Professores: Delano Medeiros Beder Fátima L. S. Nunes EACH USP O que é abstração? Abstração s.f. Operação do espírito, que isola de uma noção um elemento, negligenciando os

Leia mais

Tema da aula Introdução ao paradigma de programação: Orientado a Objetos

Tema da aula Introdução ao paradigma de programação: Orientado a Objetos Profa. Juliana Santiago Teixeira Disciplina: Programação Orientada a Objetos I Tema da aula Introdução ao paradigma de programação: Orientado a Objetos Paradigma Paradigma é a filosofia adotada na construção

Leia mais

PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO (PSI) 11ºANO

PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO (PSI) 11ºANO PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO (PSI) 11ºANO 1 Módulo 9 - Int. à Programação Orientada a Objectos 2 1. Conceitos básicos A Programação Orientada a Objectos: é uma lógica de programação que procura

Leia mais

Padrões. Arquitetura de Software Thaís Batista

Padrões. Arquitetura de Software Thaís Batista Padrões Endereçam uma classe de problemas recorrentes e apresenta uma solução para eles (podem ser considerados um par problema-solução) Permitem a construção de software com propriedades definidas Ajudam

Leia mais

Requisitos de sistemas

Requisitos de sistemas Requisitos de sistemas Unidade III - Casos de Uso Identificação de casos de uso Conceitos de orientação a objetos Modelagem do diagrama de classes e casos de uso 1 Casos de uso CONCEITO Especifica o comportamento

Leia mais

Capítulo 2 - Processos de Software

Capítulo 2 - Processos de Software Capítulo 2 - Processos de Software Capítulo 2 Processos Software 1 Assuntos abordados Modelos de processo de software Atividades no processo de software Mudança no processo de software Melhoria de processos

Leia mais

Mas o que é mesmo Padrão de Projeto?

Mas o que é mesmo Padrão de Projeto? Mas o que é mesmo Padrão de Projeto? Um Padrão de Projeto descreve uma solução comprovada para um problema recorrente e conhecido no desenvolvimento de software orientado a objetos. Mas afinal, porque

Leia mais

Bases de Dados. Parte I: Conceitos Básicos

Bases de Dados. Parte I: Conceitos Básicos Bases de Dados Parte I Conceitos Básicos 1 Definições Básicas! Base de dados (BD): conjunto de dados que se relacionam entre si.! Dados: factos conhecidos que têm algum significado e que podem ser guardados.!

Leia mais

Diagrama de Classes. Régis Patrick Silva Simão. Régis Simão Diagrama de Classes 1/42

Diagrama de Classes. Régis Patrick Silva Simão. Régis Simão Diagrama de Classes 1/42 Diagrama de Classes Régis Patrick Silva Simão Régis Simão Diagrama de Classes 1/42 Agenda Introdução Objetos Classes Atributos Operações & Métodos Relacionamentos Relacionamento: Associação Nome de Relacionamento

Leia mais

Engenharia de Software

Engenharia de Software UNIVERSIDADE DE LISBOA INSTITUTO SUPERIOR TÉCNICO Engenharia de Software LEIC/LETI, 3 o Ano, 2 o Semestre 1 o Teste, 4 de Abril de 2017 Duração: 60 minutos Nome: Número: Este teste tem um conjunto de 8

Leia mais

Sistema Revolucionário de Gestão de Ficheiros

Sistema Revolucionário de Gestão de Ficheiros Licenciatura em Engenharia Informática e Computação Laboratório de Bases de Dados Sistema Revolucionário de Gestão de Ficheiros Grupo LBD09 Relatório de Especificação de Base de Dados Versão 1.0 Fernando

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 5: Associações LEEC@IST Java 1/32 Associação revisão Uma associação representa uma referência entre objectos. Numa associação são definidos: Identificador termo descritivo

Leia mais

Singleton e Adapter. Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)

Singleton e Adapter. Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé) e Adapter Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé) O que vimos na última aula? Factory Method Abstract Factory 2 O que veremos hoje? (padrão de criaçã) Adapter

Leia mais

Introdução à Programação. João Manuel R. S. Tavares

Introdução à Programação. João Manuel R. S. Tavares Introdução à Programação João Manuel R. S. Tavares Sumário 1. Ciclo de desenvolvimento de um programa; 2. Descrição de algoritmos; 3. Desenvolvimento modular de programas; 4. Estruturas de controlo de

Leia mais