Manutenção de Frameworks Orientados a Objetos Usando Orientação a Aspectos

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

Download "Manutenção de Frameworks Orientados a Objetos Usando Orientação a Aspectos"

Transcrição

1 Manutenção de Frameworks Orientados a Objetos Usando Orientação a Aspectos André L. de Oliveira 1, Valter V. de Camargo, Rosângela Ap. D. Penteado 1 Departamento de Computação Universidade Federal de São Carlos (UFSCar) Caixa Postal São Carlos SP Brazil {andre_oliveira, valter, rosangela}@dc.ufscar.br Abstract. Object-Oriented Frameworks (OOF) need maintenance to evolve or be adapted to new technologies and environments. When maintenance activities use aspect-oriented (AO) techniques, some problems can emerge, such as increasing the number of framework components, hindering the coupling, as well as reducing the cohesion among them. In this study are presented some guidelines to support software engineers in performing maintenance of OOF using AO techniques in order to address those problems. Resumo. Frameworks orientados a objetos (FOO) necessitam de manutenção para evoluir ou serem adaptados a novas tecnologias e ambientes. Quando as atividades de manutenção envolvem técnicas de orientação a aspectos (OA) alguns problemas podem ocorrer, dentre eles, o aumento do número de componentes do framework, prejudicando o acoplamento e reduzindo da coesão dos componentes. Neste trabalho são apresentadas algumas diretrizes para auxiliar aos engenheiros de software a realizar manutenção em FOO utilizando técnicas de OA para resolver ou tratar esses problemas. 1. Introdução Quaisquer modificações que são realizadas em sistemas podem levar a efeitos colaterais e outros problemas diversos. O mesmo problema pode ocorrer no contexto de frameworks, fazendo com que o engenheiro de software tenha que tomar decisões sobre a forma como o framework deve ser reimplementado ou em como implementar uma solução para resolver um problema específico [Bosch et al., 2000]. O processo de manutenção de frameworks trata de modificações e adaptações que podem ocorrer em nível funcional (requisitos) e não-funcional e inclui aspectos qualitativos como portabilidade e reusabilidade [Fayad and Schmidt, 1997]. Uma das alternativas de manutenção existentes que podem ser aplicadas a frameworks orientados a objetos (OO) é utilizar técnicas de orientação a aspectos (OA). Quando se decide utilizar orientação a aspectos para a manutenção de frameworks OO, usualmente há aumento no número de seus componentes (classes, interfaces e aspectos) o que, consequentemente, leva ao aumento do tamanho do framework, a maiores níveis de acoplamento e à redução da coesão de seus componentes. Isso conduz ao aumento da complexidade do framework, o que dificulta o seu entendimento e consequentemente sua manutenção, extensão e utilização. Um framework de aplicação OO que tenha a implementação de um determinado interesse entrelaçada e espalhada pelo código fonte de várias classes pode ser re-projetado 1 Apoio Financeiro FAPESP Proc. Nro. 2008/

2 utilizando técnicas de Orientação a Aspectos. Duas estratégias podem ser utilizadas para modularizar a implementação desses interesses espalhados: 1) criar um aspecto para cada classe do framework que contém código relacionado ao interesse a ser modularizado. Esse aspecto irá introduzir/entrecortar um conjunto de atributos e operações relacionados a esse interesse nessa classe; 2) criar um único aspecto para introduzir/entrecortar um conjunto de atributos e operações relacionado ao interesse a ser modularizado em todas as classes que contém indícios desse interesse. O uso da estratégia 1) reduz a complexidade do código dos aspectos, favorecendo a legibilidade, porém, tem como desvantagem o aumento do número de componentes do framework. O uso da estratégia 2) reduz o número de componentes do framework, mas aumenta complexidade do código dos aspectos, dificultando a legibilidade. Neste trabalho são relatados os problemas que podem ocorrer quando essas estratégias são utilizadas e são fornecidas diretrizes para solucioná-los. Além desta seção há outras cinco. Na Seção 2 são discutidos os problemas do uso de orientação a aspectos na manutenção de frameworks OO. Na Seção 3 são apresentadas as diretrizes de manutenção que podem ser aplicadas para resolver problemas citados na Seção 2. Na Seção 4, um estudo de caso ilustra como as diretrizes foram aplicadas. Na Seção 5 são citados os trabalhos relacionados a este e na Seção 6 são apresentadas as considerações finais e as propostas de trabalhos futuros. 2. Problemas do Uso de Orientação a Aspectos na Manutenção de Frameworks OO Toda manutenção apresenta algumas dificuldades, principalmente aquelas em que a técnica ou tecnologia de desenvolvimento do software não é a mesma que a utilizada em sua manutenção. Nesta seção são relatados alguns problemas e armadilhas de manutenção que engenheiros de software podem se deparar ao utilizarem técnicas de OA para modularizar frameworks OO. Quando a implementação de um interesse se encontra distribuída por várias classes, uma solução é a utilização de aspectos para modularizar a implementação desse interesse. Como comentado anteriormente, duas estratégias podem ser usadas para modularizar esse interesse em aspectos. A estratégia 1) proporciona melhor legibilidade no código fonte que contém os aspectos, visto que cada aspecto introduz/entrecorta atributos e operações apenas de uma classe. Porém, há o aumento do número de componentes do framework e do acoplamento, além de ocorrer a quebra do princípio de separação de interesses [Dijkstra, 1976]: cada interesse deve ser implementado em uma única unidade (classe, interface, aspecto). O uso da estratégia 2) encapsula a implementação do interesse em uma única unidade, reduzindo o acoplamento e aumentando a coesão do framework e o tamanho do vocabulário do framework. Porém, há a redução da legibilidade do código dos aspectos, aumentando a complexidade do código. Outro problema que pode ocorrer é a dificuldade de mapeamento das variabilidades do framework. Sem um mapeamento preciso, não é possível refatorar todas as funcionalidades fornecidas pelo framework OO para aspectos. Um mapeamento falho pode conduzir a detecção imprecisa do nível de entrelaçamento e espalhamento de interesses. E, consequentemente, isso se reflete na modularização inadequada das funcionalidades do framework.

