Spelling suggestions: "subject:"objectoriented frameworks"" "subject:"objectoriented rameworks""
1 |
Designing and Evaluating a Development FrameworkDarinder, Fredrik January 2006 (has links)
Object-Oriented frameworks, OO frameworks, have been discussed over a long period of time, that when introducing Object-Oriented frameworks, the defect-density will decrease and the quality of software will increase. Capgemini had developed a framework that had been in the organization for nine years. Since then, the framework has been reengineered several times to meet the continuously changing requirements of the software systems the framework supports. My work was to develop a new framework to make the maintainability and evolution of the framework easier while not compromising the quality of the framework or the applications built on it. The new framework that I developed was called the Capgemini Development Framework, CDF. Results from the case study, conducted to test the differences between these two frameworks, showed that the CDF framework preserved the maintainability of the applications built on the framework. The architecture of the CDF framework made it also easier to handle any future updates to the core functionality of the framework.
|
2 |
[en] COMPUTATIONAL SUPPORT TO FRAMEWORK / [pt] SUPORTE COMPUTACIONAL À EVOLUÇÃO DE FRAMEWORKSMARIELA INES CORTES 18 September 2003 (has links)
[pt] O desenvolvimento de frameworks é caro, não só pela
dificuldade intrínseca relacionada à captura do
conhecimento do domínio, mas também por causa da falta de
métodos e técnicas apropriados para dar suporte à sua
evolução e desenvolvimento iterativo.
Neste trabalho de tese é proposta a utilização de duas
técnicas complementares para dar suporte a evolução de
frameworks: regras de refactoring e regras de extensão.
A técnica de refactoring foi desenvolvida para restruturar
software de forma a tornar o código mais legível e fácil de
ser reutilizado. Regras da extensão são propostas para
modificar a estrutura de pontos de variação do framework,
possibilitando a adição mais fácil de novas funcionalidades
no design. Ambas as técnicas preservam o comportamento
observável dos programas. Esta propriedade é verificada
formalmente usando-se CCS e técnicas de verificação de
modelo. A abordagem proposta é testada com o auxílio de uma
ferramenta semiautomática, desenvolvida para dar suporte à
aplicação das regras definidas. / [en] Framework development is expensive not only because of the
intrinsic difficulty related to the elicitation of domain
knowledge but also because of the lack of methods and
techniques to support its evolution and interactive
development. The present thesis proposes the use of two
complementary techniques to support framework evolution:
refactoring and extension rules. The refactoring technique
has been developed to enable software re-structuring in
a way to produce more readable and reusable code. Extension
rules have been proposed to change the structure of the
framework variation points by allowing the addition of
new design functionalities. Both techniques preserve the
observable behavior of programs. This property is
formally verified in this work by using CCS approach to
model checking. The proposed approach has been tested by
means of a tool specially developed to support the
application of the defined rules.
|
3 |
[en] AN ASPECT-ORIENTED FRAMEWORK FOR MONITORING AND ANALYZING BUSINESS PROCESSES / [pt] UM FRAMEWORK ORIENTADO A ASPECTOS PARA MONITORAMENTO E ANÁLISE DE PROCESSOS DE NEGÓCIOKLESSIS LOPES DIAS 04 November 2008 (has links)
[pt] Com o crescimento dos sistemas de informação baseados na
internet, empresas que mantém seus negócios eletrônicos
através de sistemas web necessitam monitorar o andamento
das atividades dos seus negócios. Várias técnicas para
monitoramento e análise da execução de processos de negócio
podem ser empregadas, dentre elas: (i) mineração de
arquivos de log de servidores web, tais como o Apache; e
(ii) inserção explícita de código de monitoramento
diretamente no código da aplicação. Tais técnicas possuem
várias limitações, entre elas, a dificuldade e falta de
flexibilidade para corelacionar informação ocorrendo em
diferentes requisições web, e/ou necessidade de várias
modificações invasivas transversais diretamente no
código de componentes/classes do sistema. Esse trabalho
apresenta o projeto e implementação de um framework
orientado a aspectos para monitoramento e análise de
processos de negócio que ocorrem em sistemas web. Aspectos
foram usados para implementar as variabilidades orientadas
a aspectos de monitoramento de processos de negócio
ocorrendo em sistemas web. O framework foi implementado
usando as linguagens Java e AspectJ e foi validado por meio
da sua instanciação para duas diferentes aplicações web. / [en] Over the last years, many mechanisms and techniques to
monitor web applications have been proposed, such as,
mining of log files from web servers and insertion of
monitoring code directly in web applications. The adoption
of these techniques presents several limitations such as:
obstacles to correlate information from different web
requests and/or requires several intrusive
changes in the code of existing web applications. This
dissertation presents an aspect-oriented framework to
monitoring and analysing business processes.
Aspect-oriented technologies are used to implement
crosscutting variabilities of monitoring of web business
processes. The framework has been developed
using Java and AspectJ programming languages. It was
instantiated and validated through the development of two
different web applications.
|
4 |
Um processo para construção e instanciação de frameworks baseados em uma linguagem de padrões para um domínio específico. / A process for construction and instantiation of frameworks based on a domain-specific pattern language.Braga, Rosana Teresinha Vaccare 14 February 2003 (has links)
Padrões, linguagens de padrões e frameworks são formas de reuso de software. A complexidade de frameworks, causada pela dificuldade tanto em construí-los quanto em utilizá-los, é um dos inibidores do uso dessa tecnologia. Um processo para facilitar a construção e instanciação de frameworks é apresentado. Uma linguagem de padrões é utilizada para apoiar todo o processo, desde a identificação da funcionalidade do framework, seu projeto, implementação, validação, até sua instanciação para sistemas específicos do domínio. O framework obtido é do tipo caixa-branca e sua instanciação é feita especializando-se suas classes para sistemas específicos. O processo inclui, também, a construção de uma ferramenta para automatizar a instanciação do framework, por meio da qual é possível obter um sistema específico fornecendo apenas informações sobre os padrões da linguagem utilizados na sua modelagem. O processo é ilustrado com a Linguagem de Padrões para Gestão de Recursos de Negócios (GRN), que serviu de base para construção do framework GREN. Apresenta-se também o GREN-Wizard, uma ferramenta para instanciação automática do GREN para sistemas no domínio da GRN. A avaliação do processo é feita por meio de alguns experimentos e vários relatos de uso dos diversos sub-processos que compõem o processo geral, usando o GREN, a GRN e o GREN-Wizard. / Patterns, pattern languages, and frameworks are ways of enhancing software reuse. The complexity of software frameworks, caused both by the difficulty to build and to use them, is one of the inhibitors of this technology. A process to ease the construction and instantiation of frameworks is presented, in which a pattern language is used to support the whole process, starting from the identification of the framework functionality, its design, implementation, validation, and its instantiation to domain-specific systems. The framework that results from applying the proposed process is white-box and its instantiation is done by specializing its abstract classes according to a specific system. The process includes the construction of a tool to automate the framework instantiation, through which it is possible to obtain a specific system only by supplying information about the language patterns used to model it. The proposed process is illustrated with the Pattern Language for Business Resource Management (GRN), which was used as the basis for the GREN framework construction. The GREN-Wizard is also presented, which is a tool to automatically instantiate the GREN framework to specific applications in the GRN domain. The proposed process is evaluated by a few experiments and several uses of the sub-processes that compose the general process, using GRN, GREN and the GREN-Wizard.
|
5 |
Compreensão visual de frameworks através da introspeção de exemplos / Visual understanding of frameworks through instrospection of examplesCampo, Marcelo Ricardo January 1997 (has links)
Os frameworks orientado a objetos oferecem um grande potencial para aumentar a produtividade e a qualidade no desenvolvimento de software. Um framework e uma infra-estrutura ou esqueleto de uma família de aplicações pertencentes a um domínio determinado. Basicamente, aplicações especificas são construídas especializando as classes do framework para fornecer a implementação de alguns métodos, enquanto a maior parte da funcionalidade da aplicação e herdada. Esta característica permite a reutilização tanto do código quanto o projeto das aplicações do domínio, o qual representa um beneficio muito significativo a respeito de outras tecnologias de reutilização. Entretanto, começar a utilizar um framework para construir aplicações especificas e complicado para um usuário que não seja o projetista do framework. Compreender um framework é frequentemente muito mais difícil que compreender bibliotecas de componentes que podem ser reutilizados independentemente. Neste caso, e suficiente compreender sua interface externa. No caso dos frameworks, para aproveitar ao Máximo as possibilidades de reutilização que oferece, e necessário compreender o projeto interno de suas classes, como essas classes colaboram entre si, bem como a forma na qual instancias dessas classes colaboram em tempo de execução. Compreender estes aspectos uma tarefa reconhecidamente complexa e demorada, sendo este e um dos fatores mais limitantes da tecnologia para ser de utilidade efetiva na produção de software. Neste trabalho, apresenta-se uma abordagem reflexiva para a construção de ferramentas de apoio a compreensão de frameworks. Esta abordagem e suportada por Luthier, um framework projetado, e implementado em Smalltalk-80, para a construção de ferramentas de analise dinâmica e visualização de programas orientados a objetos. Luthier introduz três contribuições importantes: Utilização de técnicas de reflexão computacional baseadas no conceito de gerenciadores de meta-objetos, o qual suporta a implementação de metaarquiteturas de meta-objetos especializadas para a análise de aplicações. Controle interativo do grau de detalhe das visualizações (zoom semântico) através do suporte explícito de escalas de abstração. As escalas de abstração são controladas por objetos denominados abstratores. Um abstrator permite encapsular em objetos específicos algoritmos de derivação de abstracões, filtragem e seleção de informação, bem como o controle do nível de detalhe mostrado pelas visualizações. Esta separação de funcionalidade permite implementar complexas funcionalidades de análise de programas, sem a necessidade de modificar as classes que implementam visualizações ou a representação da informação. Suporte de uma estratégia de análise orientada pela visualização da arquitetura. Esta abordagem divide o processo de compreensão em duas fases iterativa: 1) compreensão dos principais aspectos estruturais do framework a partir de da recuperação e visualização da arquitetura,; 2) análise detalhada do comportamento de instâncias envolvidas em pontos específicos da arquitetura, os quais são selecionados pelo usuário a partir da visualização arquitetônica. Luthier fornece suporte flexível para construção de ferramentas de visualização dinamicamente adaptáveis para diferentes funcionalidades de análise, através de quatro subframeworks: LuthierMOPs. o qual fornece o suporte adaptável de meta-objetos para captura de informação das aplicações analisadas; LuthierBooks que fornece suporte genérico de gerenciamento de hiperdocumentos para a representação da informação capturada e gerenciamento de livros persistentes de projeto; LuthierAbstractors, que prove suporte genérico para a derivação de abstrações da informação coletada e escalas de abstração dinamicamente variáveis; e LuthierViews, extensão do framework MVC para a construção de visualizações da informação coletada, com capacidades de manipulação direta e zooming utilizando visualizações alternativas, as quais podem ser dinamicamente selecionadas pelo usuário. Com o suporte fornecido por Luthier, uma ferramenta, especialmente projetada para apoiar a compreensão de frameworks a partir da analise de exemplos, foi desenvolvida. Esta ferramenta fornece um conjunto de visualizações estruturais, com capacidade de animação de fluxo de controle do framework, bem como visualizações alternativas de subsistemas e padrões de projeto. Estas abstrações são reconhecidas através da análise da informação coletada dos exemplos analisados. Através das visualizações providas, o usuário pode explorar um dado framework através de mecanismos de navegação entre diferentes representações visuais, bem como filtragem e consulta acerca de informação relevante a ser visualizada. Este mecanismos são integrados com mecanismos de zoom semântico que habilitam a visualização da informação em diferentes níveis de abstração. Através da representação de hiperdocumento, a ferramenta suporta a construção manual, bem como a geração automática em alguns casos, de livros persistentes de documentação, com capacidade de edição, de importação de diagramas produzidos pelas visualizações, e de navegação sobre diferentes livros e o código fonte do framework. Esta características habilita a geração de documentação durante o processo de compreensão, facilidade não disponível, habitualmente, nas ferramentas de compreensão desenvolvidas até hoje. A capacidade de Luthier para a construção de ferramentas foi testada com a construção de outras ferramentas, como por exemplo, depuradores visuais e de coleta de métricas. A viabilidade e eficácia da abordagem foi testada através de experimentos, os quais mostraram que grupos utilizando a ferramenta de apoio produziram aplicações com maior nível de reutilização do framework que grupos de usuários não utilizando a ferramenta. / Object-oriented frameworks are a powerful reuse technique for building applications in a given domain. A framework works as a template or skeleton for building applications, being composed of a set of classes abstracting the general characteristics of an application domain. Building a specific application requires the specialization of some classes that provide the implementation of methods that will complete the necessary behaviour, while the global control structure is given by the framework. Frameworks offer a great potential to increase the productivity and quality in software development. However, starting to use a framework to build a specific application is complicated for any user other than a framework designer. Understanding a framework is frequently much harder than understanding libraries of components that can be reused independently. To adequately reuse isolated classes of a class library, it is sufficient to understand their external interface. In case of a framework, in contrast, to take full advantage of the services provided, it is necessary to understand the way its classes collaborate, as well as the internal design of some of them. These classes code the complex behaviour of a network of instances dynamically created. Therefore, it is often needed not only to understand how the classes are organized in static inheritance hierarchies, but also how instances collaborate at runtime. This work presents a reflective approach for the construction of tools for framework comprehension. This approach is supported by Luthier, a framework designed, and implemented in Smalltalk-80, which provides a flexible support for building tools for the dynamic analysis and visualization of object-oriented programs. Luthier introduces three important contributions: The use of computational reflection techniques, based on the concept of meta-object managers, which support the implementation of specialized meta-object-based metaarchitectures for the dynamic analysis of applications Support for building visualizations with different levels of abstraction under interactive control of the user (semantic zoom) through the explicit support of abstraction scales. Abstraction scales are controlled by objects called abstractors, which allow the encapsulation, in specific objects, of algorithms for abstraction derivation, filtering and information selection, as well as the interactive control of the detail level to be shown by visualizations. This separation of concerns enables the implementation of complex program analysis functionalities without the need of modifying classes implementing visualizations or information representation. Support for an architecture-driven analysis strategy. This approach divides the understanding process in two iterative phases: I) comprehension of the global structural and behavioural aspects of the framework from the recovery and visualization of its architecture.; 2) detailed analysis of specific instances involved in particular points of the architecture, selected by the user form the architectural view. Luthier provides a flexible support for the construction of visualization tools dynamically adaptable to different analysis functionalities through four sub-frameworks: LuthierMOPs, which provides an adaptable support of meta-objects for information gathering from the analyzed applications; LuthierBooks, which provides generic support for hyperdocument management to represent captured information and management of persistent design books: LuthierAbstractors, which provides generic support for the derivation of abstractions and dynamically variable abstraction-scales: and LuthierViews. extension of the MVC framework for the construction visualizations of the captured information, with capabilities of direct manipulation and zooming using alternative visualizations, dynamically selected by the user. With the support provided by Luthier a tool, specially designed to support framework comprehension from analysis of examples, was developed. This tool provides a set of structural visualizations with control-flow animation capabilities, as well as alternative visualizations of subsystems and design patterns, recognized through the analysis of information gathered from examples. Through these visualizations the user can explore a given framework by using mechanisms for navigating among different visual representations, as well as information filtering and queries about relevant information to be visualized. These functionalities are fully integrated with semantic zoom mechanisms that enable information visualization at different levels of abstraction. With the hyperdocument support, the tool allows for manual construction, as well as automatic generation in some cases, of persistent documentation books. These books offers editing capabilities, importation of diagrams from visualizations, as well as navigation through different books and through the source code of the analyzed framework.. These characteristics allows the support of additional documentation generation during the comprehension process, facility which is not normally available in current understanding tools. The capabilities for tool construction supported by Luthier were tested through the development of different tools, such as, visual debuggers and metrics collectors. The viability of the approach was tested through experiments. These experiments suggest that users using the understanding tool produce applications with a greater re-use level than groups of users not using it.
|
6 |
Compreensão visual de frameworks através da introspeção de exemplos / Visual understanding of frameworks through instrospection of examplesCampo, Marcelo Ricardo January 1997 (has links)
Os frameworks orientado a objetos oferecem um grande potencial para aumentar a produtividade e a qualidade no desenvolvimento de software. Um framework e uma infra-estrutura ou esqueleto de uma família de aplicações pertencentes a um domínio determinado. Basicamente, aplicações especificas são construídas especializando as classes do framework para fornecer a implementação de alguns métodos, enquanto a maior parte da funcionalidade da aplicação e herdada. Esta característica permite a reutilização tanto do código quanto o projeto das aplicações do domínio, o qual representa um beneficio muito significativo a respeito de outras tecnologias de reutilização. Entretanto, começar a utilizar um framework para construir aplicações especificas e complicado para um usuário que não seja o projetista do framework. Compreender um framework é frequentemente muito mais difícil que compreender bibliotecas de componentes que podem ser reutilizados independentemente. Neste caso, e suficiente compreender sua interface externa. No caso dos frameworks, para aproveitar ao Máximo as possibilidades de reutilização que oferece, e necessário compreender o projeto interno de suas classes, como essas classes colaboram entre si, bem como a forma na qual instancias dessas classes colaboram em tempo de execução. Compreender estes aspectos uma tarefa reconhecidamente complexa e demorada, sendo este e um dos fatores mais limitantes da tecnologia para ser de utilidade efetiva na produção de software. Neste trabalho, apresenta-se uma abordagem reflexiva para a construção de ferramentas de apoio a compreensão de frameworks. Esta abordagem e suportada por Luthier, um framework projetado, e implementado em Smalltalk-80, para a construção de ferramentas de analise dinâmica e visualização de programas orientados a objetos. Luthier introduz três contribuições importantes: Utilização de técnicas de reflexão computacional baseadas no conceito de gerenciadores de meta-objetos, o qual suporta a implementação de metaarquiteturas de meta-objetos especializadas para a análise de aplicações. Controle interativo do grau de detalhe das visualizações (zoom semântico) através do suporte explícito de escalas de abstração. As escalas de abstração são controladas por objetos denominados abstratores. Um abstrator permite encapsular em objetos específicos algoritmos de derivação de abstracões, filtragem e seleção de informação, bem como o controle do nível de detalhe mostrado pelas visualizações. Esta separação de funcionalidade permite implementar complexas funcionalidades de análise de programas, sem a necessidade de modificar as classes que implementam visualizações ou a representação da informação. Suporte de uma estratégia de análise orientada pela visualização da arquitetura. Esta abordagem divide o processo de compreensão em duas fases iterativa: 1) compreensão dos principais aspectos estruturais do framework a partir de da recuperação e visualização da arquitetura,; 2) análise detalhada do comportamento de instâncias envolvidas em pontos específicos da arquitetura, os quais são selecionados pelo usuário a partir da visualização arquitetônica. Luthier fornece suporte flexível para construção de ferramentas de visualização dinamicamente adaptáveis para diferentes funcionalidades de análise, através de quatro subframeworks: LuthierMOPs. o qual fornece o suporte adaptável de meta-objetos para captura de informação das aplicações analisadas; LuthierBooks que fornece suporte genérico de gerenciamento de hiperdocumentos para a representação da informação capturada e gerenciamento de livros persistentes de projeto; LuthierAbstractors, que prove suporte genérico para a derivação de abstrações da informação coletada e escalas de abstração dinamicamente variáveis; e LuthierViews, extensão do framework MVC para a construção de visualizações da informação coletada, com capacidades de manipulação direta e zooming utilizando visualizações alternativas, as quais podem ser dinamicamente selecionadas pelo usuário. Com o suporte fornecido por Luthier, uma ferramenta, especialmente projetada para apoiar a compreensão de frameworks a partir da analise de exemplos, foi desenvolvida. Esta ferramenta fornece um conjunto de visualizações estruturais, com capacidade de animação de fluxo de controle do framework, bem como visualizações alternativas de subsistemas e padrões de projeto. Estas abstrações são reconhecidas através da análise da informação coletada dos exemplos analisados. Através das visualizações providas, o usuário pode explorar um dado framework através de mecanismos de navegação entre diferentes representações visuais, bem como filtragem e consulta acerca de informação relevante a ser visualizada. Este mecanismos são integrados com mecanismos de zoom semântico que habilitam a visualização da informação em diferentes níveis de abstração. Através da representação de hiperdocumento, a ferramenta suporta a construção manual, bem como a geração automática em alguns casos, de livros persistentes de documentação, com capacidade de edição, de importação de diagramas produzidos pelas visualizações, e de navegação sobre diferentes livros e o código fonte do framework. Esta características habilita a geração de documentação durante o processo de compreensão, facilidade não disponível, habitualmente, nas ferramentas de compreensão desenvolvidas até hoje. A capacidade de Luthier para a construção de ferramentas foi testada com a construção de outras ferramentas, como por exemplo, depuradores visuais e de coleta de métricas. A viabilidade e eficácia da abordagem foi testada através de experimentos, os quais mostraram que grupos utilizando a ferramenta de apoio produziram aplicações com maior nível de reutilização do framework que grupos de usuários não utilizando a ferramenta. / Object-oriented frameworks are a powerful reuse technique for building applications in a given domain. A framework works as a template or skeleton for building applications, being composed of a set of classes abstracting the general characteristics of an application domain. Building a specific application requires the specialization of some classes that provide the implementation of methods that will complete the necessary behaviour, while the global control structure is given by the framework. Frameworks offer a great potential to increase the productivity and quality in software development. However, starting to use a framework to build a specific application is complicated for any user other than a framework designer. Understanding a framework is frequently much harder than understanding libraries of components that can be reused independently. To adequately reuse isolated classes of a class library, it is sufficient to understand their external interface. In case of a framework, in contrast, to take full advantage of the services provided, it is necessary to understand the way its classes collaborate, as well as the internal design of some of them. These classes code the complex behaviour of a network of instances dynamically created. Therefore, it is often needed not only to understand how the classes are organized in static inheritance hierarchies, but also how instances collaborate at runtime. This work presents a reflective approach for the construction of tools for framework comprehension. This approach is supported by Luthier, a framework designed, and implemented in Smalltalk-80, which provides a flexible support for building tools for the dynamic analysis and visualization of object-oriented programs. Luthier introduces three important contributions: The use of computational reflection techniques, based on the concept of meta-object managers, which support the implementation of specialized meta-object-based metaarchitectures for the dynamic analysis of applications Support for building visualizations with different levels of abstraction under interactive control of the user (semantic zoom) through the explicit support of abstraction scales. Abstraction scales are controlled by objects called abstractors, which allow the encapsulation, in specific objects, of algorithms for abstraction derivation, filtering and information selection, as well as the interactive control of the detail level to be shown by visualizations. This separation of concerns enables the implementation of complex program analysis functionalities without the need of modifying classes implementing visualizations or information representation. Support for an architecture-driven analysis strategy. This approach divides the understanding process in two iterative phases: I) comprehension of the global structural and behavioural aspects of the framework from the recovery and visualization of its architecture.; 2) detailed analysis of specific instances involved in particular points of the architecture, selected by the user form the architectural view. Luthier provides a flexible support for the construction of visualization tools dynamically adaptable to different analysis functionalities through four sub-frameworks: LuthierMOPs, which provides an adaptable support of meta-objects for information gathering from the analyzed applications; LuthierBooks, which provides generic support for hyperdocument management to represent captured information and management of persistent design books: LuthierAbstractors, which provides generic support for the derivation of abstractions and dynamically variable abstraction-scales: and LuthierViews. extension of the MVC framework for the construction visualizations of the captured information, with capabilities of direct manipulation and zooming using alternative visualizations, dynamically selected by the user. With the support provided by Luthier a tool, specially designed to support framework comprehension from analysis of examples, was developed. This tool provides a set of structural visualizations with control-flow animation capabilities, as well as alternative visualizations of subsystems and design patterns, recognized through the analysis of information gathered from examples. Through these visualizations the user can explore a given framework by using mechanisms for navigating among different visual representations, as well as information filtering and queries about relevant information to be visualized. These functionalities are fully integrated with semantic zoom mechanisms that enable information visualization at different levels of abstraction. With the hyperdocument support, the tool allows for manual construction, as well as automatic generation in some cases, of persistent documentation books. These books offers editing capabilities, importation of diagrams from visualizations, as well as navigation through different books and through the source code of the analyzed framework.. These characteristics allows the support of additional documentation generation during the comprehension process, facility which is not normally available in current understanding tools. The capabilities for tool construction supported by Luthier were tested through the development of different tools, such as, visual debuggers and metrics collectors. The viability of the approach was tested through experiments. These experiments suggest that users using the understanding tool produce applications with a greater re-use level than groups of users not using it.
|
7 |
Compreensão visual de frameworks através da introspeção de exemplos / Visual understanding of frameworks through instrospection of examplesCampo, Marcelo Ricardo January 1997 (has links)
Os frameworks orientado a objetos oferecem um grande potencial para aumentar a produtividade e a qualidade no desenvolvimento de software. Um framework e uma infra-estrutura ou esqueleto de uma família de aplicações pertencentes a um domínio determinado. Basicamente, aplicações especificas são construídas especializando as classes do framework para fornecer a implementação de alguns métodos, enquanto a maior parte da funcionalidade da aplicação e herdada. Esta característica permite a reutilização tanto do código quanto o projeto das aplicações do domínio, o qual representa um beneficio muito significativo a respeito de outras tecnologias de reutilização. Entretanto, começar a utilizar um framework para construir aplicações especificas e complicado para um usuário que não seja o projetista do framework. Compreender um framework é frequentemente muito mais difícil que compreender bibliotecas de componentes que podem ser reutilizados independentemente. Neste caso, e suficiente compreender sua interface externa. No caso dos frameworks, para aproveitar ao Máximo as possibilidades de reutilização que oferece, e necessário compreender o projeto interno de suas classes, como essas classes colaboram entre si, bem como a forma na qual instancias dessas classes colaboram em tempo de execução. Compreender estes aspectos uma tarefa reconhecidamente complexa e demorada, sendo este e um dos fatores mais limitantes da tecnologia para ser de utilidade efetiva na produção de software. Neste trabalho, apresenta-se uma abordagem reflexiva para a construção de ferramentas de apoio a compreensão de frameworks. Esta abordagem e suportada por Luthier, um framework projetado, e implementado em Smalltalk-80, para a construção de ferramentas de analise dinâmica e visualização de programas orientados a objetos. Luthier introduz três contribuições importantes: Utilização de técnicas de reflexão computacional baseadas no conceito de gerenciadores de meta-objetos, o qual suporta a implementação de metaarquiteturas de meta-objetos especializadas para a análise de aplicações. Controle interativo do grau de detalhe das visualizações (zoom semântico) através do suporte explícito de escalas de abstração. As escalas de abstração são controladas por objetos denominados abstratores. Um abstrator permite encapsular em objetos específicos algoritmos de derivação de abstracões, filtragem e seleção de informação, bem como o controle do nível de detalhe mostrado pelas visualizações. Esta separação de funcionalidade permite implementar complexas funcionalidades de análise de programas, sem a necessidade de modificar as classes que implementam visualizações ou a representação da informação. Suporte de uma estratégia de análise orientada pela visualização da arquitetura. Esta abordagem divide o processo de compreensão em duas fases iterativa: 1) compreensão dos principais aspectos estruturais do framework a partir de da recuperação e visualização da arquitetura,; 2) análise detalhada do comportamento de instâncias envolvidas em pontos específicos da arquitetura, os quais são selecionados pelo usuário a partir da visualização arquitetônica. Luthier fornece suporte flexível para construção de ferramentas de visualização dinamicamente adaptáveis para diferentes funcionalidades de análise, através de quatro subframeworks: LuthierMOPs. o qual fornece o suporte adaptável de meta-objetos para captura de informação das aplicações analisadas; LuthierBooks que fornece suporte genérico de gerenciamento de hiperdocumentos para a representação da informação capturada e gerenciamento de livros persistentes de projeto; LuthierAbstractors, que prove suporte genérico para a derivação de abstrações da informação coletada e escalas de abstração dinamicamente variáveis; e LuthierViews, extensão do framework MVC para a construção de visualizações da informação coletada, com capacidades de manipulação direta e zooming utilizando visualizações alternativas, as quais podem ser dinamicamente selecionadas pelo usuário. Com o suporte fornecido por Luthier, uma ferramenta, especialmente projetada para apoiar a compreensão de frameworks a partir da analise de exemplos, foi desenvolvida. Esta ferramenta fornece um conjunto de visualizações estruturais, com capacidade de animação de fluxo de controle do framework, bem como visualizações alternativas de subsistemas e padrões de projeto. Estas abstrações são reconhecidas através da análise da informação coletada dos exemplos analisados. Através das visualizações providas, o usuário pode explorar um dado framework através de mecanismos de navegação entre diferentes representações visuais, bem como filtragem e consulta acerca de informação relevante a ser visualizada. Este mecanismos são integrados com mecanismos de zoom semântico que habilitam a visualização da informação em diferentes níveis de abstração. Através da representação de hiperdocumento, a ferramenta suporta a construção manual, bem como a geração automática em alguns casos, de livros persistentes de documentação, com capacidade de edição, de importação de diagramas produzidos pelas visualizações, e de navegação sobre diferentes livros e o código fonte do framework. Esta características habilita a geração de documentação durante o processo de compreensão, facilidade não disponível, habitualmente, nas ferramentas de compreensão desenvolvidas até hoje. A capacidade de Luthier para a construção de ferramentas foi testada com a construção de outras ferramentas, como por exemplo, depuradores visuais e de coleta de métricas. A viabilidade e eficácia da abordagem foi testada através de experimentos, os quais mostraram que grupos utilizando a ferramenta de apoio produziram aplicações com maior nível de reutilização do framework que grupos de usuários não utilizando a ferramenta. / Object-oriented frameworks are a powerful reuse technique for building applications in a given domain. A framework works as a template or skeleton for building applications, being composed of a set of classes abstracting the general characteristics of an application domain. Building a specific application requires the specialization of some classes that provide the implementation of methods that will complete the necessary behaviour, while the global control structure is given by the framework. Frameworks offer a great potential to increase the productivity and quality in software development. However, starting to use a framework to build a specific application is complicated for any user other than a framework designer. Understanding a framework is frequently much harder than understanding libraries of components that can be reused independently. To adequately reuse isolated classes of a class library, it is sufficient to understand their external interface. In case of a framework, in contrast, to take full advantage of the services provided, it is necessary to understand the way its classes collaborate, as well as the internal design of some of them. These classes code the complex behaviour of a network of instances dynamically created. Therefore, it is often needed not only to understand how the classes are organized in static inheritance hierarchies, but also how instances collaborate at runtime. This work presents a reflective approach for the construction of tools for framework comprehension. This approach is supported by Luthier, a framework designed, and implemented in Smalltalk-80, which provides a flexible support for building tools for the dynamic analysis and visualization of object-oriented programs. Luthier introduces three important contributions: The use of computational reflection techniques, based on the concept of meta-object managers, which support the implementation of specialized meta-object-based metaarchitectures for the dynamic analysis of applications Support for building visualizations with different levels of abstraction under interactive control of the user (semantic zoom) through the explicit support of abstraction scales. Abstraction scales are controlled by objects called abstractors, which allow the encapsulation, in specific objects, of algorithms for abstraction derivation, filtering and information selection, as well as the interactive control of the detail level to be shown by visualizations. This separation of concerns enables the implementation of complex program analysis functionalities without the need of modifying classes implementing visualizations or information representation. Support for an architecture-driven analysis strategy. This approach divides the understanding process in two iterative phases: I) comprehension of the global structural and behavioural aspects of the framework from the recovery and visualization of its architecture.; 2) detailed analysis of specific instances involved in particular points of the architecture, selected by the user form the architectural view. Luthier provides a flexible support for the construction of visualization tools dynamically adaptable to different analysis functionalities through four sub-frameworks: LuthierMOPs, which provides an adaptable support of meta-objects for information gathering from the analyzed applications; LuthierBooks, which provides generic support for hyperdocument management to represent captured information and management of persistent design books: LuthierAbstractors, which provides generic support for the derivation of abstractions and dynamically variable abstraction-scales: and LuthierViews. extension of the MVC framework for the construction visualizations of the captured information, with capabilities of direct manipulation and zooming using alternative visualizations, dynamically selected by the user. With the support provided by Luthier a tool, specially designed to support framework comprehension from analysis of examples, was developed. This tool provides a set of structural visualizations with control-flow animation capabilities, as well as alternative visualizations of subsystems and design patterns, recognized through the analysis of information gathered from examples. Through these visualizations the user can explore a given framework by using mechanisms for navigating among different visual representations, as well as information filtering and queries about relevant information to be visualized. These functionalities are fully integrated with semantic zoom mechanisms that enable information visualization at different levels of abstraction. With the hyperdocument support, the tool allows for manual construction, as well as automatic generation in some cases, of persistent documentation books. These books offers editing capabilities, importation of diagrams from visualizations, as well as navigation through different books and through the source code of the analyzed framework.. These characteristics allows the support of additional documentation generation during the comprehension process, facility which is not normally available in current understanding tools. The capabilities for tool construction supported by Luthier were tested through the development of different tools, such as, visual debuggers and metrics collectors. The viability of the approach was tested through experiments. These experiments suggest that users using the understanding tool produce applications with a greater re-use level than groups of users not using it.
|
8 |
Um processo para construção e instanciação de frameworks baseados em uma linguagem de padrões para um domínio específico. / A process for construction and instantiation of frameworks based on a domain-specific pattern language.Rosana Teresinha Vaccare Braga 14 February 2003 (has links)
Padrões, linguagens de padrões e frameworks são formas de reuso de software. A complexidade de frameworks, causada pela dificuldade tanto em construí-los quanto em utilizá-los, é um dos inibidores do uso dessa tecnologia. Um processo para facilitar a construção e instanciação de frameworks é apresentado. Uma linguagem de padrões é utilizada para apoiar todo o processo, desde a identificação da funcionalidade do framework, seu projeto, implementação, validação, até sua instanciação para sistemas específicos do domínio. O framework obtido é do tipo caixa-branca e sua instanciação é feita especializando-se suas classes para sistemas específicos. O processo inclui, também, a construção de uma ferramenta para automatizar a instanciação do framework, por meio da qual é possível obter um sistema específico fornecendo apenas informações sobre os padrões da linguagem utilizados na sua modelagem. O processo é ilustrado com a Linguagem de Padrões para Gestão de Recursos de Negócios (GRN), que serviu de base para construção do framework GREN. Apresenta-se também o GREN-Wizard, uma ferramenta para instanciação automática do GREN para sistemas no domínio da GRN. A avaliação do processo é feita por meio de alguns experimentos e vários relatos de uso dos diversos sub-processos que compõem o processo geral, usando o GREN, a GRN e o GREN-Wizard. / Patterns, pattern languages, and frameworks are ways of enhancing software reuse. The complexity of software frameworks, caused both by the difficulty to build and to use them, is one of the inhibitors of this technology. A process to ease the construction and instantiation of frameworks is presented, in which a pattern language is used to support the whole process, starting from the identification of the framework functionality, its design, implementation, validation, and its instantiation to domain-specific systems. The framework that results from applying the proposed process is white-box and its instantiation is done by specializing its abstract classes according to a specific system. The process includes the construction of a tool to automate the framework instantiation, through which it is possible to obtain a specific system only by supplying information about the language patterns used to model it. The proposed process is illustrated with the Pattern Language for Business Resource Management (GRN), which was used as the basis for the GREN framework construction. The GREN-Wizard is also presented, which is a tool to automatically instantiate the GREN framework to specific applications in the GRN domain. The proposed process is evaluated by a few experiments and several uses of the sub-processes that compose the general process, using GRN, GREN and the GREN-Wizard.
|
9 |
Using evolutionary algorithms to resolve 3-dimensional geometries encoded in indeterminate data-setsRollings, Graham January 2011 (has links)
This thesis concerns the development of optimisation algorithms to determine the relative co-location, (localisation), of a number of freely-flying 'Smart Dust mote' sensor platform elements using a non-deterministic data-set derived from the duplex wireless transmissions between elements. Smart dust motes are miniaturised, microprocessor based, electronic sensor platforms, frequently used for a wide range of remote environmental monitoring applications; including specific climate synoptic observation research and more general meteorology. For the application proposed in this thesis a cluster of the notional smart dust motes are configured to imitate discrete 'Radio Drop Sonde' elements of the wireless enabled monitoring system in use by meteorological research organisations worldwide. This cluster is modelled in software in order to establish the relative positions during the 'flight' ; the normal mode of deployment for the Drop Sonde is by ejection from an aeroplane into an upper-air zone of interest, such as a storm cloud. Therefore the underlying research question is, how to track a number of these independent, duplex wireless linked, free-flying monitoring devices in 3-dimensions and time (to give the monitored data complete spatio-temporal validity). This represents a significant practical challenge, the solution applied in this thesis was to generate 3-dimensional geometries using the only 'real-time' data available; the Radio Signal Strength Indicator (RSSI) data is generated through the 'normal' duplex wireless communications between motes. Individual RSSI values can be considered as a 'representation of the distance magnitude' between wireless devices; when collated into a spatio-temporal data-set it 'encodes' the relative, co-locational, 3-dimensional geometry of all devices in the cluster. The reconstruction, (or decoding), of the 3-dimensional geometries encoded in the spatio-temporal data-set is a complex problem that is addressed through the application of various algorithms. These include, Random Search, and optimisation algorithms, such as the Stochastic Hill-climber, and various forms of Evolutionary Algorithm. It was found that the performance of the geometric reconstruction could be improved through identification of salient aspects of the modelled environment, the result was heuristic operators. In general these led to a decrease in the time taken to reach a convergent solution or a reduction in the number of candidate search space solutions that must be considered. The software model written for this thesis has been implemented to generalise the fundamental characteristics of an optimisation algorithm and to incorporate them into a generic software framework; this then provides the common code to all model algorithms used.
|
10 |
[en] AN ASPECT-ORIENTED APPROACH TO FRAMEWORK DEVE LOPMENT / [pt] UMA ABORDAGEM ORIENTADA A ASPECTOS PARA O DESENVOLVIMENTO DE FRAMEWORKSUIRA KULESZA 04 December 2007 (has links)
[pt] Esse trabalho propõe uma abordagem sistemática para o
desenvolvimento
de frameworks usando técnicas orientadas a aspectos (OA).
O objetivo central
da abordagem é melhorar a capacidade de extensão e
configuração de
frameworks orientados a objetos (OO) para diferentes
cenários de reutilização,
através de uma melhor gerência de suas características. A
abordagem é
composta por: (i) um conjunto de diretrizes para o projeto
e implementação de
frameworks usando programação orientada a aspectos; e (ii)
um modelo
generativo usado para a instanciação automática do
framework e suas
variabilidades OO e OA. As diretrizes propõem a definição
de um conjunto de
pontos de junção de extensão (EJPs - extension join
points) no código do
framework, os quais podem ser usados para estender a
funcionalidade básica do
framework através da implementação de aspectos de
extensão. Tais aspectos
são responsáveis pela implementação de características
transversais opcionais,
alternativas ou de integração demandadas por usuários do
framework. A
abordagem é demonstrada com a implementação / refatoração
de 3 frameworks
OO pertencentes a diferentes domínios de aplicação. Uma
avaliação da
abordagem por meio de um estudo qualitativo e um estudo
quantitativo é
também apresentada. Finalmente, diversas lições aprendidas
e discussões
resultantes da experiência de uso da abordagem são
descritas. / [en] This work proposes a systematic approach to framework
development
which relies on the use of aspect-oriented (AO)
techniques. The main goal of
the approach is to improve the extensibility and
configurability of objectoriented
(OO) frameworks. It is composed of: (i) a set of
guidelines to design
and implement frameworks using aspect-oriented
programming; and (ii) a
generative model which allows the automatic instantiation
of the framework
and its respective OO and AO variabilities. Our guidelines
propose the
definition of extension join points (EJPs) in the
framework code, which can be
used to extend the framework basic functionality by means
of extension aspects.
The extension aspects are responsible for implementing
optional, alternative
and integration crosscutting features required by the
framework users. Since
such aspects can be automatically unplugged from the
framework code, our
approach makes it easier to customize the framework to
specific needs. Three
cases studies are presented to illustrate the
applicability of our approach to the
development of frameworks from different domains. The
approach is also
evaluated through both a qualitative and a quantitative
study. Finally, several
lessons learned and discussions resulting from the use of
the approach are
described.
|
Page generated in 0.0605 seconds