Código Legado: como mantê-lo com qualidade

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

Download "Código Legado: como mantê-lo com qualidade"

Transcrição

1 Código Legado: como mantê-lo com qualidade Cleber Ferreira Gomes, Anita Maria da Rocha Fernandes Curso de Pós Graduação Universidade do Vale do Itajaí (UNIVALI) Florianópolis SC Brasil Abstract. The difficulty faced by organizations maintain functional and reusable legacy code is a scenario that encompasses several discussions, however, not always the result is expected. Even companies adopting methodologies, processes and tools, this issue is much more complex and delicate. This article describes some scenarios executed by Softplan company in pursuit of quality of legacy code, listing resources and difficulties faced by the organization. The final idea is to present some points, which when exploited, will help the organization better achieve its objectives. Resumo. A dificuldade enfrentada pelas organizações em manter o código legado funcional e reutilizável é um cenário que engloba várias discussões, no entanto, nem sempre o resultado é o esperado. Mesmo as empresas adotando metodologias, processos e ferramentas, essa questão é muito mais complexa e delicada. Este artigo descreve alguns cenários executados pela empresa Softplan, em busca da qualidade do código legado, listando recursos e dificuldades enfrentadas pela organização. A ideia final é apresentar alguns pontos, que ao serem explorados, vão ajudar a organização a atingir melhor os seus objetivos. 1. Introdução A Softplan, fundada em 1990, é uma empresa genuinamente catarinense especializada no desenvolvimento e implantação de softwares. Visa atender um nicho de mercado voltado especialmente para gestão profissional de empresas da indústria da construção. Com o passar dos anos, a Softplan se especializou no desenvolvimento e na implantação de softwares voltados para a gestão para os segmentos de Justiça, Infraestrutura e Obras, Gestão Pública, Projetos Cofinanciados por Organismos Internacionais e Indústria da Construção. Atualmente, a empresa atua com o objetivo de tornar a gestão pública e privada no Brasil mais transparente, eficiente e ágil, com o uso de tecnologias modernas e inovadoras. Dentro deste cenário, a Unidade de Justiça é a responsável pelas soluções que atendem as instituições da justiça brasileira, tais como, Tribunais de Justiça Estadual, Ministérios Públicos Estaduais e Procuradorias de Justiça Estaduais e Municipais. Compõem essa unidade cinco softwares mantidos e em constante evolução desde Um dos principais objetivos, e ao mesmo tempo um desafio da Softplan e das demais empresas de software, é desenvolver software de qualidade. Mesmo com as ferramentas disponibilizadas hoje no mercado, que automatizam maior parte do ciclo de vida de um software, as empresas de software ainda encontram muitas dificuldades na hora de entregar algo de valor para o cliente final. As tendências tecnológicas avançam em constante evolução e muito rápida, e as empresas de software não conseguem acompanhá-las por diversos motivos, seja pelo

2 alto custo de aquisição e manutenção dessas ferramentas, ou pela complexidade do código legado existente, o que impossibilita a migração. Ao falar em projetos que possuem vários anos de vida, é praticamente impossível prevê a cobertura de testes automatizados em todas as funcionalidades. Quando a cobertura de testes não faz parte da cultura da empresa, há um aumento do código legado de baixa qualidade, acarretando no alto índice de erros inseridos, aumentando assim o custo para se manter o código legado. Com base nisso, este artigo apresenta alguns cenários utilizados pela empresa Softplan em busca da qualidade de seu código legado. Tais cenários podem servir de guia para outras empresas que pretendem manter a qualidade de seu código legado. Este artigo está organizado em cinco seções, sendo que na segunda serão abordados temas referentes a testes e padrões de projeto, na terceira seção será apresentado um breve histórico até a atualidade do cenário exercido pela empresa Softplan, na quarta seção será apresentada uma proposta com base na fundamentação teórica considerando o cenário atual. Na quinta seção serão apresentados os benefícios das abordagens que este artigo oferece. 2. Fundamentação Teórica A seguir tem-se a fundamentação teórica que embasou este trabalho. Esta fundamentação refere-se aos Testes Automatizados de Software e aos Padrões de Projeto. 2.1 Testes Automatizados Segundo Kaner (2001), o propósito da automação de testes pode ser resumidamente descrito como a aplicação de estratégias e ferramentas tendo em vista a redução do envolvimento humano em atividades manuais repetitivas. A automação possibilita a execução de testes regressivos com maior amplitude e profundidade. O grande problema ocorre quando em um estágio avançado do desenvolvimento, gasta-se mais tempo executando testes regressivos do que testando as novas funcionalidades. Uma abordagem de testes baseada puramente em testes manuais, normalmente não consegue acompanhar as demandas e o volume de testes ao longo do ciclo de vida de desenvolvimento de um software [Caetano 2011]. Frequentemente o produto é liberado sem que tenha sido completamente testado em virtude de restrições de tempo. A automação de testes quando utilizada corretamente permite a execução ininterrupta de testes regressivos a qualquer hora do dia ou da noite. Dessa forma para conseguir testar o sistema todo constantemente de forma contínua a um preço justo, são automatizando os testes. Ou seja, escrevendo um programa que testa o programa. Esse programa invocaria os comportamentos do sistema e garantiria que a saída é sempre a esperada [Caetano 2011]. Hoje várias abordagens sobre testes são encontradas, algumas delas são: testes de caixa branca, caixa preta, caixa cinza, regressão, técnicas não funcionais, unidade, TDD (Test-Driven Development), integração, sistema, aceitação, operação, alfa e beta e candidato a lançamento. Neste artigo serão abordados os testes de unidade e TDD Testes de Unidade

3 Testes de unidade são testes que testam apenas uma classe ou método, verificando se seu comportamento está de acordo com o desejado. Em testes de unidade, verificandose a funcionalidade da classe e/ou método em questão passando o mínimo possível por outras classes ou dependências do sistema [Caelum 2016]. Considerando que a unidade é a menor parte testável de uma aplicação. Em uma linguagem de programação orientada a objetos usando como exemplo a linguagem Java, a menor unidade é um método [Caelum 2016]. Em testes de unidade, o foco não está no comportamento real das dependências da classe, mas em como a classe em questão se comporta diante das possíveis respostas das dependências, ou então se a classe modificou as dependências da maneira esperada [Caelum 2016]. Já Feathers (2013) fala que, testar isoladamente é uma parte importante da definição de um teste de unidade, pois muitos erros podem ocorrer quando as porções de softwares são integradas. Ainda, segundo Feathers (2013) testes grandes abrangendo amplas áreas de códigos funcionais, também são considerados importantes, porém podem apresentar grandes problemas tais como: Localização de erros Quando os testes vão além do que devem testar, fica mais difícil determinar o que significa a falha de teste. Geralmente dá bastante trabalho detectar a causa de falha de teste. Examinar as entradas de teste, examinar a falha e determinar em que local do trajeto entre a entrada e saídas ela ocorreu. Isso também ocorre nos testes de unidade, mas frequentemente é trivial porque os testes são muito pequenos. Tempo de execução Testes maiores tendem a demorar mais para serem executados. Isso tende a tornar a execução um pouco frustrante. Testes que tem execução muito demorada acabam não sendo executados. Cobertura Pode ser difícil visualizar a conexão entre um trecho de código e os valores que o exercitam. Pode-se descobrir se um trecho de código é exercitado por um teste usando ferramentas de cobertura, mas quando adicionamos código novo, talvez se faça necessário ter algum trabalho para criar testes de alto nível que exercitam o novo código. As qualidades encontradas quando são empregados bons testes de unidade são: testes sendo executados rapidamente e a ajuda na localização dos problemas mais facilmente Test-Driven Development (TDD) TDD é uma das práticas de desenvolvimento de software sugeridas por diversas metodologias ágeis, como XP (Extreme Programming). A ideia é fazer com que o desenvolvedor escreva testes automatizados de maneira constante ao longo do desenvolvimento. Mas, diferentemente da prática comum que é empregada atualmente, o TDD sugere que o desenvolvedor escreva o teste antes mesmo da implementação [Aniche 2013].