3 3. Diretrizes de Manutenção Com o intuito de prevenir ou amenizar os problemas relacionados ao uso de OA na manutenção de frameworks OO, nesta seção são apresentadas as seguintes diretrizes: a) Analisar a documentação e o código fonte do framework e mapear suas variabilidades; b) Analisar a presença de espalhamento de interesses; c) Analisar a presença de entrelaçamento de interesses; d) Analisar entrelaçamento e espalhamento de interesses de maneira objetiva e subjetiva e; e) Encapsular o entrelaçamento, o espalhamento e cada variabilidade do framework em aspectos. a) Analisar a documentação e o código do framework e mapear suas variabilidades: deve-se identificar os pontos variantes ou variabilidades (hot spots) do framework e representá-las em um diagrama de features, utilizando a notação proposta por Kang et al. (1990) ou a de Gomaa (2004), baseada na linguagem UML. Isso facilita o engenheiro de software no processo de modularização de frameworks, permitindo a compreensão dos elementos obrigatórios, alternativos e opcionais do framework, levando-o a implementar cada feature de modo a desacoplá-la do núcleo (frozen-spots) do framework. b) Analisar a presença de espalhamento de interesses: deve-se verificar se a implementação de cada interesse do framework que passará por manutenção está distribuída por unidades modulares destinadas a implementar outros interesses. Ou seja, para um interesse x, verificar se há código relacionado a esse interesse nas unidades modulares que implementam os interesses y, w e z. c) Analisar a presença de entrelaçamento de interesses: deve-se verificar se a implementação de cada interesse do framework que passará por manutenção está misturada com a implementação de outros interesses. Ou seja, para um interesse x verificar se há código relacionado aos interesses y, w e z nas unidades modulares que implementam o interesse x. d) Analisar entrelaçamento e espalhamento de interesses de maneira objetiva e subjetiva: deve-se analisar o código fonte de cada método do framework e verificar a presença de indícios do interesse avaliado. Objetivamente, é possível identificar alguma palavra chave relacionada ao interesse em análise no código? Após isso, deve-se fazer uma análise subjetiva, ou seja, analisar o conteúdo semântico do método e concluir se está relacionado ao interesse avaliado. Dessa forma, evita-se problemas que um dado método m, destinado a implementar o interesse x, contenha em sua lista de parâmetros um tipo destinado a implementar o interesse y. Se o método m for analisado apenas quanto as palavras-chave pode-se concluir que ele é destinado a implementar os interesses x e y, quando, realmente, é destinado a implementar somente o interesse x. e) Encapsular o entrelaçamento, o espalhamento e cada variabilidade do framework em aspectos: deve-se analisar o diagrama de features do framework para identificar suas features opcionais e alternativas, encapsular cada uma delas em aspectos, analisar o entrelaçamento e o espalhamento de interesses e utilizar aspectos para modularizá-los. Por exemplo, dada a unidade modular u destinada a implementar o interesse x que contém código relacionado ao interesse y. Um aspecto deve ser criado para separar a implementação do interesse y da unidade modular u. Com isso, as funcionalidades do framework são refatoradas para aspectos, de modo a facilitar a composição de diferentes combinações de suas funcionalidades.

4 4. Estudo de Caso: Processo de Manutenção do Framework GRENJ Nesta Seção é apresentado um estudo de caso para ilustrar alguns dos problemas de manutenção que podem ocorrer quando se utiliza linguagem orientada aspectos para modularização de frameworks OO. GRN (Gestão de Recurso de Negócio Business Resource Management) [Braga et al., 1999] é uma linguagem de padrões, em nível de análise, composta por quinze padrões, para apoiar o desenvolvedor na modelagem de sistemas no domínio de gestão de recursos de negócio. GRENJ [Durelli, 2008] é um framework de aplicação OO, desenvolvido com base na linguagem de padrões GRN, que permite a instanciação de sistemas utilizando esses padrões para atender aos requisitos solicitados pelos clientes. Na forma como os padrões da GRN estão implementados na versão OO do GRENJ, há entrelaçamento e espalhamento de interesses relacionados a cada padrão. Isso gera muitos relacionamentos de dependência entre as classes do framework, fazendo com que toda aplicação baseada no GRENJ tenha que carregar todas as classes nele implementadas, independente se são ou não utilizadas. Por exemplo, dado os módulos A e B, que implementam padrões distintos, na versão OO do GRENJ há código relacionado ao módulo A dentro da implementação do módulo B. Para resolver esse problema, o framework GRENJ passou por um processo de modularização com orientação a aspectos, separando a implementação de cada padrão e suas variantes do núcleo do framework. Em virtude da restrição de espaço para apresentação do artigo, somente a modularização do padrão Quantificar Recurso é apresentada. É importante ressaltar que o uso de refatoração OO não é suficiente para efetuar essa modularização, visto que a adição de padrões ou variantes afetam o comportamento estático e dinâmico do framework. Desse modo, há a necessidade de utilizar construções como inter-type declarations e advices, presentes em linguagens orientadas a aspectos como AspectJ, para adicionar atributos e operações em classes, bem como comportamento no contexto de execução de determinados métodos do framework. A orientação a objetos não provê esses mecanismos. O padrão Quantificar Recurso fornece quatro formas de quantificar os recursos de negócio de uma aplicação: i) como único, quando não é necessário ter o controle de uma instância específica do recurso; ii) instanciável, quando é necessário ter o controle de uma instância específica do recurso, como em sistema de biblioteca, em que um livro (o recurso) contém várias cópias; iii) mensurável, quando é necessário lidar com certas quantidades de recurso; ou iv) em lotes. Cada uma dessas formas de quantificação é uma variante do padrão e sua implementação está entrelaçada com a implementação do padrão Identificar Recurso (P1), como ilustrado na Figura 1. Cada método da classe Resource está marcado com um estereótipo, que representa os padrões e variantes que eles implementam. Por exemplo, o método getmeasureunity() de Resource está marcado com os estereótipos <<QR-V2>> e <<QR-V3>>, indicando que é destinado a implementar as variantes Recurso Mensurável e Recurso em Lotes do padrão Quantificar Recurso. Na implementação OO do padrão Quantificar Recurso no GRENJ, há métodos relacionados aos padrões da GRN Locar Recurso e Comercializar Recurso, na classe QuantificationStrategy, que é destinada a implementar o padrão Quantificar Recurso, como ilustrado na Figura 1. Outro problema é a existência de métodos relacionados a todas as estratégias de quantificação em QuantificationStrategy.

5 Figura 1. Implementação OO do padrão Quantificar Recurso Com isso, a separação de interesses, o acoplamento e a coesão do código do padrão ficam afetados, uma vez que é necessário fornecer implementações vazias para métodos não correspondentes a estratégia de quantificação implementada por cada classe. Por exemplo, a classe SingleResource implementa a estratégia de quantificação Recurso Único, e dentro dessa classe é necessário fornecer implementações vazias para métodos como getmeasureunity() e getinstances(), que estão relacionados às estratégias de quantificação Recurso Mensurável ou em Lotes e Recurso Instanciável. Esse entrelaçamento existente na implementação das variantes desse padrão na versão OO GRENJ prejudica a manutenibilidade e a reusabilidade do código. Para modularizar o padrão Quantificar Recurso, primeiramente foram mapeadas as suas variabilidades. Posteriormente, foram analisadas as classes do framework para a detecção de entrelaçamento de espalhamento de interesses. Finalmente, a implementação de cada uma das variantes do padrão Quantificar Recurso foi modularizada com aspectos, como ilustrado na Figura 2. Essa implementação evita que as classes citadas forneçam implementações abstratas como comentado anteriormente. Além disso, na implementação OA desse padrão, os métodos relacionados a ele foram removidos da classe Resource, aumentando a coesão dessa classe e conseqüentemente da implementação do padrão Identificar Recurso. Os métodos relacionados aos padrões Locar Recurso e Comercializar Recurso também foram removidos da classe QuantificationStrategy, que implementa o padrão Quantificar Recurso, aumentando a coesão da mesma. Na Figura 2a) tem-se a representação das classes da implementação OA da variante Recurso Único. ResourceWithQuantificationContainerLoaderAspect é um aspecto comum a todas as variantes do padrão e introduz, por meio do mecanismo de inter-type declarations de AspectJ, atributos e métodos relacionados ao padrão Quantificar Recurso na classe Resource. Essa classe implementa o padrão Identificar Recurso, garantindo que o comportamento do framework permaneça inalterado.

