71 |
A reuse-based approach to promote the adoption of info vis tecniques for network and service management tasks / Uma abordagem baseda em reuso para promover a adoção de técnicas de visualização de informações no contexto de gerenciamento de redes de serviçosGuimarães, Vinícius Tavares January 2016 (has links)
Ao longo dos anos, diferentes ferramentas vem sendo utilizadas pelos administradores de rede para realizar as tarefas de gerenciamento (por exemplo, protocolos de gerência e soluções de monitoramento de rede). Dentre tais ferramentas, a presente tese foca em Visualização de Informações (ou simplesmente InfoVis). Essencialmente, entende-se que o objetivo final dessas ferramentas de gestão é diminuir a complexidade e, consequentemente, otimizar o trabalho diário dos administradores. Assim, eles podem melhorar sua produtividade, o que incide diretamente na redução de custos. Com base nesse pressuposto, esta tese tem como objetivo investigar como promover a adoção de técnicas InfoVis pelos administradores de rede, com foco em melhorar produtividade e diminuir custos. A percepção chave é que, na maioria dos casos, os administradores de rede não são habilitados no domínio InfoVis. Desse modo, a escolha por adotar técnica InfoVis requer a imersão em campo desconhecido, podendo gerar, assim, um risco elevado nos indicadores de produtividade e custos. Em essência, essa tese argumenta que o emprego de técnicas InfoVis pelos administradores pode ser muito trabalhosa, despendendo um montante muito significativo de tempo, o que leva a diminuir produtividade e, consequentemente, eleva os custos de gerenciamento. Focando essa questão, é apresentada uma proposta para promover adoção de técnicas InfoVis, pelo encorajamento do reuso. Argumenta-se que os conceitos e princípios de reuso propostos e padronizados pelo campo da engenharia de software podem ser adaptados e empregados, uma vez que a construção de visualizações (ou seja, o projeto e desenvolvimento) é, primariamente, uma tarefa de desenvolvimento de software. Assim, a avaliação da proposta apresentada nesta tese utiliza o método Common Software Measurement International Consortium (COSMIC) Functional Size Measurement (FSM), o qual permite estimar o dimensionamento de software através de pontos por função. A partir deste método, torna-se então possível a estimativa de esforço e, consequentemente, produtividade e custos. Os resultados mostram a viabilidade e eficácia da abordagem proposta (em termos de produtividade e custos), bem como os benefícios indiretos que o reuso sistemático pode fornecer quando da adoção de visualizações para auxílio nas tarefas de gerenciamento de redes. / Throughout the years, several tools have being used by network administrators to accomplish the management tasks (e.g., management protocols and network monitoring solutions). Among such tools, this thesis focuses on Information Visualization one (a.k.a InfoVis). Mainly, it is understood that the ultimate goal of these management tools is to decrease the complexity and, consequently, optimize the everyday work of administrators. Thus, they can increase their productivity, which leads to the cost reduction. Based on this assumption, this thesis aims at investigating how to promote the adoption of InfoVis techniques by network administrators, focusing on enhancing productivity and lowering costs. The key insight is that, in most cases, network administrators are unskilled on InfoVis. Therefore, the choice to adopt visualizations can require an immersion into the unknown that can be too risky regarding productivity and cost. In essence, this thesis argues that the employment of InfoVis techniques by administrators can be very laborious by spending a significant amount of effort that decreases their productivity and, consequently, increases the management costs. To overcome this issue, an approach to promote the adoption of InfoVis techniques by encouraging their reuse is introduced. It is argued that the concepts and principles of software reuse proposed and standardized in the software engineering field can be adapted and employed once the building up of visualizations (i.e., the design and development) can be defined primarily as a software development task. So, the evaluation of the proposal introduced in this thesis employs the Common Software Measurement International Consortium (COSMIC) Functional Size Measurement (FSM) method that measures software sizing through Function Points (FP). From this method, it was possible estimating effort and, consequently, productivity and costs. Results show the feasibility and effectiveness of the proposed approach (in terms of productivity and cost) as well as some indirect benefits that the systematic reuse can provide in the adoption of InfoVis techniques to assist in the management tasks.
|
72 |
Definição e estabelecimento de processos de fábrica de software em uma organização de TI do setor público. / Definition and establishment of software factory processes in an IT organization of the public sector.Luzia Nomura 07 April 2008 (has links)
Um crescente número de empresas produtoras de software tem adotado um modelo organizacional de Fábrica de Software (FS), que facilita a terceirização por intermédio da segmentação das atividades e adoção de um sistema de produção mais flexível, dinâmico e controlado. Uma FS pode atender a múltiplas demandas de natureza e escopos distintos com o intuito de prover as necessidades específicas de cada cliente. Em face da diversidade e complexidade deste contexto, uma das questões principais a resolver é como mapear todos os processos envolvidos, identificando claramente o que, quem e, sobretudo como cada trabalho deve ser executado e controlado, visando o alinhamento dos processos à estrutura organizacional e conceitual de FS com foco nos processos de integração, alinhamento e reuso. Este estudo tem como objetivo mapear, definir, reestruturar e estabelecer processos de Fábrica de Software, conduzidos pelo método de pesquisaação em uma organização produtora de software do setor público, considerando seu contexto operacional, técnico e cultura organizacional. O desenvolvimento, execução, acompanhamento e resultados são descritos pelos ciclos da pesquisa-ação envolvendo o estudo de estruturas organizacionais, metodologias de desenvolvimento de sistemas, e mudanças organizacionais. Para isso foram definidas uma Estrutura Organizacional de Referência de FS, uma Arquitetura de Definição de Processos para FS e uma Metodologia de Desenvolvimento de Sistemas e Integração com foco organizacional, concebidos e desenvolvidos com base na literatura, experiência profissional e pesquisa empírica, que serviram como guia de condução da pesquisa-ação, culminando na associação do estudo empírico com o estudo teórico. As contribuições empíricas e teóricas geradas referem-se à melhoria dos processos organizacionais e operacionais de uma empresa de TI do setor público com base nos conceitos de FS. / A growing number of software producing companies have adopted an organizational model of Software Factory (SF), which facilitates outsourcing by segmenting activities and by adopting a more flexible, dynamic and controlled production system. A SF can serve the multiple demands of different nature and scopes with the purpose of providing each customers specific needs. Because of the diversity and complexity of this context, one of the main issues to be solved is how to map all the processes involved, clearly identifying what, who and mainly how each work must be executed and controlled, aiming at aligning the processes to the organizational and conceptual structure of SF focusing on the integration, aligning and reuse processes. The purpose of this study is mapping, defining, restructuring and establishing the Software Factory process, conducted by the action research method in a software producing organization of the public sector, considering its operational, technical and organizational culture context. The development, execution, follow-up and results are described by the action research cycles involving the study of organizational structures, system development methodologies and organizational changes. For this, a Reference Organizational Structure of SF, and Processes Definition Architecture for SF and a Integration System Development Methodology with organizational focus were defined, conceived and developed based on the literature, professional experience and empirical research, which served as a guiding line of the action research, peaking at the association of the empirical study with the theoretical study. The generated empirical and theoretical contributions refer to the improvement of the organizational and operational processes based on the SF concepts.
|
73 |
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.
|
74 |
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.
|
75 |
SoS-Reúso: um SoS do tipo direcionado para facilitar o reúso de software / SoS-Reuse: a directed SoS aimed at facilitating software feuseIohan Gonçalves Vargas 28 September 2017 (has links)
Reúso de software, principalmente quando apoiado por ferramentas computacionais, é uma forma de enfrentar os constantes desafios da Engenharia de Software em aumentar a produtividade e qualidade no desenvolvimento de software. Diversos ambientes de apoio ao reúso de software têm sido propostos, em sua maioria com objetivos específicos, por exemplo, repositórios de componentes, ferramentas para geração de aplicações e ferramentas para configuração de linhas de produtos. Entretanto, a integração desses ambientes é, muitas vezes, deficiente e deixada por conta do próprio desenvolvedor. Por outro lado, Sistemas-de-Sistemas (SoS) constituem uma forma de integrar sistemas independentes e seus relacionamentos, formando um todo maior que a soma das partes. Dessa forma, o SoS permite alcançar objetivos complexos que não poderiam ser facilmente alcançados individualmente pelos seus sistemas constituintes. Em um SoS, comportamentos emergentes podem surgir a qualquer momento ou terem sido previamente implementados. Por serem recentes, os conceitos de SoS ainda apresentam uma vasta gama de tópicos em aberto, entre eles sua aplicação a ambientes de reúso de software. Assim, neste trabalho, investigou-se como integrar ambientes de reúso com base nos conceitos de SoS. O SoS resultante, denominado SoS-Reúso, visa facilitar a implementação de comportamentos emergentes relacionados ao reúso de software. Com isso, pode-se potencializar a atividade de reúso, facilitando a busca por ativos reusáveis em diferentes sistemas constituintes. Para colocar em prática essa ideia, desenvolveu-se um simulador do SoS-Reúso, denominado P-SoS-Reúso. Realizou-se um estudo qualitativo da usabilidade e adequação funcional do P-SoS-Reúso, a fim de obter do usuário feedbacks em relação ao seu uso. A abordagem utilizada no desenvolvimento do SoS-Reúso poderá ser adaptada futuramente para integrar outros tipos de sistemas, os quais poderiam se beneficiar da abordagem baseada em SoS. / Software reuse, specially when supported by computational tools, is a way to face the constant challenges of Software Engineering in increasing productivity and quality in software development. Several enviroments to support software reuse have been proposed, mostly for specific purposes, for example, component repositories, application generation tools, and tools for configuring product lines. However, the integration among these environments is often deficient and left to the developerss responsibility. On the other hand, Systems-of-Systems (SoS) is a way of integrating independent systems and their relationships, forming a whole greater than the sum of the parts. In this way, SoS allows us to achieve complex goals that could not be easily achieved individually by their constituent systems. In a SoS, emergent behaviors can arise at any time or have been previously implemented. Because they are recent, SoS concepts still feature a variety of open research topics, including their application to software reuse environments. Thus, in this work, we investigated how to integrate reuse environments based on SoS concepts. The resulting SoS, called SoS-Reuse, aims to facilitate the implementation of emergent behaviors related to software reuse. This allows to enhance the reuse activity, facilitating the search for reusable assets in different constituent systems. To implement this idea, it was developed a simulator of the SoS-Reuse, named P-SoS-Reuse. An qualitative study of the usability and functional adequacy of the P-SoS-Reuse was performed to obtain feedback from users regarding its use. The approach used to develop SoS-Reuse can be adapted in the future to integrate other types of systems, which could benefit from the SoS-based approach.
|
76 |
An investigation into the application of systematic software reuse in a project-centric organisationChapman, Mark Jonathon 31 January 2007 (has links)
The software development continues to become more competitive and demanding, placing pressure on developers. Changes in the international political climate have resulted in shrinking military budgets, putting developers of defence software under further pressure. At present, systematic reuse is probably the most realistic way of addressing this pressure by improving software development productivity and quality. Software product line (SPL) engineering provides a comprehensive approach to systematic software reuse and is becoming widely accepted.
The focus of this interpretive case study was ground station software development in a small multidisciplinary project-centric company which produces avionics systems for military aircraft. The purpose of the study was to investigate the potential implementation of systematic software reuse in the company.
The study consisted of three phases, a literature study, a contextualisation and a set of field interviews, and used elements of the Carnegie-Mellon Software Engineering Institute (SEI) Product Line Practice Framework to examine the suitability of SPL engineering for the company.
The findings of the study highlight the potential challenges that SPL engineering poses for the company, and emphasise how the company's project-centric structure could impede its implementation of systematic software reuse. / Computing / M.Sc. (Information Systems)
|
77 |
Projeto e implementação de um gerador automático de serviços web a partir de diagramas de classes / Design and implementation of an automatic generator of web services from class diagramsSchettini Filho, Domenico 21 March 2016 (has links)
A indústria de desenvolvimento de software está em constante evolução e em busca de novos desafios, como por exemplo: novas tecnologias, linguagens de programação e estratégias para aumentar a produtividade no desenvolvimento. Com o passar do tempo, essa evolução desejada tem se concretizado, em especial com o surgimento de conceitos como Service Oriented Architecture (SOA) e Model-Driven Development (MDD). Nesse contexto, ganha importância a reutilização de software, por exemplo por meio do uso de serviços que facilitam a interoperabilidade entre diferentes sistemas. Ambientes de desenvolvimento de software, em especial ambientes de reúso de software, poderiam se adequar à arquitetura SOA para facilitar a disponibilização de serviços a outros ambientes, promovendo sua integração e aumentando a possibilidade de reúso. Após um levantamento bibliográfico sobre ambientes integrados de reúso que utilizassem serviços para permitir o compartilhamento de recursos, percebeu-se que os trabalhos nessa direção são poucos. Ao mesmo tempo, observou-se que para integração de sistemas por meio de serviços é necessário criar camadas de acesso às entidades dos sistemas que compartilharão informações. A implementação desses serviços de forma manual é repetitiva e sujeita a erros, principalmente por programadores que não estão familiarizados com SOA. Por outro lado, diagramas de classes em UML (Unified Modeling Language) são de amplo conhecimento por parte de desenvolvedores e estão em um nível de abstração que é suficientemente detalhado para permitir a derivação de serviços de acesso às suas classes. Desta forma, para atender uma demanda crescente de sistemas que precisam oferecer serviços para possibilitar sua integração com outros sistemas, este mestrado tem por objetivo promover a geração automatizada de código de serviços por meio de transformações de modelo para texto, em que o modelo de entrada é um diagrama de classes derivado da UML e os serviços gerados cobrem operações básicas do tipo CRUD. O gerador resultante foi validado por meio de duas provas de conceito e mostrou-se adequado para cumprir os objetivos estabelecidos, visto que o desenvolvedor trabalha com um modelo em alto nível de abstração, não precisando conhecer os detalhes inerentes à implementação dos serviços. / The software development industry is constantly evolving and looking for challenges, such as: new technologies, programming languages and strategies to increase developers productivity. During the course of time, this required evolution has been concretized, especially with the emergency of concepts such as Service Oriented Architecture (SOA) and Model-Driven Development (MDD). In this context, software reuse gains importance, for example through the use of services that ease the interoperability of different systems. Software development environments, in special reuse environments, could be adapted to the SOA architecture to ease the availability of services to other environments, thus promoting its integration and possibility of reuse. After a literature review about integrated reuse environments that use services to allow resources sharing, it has been observed that there are only a few works in this direction. At the same time, it was observed that for system integration through services it is required to create an access layer for the system entities that share information. The manual implementation of these services is repetitive and error prone, especially for programmers who are not familiar with SOA. On the other hand, UML (Unified Modeling Language) class diagrams are widely known by developers and are at a level of abstraction that is sufficiently detailed to allow the derivation of access services to their classes. Thus, to meet a growing demand for systems that need to provide services to enable its integration with other systems, this masters dissertation aims to promote the automated generation of service code through transformations from model to text, where the input model is a class diagram derived from UML, and the generated services cover the basic CRUD operations. The resulting generator has been validated through two proofs of concepts and was adequate to meet the stated objectives, as the developer works with a model in a high abstraction level, and does not need to know the details related with the service implementation.
|
78 |
Uma abordagem para gerenciamento de Linhas de Produtos de Software baseada em serviços / A service-based approach for managing Software Product LinesPacini, Karen Dias Rabelo 05 April 2016 (has links)
Linhas de Produtos de Software (LPS) abstraem a semelhança entre produtos e envolvem o conceito de reúso de software para desenvolver software em larga escala com mais rapidez e qualidade. O reúso dos artefatos em uma LPS é planejado e executado desde sua concepção, sendo assim possível armazenar esses artefatos em um repositório (núcleo de ativos reusáveis) para utilização posterior. Porém, ao se construir um repositório para uma certa LPS, este atende apenas às especificações desta arquitetura e não promove o reúso desses ativos em outras LPS, causando uma certa perda no potencial de reusabilidade dos ativos produzidos e armazenados. Além disso, a definição e os dados da execução do processo de desenvolvimento dessas LPS também não são armazenados prevendo o reúso, o que gera retrabalho para definir e instanciar um processo de software sempre que uma nova LPS é criada. Neste contexto, este trabalho tem por objetivo apresentar uma abordagem baseada em um conjunto de serviços para promover o amplo reúso de ativos produzidos e de elementos de processo utilizados, além de facilitar a criação e o desenvolvimento de linha de produtos de software, permitindo o gerenciamento do núcleo de ativos reusáveis. Por possuir uma interface baseada em serviços, esta abordagem poderá ser incorporada também a outros ambientes. Para validar a abordagem, verificar vantagens e sugerir melhorias, foi conduzida uma prova de conceito com sua aplicação. Os resultados dessa prova comprovaram a viabilidade da abordagem em cumprir os objetivos propostos. / Software Product Lines (SPL) extract the similarity among products and use the software reuse concept to produce large-scale software with increased quality and reduction in the development time. Reuse in SPL is planned and executed since the beginning for each artifact resulting from the development process, and then these artifacts are stored in a repository (reusable core assets) for later use. However, when a repository is built for a specific SPL, it supports only the specifications for that architecture and do not promote the reuse of these assets among distinct SPL, which inhibits their reuse potential. In addition, the definition and execution data of the development process applied are not stored properly for reuse, which causes a re-work to define and instantiate a software process when creating a new SPL. In this context, this work aims at present a service-based approach to promote the wide reuse of the produced assets and process elements, also to facilitate the creation and the management of SPL and to allow the management of the reusable core assets. Once this approach has a service-based interface, it can be embedded into other environments. In order to validate this approach, point out advantages and suggest improvements, a concept proof was performed applying it. The results of this proof ensured the approach viability to fulfill the proposed goals.
|
79 |
Desenvolvimento de m?todo para consulta em linguagem natural de componentes de software / Development of method for natural language research of software componentsDomingues, Paulo Eduardo 28 June 2007 (has links)
Made available in DSpace on 2016-04-04T18:31:20Z (GMT). No. of bitstreams: 1
Paulo Eduardo Domingues.pdf: 2694773 bytes, checksum: 8954b221ccf920e889584da2390badf6 (MD5)
Previous issue date: 2007-06-28 / The development based on components allows to create inter-operable components, with well defined interfaces, reducing the complexity in the software development. In this scene, the library of software components plays an important role in corporate level, supporting documentation, specification, storage and recovery of components. Inside organizations, a components library supplies infrastructure for components lifecycle management. This work considers the storage and the recovery of components of software with the use of an interface in natural language. A method to generate a representation form is described, to be stored in the library, for the texts that describe the characteristics of the components that live in the library. The text of the research generated for the user also is represented of similar form to allow the comparison between the descriptions of the components of the library and the question of the user. Additionally the method is presented to determine the similarity between parts of the representations of the text of the characteristics with the text of the research, of form to return as resulted in sequence decreasing indication from priority the components that better take care of the research of the user. / O desenvolvimento baseado em componentes permite criar componentes inter-oper?veis, com interfaces bem definidas, reduzindo a complexidade no desenvolvimento de software. Neste cen?rio, a biblioteca de componentes de software exerce um papel importante em um ambiente corporativo, suportando a documenta??o, especifica??o, armazenamento e recupera??o de componentes. Dentro das organiza??es, uma biblioteca de componentes fornece uma infra-estrutura para o gerenciamento do ciclo de vida dos componentes. Este trabalho prop?e o armazenamento e a recupera??o de componentes de software com a utiliza??o de uma interface em linguagem natural. ? descrito um m?todo para gerar uma forma de representa??o, a ser armazenada na biblioteca, para os textos que descrevem as caracter?sticas dos componentes que integram a biblioteca. O texto da consulta gerada pelo usu?rio tamb?m ? representado de forma semelhante para permitir a compara??o entre as descri??es dos componentes da biblioteca e a quest?o do usu?rio. Adicionalmente, ? apresentado o m?todo para determinar a semelhan?a entre partes das representa??es do texto das caracter?sticas com o texto das consultas, de forma a retornar como resultado a indica??o em ordem decrescente de prioridade os componentes que melhor atendem a consulta do usu?rio.
|
80 |
Supporting Reuse by Reverse Engineering Software Architecture and Component from Object-Oriented Product Variants and APIs / Support à la réutilisation par la rétro-ingénierie des architectures et des composants logiciels à partir du code source orienté objet des variantes de produits logiciels et d'APIsShatnawi, Anas 29 June 2015 (has links)
La réutilisation est reconnue comme une démarche intéressante pour améliorer la qualité des produits et la productivité des projets logiciels. L'ingénierie des logiciels à base de composants (CBSE en anglais) et l'ingénierie des lignes de produits logiciels (SPLE en anglais) sont considérées parmi les plus importants paradigmes de réutilisation systématique. L'ingénierie à base de composants permet de développer de nouveaux systèmes logiciels par composition de briques préconstruites appelées composants. L'ingénierie des lignes de produits logiciels permet de dériver (construire) de nouveaux produits par simple sélection de leurs caractéristiques (feature en anglais). Cette dérivation est rendue possible grâce à la représentation et à la gestion de la variabilité et de la similarité des produits d'une même famille. Cependant, une des difficultés vers une large adoption de l'ingénierie des logiciels à base de composants et des lignes de produits est le coût à investir pour construire, à partir de rien, les composants et les artefacts de lignes de produits. Dans ce contexte, les travaux de cette thèse proposent de réduire ce coût par une démarche basée sur la rétro-ingénierie.La première contribution de cette thèse consiste à proposer une approche permettant d'identifier, par l'analyse d'un ensemble de variantes d'un produit logiciel orienté objet, les éléments du code source pouvant servir à l'implémentation de composants. Au contraire des approches existantes d'identification de composants basées sur l'analyse d'un seul produit, l'originalité de notre approche consiste en l'analyse de plusieurs variantes de produits en même temps. Notre objectif est l'amélioration de la réutilisabilité des composants extraits. L'évaluation expérimentale menée dans le cadre de cette thèse a montré la pertinence de cette démarche.La deuxième contribution consiste en la proposition d'une approche pour l'extraction d'une architecture à base de composants d'un ensemble de variantes d'un produit logiciel orienté objet. Il s'agit d'identifier la variabilité des composants architecturaux et la configuration architecturale. L'identification de la configuration architecturale est principalement basée sur l'utilisation de l'analyse formelle de concepts pour trouver les dépendances entre les éléments architecturaux. L'expérimentation conduite pour l'évaluation de l'approche proposée confirme la pertinence des éléments identifiés.La troisième contribution de cette thèse permet de restructurer les APIs orientées objet en composants. Nous exploitons la spécificité des classes des APIs d'être conçues pour être utilisées par des applications clientes pour identifier ces composants. Le code source de ces APIs et celui de leurs applications clientes sont analysés afin d'identifier des groupes de classes qui peuvent servir à l'implémentation de composants à extraire. L'identification de ces groupes de classes est basée sur l'analyse des liens structurels entre ces classes et sur la probabilité que ces classes soient utilisées ensemble par les applications clientes. Nous montrons à travers les résultats expérimentaux que la restructuration des API orientées objet en composants facilite la réutilisation et la compréhension des éléments de ces APIs. / It is widely recognized that software quality and productivity can be significantly improved by applying a systematic reuse approach. In this context, Component-Based Software Engineering (CBSE) and Software Product Line Engineering (SPLE) are considered as two important systematic reuse paradigms. CBSE aims at composing software systems based on pre-built software components and SPLE aims at building new products by managing commonalty and variability of a family of similar software. However, building components and SPL artifacts from scratch is a costly task. In this context, our dissertation proposes three contributions to reduce this cost.Firstly, we propose an approach that aims at mining reusable components from a set of similar object-oriented software product variants. The idea is to analyze the commonality and the variability of product variants, in order to identify pieces of code that may form reusable components. Our motivation behind the analysis of several existing product variants is that components mined from these variants are more reusable for the development of new software products than those mined from single ones. The experimental evaluation shows that the reusability of the components mined using our approach is better than those mined from single software.Secondly, we propose an approach that automatically recovers the component-based architecture of a set of object-oriented software product variants. Our contribution is twofold: the identification of the architectural component variability and the identification of the configuration variability. The configuration variability is based on the identification of dependencies between the architectural elements using formal concept analysis. The experimental evaluation shows that our approach is able to identify the architectural variability.Finally, we propose an approach that aims at restructuring object-oriented APIs as component-based ones. This approach exploits specificity of API entities by statically analyzing the source code of both APIs and their software clients to identify groups of API classes that are able to form components. Our assumption is based on the probability of classes to be reused together by API clients on the one hand, and on the structural dependencies between classes on the other hand. The experimental evaluation shows that structuring object-oriented APIs as component-based ones improves the reusability and the understandability of these APIs.
|
Page generated in 0.0329 seconds