4 Aniche (2013) cita que desenvolvedores de TDD (ou qualquer outro papel que é executado dentro de uma equipe de software) estão muito acostumados com o processo tradicional de desenvolvimento: primeiro a implementação e depois o teste. Ainda para Aniche (2013) a ideia é simples: o desenvolvedor deve começar a implementação pelo teste e, deve o tempo todo, fazer de tudo para que seu código fique simples e com qualidade. Conforme mostra a Figura 1. Figura 1: Fluxo aplicado ao TDD Fonte: Aniche (2013) Essa modalidade traz benefícios como mencionado por Aniche (2013), garantindo qualidade no código desenvolvido: Foco no teste e não na implementação Ao começar pelo teste, o programador consegue pensar somente no que a classe deve fazer, e esquece por um momento da implementação. Isso o ajuda a pensar em melhores cenários de teste para a classe sob desenvolvimento. Código nasce testado Se o programador pratica o ciclo corretamente, isso então implica em que todo o código de produção escrito possui ao menos um teste de unidade verificando que ele funciona corretamente. Simplicidade Ao buscar pelo código mais simples constantemente, o desenvolvedor acaba por fugir de soluções complexas, comuns em todos os sistemas. O praticante de TDD escreve código que apenas resolve os problemas que estão representados por um teste de unidade. Melhor reflexão sobre o design da classe No cenário tradicional, muitas vezes a falta de coesão ou o excesso de acoplamento é causado muitas vezes pelo desenvolvedor que só pensa na implementação e acaba esquecendo como a

5 classe vai funcionar perante o todo. Ao começar pelo teste, o desenvolvedor pensa sobre como sua classe deverá se comportar perante as outras classes do sistema. O teste atua como o primeiro cliente da classe que está sendo escrita. Nele, o desenvolvedor toma decisões como o nome da classe, os seus métodos, parâmetros, tipos de retorno, e etc. No fim, todas elas são decisões de design e, quando o desenvolvedor consegue observar com atenção o código do teste, seu design de classes pode crescer muito em qualidade. Aniche (2013) ainda afirma, que o praticante de TDD escreve um pouco de testes, um pouco de implementação e recebe feedback. Isso acontece ao longo do desenvolvimento de maneira frequente. Já um programador que não pratica TDD espera um tempo maior para obter o mesmo feedback. Conforme mostra a Figura Padrões de Projeto Figura 2: Feedback proposto pelo conceito TDD. Fonte: Aniche (2013). A origem dos Design Patterns (Padrões de Desenho ou ainda Padrão de Projeto) vem do trabalho de um arquiteto chamado Christopher Alexander, no final da década de 70. Ele escreveu dois livros, inicialmente, A Pattern Language [Alexander 1977] e A Timeless Way of Building [Alexander 1979], nos quais ele exemplificava o uso e descrevia seu raciocínio para documentar os padrões. Em 1995, um grupo de quatro profissionais escreveu e lançou o livro Design Patterns: Elements of Reusable Object-Oriented Software [Gamma etal 1995], um catálogo com 23 padrões de desenho (design patterns). Os autores ficaram mais conhecidos como A Gangue dos Quatro (Gang Of Four ou GoF), considerados os maiores entusiastas dos Design Patterns. Um padrão descreve um conjunto composto por um contexto, um problema e uma solução. Em outras palavras, pode-se descrever um padrão como uma solução para um determinado problema em um contexto. Porém, um padrão não descreve qualquer solução, mas sim uma solução que já tenha sido utilizada com sucesso em mais de um

6 contexto [Guerra 2012]. Ainda segundo Guerra (2012), exatamente por esse motivo que a descrição dos padrões normalmente sempre indica alguns de seus usos conhecidos. Um padrão não descreve soluções novas, mas soluções consolidadas. A ideia dos padrões vem do trabalho de Christopher Alexander na área de arquitetura de cidades e construções [Benioff, Adler 2009]. Neste livro, cada padrão trazia uma solução adequada a um problema, que poderia ser reutilizada e adaptada para diversas situações. Padrões de projeto não são projetos, como listas encadeadas e tabelas de acesso aleatório, que podem ser codificadas em classes e ser reutilizadas tais como estão. Tampouco são projetos complexos, de domínio específico, para uma aplicação inteira ou subsistema [Gamma et al 1995]. Padrões de projeto, aqui apresentado, são descrições de objetos e classes comunicantes que precisam ser personalizadas para resolver um problema geral de projeto num contexto particular [Gamma et al 1995]. A modelagem de um software é uma questão dinâmica que evolui a medida que o desenvolvimento do software vai seguindo seu curso. Apesar de ainda ser comum a modelagem das classes da aplicação a partir de diagramas antes do início das implementações, muitas vezes os problemas aparecem somente depois. Sendo assim, muito importante que saber como utilizar os padrões na modelagem inicial, é saber como refatorar um código existente para uma solução que utilize um determinado padrão. A refatoração constante do código é hoje uma das bases para a manutenção de sua qualidade ao longo do projeto. [Guerra 2012] Cohn (2009) ainda fala que, refatorar é alterar a estrutura do código sem alterar o seu comportamento. É uma prática que permite que o desenvolvedor melhore o design do código, tornando o mais limpo e fácil de se compreender. É uma técnica essencial para prevenir que o código se deteriore. À medida que novos comportamentos são incluídos no software, por consequência aumentando a complexidade, existe uma grande tendência de se escrever código duplicado e torná-lo mais difícil de compreender e de dar manutenção. Por outro lado, é preciso tomar cuidado para não cair em um perfeccionismo extremo e gastar tempo tentando aperfeiçoar detalhes sem importância. Para facilitar a identificação do momento correto para realizar a refatoração, Poppendieck (2003) cita cinco características de um sistema íntegro. Simplicidade Na maioria das vezes um design simples é o melhor design. Design Patterns, quando bem aplicados, são uma ótima ferramenta para aplicar soluções simples a problemas complexos; Clareza O código fonte deve ser facilmente compreendido por todos os membros da equipe. Todos os elementos do código devem ser devidamente nomeados para que sejam facilmente compreendidos por todos; Eficácia Um bom design deve produzir o resultado correto, isto é, deve atingir o objetivo pelo qual foi criado; Sem repetição O mesmo código não deve existir em dois lugares diferentes. Quando uma mudança precisa ser feita em muitos lugares o risco de defeitos cresce exponencialmente;