6 Figura 2. Implementação OA do padrão Quantificar Recurso Na implementação OA, da variante Recurso Mensurável ou em Lotes, Figura 2b), os métodos relacionados a essas variantes foram removidos das classes Resource e QuantificationStrategy, sendo encapsulados nos aspectos MeasurableQuantStrategyContainerLoaderAspect e MeasurableResourceContainerLoaderAspect. Esses aspectos introduzem métodos relacionados a essa variante, como getquantityinstock() e getmeasureunity(), nas classes Resource e QuantificationStrategy. Evita-se, assim, que essa variante fique entrelaçada com a implementação de outros padrões e as suas demais variantes. Esse mesmo processo ocorreu com a implementação OA da variante Recurso Instanciável, (Figura 2c). Com a elaboração da versão OA dos padrões da GRN implementados no framework GRENJ, verificou-se que o desenvolvedor pode utilizar um aspecto para introduzir membros ou entrecortar métodos em cada classe que contém indícios do interesse a ser modularizado, para separar esse interesse dessas classes. Dessa forma, é possível reduzir a complexidade do código dos aspectos já que há redução do número de linhas de código de uma unidade modular, facilitando a compreensão e manutenção do código. Um problema com essa estratégia é o aumento do número de componentes do padrão. Além disso, essa estratégia quebra o princípio básico de separação de interesses da orientação a aspectos (cada interesse deve ser implementado em um único módulo) fazendo com que existam vários aspectos que encapsulam a implementação do mesmo interesse. Para resolver esse problema as diretrizes de manutenção da Seção 3 foram usadas. Os interesses relacionados a cada padrão ou variante foram encapsulados em um único aspecto, como ilustrado na Figura 3. O aspecto ResourceWithQuantification, como ilustrado na Figura 3, é comum a todas as variantes do padrão, e introduz atributos e métodos relacionados ao padrão Quantificar Recurso na classes Resource, que implementa o padrão Identificar Recurso. Os aspectos MeasurableQuantStrategyContainerLoaderAspect e MeasurableResourceContainerLoaderAspect, que introduzem atributos e operações relacionados à variante Recurso Mensurável ou em Lotes do padrão Quantificar Recurso nas classes Resource e QuantificationStrategy, foram removidos e foi criado o aspecto MeasurableQuantStrategy para introduzir esses atributos e operações em ambas as classes, como mostrado na Figura 3b). O mesmo procedimento foi utilizado para o Recurso Instanciável, sendo criado o aspecto InstantiableQuantStrategy.

7 Figura 3. Padrão Quantificar Recurso após a aplicação das diretrizes de manutenção 5. Trabalhos Relacionados Bayer e Milewski (2008) desenvolveram uma IDE para apoiar o processo de manutenção. Ela fornece informação do projeto comportamental por meio de um formulário gráfico, o que possibilita que os engenheiros de software compreendam mais facilmente como o sistema funciona e possam localizar o código fonte relevante, sem a necessidade de consultar a documentação. Essa abordagem pode auxilia a detecção de entrelaçamento e espalhamento de interesses e o mapeamento das variabilidades de frameworks. Kawakami et al. (2007) propuseram uma ferramenta de reengenharia denominada ReJAsp (Reengenharia de Java para Aspectos), um plugin do Eclipse, para automatizar a abordagem Aspecting [Ramos et al. 2004], que trata da identificação de interesses transversais. É possível a identificação dos interesses transversais de persistência em banco de dados relacional, persistência em memória intermediária e logging. Posteriormente, Costa et al. (2009) desenvolveram uma ferramenta chamada DMAsp, também um plugin do Eclipse, para apoiar a geração de um modelo orientado a objetos anotado com indícios de interesses transversais, identificados pela ferramenta ReJAsp. Para a aplicação das diretrizes Analisar a Presença Espalhamento de Interesses e Analisar a Presença Entrelaçamento de Interesses propostas neste trabalho, pode-se utilizar as ferramentas ReJAsp e DMAsp. A abordagem Phoenix (Garcia et al., 2005) realiza a reengenharia de software OO para uma mistura de objetos com abstrações OA. Tem seu enfoque em aspect-mining para identificar potenciais interesses transversais a serem modelados e implementados como aspectos, e em técnicas de refactoring para reorganizar o código utilizando transformações de código, o que possibilita a recuperação de um projeto OA. Assim, a abordagem Phoenix pode ser utilizada juntamente com as diretrizes aqui apresentadas para a manutenção de frameworks, sendo gerado um modelo de projeto OA a partir de um código OO. 6. Considerações Finais Durante a manutenção de um framework OO utilizando OA foram verificados problemas como, por exemplo, a existência de vários interesses implementados com entrelaçamento e espalhamento e para modularizá-los foram utilizados aspectos. Na análise da versão original do GRENJ, usado como estudo de caso, foi verificado que a implementação de um interesse se encontra distribuída por várias classes framework. Após essa análise, pode-se utilizar aspectos para modularizar a implementação desse interesse. Uma das duas estratégias comentadas na Seção 2 pode ser utilizada. O uso das diretrizes de manutenção de frameworks apresentadas auxilia na composição de cada uma das features do framework a ser modularizado. Isso permite que aplicações baseadas em