7 Utilidade Toda funcionalidade de um sistema precisa ser útil para seus usuários. Quando uma funcionalidade deixa de ser necessária, cria-se desperdício em mantê-la; em muitos casos é melhor eliminá-la. Poppendick (2003), destaca que se qualquer uma destas estiver faltando, é sinal de que é hora de refatorar. Gamma et al (1995) cita 23 padrões de projeto, apresentado em forma de catálogo conforme mostra a Tabela 1. Tabela 1. Catálogo de padrões de projeto Há várias maneiras de organizar os padrões. Alguns padrões são frequentemente usados em conjunto. Por exemplo, o Composite é frequentemente usado com o Iterator ou o Visitor. Alguns padrões são alternativos: o Prototype é frequentemente uma alternativa para o Abstract Factory. Alguns padrões resultam em projetos semelhantes, embora tenham intenções diferentes [Gamma et al 1995]. Uma outra maneira, ainda, de organizar padrões de projeto é de acordo com a forma com que eles se relacionam. Porém o artigo irá abordar somente as formas de organizações por relacionamento e catálogo Organização de Padrões A seguir serão apresentadas referem-se aos Padrões Relacionados e a Organização por Catálogo Padrões Relacionados A Figura 3 ilustra os padrões de relacionamentos graficamente.

8 Figura 3: Relacionamentos entre padrões de projeto Organização por Católogo Nessa seção serão apresentados os padrões com um breve resumo de sua aplicação e agrupados por propósitos: de criação, estrutural e comportamental Padrões de Criação Abstract Factory: Fornece uma interface para criação de famílias de objetos relacionados ou dependentes sem especificar suas classes concretas. Builder: Separa a construção de um objeto complexo da sua representação, de modo que o mesmo processo de construção possa criar diferentes representações.

9 Factory Method: Define uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe a ser instanciada. O Factory Method permite a uma classe postergar a instanciação às subclasses. Prototype: Especifica os tipos de objetos a serem criados usando uma instância prototípica e criar novos objetos copiando esse protótipo. Singleton: Garante que uma classe tenha somente uma instância e fornece um ponto global de acesso para ela Padrões Estruturais Adapter: Converte a interface de uma classe em outra interface esperada pelos clientes. O Adapter permite que certas classes trabalhem em conjunto, pois de outra forma seria impossível por causa de suas interfaces incompatíveis. Bridge: Separa uma abstração da sua implementação, de modo que as duas possam variar independentemente. Composite: Compõe objetos em estrutura de árvore para representar hierarquias do tipo partes-todo. O Composite permite que os clientes tratem objetos individuais e composições de objetos de maneira uniforme. Decorator: Atribui responsabilidades adicionais a um objeto dinamicamente. Os decorators fornecem uma alternativa flexível a subclasses para extensão da funcionalidade. Façade: Fornece uma interface unificada para um conjunto de interfaces em um subsistema. O Façade define uma interface de nível mais alto que torna o subsistema mais fácil de usar. Flyweight: Usa compartilhamento para suportar grandes quantidades de objetos, de granularidade fina, de maneira eficiente. Proxy: Fornece um objeto representante, ou um marcador de outro objeto, para controlar o acesso ao mesmo Padrões Comportamentais Interpreter: Dada uma linguagem, define uma representação para sua gramática juntamente com um interpretador que usa a representação para interpretar sentenças nessa linguagem. Template Method: Define o esqueleto de um algoritmo em uma operação, postergando a definição de alguns passos para subclasses. O Template Method permite que as subclasses redefinam certos passos de um algoritmo sem mudar sua estrutura.

10 Chain of Responsibility: Evita o acoplamento do remetente de uma solicitação ao seu destinatário, dando a mais de um objeto a chance de tratar a solicitação. Encadeia os objetos receptores e passa a solicitação ao longo da cadeia até que um objeto a trate. Command: Encapsula uma solicitação como um objeto, desta forma permitindo que você parametrize clientes com diferentes solicitações, enfileire ou registre (log) solicitações e suporte operações que podem ser desfeitas. Iterator: Fornece uma maneira de acessar sequencialmente os elementos de uma agregação de objetos sem expor sua representação subjacente. Mediator: Define um objeto que encapsula a forma como um conjunto de objetos interage. O Mediator promove o acoplamento fraco ao evitar que os objetos se refiram explicitamente uns aos outros, permitindo que você varie suas interações independentemente. Memento: Sem violar o encapsulamento, captura e externaliza um estado interno de um objeto, de modo que o mesmo possa posteriormente ser restaurado para este estado. Observer: Define uma dependência um-para-muitos entre objetos, de modo que, quando um objeto muda de estado, todos os seus dependentes são automaticamente notificados e atualizados. State: Permite que um objeto altere seu comportamento quando seu estado interno muda. O objeto parecerá ter mudado de classe. Strategy: Define uma família de algoritmos, encapsula cada um deles e os torna intercambiáveis. O Strategy permite que o algoritmo varie independentemente dos clientes que o utilizam. Visitor: Representa uma operação a ser executada sobre os elementos da estrutura de um objeto. O Visitor permite que você defina uma nova operação sem mudar as classes dos elementos sobre os quais opera. 3. Cenário atual Hoje, a empresa conta com aproximadamente colaboradores em diversos cargos, tais como, analistas de negócio, testadores, desenvolvedores, suporte, consultores de produtos, gestores e outros perfis de colaboradores que dão suporte as atividades da empresa. A Softplan é uma das maiores empresas do Brasil no desenvolvimento de softwares de gestão. Em 2013, a empresa empregava o conceito de testes guiado por roteiro, onde descreviam o passo a passo detalhadamente, chegando assim a gerar documentos com várias páginas, a complexidade aumentava quando se faziam ainda menções a outros roteiros como pré-requisitos. Esses roteiros seriam de apoio para os desenvolvedores executarem antes de tomar a demanda como pronto, porém não era isso que acontecia. Devido à alta complexidade dos documentos e pelo tempo escasso, devido alto fluxo de erros a serem analisados e resolvidos em tempo hábil. Esses roteiros consumiam muito tempo para ser

11 confeccionados, a ponto de que determinadas demandas estarem em estágio de análise ou mesmo de implementação, sem mesmo terem iniciado a confecção do roteiro de teste da demanda em questão. Nesse período já se buscava alternativas para melhorar a qualidade das entregas, e por isso iniciaram-se estudos sobre as melhores práticas, padrões de projeto, porém houve algumas resistências, como ainda há nos dias hoje, em tornar isso uma cultura dentro da organização, sejam elas por falta de capacitação e preparo ou pela arquitetura de software adotada pela empresa, o que dificulta o emprego dessas boas práticas. Dois anos mais tarde, já em 2015, a empresa optou em escalar o processo ágil com base no framework SAFe, que trouxe diversos benefícios, um deles é que para cada demanda se definem critérios de aceite listado pelo analista de produto. Em cima desses critérios de aceito são elaborados os roteiros de testes, enxutos, coesos e objetivos. Nessa nova fase os testes são aplicados por equipes especializadas em testes e exclusivos para esse fim. Para chegar nesse formato, a empresa Softplan teve o auxílio de consultorias externas, para alavancar na eficiência no que se refere a testes. Atualmente, a empresa segue a busca pela melhoria contínua, analisando e revendo seus processos que possam garantir melhores resultados. 4. Proposta A ideia do código nascer testado como cita a literatura quando se fala de TDD seria o ideal, mais na prática isso não é tão simples assim, devido algumas questões como: tempo, disponibilidade, conhecimento, custo, arquitetura, ferramentas, linguagem de programação e o próprio código legado já existente. O ideal e essencial para ter bons resultados é aplicá-lo de maneira gradativa. É importante que a empresa encare esse processo, fazendo com que ele se torne natural no andamento diário das atividades. Hoje em dia as empresas até veem os testes automatizados como necessários, mas na corrida contra o tempo e na busca por resultados rápidos, colocam essa questão em segundo plano, pois o resultado dessa ação impactará na qualidade do código legado. Outros pontos críticos são a complexidade, duplicidade e até mesmo a qualidade do código alterado ou incluído em cada ciclo proposto nas metodologias ágeis, o código legado é submetido à manutenção constantemente seja ela corretiva ou evolutiva. Nesse aspecto a proposta é de se aplicar padrões de projetos que tornem o código legado acessíveis, legíveis e reaproveitais. Para esse caso se faz um necessário que haja um planejamento que considere refatorações de melhoria do código legado. Hoje qualquer ação abordando as situações mencionadas acima vão incidir em custo. No entanto, vale avaliar se esses custos vão evitar que o custo de manutenção corretiva aumente, assim como acontece sobre o código legado hoje. Por isso é importante que empresa esteja ciente dessa implementação, mesmo de maneira gradual, pois só assim será possível ter uma resposta real sobre a importância e controle dos custos. Isso evitaria erros, correções pelos analistas, visando assim uma melhora significativamente do código legado. 5. Conclusões Ao longo do artigo foi apresentado que código legado e uma peça fundamental para as empresas porem mantê-lo é uma tarefa difícil, Kaner (2001) e Aniche (2003) defendem

12 que a cobertura de testes unitário e automatizados garatem a integridade funcional do software, Gamma et al (1995), alega que ao utilizar padrões de projeto elevam a qualidade do código ao torna-lo organizado, legível, coerente e de fácil entendimento. Testes automatizados são fundamentais para um desenvolvimento de qualidade, sua existência traz diversos benefícios para o software, como o aumento da qualidade e a diminuição de erros em produção. Uma empresa que possui muitos desenvolvedores modificando o código simultaneamente pode perder o controle sobre as alterações, por esse motivo a melhor forma é atacar no conhecimento, costumes, boas práticas. No caso da Softplan, considerar as abordagens proposta pelo artigo irá trazer benefícios ao facilitar a interação dos desenvolvedores perante ao código, pois código de qualidade e coberto por testes automatizados irão evitar o aumento do código legado de baixa qualidade. Referências Aniche, Mauricio (2013) Test-Driven Development - Teste e Design no Mundo Real com.net. Editora Casa do Código. Guerra, Eduardo (2012). Design Patterns com Java Projeto orientado a objeto guiado por padrões. Editora Casa do Código. Kaner, Cem; Bach, James; Pettichord, Bret (2001) Lessons Learned in Software Testing: A Context-Driven Approach. Feathers, Michael C. (2013) Working Effectively with Legacy Code. Editora Printice Hall, ISBN Benioff, Marc; Adler, Carlye (2009). Behind the Cloud: the untold story of how salesforce.com went from idea to billion-dollar company and revolutionized an industry. Jossey-Bass. Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1995) Design patterns - elements of reusable object-oriented software. Alexander, Christopher (1977) A Pattern Language. acessado em 06/2016. Alexander, Christopher (1979) The Timeless Way Of Building. ding_complete.pdf, acessado em 06/2016. Cohn, Mike (2009). Succeeding with Agile: Software Development Using Scrum. Poppendieck, Mary; Poppendieck, Tom (2003). Lean Software Development: An Agile Toolkit. Caelum. acessado em 06/2016 Caetano, Cristiano. (2011) acessado em 06/2016

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

Padrões de Projeto de Software

Padrões de Projeto de Software Padrões de Projeto de Software Lista de Exercícios AV2-01 Luiz Leão luizleao@gmail.com http://www.luizleao.com Questão 1 Qual o objetivo dos padrões Comportamentais, segundo o catálogo GOF? Questão 1 Resposta

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação Prof. Fabiano Dorça. Introdução. Padrões de projeto

Universidade Federal de Uberlândia Faculdade de Computação Prof. Fabiano Dorça. Introdução. Padrões de projeto Universidade Federal de Uberlândia Faculdade de Computação Prof. Fabiano Dorça Introdução Padrões de projeto Algumas definições... Um padrão de projeto (design pattern) é uma solução geral reutilizável

Leia mais

Princípios de Engenharia de Software Resumo 8 Semana 8 Versão: 1.0 Data: 05/10/04

Princípios de Engenharia de Software Resumo 8 Semana 8 Versão: 1.0 Data: 05/10/04 Alunos: Ariane Bueno 0114784-9 Elaine A. de Carvalho 0114633-1 Gabriel Ramos 0114838» O QUE APRENDI ASSUNTO: ARQUITETURA ASSUNTO: Notas de aula referentes às aulas de 30/09/04, Arquitetura de Software(Shaw),

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

b) Adapter, Bridge e Composite. c) Builder, Prototype e Singleton. d) Façade, Command e Decorator. e) Factory Method, Interpreter e Template Method.

b) Adapter, Bridge e Composite. c) Builder, Prototype e Singleton. d) Façade, Command e Decorator. e) Factory Method, Interpreter e Template Method. 1) Considere os diagramas de classes de análise fornecidos nos itens (a) e (b) abaixo, ambos de acordo com a notação da UML. Esses diagramas desejam representar o fato de que uma conta bancária pode estar

Leia mais

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

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

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 Introdução O que é? Como descrever? Principais Padrões de Projetos Unidade 2 Padrões GoF PADRÕES CRIAÇÃO Abstract Factory

Leia mais

INF011 Padrões de Projeto Introdução

INF011 Padrões de Projeto Introdução INF011 Padrões de Projeto 01 - Introdução 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

Leia mais

Padrões de Projeto. Parte 1. Prof. Fellipe Aleixo

Padrões de Projeto. Parte 1. Prof. Fellipe Aleixo Padrões de Projeto Parte 1 Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Padrões de Projeto de Software OO Também conhecidos como Padrões de Projeto de Software OO ou simplesmente como Padrões A Inspiração

Leia mais

Padrões de Projeto de Software Orientado a Objetos

Padrões de Projeto de Software Orientado a Objetos Padrões de Projeto de Software Orientado a Objetos Ricardo Argenton Ramos [Baseado nos slides do professor Fabio Kon - USP] 1 Padrões de Projeto de Software OO Também conhecidos como Padrões de Desenho

Leia mais

Padrões contexto problema solução

Padrões contexto problema solução Padrões Padrões são soluções para problemas específicos que ocorrem de forma recorrente em um determinado contexto que foram identificados a partir da experiência coletiva de desenvolvedores de software.

Leia mais

Engenharia de Software

Engenharia de Software Engenharia de Software Projeto e Implementação Padrões de Projeto Msc. Carlos Mar 04/2014 REVISÃO: ORIENTAÇÃO A OBJETOS Msc. Carlos Mar - Abr/2014 Conceitos Fundamentais Classe Objeto Atributos Métodos

Leia mais