8 frameworks tenham somente código relacionado às funcionalidades necessárias aos requisitos da aplicação. Ao contrário do que ocorre em frameworks convencionais como Spring (2010) e Hibernate (2010) em que é necessário carregar todas as features do framework independente se são utilizadas ou não. Além disso, o uso dessas diretrizes conduz ao projeto de um framework com um menor nível de acoplamento e alta coesão entre suas classes. Isso facilita a manutenção, a extensão e o processo de uso e reúso do framework. A elaboração de um processo para apoiar a manutenção de frameworks orientados a objetos para orientado a aspectos, bem como um estudo sobre o impacto e os problemas do uso de métricas de software nesse processo de manutenção são alguns dos trabalhos futuros. Referências Bayer, R., Milewski, A. E. (2008). Improving Software Maintenance Efficiency With Behavior-Based Cognitive Models. In Proceedings of SMC 2008, Singapore. Bosch, J., Molin, P., Mattsson, M., and Bengtsson, P. (2000). Object-oriented framework-based software development: problems and experiences. ACM Comput. Surv. 32, 1es (Mar. 2000). Braga, R. T. V., Germano, F. S. R., e Masiero, P. C. (1999). A Pattern Language for Business Resource Management. Proceedings of the Annual Conference on Pattern Languages of Programs, 6:1 33. Costa, H. A., Junior, P. A., de Camargo, V. V., and Penteado, R. A. (2009). Recovering Class Models Stereotyped with Crosscutting Concerns. In Proceedings of the 16th Working Conference on Reverse Engineering (October 13-16, 2009). WCRE. IEEE Computer Society, Washington, DC, Dijkstra, Edsger W. (1976). A Discipline of Programming. Prentice-Hall, NJ. Durelli, V. (2008). Um processo de reengenharia ágil de frameworks OO. Dissertação de Mestrado. Departamento de Computação, Universidade Federal de São Carlos. Fayad, M. and Schmidt, D. C. (1997). Object-oriented application frameworks. Communications of ACM 40, 10 (Oct. 1997), Garcia, V. C., Lucrédio, D., Prado, A. F. do, Almeida, E. S. de, Alvaro, A., Meira, S. R. de L. (2005). Towards an Approach for Aspect-Oriented Software Reengineering. In the 7th International Conference on Enterprise Information Systems (ICEIS'2005), May, Miami, USA. Gomaa, Hassan. (2004). Designing Software Product Lines With UML From Use Case to Pattern- Based Software Architectures. Addison-Wesley, 1a. Edição, Hibernate (2010). Hibernate Framework. Kang, K. C., Cohen, S. G., Hess, J. A., Novak, W. E., Peterson, A. S. Feature Oriented Domain Analysis (FODA), (1990). Feasibility Study. Techinical Report CMU/SEI-90-TR-21, Software Engineering Institute, Carnegie Mellon University. Kawakami, D., Penteado R. A. D., Ramos, R. A. (2007). Uma Abordagem para Reengenharia de Sistemas implementados em Java para AspectJ. 1st LA-WASP. Ramos, R. A.; Penteado, R. A. D.; Masiero, P. C. (2004) Um Processo de Reestruturação de Código Baseado em Aspectos. XVIIII SBES v. 1. p Spring (2010). Spring Framework.

Um Estudo Quantitativo das Implementações Orientadas a Aspectos do Padrão Data Access Object

Um Estudo Quantitativo das Implementações Orientadas a Aspectos do Padrão Data Access Object Um Estudo Quantitativo das Implementações Orientadas a Aspectos do Padrão Data Access Object André L. de Oliveira 1, André L. A. Menolli 2, Ricardo G. Coelho 2, Valter V. de Camargo 3, Ricardo A. Ramos

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

Um Perfil UML para Frameworks Transversais

Um Perfil UML para Frameworks Transversais Um Perfil UML para Frameworks Transversais Aluno: José Uetanabara Júnior 1 Orientador: Valter Vieira de Camargo 2 ¹Instituto de Informática Univem Centro Universitário Eurípides de Marília Marília, São

Leia mais

Uma Proposta de Reúso de Interface Gráfica com o Usuário Baseada no Padrão Arquitetural MVC

Uma Proposta de Reúso de Interface Gráfica com o Usuário Baseada no Padrão Arquitetural MVC Uma Proposta de Reúso de Interface Gráfica com o Usuário Baseada no Padrão Arquitetural MVC Vinícius H. S. Durelli 1, Matheus C. Viana 2, Rosângela A. D. Penteado Departamento de Computação (DC) - Universidade

Leia mais

9 Conclusão e trabalhos futuros

9 Conclusão e trabalhos futuros 255 9 Conclusão e trabalhos futuros O aumento da complexidade das aplicações de software de hoje em dia e o advento de tecnologias inovadoras e recentes fazem com que os sistemas de software incorporem

Leia mais

Ferramenta MVCase Uma Ferramenta Integradora de Tecnologias para o Desenvolvimento de Componentes Distribuídos

Ferramenta MVCase Uma Ferramenta Integradora de Tecnologias para o Desenvolvimento de Componentes Distribuídos Ferramenta MVCase Uma Ferramenta Integradora de Tecnologias para o Desenvolvimento de Componentes Distribuídos Eduardo Santana de Almeida Daniel Lucrédio Calebe de Paula Bianchini Antonio Francisco do

Leia mais

Um Método para o Desenvolvimento de Software Baseado em Componentes e Aspectos

Um Método para o Desenvolvimento de Software Baseado em Componentes e Aspectos Roteiro Um Método para o Desenvolvimento de Software Baseado em Componentes e Aspectos Marcelo Medeiros Eler Universidade de São Paulo Av. do Trabalhador São-Carlense, 400 São Carlos, SP Email: mareler@icmc.usp.br

Leia mais

4 O Framework de Avaliação

4 O Framework de Avaliação 4 O Framework de Avaliação O propósito central do uso de aspectos é melhorar a separação de concerns. Entretanto a orientação a aspectos pode afetar também outros atributos de software, tais como acoplamento,

Leia mais

Desenvolvimento de Sistemas de Informação Flexíveis Utilizando Frameworks com Separação de Regras de Negócio

Desenvolvimento de Sistemas de Informação Flexíveis Utilizando Frameworks com Separação de Regras de Negócio Desenvolvimento de Sistemas de Informação Flexíveis Utilizando Frameworks com Separação de Regras de Negócio Sérgio E. C. Netto Faculdade Professor Miguel Ângelo da Silva Santos (FeMASS) sergioecnetto@gmail.com

Leia mais

Avoiding Code Pitfalls in Aspect-Oriented Programming

Avoiding Code Pitfalls in Aspect-Oriented Programming Avoiding Code Pitfalls in Aspect-Oriented Programming A. Santos, P. Alves, E. Figueiredo, and F. Ferrari Science of Computer Programming (SCP, 2015) Apresentação: Aline Brito Programação Orientada a Aspecto

Leia mais

Ferramenta MVCASE - Estágio Atual: Especificação, Projeto e Construção de Componentes

Ferramenta MVCASE - Estágio Atual: Especificação, Projeto e Construção de Componentes Ferramenta MVCASE - Estágio Atual: Especificação, Projeto e Construção de Componentes Antônio Francisco do Prado Daniel Lucrédio e-mail: prado@dc.ufscar.br Resumo Este artigo apresenta a ferramenta CASE

Leia mais

Seminário de aspectos: conceitos, características e exemplos

Seminário de aspectos: conceitos, características e exemplos Seminário de aspectos: conceitos, características e exemplos Daniel Bruno Conrado Thiago Gottardi Departamento de Computação Universidade Federal de São Carlos (UFSCar) São Carlos SP Brasil dbconrado@gmail.com,

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

10/10/2012. Artigo: Autores:

10/10/2012. Artigo: Autores: Artigo: Apresentar um estudo sistemático sobre as métricas de acoplamento na Programação Orientada a Aspectos e seu impacto na manutenibilidade e estabilidade do projeto. Autores: Rachel Burrows, Alessandro

Leia mais

Uma Abordagem de Reengenharia de Software Orientado a Objetos para Componentes apoiada por Métricas

Uma Abordagem de Reengenharia de Software Orientado a Objetos para Componentes apoiada por Métricas Uma Abordagem de Reengenharia de Software Orientado a Objetos para Componentes apoiada por Métricas Ana Maria da Mota Moura Orientadoras: Cláudia Werner e Aline Vasconcelos Programa de Engenharia de Sistemas

Leia mais

Arquitetura de Referência para Projeto Detalhado de Frameworks Transversais de Persistência

Arquitetura de Referência para Projeto Detalhado de Frameworks Transversais de Persistência Arquitetura de Referência para Projeto Detalhado de Frameworks Transversais de Persistência Aluno: Rogério Lazanha 1 Orientador: Valter Vieira de Camargo 2 ¹Centro Universitário Eurípedes Soares da Rocha

Leia mais

Uma ferramenta CASE para o Desenvolvimento de Software Orientado a Aspectos

Uma ferramenta CASE para o Desenvolvimento de Software Orientado a Aspectos Uma ferramenta CASE para o Desenvolvimento de Software Orientado a Aspectos Vinicius Cardoso Garcia 1, Daniel Lucrédio 1, Luíza Frota de Paula Pinto 1, Alexandre Alvaro 2, Eduardo Santana de Almeida 2,

Leia mais

Desenvolvimento de uma Linha de Produto de Software para Módulos de Aprendizagem Interativa

Desenvolvimento de uma Linha de Produto de Software para Módulos de Aprendizagem Interativa Desenvolvimento de uma Linha de Produto de Software para Módulos de Aprendizagem Interativa Danilo Leite Dalmon Orientador: Prof. Dr. Leônidas de O. Brandão Qualificação de Mestrado Instituto de Matemática

Leia mais

2 Estado da Arte e Trabalhos Relacionados

2 Estado da Arte e Trabalhos Relacionados 18 2 Estado da Arte e Trabalhos Relacionados Neste capítulo, serão apresentados alguns conceitos relativos a frameworks orientado a objetos, e o paradigma da programação orientada a aspectos. Além disso,

Leia mais

3 Estado da Arte e Trabalhos Relacionados

3 Estado da Arte e Trabalhos Relacionados 29 3 Estado da Arte e Trabalhos Relacionados Neste capítulo resumimos alguns trabalhos existentes na literatura que se relacionam à abordagem de avaliação proposta nesta dissertação. O objetivo de todo

Leia mais

IDENTIFICAÇÃO DE ASPECTOS EM NÍVEL DE ANÁLISE BASEADO EM ATRIBUTOS DE REQUISITOS NÃO FUNCIONAIS

IDENTIFICAÇÃO DE ASPECTOS EM NÍVEL DE ANÁLISE BASEADO EM ATRIBUTOS DE REQUISITOS NÃO FUNCIONAIS IDENTIFICAÇÃO DE ASPECTOS EM NÍVEL DE ANÁLISE BASEADO EM ATRIBUTOS DE REQUISITOS NÃO FUNCIONAIS Leandro Siqueira da Silva [Voluntário], Simone Nasser Matos [Orientadora] Departamento de Informática Câmpus

Leia mais

Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP:

Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP: Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP: 8429016 Definição de MDA OMG (Object Management Group) propôs uma aplicação abrangente das práticas

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

INF1013 MODELAGEM DE SOFTWARE

INF1013 MODELAGEM DE SOFTWARE INF1013 MODELAGEM DE SOFTWARE Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 1 O Paradigma Orientado a Objetos A Linguagem UML Descrição da Arquitetura 1 Programa

Leia mais

Composição e Geração de Aplicações usando Aspectos

Composição e Geração de Aplicações usando Aspectos Composição e Geração de Aplicações usando Aspectos Carlos Alberto de Freitas Pereira Júnior 1 Rosana Teresinha Vaccare Braga 1 1 Programa de Mestrado em Ciências de Computação e Matemática Computacional

Leia mais

Aspectos para Construção de Aplicações Distribuídas

Aspectos para Construção de Aplicações Distribuídas Aspectos para Construção de Aplicações Distribuídas Cristiano Amaral Maffort maffort@gmail.com Programa de Pós-Graduação em Informática PUC Minas Belo Horizonte MG 12 de junho de 2007 Middleware Objetivo:

Leia mais

Visão Geral da UML. SSC Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012

Visão Geral da UML. SSC Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012 Visão Geral da UML SSC 121 - Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012 Conteúdo Introdução Ferramentas de Apoio Diagramas da UML Elementos Genéricos Material sobre UML

Leia mais

Model Driven Development (MDD)

Model Driven Development (MDD) Model Driven Development (MDD) Mestrado em Engenharia de Produção e Sistemas Computacionais Profa. Adriana Pereira de Medeiros adrianamedeiros@puro.uff.br Sumário Introdução Desenvolvimento de Software

Leia mais

Implementação de Padrões de Projeto em Java e AspectJ

Implementação de Padrões de Projeto em Java e AspectJ Implementação de Padrões de Projeto em Java e AspectJ Jan Hannemann e Gregor Kiczales University of British Columbia Bruno Cardoso Reutilização de Software 18/09/13 DCC/ICEx/UFMG Padrões de Projeto (GoF

Leia mais

4 Desenvolvimento de Software Orientado a Aspectos

4 Desenvolvimento de Software Orientado a Aspectos 4 Desenvolvimento de Software Orientado a Aspectos Apesar de ser a tecnologia atualmente dominante no desenvolvimento de software, a orientação a objetos possui algumas limitações nas tarefas de projetar

Leia mais

DIAGRAMAS DE CLASSE UML

DIAGRAMAS DE CLASSE UML DIAGRAMAS DE CLASSE UML Projeto Detalhado de Software (PDS) Profa. Cynthia Pinheiro Antes de mais nada... Calendário de Reposições Aula 1: 27/10/2017, 8h-10h, Sala 8 Aula 2: A verificar Aula 3: A verificar

Leia mais

Engenharia de Domínio e Desenvolvimento Baseado em Componentes. Processo DBC-Arch-DE Apoio do Ambiente Odyssey no Processo Considerações Finais

Engenharia de Domínio e Desenvolvimento Baseado em Componentes. Processo DBC-Arch-DE Apoio do Ambiente Odyssey no Processo Considerações Finais Um Processo de Engenharia de Domínio com foco no Projeto Arquitetural Baseado em Componentes Ana Paula Blois Cláudia Werner Karin Becker Agenda Motivação Engenharia de Domínio e Desenvolvimento Baseado

Leia mais

Captor-AO: Gerador de Aplicações apoiado pela Programação Orientada a Aspectos

Captor-AO: Gerador de Aplicações apoiado pela Programação Orientada a Aspectos Captor-AO: Gerador de Aplicações apoiado pela Programação Orientada a Aspectos Carlos Alberto de Freitas Pereira Júnior 1 Paulo Cesar Masiero 1 Rosana Teresinha Vaccare Braga 1 1 Instituto de Ciências

Leia mais

Análise de Sistemas. Aula 5

Análise de Sistemas. Aula 5 Análise de Sistemas Aula 5 Prof. Emerson Klisiewicz CONTEXTUALIZAÇÃO Aula 5 Análise Orientada a Objetos Introdução a UML Histórico e Visão Geral Ferramentas CASE O Sucesso... Clientes satisfeitos Eles

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

3 Tecnologias Relacionadas

3 Tecnologias Relacionadas Tecnologias Relacionadas 31 3 Tecnologias Relacionadas O objetivo deste capítulo é apresentar um resumo de cada tecnologia relacionada ao processo proposto nesta dissertação, mostrando suas principais

Leia mais

Avoiding code pitfalls in Aspect-Oriented Programming

Avoiding code pitfalls in Aspect-Oriented Programming Avoiding code pitfalls in Aspect-Oriented Programming Adriano Santos, Péricles Alves, Eduardo Figueiredo, Fabiano Ferrari 18º Simpósio Brasileiro de Linguagens de Programação Maceió, 2014 Apresentação:

Leia mais

RAFAEL HENRIQUE DE MORAES AUGUSTO

RAFAEL HENRIQUE DE MORAES AUGUSTO FUNDAÇÃO DE ENSINO EURÍPIDES SOARES DA ROCHA CENTRO UNIVERSITÁRIO EURÍPIDES DE MARÍLIA UNIVEM CURSO DE CIÊNCIA DA COMPUTAÇÃO RAFAEL HENRIQUE DE MORAES AUGUSTO UMA COMPARAÇÃO ENTRE APLICAÇÕES ORIENTADAS

Leia mais

Figura 1. Estrutura do agente de software.

Figura 1. Estrutura do agente de software. 24 2 Conceitos Básicos A engenharia de software baseada em agentes é uma área emergente cujo objetivo é oferecer suporte ao desenvolvimento de sistemas multi-agentes (Garcia et al., 2003; Jennings & Wooldridge,

Leia mais

Metamodelos para Banco de Dados. Carlos Julian Menezes Araújo Prof. Dr. Robson do Nascimento Fidalgo

Metamodelos para Banco de Dados. Carlos Julian Menezes Araújo Prof. Dr. Robson do Nascimento Fidalgo Metamodelos para Banco de Dados Carlos Julian Menezes Araújo cjma@cin.ufpe.br Prof. Dr. Robson do Nascimento Fidalgo 1 Agenda Metadados MDA MOF Metamodelos CWM Pacote Relacional Referências 2 Metadados

Leia mais

Model Driven Development (MDD)

Model Driven Development (MDD) DCC / ICEx / UFMG Model Driven Development (MDD) Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Motivação para MDD Software é caro Os EUA sozinho investem mais de $250 bilhões em software Nos EUA,

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

Combinação e Aplicação de Técnicas para o Desenvolvimento de Software Orientado a Aspectos

Combinação e Aplicação de Técnicas para o Desenvolvimento de Software Orientado a Aspectos Combinação e Aplicação de Técnicas para o Desenvolvimento de Software Orientado a Aspectos Gabriel Costa Silva, Munif Gebara Junior, Daniela Eloise Flor Curso de Sistemas de Informação, Universidade Paranaense

Leia mais

Extração de Aspectos. PUC Minas Instituto de Informática. Mestrado em Informática. Aluno: Marcelo Nassau Malta

Extração de Aspectos. PUC Minas Instituto de Informática. Mestrado em Informática. Aluno: Marcelo Nassau Malta Transformações de Código C para Extração de Aspectos PUC Minas Instituto de Informática Mestrado em Informática Aluno: Marcelo Nassau Malta Orientador: Prof. Marco Túlio de Oliveira Valente Sumário Motivação

Leia mais

6 A Ferramenta de Medição e Avaliação

6 A Ferramenta de Medição e Avaliação 77 6 A Ferramenta de Medição e Avaliação Neste capítulo é apresentada a ferramenta AJATO, acrônimo para Ferramenta de Avaliação AspectJ 11. Esta ferramenta permite medir e avaliar sistemas implementados

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

Evento: XXV SEMINÁRIO DE INICIAÇÃO CIENTÍFICA

Evento: XXV SEMINÁRIO DE INICIAÇÃO CIENTÍFICA INTEGRAÇÃO DE APLICAÇÕES APLICADA À EXTRAÇÃO E QUALIFICAÇÃO AUTOMÁTICA DE PUBLICAÇÕES DE PESQUISADORES: UM CASO BASEADO NO CURRÍCULO LATTES 1 APPLICATION INTEGRATION APPLIED TO AUTOMATIC EXTRACTION AND

Leia mais

Apoio Computacional para auxiliar a Reengenharia de Sistemas Legados Java para AspectJ

Apoio Computacional para auxiliar a Reengenharia de Sistemas Legados Java para AspectJ UNIVERSIDADE FEDERAL DE SÃO CARLOS DEPARTAMENTO DE COMPUTAÇÃO PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO Apoio Computacional para auxiliar a Reengenharia de Sistemas Legados Java para AspectJ Daniel

Leia mais

2 Desenvolvimento de Linhas de Produtos de Softwares

2 Desenvolvimento de Linhas de Produtos de Softwares 19 2 Desenvolvimento de Linhas de Produtos de Softwares Este capítulo apresenta uma visão geral do desenvolvimento de Linhas de Produtos de Software (LPS). Diversos conceitos relacionados ao desenvolvimento

Leia mais

4 Processo de Transformação

4 Processo de Transformação Tecnologias Relacionadas 43 4 Processo de Transformação Com a constante mudança nos requisitos (funcionais e não funcionais) do domínio da aplicação, há uma grande necessidade de que os sistemas estejam

Leia mais

2 Desenvolvimento de Software Orientado a Aspectos

2 Desenvolvimento de Software Orientado a Aspectos 20 2 Desenvolvimento de Software Orientado a Aspectos A divisão em partes é um importante instrumento para se reduzir a complexidade de sistemas de software. É muito difícil para o ser humano compreender

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

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

Contexto. Motivação. variabilidade. variabilidade

Contexto. Motivação. variabilidade. variabilidade Representação de Variabilidades em Componentes de Negócio no Contexto da Engenharia de Domínio Regiane Oliveira Ana Paula Blois Aline Vasconcelos Claudia Werner Roteiro Contexto Motivação Variabilidade

Leia mais

Padrões de Projeto. Conteúdo. Objetivos

Padrões de Projeto. Conteúdo. Objetivos Padrões de Projeto Conteúdo O que são Padrões de Projeto? Para que servem? Vantagens/Desvantagens, Pontos Fortes/Fracos Exemplos e Alternativas Objetivos Conhecer diferentes padrões; Entender sua utilidade;

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

8 Princípios e Diretrizes para o Design Orientado a Aspectos

8 Princípios e Diretrizes para o Design Orientado a Aspectos 8 Princípios e Diretrizes para o Design Orientado a Aspectos Este Capítulo apresenta alguns princípios para o design de sistemas orientados a aspectos e diretrizes preliminares para a modelagem orientada

Leia mais

UNIVERSIDADE FEDERAL DE P ERNAMBUCO

UNIVERSIDADE FEDERAL DE P ERNAMBUCO UNIVERSIDADE FEDERAL DE P ERNAMBUCO GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO CENTRO DE INFORMÁTICA 2015.2 Programação Orientada a Aspectos com AspectJ nos frameworks Java atuais PROPOSTA DE TRABALHO DE GRADUAÇÃO

Leia mais

Especificação de Sistemas de Software e a UML

Especificação de Sistemas de Software e a UML Modelagem de sistema Especificação de Sistemas de Software e a UML A modelagem de sistema auxilia o analista a entender a funcionalidade do sistema Modelo => visão simplificada e abstrata de um sistema

Leia mais

Introdução à Engenharia de Software

Introdução à Engenharia de Software Introdução à Engenharia de Software Professor: Rômulo César romulodandrade@gmail.com www.romulocesar.com.br Imagem Clássica Objetivo da aula Depois desta aula você terá uma visão sobre o que é a engenharia

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ - UFPR Bacharelado em Ciência da Computação

UNIVERSIDADE FEDERAL DO PARANÁ - UFPR Bacharelado em Ciência da Computação SOFT DISCIPLINA: Engenharia de Software AULA NÚMERO: 16 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar, discutir o conceito de métricas de software. DESENVOLVIMENTO Métricas

Leia mais

Frameworks. Viviane Torres da Silva

Frameworks. Viviane Torres da Silva Frameworks Viviane Torres da Silva viviane.silva@ic.uff.br http://www.ic.uff.br/~viviane.silva/es1 Frameworks Motivação Definição Classificação Características Propriedades Técnicas de Customização Frameworks

Leia mais

Introdução ao Catalysis

Introdução ao Catalysis Introdução ao Catalysis Tópicos Avançados de Engenharia de Software João Bosco jbapf@cin.ufpe.br Roteiro Dificuldades Motivação Componentes Desenvolvimento Baseado em Componentes (DBC) Catalysis jbapf@cin.ufpe.br

Leia mais

MODELAGEM E DESENVOLVIMENTO DE UMA FERRAMENTA HIPERMÍDIA DE ENSINO VOLTADA AO SETOR AGROPECUÁRIO, USANDO OOHDM

MODELAGEM E DESENVOLVIMENTO DE UMA FERRAMENTA HIPERMÍDIA DE ENSINO VOLTADA AO SETOR AGROPECUÁRIO, USANDO OOHDM MODELAGEM E DESENVOLVIMENTO DE UMA FERRAMENTA HIPERMÍDIA DE ENSINO VOLTADA AO SETOR AGROPECUÁRIO, USANDO OOHDM RESUMO Rodrigo de Oliveira André Luiz Zambalde Rêmulo Maia Alves Sérgio Augusto Carvalho Gomes

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

Metamodelo para Integração de Ferramentas de Mineração de Interesses Transversais e de Visualização de Software

Metamodelo para Integração de Ferramentas de Mineração de Interesses Transversais e de Visualização de Software Metamodelo para Integração de Ferramentas de Mineração de Interesses Transversais e de Visualização de Software Oscar José Fernandes Tanner 1, Rosângela Aparecida Dellosso Penteado 1, Matheus Carvalho

Leia mais

Capítulo 2. Orientação a Objetos

Capítulo 2. Orientação a Objetos Capítulo 2 Orientação a Objetos Princípios da Orientação a Objetos Os princípios da orientação a objetos afetam todo o processo de desenvolvimento de software: Seres humanos pensam em termos de substantivos

Leia mais

5 Trabalhos Relacionados

5 Trabalhos Relacionados 5 Trabalhos Relacionados Este capítulo busca apresentar os trabalhos diretamente relacionados com a presente dissertação e as subseções seguintes apresentam os trabalhos focados em ferramentas (Seção 5.1)

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: ENGENHARIA DE SOFTWARE Aula N : 16 Tema:

Leia mais

15/04/2013. Pensar Orientado a Objetos. Projeto Orientado a Objetos. Características de Objetos. Classe de Objetos. Comunicação entre Objetos

15/04/2013. Pensar Orientado a Objetos. Projeto Orientado a Objetos. Características de Objetos. Classe de Objetos. Comunicação entre Objetos DCC / ICEx / UFMG Pensar Orientado a Objetos Projeto Orientado a Objetos Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Onde quer que você olhe no mundo real, você vê objetos Pessoas, animais, plantas,

Leia mais

Tópicos da Aula. Desenvolvimento Dirigido por Modelos (MDD) Reusar cada vez mais... Reusar cada vez mais... O que é modelagem? Reuso: Código x Modelos

Tópicos da Aula. Desenvolvimento Dirigido por Modelos (MDD) Reusar cada vez mais... Reusar cada vez mais... O que é modelagem? Reuso: Código x Modelos Reuso de Software Aula 20 Tópicos da Aula Desenvolvimento Dirigido por Modelos (MDD) Introdução a UML Visão geral de alguns diagramas Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo reuso.software@gmail.com

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

Agenda da Aula. Programação Orientada a Características com AHEAD. Característica Modular. Programação Orientada a Características (FOP)

Agenda da Aula. Programação Orientada a Características com AHEAD. Característica Modular. Programação Orientada a Características (FOP) DCC / ICEx / UFMG Agenda da Aula Programação Orientada a Características com AHEAD Programação Orientada a Características (FOP) Segundo Don Batory Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo

Leia mais

7 Análise dos Estudos de Caso, Discussões e Lições Aprendidas

7 Análise dos Estudos de Caso, Discussões e Lições Aprendidas 147 7 Análise dos Estudos de Caso, Discussões e Lições Aprendidas Este capítulo apresenta uma análise da abordagem OA proposta a partir dos estudos de caso realizados. Inicialmente são apresentados os

Leia mais

A Arquitetura de Software ArchM

A Arquitetura de Software ArchM 5 A Arquitetura de Software ArchM Como dito anteriormente, uma possível solução para o problema de separação de mobilidade em SMAs, investigada neste trabalho, envolve o DSOA. Nosso trabalho propõe: (1)

Leia mais

Reengenharia, Refatoração e Bad Smell

Reengenharia, Refatoração e Bad Smell DCC / ICEx / UFMG Reengenharia, Refatoração e Bad Smell Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Reengenharia de Sistemas Reestruturação ou reescrita de parte ou de todo um sistema legado

Leia mais

- Engenharia Reversa - Evolução de Sofware. Desenvolvimento como. Requisitos o que. Sistema porque. Profa. Dra. Sandra Fabbri. operacional.

- Engenharia Reversa - Evolução de Sofware. Desenvolvimento como. Requisitos o que. Sistema porque. Profa. Dra. Sandra Fabbri. operacional. Unidade V Evolução de Sofware - Engenharia Reversa - Profa. Dra. Sandra Fabbri Fases Genéricas do Ciclo de Vida Engenharia Sistemas Análise Projeto Codificação Manutenção Teste Sistema Requisitos Desenvolvimento

Leia mais

Programa Analítico de Disciplina INF323 Engenharia de Software II

Programa Analítico de Disciplina INF323 Engenharia de Software II 0 Programa Analítico de Disciplina Departamento de Informática - Centro de Ciências Exatas e Tecnológicas Número de créditos: Teóricas Práticas Total Duração em semanas: 15 Carga horária semanal 0 Períodos

Leia mais

Desenvolvimento de Software Orientado a Aspectos João Roberto Silva de Almeida

Desenvolvimento de Software Orientado a Aspectos João Roberto Silva de Almeida Desenvolvimento de Software Orientado a Aspectos João Roberto Silva de Almeida Universidade Federal de Juiz de Fora Instituto de Ciências Exatas Departamento de Ciência da Computação Bacharelado em Ciência

Leia mais

CLÁUDIO ROSSE PANDOLFI SUPORTE DE INTERESSES TRANSVERSAIS PARA FRAMEWORK CODEIGNITER

CLÁUDIO ROSSE PANDOLFI SUPORTE DE INTERESSES TRANSVERSAIS PARA FRAMEWORK CODEIGNITER FUNDAÇÃO DE ENSINO EURÍPIDES SOARES DA ROCHA CENTRO UNIVERSITÁRIO EURÍPIDES DE MARÍLIA UNIVEM CURSO DE CIÊNCIA DA COMPUTAÇÃO CLÁUDIO ROSSE PANDOLFI SUPORTE DE INTERESSES TRANSVERSAIS PARA FRAMEWORK CODEIGNITER

Leia mais

Frameworks. SSC-526 Análise e Projeto Orientados a Objeto Profa. Dra. Elisa Yumi Nakagawa 2º semestre de 2013

Frameworks. SSC-526 Análise e Projeto Orientados a Objeto Profa. Dra. Elisa Yumi Nakagawa 2º semestre de 2013 Frameworks SSC-526 Análise e Projeto Orientados a Objeto Profa. Dra. Elisa Yumi Nakagawa 2º semestre de 2013 1 Frameworks Definições: Aplicação semi-completa reutilizável que, quando especializada, produz

Leia mais

Arquitetura de Software: Introdução

Arquitetura de Software: Introdução Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Arquitetura de Software: Introdução SSC-121 Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa 2º semestre de 2012 Conteúdo

Leia mais

DESENVOLVIMENTO DE UMA SOLUÇÃO DE INTEGRAÇÃO DE APLICAÇÕES PARA AUTOMATIZAR RESERVAS DE VIAGEM 1

DESENVOLVIMENTO DE UMA SOLUÇÃO DE INTEGRAÇÃO DE APLICAÇÕES PARA AUTOMATIZAR RESERVAS DE VIAGEM 1 DESENVOLVIMENTO DE UMA SOLUÇÃO DE INTEGRAÇÃO DE APLICAÇÕES PARA AUTOMATIZAR RESERVAS DE VIAGEM 1 Edinaldo Gaspar Da Silva 2, Fabricia Roos Frantz 3, Rafael Z. Frantz 4, Sandro Sawicki 5. 1 Projeto de pesquisa

Leia mais

Ciência da Computação ENGENHARIA DE SOFTWARE. Métricas e Estimativas do Projeto

Ciência da Computação ENGENHARIA DE SOFTWARE. Métricas e Estimativas do Projeto Ciência da Computação ENGENHARIA DE SOFTWARE Métricas e Estimativas do Projeto Prof. Claudinei Dias email: prof.claudinei.dias@gmail.com Roteiro Introdução Métricas APF Análise de Pontos de Função Estimativas

Leia mais

Avaliação da adequação do uso de aspectos na implementação de variabilidades de linha de produto de software

Avaliação da adequação do uso de aspectos na implementação de variabilidades de linha de produto de software Avaliação da adequação do uso de aspectos na implementação de variabilidades de linha de produto de software Rodrigo de C. Brito¹, Thelma E. Colanzi 1 ¹Departamento de Informática Universidade Estadual

Leia mais

ALM Aplicações em Linguagem de Montagem. Introdução. A produção de Software é uma atividade build and fix. build. fix

ALM Aplicações em Linguagem de Montagem. Introdução. A produção de Software é uma atividade build and fix. build. fix Introdução A produção de Software é uma atividade build and fix. 1 Introdução build 2 Introdução fix 3 1 Introdução 4 P s Só pessoas motivadas e comprometidas com o projeto garantem o respectivo sucesso;

Leia mais

7 Conclusão e Trabalhos Futuros

7 Conclusão e Trabalhos Futuros 7 Conclusão e Trabalhos Futuros Como um novo e poderoso paradigma para o design e a implementação de sistemas de software (Lind, 2001;Wooldridge et al., 2001), o SMA requer metodologias, linguagens de

Leia mais

Engenharia de Software

Engenharia de Software Prof. M.Sc. Ronaldo C. de Oliveira ronaldooliveira@facom.ufu.br FACOM - 2011 UML Linguagem Unificada de Modelagem Projeto de Software Introdução O que é projeto em software? O termo projeto é um tanto

Leia mais

Visões Arquiteturais. Arquitetura de Software Thaís Batista

Visões Arquiteturais. Arquitetura de Software Thaís Batista 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

Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software

Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software Engenharia de Software Aula 03 Perguntas da Aula 2 Processos de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo dcc603@gmail.com 12 Março 2012 Inconsistente: perguntei laranjas, respondeu

Leia mais

Um Middleware Orientado a Aspectos Baseado em uma Arquitetura de Referência

Um Middleware Orientado a Aspectos Baseado em uma Arquitetura de Referência Um Middleware Orientado a Aspectos Baseado em uma Arquitetura de Referência Aluno: José Diego Saraiva da Silva¹ Orientadores: Thaís Batista¹, Flávia Delicato¹ e Paulo Pires¹ ¹Programa de Pós-Graduação

Leia mais

6.1. Teste Baseado em Gramática e Outras Abordagens de Teste

6.1. Teste Baseado em Gramática e Outras Abordagens de Teste 6 Discussão Além das técnicas de teste usando modelos gramaticais, existem outras abordagens de teste funcional de sistemas que estão sendo estudadas pela comunidade científica. Algumas delas se dedicam

Leia mais

Marilan Ricardo Tagliari - TCC Marilan Ricardo Tagliari - TCC Orientando: Marilan Ricardo Tagliari Orientador: Everaldo Artur Grahl

Marilan Ricardo Tagliari - TCC Marilan Ricardo Tagliari - TCC Orientando: Marilan Ricardo Tagliari Orientador: Everaldo Artur Grahl Orientando: Marilan Ricardo Tagliari Orientador: Everaldo Artur Grahl UNIVERSIDADE REGIONAL DE BLUMENAU Introdução Objetivos Especificação Estruturada Especificação Orientada a Objetos Estratégia de Mapeamento

Leia mais

Introdução à UML. Universidade Federal de Mato Grosso do Sul Sistemas de Informação - CPCX. Prof. Fernando Maia da Mota

Introdução à UML. Universidade Federal de Mato Grosso do Sul Sistemas de Informação - CPCX. Prof. Fernando Maia da Mota Universidade Federal de Mato Grosso do Sul Sistemas de Informação - CPCX Introdução à UML Prof. Fernando Maia da Mota Slides gentilmente cedidos por Profa. Dra. Maria Istela Cagnin Machado UFMS/FACOM Introdução

Leia mais

4 ALBATROZ : Um ambiente para desenvolvimento de SMA

4 ALBATROZ : Um ambiente para desenvolvimento de SMA 41 4 ALBATROZ : Um ambiente para desenvolvimento de SMA Resumo Neste capítulo será apresentado o processo de desenvolvimento do ambiente Albatroz. Cada ferramenta é detalhada indicando suas funcionalidades.

Leia mais

Introdução. à UML. Histórico (cont.) Histórico Definição Benefícios Notação Diagrama de Classes Diagramas de Interação Conclusões Revisão

Introdução. à UML. Histórico (cont.) Histórico Definição Benefícios Notação Diagrama de Classes Diagramas de Interação Conclusões Revisão Sumário Introdução à UML BSI Bacharelado em Sistemas de Informação LOO Linguagens Orientadas a Objetos Humberto Mossri de Almeida hmossri_cursos@yahoo.com.br Marcelo Nassau Malta nassau_cursos@yahoo.com.br

Leia mais

By Gian Ricardo Berkenbrock & Eduardo Dockhorn da Costa

By Gian Ricardo Berkenbrock & Eduardo Dockhorn da Costa By Gian Ricardo Berkenbrock & Eduardo Dockhorn da Costa Problema; AOP; Aspect J; Proposta ao Problema; Conclusões; Referências. Desenvolver os tipos abstratos de dados: lista, fila, pilha e deque. Estes

Leia mais

Marcelo Henrique dos Santos

Marcelo Henrique dos Santos Marcelo Henrique dos Santos Mestrado em Educação (em andamento) MBA em Negócios em Mídias Digitais (em andamento) MBA em Marketing e Vendas Especialista em games Bacharel em Sistema de Informação Email:

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