Análise e Projeto. Padrões de Análise, Arquitetura e Projeto

Análise e Projeto. Padrões de Análise, Arquitetura e Projeto Análise e Projeto Padrões de Análise, Arquitetura e Projeto 33 Padrões de Arquitetura Padrões Nome do padrão Problema: quando aplicar o padrão? Descreve o problema e seu contexto. Solução: elementos que

Leia mais

O USO DOS PADRÕES DE PROJETO GOF NA ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

O USO DOS PADRÕES DE PROJETO GOF NA ANÁLISE E DESENVOLVIMENTO DE SISTEMAS O USO DOS PADRÕES DE PROJETO GOF NA ANÁLISE E DESENVOLVIMENTO DE SISTEMAS Revista UNILUS Ensino e Pesquisa v. 13, n. 30, jan./mar. 2016 ISSN 2318-2083 (eletrônico) Claudio Costa Matos Graduando no curso

Leia mais

PADRÕES DE PROJETO: DESIGN PATTERNS

PADRÕES DE PROJETO: DESIGN PATTERNS PADRÕES DE PROJETO: DESIGN PATTERNS Jaime William Dias 1, Danilo Venturini 1, William Macxuel Muniz 1, Rodrigo Niehues Chagas 1 1 Universidade Paranaense (UNIPAR) Paranavaí PR Brasil danilo_tr98@hotmail.com,

Leia mais

Arquitectura de Sistemas de Software

Arquitectura de Sistemas de Software Arquitectura de Sistemas de Software Ademar Aguiar www.fe.up.pt/~aaguiar ademar.aguiar@fe.up.pt Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 1 Arquitectar... Arquitectar uma pequena cabana

Leia mais

Padrões de Design Orientado a Objetos Design Patterns. Jorge H. C. Fernandes DI-UFPE, Junho de 1999

Padrões de Design Orientado a Objetos Design Patterns. Jorge H. C. Fernandes DI-UFPE, Junho de 1999 Padrões de Design Orientado a Objetos Design Patterns Jorge H. C. Fernandes DI-UFPE, Junho de 1999 Padrões de Design Bibliografia Design Patterns: Elements of Reusable Object- Oriented Software. Gamma,

Leia mais

Módulo I Princípios e Padrões de Projeto de SW em Java

Módulo I Princípios e Padrões de Projeto de SW em Java Módulo I Princípios e Padrões de Projeto de SW em Java Professores Eduardo Bezerra edubezerra@gmail.com Ismael H F Santos ismael@tecgraf.puc-rio.br April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

Leia mais

Programação Orientada a Objetos. Padrões Comportamentais

Programação Orientada a Objetos. Padrões Comportamentais Programação Orientada a Objetos Padrões Comportamentais Cristiano Lehrer, M.Sc. Classificação dos Padrões de Projeto Propósito o que o padrão faz: Padrões de criação: abstraem o processo de criação de

Leia mais

Tópicos da Aula. POO e Padrões de Projetos. Considere três classes... Reuso de Classes. Locadora de DVD. Sistema Acadêmico

Tópicos da Aula. POO e Padrões de Projetos. Considere três classes... Reuso de Classes. Locadora de DVD. Sistema Acadêmico Reuso de Software Aula 03 Tópicos da Aula POO e Padrões de Projetos Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo reuso.software@gmail.com 12 Março 2012 Programação orientada a objetos Reuso de

Leia mais

Programação Orientada a Objetos. Padrões Estruturais

Programação Orientada a Objetos. Padrões Estruturais Programação Orientada a Objetos Padrões Estruturais Cristiano Lehrer, M.Sc. Classificação dos Padrões de Projeto Propósito o que o padrão faz: Padrões de criação: abstraem o processo de criação de objetos

Leia mais

Roni Fabio Banaszewski UTFPR Universidade Tecnológica Federal do Paraná

Roni Fabio Banaszewski UTFPR Universidade Tecnológica Federal do Paraná Roni Fabio Banaszewski UTFPR Universidade Tecnológica Federal do Paraná Reuso Motivações para reutilização de software Aspecto econômico Produtividade Time to market Qualidade Utilização de artefatos (código,

Leia mais

Design Patterns. Viviane Torres da Silva

Design Patterns. Viviane Torres da Silva Design Patterns Viviane Torres da Silva viviane.silva@ic.uff.br http://www.ic.uff.br/~viviane.silva/2010.1/es1 Sumário Reuso de Software Introdução Benefícios e Desvantagens Visão do Reuso Padrões de Projeto

Leia mais

Padrões Comportamentais

Padrões Comportamentais Padrões Comportamentais Parte 2 Soluções Reutilizáveis de Software Orientado a Objetos Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Padrões de Projeto Comportamentais 1. Chain of Responsibility 2.

Leia mais

Padrões GoF. Leonardo Gresta Paulino Murta leomurta@ic.uff.br

Padrões GoF. Leonardo Gresta Paulino Murta leomurta@ic.uff.br Padrões GoF Leonardo Gresta Paulino Murta leomurta@ic.uff.br Agenda Introdução Padrões de Criação Padrões de Estrutura Padrões de comportamento Leonardo Murta Padrões GoF 2 Introdução Os padrões GoF (Gamma

Leia mais

Padrões Comportamentais

Padrões Comportamentais Padrões Comportamentais Parte 1 Soluções Reutilizáveis de Software Orientado a Objetos Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Padrões de Projeto Comportamentais 1. Chain of Responsibility 2.

Leia mais

Programação Orientada a Objetos. Padrões de Criação

Programação Orientada a Objetos. Padrões de Criação Programação Orientada a Objetos Padrões de Criação Cristiano Lehrer, M.Sc. Objetivos Apresentar cada um dos 23 padrões clássicos descrevendo: O problema que solucionam. A solução. Diagramas UML (Unified

Leia mais

Curso - Padrões de Projeto Módulo 1: Introdução

Curso - Padrões de Projeto Módulo 1: Introdução Curso - Padrões de Projeto Módulo 1: Introdução Vítor E. Silva Souza vitorsouza@gmail.com http://www.javablogs.com.br/page/engenho http://esjug.dev.java.net Sobre o Instrutor Formação: Java: Graduação

Leia mais

TESTES DE SOFTWARE 1. Fundamentos sobre testes de software

TESTES DE SOFTWARE 1. Fundamentos sobre testes de software ENG SOFT - TESTES TESTES DE SOFTWARE 1. Fundamentos sobre testes de software A atividade de teste de software sempre foi considerada como um gasto de tempo desnecessário, uma atividade de segunda classe,

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 11 Padrões GoF (Bridge e Decorator) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype Singleton

Leia mais

Padrões de Projeto de Software

Padrões de Projeto de Software Padrões de Projeto de Software Introdução Paulo Gomide Departamento de Ciência da Computação Universidade de Itaúna Motivação Introdução Por que Padrões? Por que Padrões de Projeto? O que é um Padrão de

Leia mais

Prof.ª Esp. Talita Pagani

Prof.ª Esp. Talita Pagani Especialização em Engenharia de Software Prof.ª Esp. Talita Pagani talita.cpb@gmail.com @talitapagani 21/02/2014 Design Patterns Aula 1 Prof.ª Esp. Talita Pagani 1 Informações gerais 1. Definição de Design

Leia mais

Projeto de software Estrutura do software e arquitetura SWEBOK

Projeto de software Estrutura do software e arquitetura SWEBOK Projeto de software Estrutura do software e arquitetura SWEBOK SWEBOK Design Patterns Maneira testada ou documentada de alcançar um objetivo qualquer Padrões são comuns em várias áreas da engenharia Design

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Luiz Leão luizleao@gmail.com http://www.luizleao.com Questão 1 Para Sommerville a arquitetura de sistemas descreve o sistema em termos de um conjunto de unidades

Leia mais

1Introdução Helder da Rocha (helder@acm.org)

1Introdução Helder da Rocha (helder@acm.org) J930 Padrões Projeto de 1Introdução Helder da Rocha (helder@acm.org) argonavis.com.br O que é um padrão? Maneira testada ou documentada de alcançar um objetivo qualquer Padrões são comuns em várias áreas

Leia mais

J930. Padrões. Projeto. Introdução. argonavis.com.br. Helder da Rocha (helder@acm.org)

J930. Padrões. Projeto. Introdução. argonavis.com.br. Helder da Rocha (helder@acm.org) Padrões de J930 Projeto Introdução Helder da Rocha (helder@acm.org) argonavis.com.br O que é um padrão? Maneira testada ou documentada de alcançar um objetivo qualquer Padrões são comuns em várias áreas

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 05 Padrões GoF (Singleton e Iterator) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype

Leia mais

Padrões Comportamentais. Padrões de Projeto Comportamentais. Motivação. Chain of Responsibility (CoR) Padrão Chain of Responsibility

Padrões Comportamentais. Padrões de Projeto Comportamentais. Motivação. Chain of Responsibility (CoR) Padrão Chain of Responsibility DCC / ICEx / UFMG Padrões Comportamentais Padrões de Projeto Comportamentais Command Observer Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Interpreter Iterator Memento Strategy Template Method

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Luiz Leão luizleao@gmail.com http://www.luizleao.com Questão 1 O desenvolvimento de software envolve usuários, clientes e desenvolvedores. Avalie as seguintes afirmações

Leia mais

Padrões de Design. Padrões de Design. Abstract Factory. Padrões de Design. Padrões de Design Abstract Factory. Abstract Factory.

Padrões de Design. Padrões de Design. Abstract Factory. Padrões de Design. Padrões de Design Abstract Factory. Abstract Factory. Escopo Classe Objeto Finalidade Criação Estrutural Comportamental Factory Method Interperter Abstract Factory Builder Prototype Bridge Composite Facade Flyweight Proxy Chain of Responsibility Command Iterator

Leia mais

Segunda Parte (3 valores) Primeira Parte (7 valores) Nome: Número: PERGUNTA NOTA PERGUNTA RESPOSTA

Segunda Parte (3 valores) Primeira Parte (7 valores) Nome: Número: PERGUNTA NOTA PERGUNTA RESPOSTA 2º Teste 2012/2013 1º Semestre 201301171830 1/7 2º Teste 2012/2013 1º Semestre 17 de Janeiro de 2013, 11:30 (120 minutos) Nome: Número: Primeira Parte (7 valores) PERGUNTA NOTA 1.1.1 1.1.2 1.1.3 1.2 1.3

Leia mais

Tópicos Especiais em Informática Fatec Indaiatuba

Tópicos Especiais em Informática Fatec Indaiatuba Prof. Dr. Dilermando Piva Jr. Fatec Indaiatuba O que tem a ver isso com Programação? Imagine que uma pessoa tenha aprendido diversas técnicas de pintura. A partir desse conhecimento, ela saberá como pegar

Leia mais

Abstract Factory Builder Factory Method Prototype Singleton Adapter Bridge Composite Decorator Facade Flyweight Proxy

Abstract Factory Builder Factory Method Prototype Singleton Adapter Bridge Composite Decorator Facade Flyweight Proxy Abstract Factory Builder Factory Method Prototype Singleton Adapter Bridge Composite Decorator Facade Flyweight Proxy Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State

Leia mais

UNIVERSIDADE DO SUL DE SANTA CATARINA RÔMULO VIEIRA DA SILVA EXEMPLO DE APLICAÇÃO DOS PADRÕES DE PROJETO GOF PARA A ESPECIFICAÇÃO DE SIGAD

UNIVERSIDADE DO SUL DE SANTA CATARINA RÔMULO VIEIRA DA SILVA EXEMPLO DE APLICAÇÃO DOS PADRÕES DE PROJETO GOF PARA A ESPECIFICAÇÃO DE SIGAD UNIVERSIDADE DO SUL DE SANTA CATARINA RÔMULO VIEIRA DA SILVA EXEMPLO DE APLICAÇÃO DOS PADRÕES DE PROJETO GOF PARA A ESPECIFICAÇÃO DE SIGAD Florianópolis 2015 RÔMULO VIEIRA DA SILVA EXEMPLO DE APLICAÇÃO

Leia mais

Módulo III Padrões GOF

Módulo III Padrões GOF Módulo III Padrões GOF Professores Eduardo Bezerra edubezerra@gmail.com Ismael H F Santos ismael@tecgraf.puc-rio.br April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1 Ementa Introdução aos

Leia mais

especificação por meio de exemplos não é garantia de corretude, mas a experiência mostra que tende a ser melhor do que o estado da prática hoje

especificação por meio de exemplos não é garantia de corretude, mas a experiência mostra que tende a ser melhor do que o estado da prática hoje 1 Introdução Testar é o conjunto de tarefas ou passos executados para verificar se um produto ou serviço atende à sua proposta. Dessa forma, a execução de testes em um programa contribui para a melhoria

Leia mais

DIVISÃO DE ASSUNTOS ACADÊMICOS Secretaria Geral de Cursos PROGRAMA DE DISCIPLINA

DIVISÃO DE ASSUNTOS ACADÊMICOS Secretaria Geral de Cursos PROGRAMA DE DISCIPLINA DIVISÃO DE ASSUNTOS ACADÊMICOS Secretaria Geral de Cursos PROGRAMA DE DISCIPLINA DEPARTAMENTO DE CIÊNCIAS EXATAS CÓDIGO: EXA836 DISCIPLINA: PADRÕES E FRAMEWORKS CARGA HORÁRIA: 60h EMENTA: Padrões e anti-padrões

Leia mais

Programação com Objectos 2º Teste Tipo 1º Semestre (120 minutos)

Programação com Objectos 2º Teste Tipo 1º Semestre (120 minutos) 1/8 Programação com Objectos 2º Teste Tipo 1º Semestre (120 minutos) Nome: Primeira Parte (7 valores) PERGUNTA NOTA 1.1.1 1.1.2 1.1.3 1.2 1.3 1.4 Segunda Parte (3 valores) PERGUNTA RESPOSTA 2.1 2.2 2.3

Leia mais

Teste de software. Engenharia de software Profª karine sato da silva

Teste de software. Engenharia de software Profª karine sato da silva Teste de software Engenharia de software Profª karine sato da silva Mais sobre o TDD Test Driven Development (TDD); TDD reivindica um desenvolvimento incremental do código que inicia com testes, incluindo

Leia mais

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 17 Padrões de Design Singleton Facade Factory Method Observer Strategy

Leia mais

ENGENHARIA DE SOFTWARE. Aula 12 Testes de software

ENGENHARIA DE SOFTWARE. Aula 12 Testes de software ENGENHARIA DE SOFTWARE Aula 12 Testes de software OBJETIVOS Compreender os estágios de teste durante o desenvolvimento para os testes de aceitação por parte dos usuários de sistema; Apresentar as técnicas

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 10 Padrões GoF (Protoype e Façade) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype Singleton

Leia mais

Sumário. Prefácio 12. Capítulo 1 - Técnicas Simples Para um Código Limpo 23

Sumário. Prefácio 12. Capítulo 1 - Técnicas Simples Para um Código Limpo 23 Prefácio 12 Para quem é esse livro? 13 Objetivos do livro 13 Por que Engenharia de Software? 14 Como esse livro está escrito 16 Perguntas 16 Código em texto corrido 16 Caixas de código 16 Caixas com conteúdo

Leia mais

Prof. Dr. Dilermando Piva Jr. Fatec Indaiatuba

Prof. Dr. Dilermando Piva Jr. Fatec Indaiatuba Prof. Dr. Dilermando Piva Jr. Fatec Indaiatuba Imagine que uma pessoa tenha aprendido diversas técnicas de pintura. A partir desse conhecimento, ela saberá como pegar um pincel, como misturar as cores

Leia mais

Desafios do desenvolvimento de Software (Desenvolvimento Tradicional x Desenvolvimento Ágil)

Desafios do desenvolvimento de Software (Desenvolvimento Tradicional x Desenvolvimento Ágil) Programação Extrema Desafios do desenvolvimento de Software (Desenvolvimento Tradicional x Desenvolvimento Ágil) Prof. Mauro Lopes 1-31 25 Plano de Aula Desafios do Desenvolvimento de Software Introdução

Leia mais

15/09/2014. Aula 01: Apresentação. Review to 1 st Exam. Aula 02: Técnicas de Reuso. Panorama de Reuso. Aula 03: POO e Padrões. Bibliografia da Aula 02

15/09/2014. Aula 01: Apresentação. Review to 1 st Exam. Aula 02: Técnicas de Reuso. Panorama de Reuso. Aula 03: POO e Padrões. Bibliografia da Aula 02 Software Reuse Lecture 13 Aula 01: Apresentação Review to 1 st Exam Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo reuso.software@gmail.com 15 September 2014 Bibliografia Método de avaliação Provas

Leia mais

Tópicos Avançados em Linguagem de Programação. Padrões de Software. Prof. Alexandre Vidal DEINF-UFMA. Ciência da Computação

Tópicos Avançados em Linguagem de Programação. Padrões de Software. Prof. Alexandre Vidal DEINF-UFMA. Ciência da Computação Tópicos Avançados em Linguagem de Programação Prof. Alexandre Vidal DEINF-UFMA Ciência da Computação Patterns (padrões) Compõem uma disciplina da Engenharia de Software voltada para a resolução de problemas

Leia mais

Tópico 8: Arquitetura, Padrões, Frameworks e MDA

Tópico 8: Arquitetura, Padrões, Frameworks e MDA PU-Rio Tópico 8: Arquitetura, Padrões, Frameworks e MDA Luiz Antônio M. Pereira lpereira@uninet.com.br PU-Rio Agenda Arquitetura de Software Padrões e Frameworks Introdução Padrões de projeto Frameworks

Leia mais

Estratégias de Escrita de Testes Automatizados

Estratégias de Escrita de Testes Automatizados Estratégias de Escrita de Testes Automatizados Paulo Cheque 12/02/2009 Verão 2009 2 Sobre a Palestra Refatoração TAD TFD/POUT TDD BDD Padrões e Anti padrões 3 (Refatoração) Uma modificação feita em pequenos

Leia mais

Programação Avançada. Padrões de Projeto de Software. Fonte: Oswaldo B. Peres e K19 Treinamentos

Programação Avançada. Padrões de Projeto de Software. Fonte: Oswaldo B. Peres e K19 Treinamentos Programação Avançada Padrões de Projeto de Software 1 Fonte: Oswaldo B. Peres e K19 Treinamentos Introdução Projetar software OO reusável e de boa qualidade é uma tarefa difícil; Para realizar essa tarefa

Leia mais

JUnit. Facilitando o desenvolvimento e execução de testes unitários em código java. Peterson Rodrigues

JUnit. Facilitando o desenvolvimento e execução de testes unitários em código java. Peterson Rodrigues JUnit Facilitando o desenvolvimento e execução de testes unitários em código java. Peterson Rodrigues Roteiro Teste Unitário: O que? Por quê? Quando? Quem? O que testar? Teste Funcional: O que é? JUnit:

Leia mais

Testes Automatizados. Cursos de Verão 2007 IME/USP Dairton Bassi & Paulo Cheque

Testes Automatizados. Cursos de Verão 2007 IME/USP   Dairton Bassi & Paulo Cheque Testes Automatizados Cursos de Verão 2007 IME/USP www.agilcoop.org.br Dairton Bassi & Paulo Cheque Roteiro 1) Motivação 2) Introdução a Testes 3) Testes de Unidade 4) Testes de Aceitação 5) Testes de Integração

Leia mais

Padrões de Projeto. Prof. Jefersson Alex dos Santos (jefersson@dcc.ufmg.br) http://www.dcc.ufmg.br/~jefersson

Padrões de Projeto. Prof. Jefersson Alex dos Santos (jefersson@dcc.ufmg.br) http://www.dcc.ufmg.br/~jefersson Padrões de Projeto Prof. Jefersson Alex dos Santos (jefersson@dcc.ufmg.br) http://www.dcc.ufmg.br/~jefersson Apresentação Conceitos Definição Ponto de vista prático História Padrões de Projeto Conhecidos

Leia mais

Padrões de Projeto de Software

Padrões de Projeto de Software Padrões de Projeto de Software Lista de Exercícios AV1 01 Luiz Leão luizleao@gmail.com http://www.luizleao.com Questão 1 Dentre as alternativas abaixo identifique a que NÃO define uma situação em que deve

Leia mais

INTRODUÇÃO A ENGENHARIA DE SOFTWARE

INTRODUÇÃO A ENGENHARIA DE SOFTWARE Universidade TESTE Estadual DE SOFTWARE Vale do Acaraú O que são testes? INTRODUÇÃO A ENGENHARIA DE SOFTWARE Teste é um processo de avaliar um sistema ou um componente de um sistema para verificar se ele

Leia mais

Aula 01: Apresentação. Revisão para Prova 1. Aula 02: Técnicas de Reuso. Panorama de Reuso. Aula 03: POO e Padrões. Bibliografia da Aula 02

Aula 01: Apresentação. Revisão para Prova 1. Aula 02: Técnicas de Reuso. Panorama de Reuso. Aula 03: POO e Padrões. Bibliografia da Aula 02 Reutilização de Software Aula 13 Aula 01: Apresentação Revisão para Prova 1 Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo reuso.software@gmail.com 23 Setembro 2013 Bibliografia Método de avaliação

Leia mais

TREINAMENTO ORIENTAÇÃO A OBJETOS

TREINAMENTO ORIENTAÇÃO A OBJETOS TREINAMENTO ORIENTAÇÃO A OBJETOS SOFTMAP Tecnologia e Inovação Copyright 2016 Softmap Treinamentos e Serviços EIRELI ME. Todos os direitos reservados. Nenhuma parte deste documento pode ser copiada, reproduzida,

Leia mais

Tecnologias Atuais de. Desenvolvimento de Software

Tecnologias Atuais de. Desenvolvimento de Software Tecnologias Atuais de Desenvolvimento de Software Arquitetura, Padrões, Frameworks e MDA Prof. Luiz Antônio lpereira@uninet.com.br Agenda Arquitetura de Software Patterns e Frameworks Introdução Padrões

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

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1 Processos de Software Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1 Objetivos Apresentar modelos de processos de software Descrever três modelos genéricos de processo e quando

Leia mais

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini   / Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini E-mail: prof.andre.luis.belini@gmail.com / andre.belini@ifsp.edu.br MATÉRIA: QUALIDADE DE SOFTWARE Tema: Teste de Software:

Leia mais

BibIme - Um Software Gerenciador de Bibliotecas Produzido de Forma Cooperativa

BibIme - Um Software Gerenciador de Bibliotecas Produzido de Forma Cooperativa BibIme - Um Software Gerenciador de Bibliotecas Produzido de Forma Cooperativa Dairton Bassi, Kelly Braghetto, Eduardo Colli, Fabio Kon, João Eduardo Ferreira Instituto de Matemática e Estatística Universidade

Leia mais

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks 48 3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks Este capítulo apresenta uma visão geral da contribuição principal deste trabalho: uma abordagem orientada a aspectos para o

Leia mais

Teste de Software. Prof. Camila. Pedro de Assis Sobreira Jr.

Teste de Software. Prof. Camila. Pedro de Assis Sobreira Jr. Teste de Software Prof. Camila Pedro de Assis Sobreira Jr. 2 Técnicas de Testes Técnica de Teste Funcional Técnica de Teste Estrutural 3 Testes Funcionais Teste de Especificação de Requisitos. Teste de

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

- 8ª Lista de Exercícios -

- 8ª Lista de Exercícios - - 8ª Lista de Exercícios - Teste de Software Questão 1) (FCC - 2015 - TRT - 15ª Região - Analista Judiciário - Tecnologia da Informação) Os testes de software podem ser aplicados no ciclo de desenvolvimento

Leia mais

Problemas e Práticas Recomendadas no Desenvolvimento de Software

Problemas e Práticas Recomendadas no Desenvolvimento de Software Problemas e Práticas Recomendadas no Desenvolvimento de Software Objetivos deste módulo Levantar problemas enfrentados na prática do desenvolvimento de software Discutir boas práticas para o desenvolvimento

Leia mais

Testes com Design Patterns

Testes com Design Patterns Helder da Rocha (helder.darocha@gmail.com) 31 de março de 2005 71. Que padrão de design pode ser usado para permitir que uma implementação específica e uma hierarquia de abstrações possa variar independentemente?

Leia mais

Engenharia de Software

Engenharia de Software Engenharia de Software Processos de Software Professor: Charles Leite O processo de software Um conjunto estruturado de atividades, procedimentos, artefatos e ferramentas necessários para o desenvolvimento

Leia mais

Soluções reutilizáveis para situações ou problemas encontrados comumente em desenvolvimento de software orientado a objetos.

Soluções reutilizáveis para situações ou problemas encontrados comumente em desenvolvimento de software orientado a objetos. Padrões de Projeto O que são? Soluções reutilizáveis para situações ou problemas encontrados comumente em desenvolvimento de software orientado a objetos. Livros Design Patterns: Elements of Reusable Object-

Leia mais

Teste de Software. Competência: Entender as técnicas e estratégias de testes de Software

Teste de Software. Competência: Entender as técnicas e estratégias de testes de Software Teste de Software Competência: Entender as técnicas e estratégias de testes de Software Conteúdo Programático Introdução O que é teste de software? Por que é necessário testar um software? Qual a causa

Leia mais

Introdução a Teste de Software

Introdução a Teste de Software Universidade Católica de Pelotas Tecnólogo em Análise e Desenvolvimento de Sistemas Disciplina de Qualidade de Software Introdução a Teste de Software Prof. Luthiano Venecian 1 Conceitos Teste de software

Leia mais

DMS - DOCUMENTO DE MODELAGEM DE SISTEMA VERSÃO: [NOME DO SISTEMA] [SIGLA] [AUTORES]

DMS - DOCUMENTO DE MODELAGEM DE SISTEMA VERSÃO: [NOME DO SISTEMA] [SIGLA] [AUTORES] DMS - DOCUMENTO DE MODELAGEM DE SISTEMA Este documento foi criado seguindo as recomendações e orientações do livro UML na Prática Do Problema ao Sistema e do modelo PRISM do MPDS (Modelo Prático para Desenvolvimento

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

SEMINÁRIOS INTEGRADOS EM SISTEMAS DE INFORMAÇÃO. Unidade 6 Engenharia de Software. Luiz Leão

SEMINÁRIOS INTEGRADOS EM SISTEMAS DE INFORMAÇÃO. Unidade 6 Engenharia de Software. Luiz Leão SEMINÁRIOS INTEGRADOS EM SISTEMAS DE INFORMAÇÃO Unidade 6 Engenharia de Software Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático Padrões de desenvolvimento Métricas de desenvolvimento

Leia mais

Design Dirigido ao Domínio - DDD

Design Dirigido ao Domínio - DDD Design Dirigido ao Domínio - DDD Daniel Alcântara Cordeiro, Frederico A. Lima Junior, Saulo Mendonça Universidade Salvador (Unifacs) Edf. Civil Empresarial. Rua Doutor José Peroba, nº 251, STIEP, Salvador

Leia mais

Ciência da Computação. Análise e Projeto Orientado a Objetos UML. Anderson Belgamo

Ciência da Computação. Análise e Projeto Orientado a Objetos UML. Anderson Belgamo Ciência da Computação Análise e Projeto Orientado a Objetos UML Anderson Belgamo 1 Evolução do Software O rápido crescimento da capacidade computacional das máquinas resultou na demanda por sistemas de

Leia mais

Desenvolvimento de Software. Testes de Software. Tópicos da Aula. Onde estamos... Verificação x Validação. Testes de Software

Desenvolvimento de Software. Testes de Software. Tópicos da Aula. Onde estamos... Verificação x Validação. Testes de Software Engenharia de Software Aula 17 Desenvolvimento de Software Testes de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo dcc603@gmail.com 7 Maio 2012 1. Especificação de requisitos 2. Projeto

Leia mais

Introdução aos Padrões de Projeto. Sylvio Barbon Jr

Introdução aos Padrões de Projeto. Sylvio Barbon Jr Introdução aos Padrões de Projeto Sylvio Barbon Jr 25 février 2016 Introdução Disciplina Engenharia de Software : São Tratados principalmente os tesmas : Metodologia : No desenvolvimento

Leia mais

Teste de Software. Estratégias de Teste. Rosemary Silveira Filgueiras Melo

Teste de Software. Estratégias de Teste. Rosemary Silveira Filgueiras Melo Teste de Software Estratégias de Teste Rosemary Silveira Filgueiras Melo rosesfmelo@hotmail.com 1 Agenda Estratégias de Teste Tipos de Estratégias de Teste 2 Estratégias de teste Define as fases em que

Leia mais