26 research outputs found

    Component Location and the Role of Trading in Large Scale Distributed Systems

    Get PDF

    Feature interaction in composed systems. Proceedings. ECOOP 2001 Workshop #08 in association with the 15th European Conference on Object-Oriented Programming, Budapest, Hungary, June 18-22, 2001

    Get PDF
    Feature interaction is nothing new and not limited to computer science. The problem of undesirable feature interaction (feature interaction problem) has already been investigated in the telecommunication domain. Our goal is the investigation of feature interaction in componet-based systems beyond telecommunication. This Technical Report embraces all position papers accepted at the ECOOP 2001 workshop no. 08 on "Feature Interaction in Composed Systems". The workshop was held on June 18, 2001 at Budapest, Hungary

    Model driven product line engineering : core asset and process implications

    Get PDF
    Reuse is at the heart of major improvements in productivity and quality in Software Engineering. Both Model Driven Engineering (MDE) and Software Product Line Engineering (SPLE) are software development paradigms that promote reuse. Specifically, they promote systematic reuse and a departure from craftsmanship towards an industrialization of the software development process. MDE and SPLE have established their benefits separately. Their combination, here called Model Driven Product Line Engineering (MDPLE), gathers together the advantages of both. Nevertheless, this blending requires MDE to be recasted in SPLE terms. This has implications on both the core assets and the software development process. The challenges are twofold: (i) models become central core assets from which products are obtained and (ii) the software development process needs to cater for the changes that SPLE and MDE introduce. This dissertation proposes a solution to the first challenge following a feature oriented approach, with an emphasis on reuse and early detection of inconsistencies. The second part is dedicated to assembly processes, a clear example of the complexity MDPLE introduces in software development processes. This work advocates for a new discipline inside the general software development process, i.e., the Assembly Plan Management, which raises the abstraction level and increases reuse in such processes. Different case studies illustrate the presented ideas.This work was hosted by the University of the Basque Country (Faculty of Computer Sciences). The author enjoyed a doctoral grant from the Basque Goverment under the “Researchers Training Program” during the years 2005 to 2009. The work was was co-supported by the Spanish Ministry of Education, and the European Social Fund under contracts WAPO (TIN2005-05610) and MODELINE (TIN2008-06507-C02-01)

    Self-Organizing Software Architectures

    Get PDF
    Looking at engineering productivity is a source for improving the state of software engineering. We present two approaches to improve productivity: bottom-up modeling and self-configuring software components. Productivity, as measured in the ability to produce correctly working software features using limited resources is improved by performing less wasteful activities and by concentrating on the required activities to build sustainable software development organizations. Bottom-up modeling is a way to combine improved productivity with agile software engineering. Instead of focusing on tools and up-front planning, the models used emerge, as the requirements to the product are unveiled during a project. The idea is to build the modeling formalisms strong enough to be employed in code generation and as runtime models. This brings the benefits of model-driven engineering to agile projects, where the benefits have been rare. Self-configuring components are a development of bottom-up modeling. The notion of a source model is extended to incorporate the software entities themselves. Using computational reflection and introspection, dependent components of the software can be automatically updated to reflect changes in the dependence. This improves maintainability, thus making software changes faster. The thesis contains a number of case studies explaining the ways of applying the presented techniques. In addition to constructing the case studies, an empirical validation with test subjects is presented to show the usefulness of the techniques.Itseorganisoituvat ohjelmistoarkkitehtuurit Ohjelmistokehityksen tuottavuus on monen ohjelmistokehitysorganisaation huolenaihe. Erityisesti ylläpitovaiheessa ohjelmistojen heikko muokattavuus tuottaa turhia kustannuksia ja pettymyksiä asiakassuhteissa, kun vaikeasti muokattavaan ohjelmistoon tulisi tehdä muutoksia. Tässä työssä esitetään kaksi menetelmää ohjelmistojen muokattavuuden parantamiseksi: kokoava mallinnuskielten käyttäminen sekä itseorganisoituvat ohjelmistokomponentit. Mallipohjaisessa ohjelmistotuotannossa ohjelmistoille kehitetään soveltuvat mallinnuskielet ja -työkalut, joiden pohjalta kehitettävä ohjelmisto voidaan automaattisesti tuottaa. Uuden mallinnuskielen kehittäminen ja sitä tukevan välineistön rakentaminen on kuitenkin aikaaviepää ja vaikeaa. Vaarana on, että kehitetty kieli on valmistuessaan vanhentunut. Niin kutsutuissa ketterissä ohjelmistomenetelmissä yritetään välttää perinteisten, suunittelupainotteisten kehitysmenetelmien tuottamia sudenkuoppia. Liiallinen ketteryys voi kuitenkin kostautua heikkona tuottavuutena, kun kehitysväen kaikki aika kuluu näppäryysharjoituksiin varsinaisen tuottavan työn sijaan. Kokoava mallipohjainen tuotanto keskittyy kehittämään vain riittävän hyviä malleja, joiden perusteella voidaan yhdistää mallipohjaisen ohjelmistotuotannon ja ketterien prosessimallien tuomat edut. Ulkoisten, erikseen kehiteltyjen mallikielten lisäksi työssä esitellään ajatus ohjelmakoodin itsensä käyttämisestä mallipohjaisen ohjelmistotuotannon työkaluna. Näin syntyy itseorganisoituva ohjelmistoarkkitehtuuri. Tällä tavoin kehitystyön tuottavuus paranee, sillä ohjelmakoodin sisäisten riippuvuuksien määrä laskee, ja näin ollen muokkausten tekeminen on helpompaa. Työssä esitellään tapaustutkimuksia ohjelmakoodiin perustuvasta mallipohjaisen ohjelmistotuotannon ohjelmistokehyksistä sekä empiirinen validointi itseorganisoituvuuden hyödyllisyydestä tuottavuusnäkökulmasta katsoen

    Evaluación de atributos de calidad en líneas de productos software de forma efectiva en costes

    Get PDF
    Software product line engineering is a software development paradigm that allows the systematic reuse in the development of a product family, a set of related products that share common features. A feature is a relevant aspect or characteristic of a system. In software product line engineering, the quality validation (to assure that the quality requirements are met) is very important. It is necessary to ensure that the product line assets, especially the product line architecture is exible enough to support all the products of the line and any new future product. However, traditionally, during the evaluation time only the functional requirement variability has been considered and the quality attribute variability has received little attention. In order to overcome this limitation, the CaLiPro method to evaluate quality in software product lines has been proposed. With this method, the evaluation of the quality attributes and their variability within a software product line can be achieved in a coste ective way. This method is based on the modeling of the quality attribute variability throughout the development phase. This modeling also helps to de ne the relationships and interactions between the functional and the quality attribute variability. Therefore, it is viable to predict which variable aspects a ect quality in order to reduce the evaluation work and to avoid the validation of each product individually. Two strategies are proposed herein to reduce evaluation e ort: 1) to create a generic evaluation model (with variability) to allow the evaluation of all the products at the design level and 2) to select the minimum number of products or designs in order to evaluate and extrapolate the results to the overall product line. Although the main goal of this method is the evaluation, the results obtained from this evaluation can be very useful during the derivation. The method also has a phase to facilitate quality aware product derivation.Software produktu lerroen ingeniaritza softwarea garatzeko paradigma bat da, eta produktu familiak sortzeko sistematikoki berrerabiltzea ahalbidetzen du. Produktu familiak elkarrekin harremana duten produktu multzoak dira, zenbait ezaugarri (features) batean dituztenak. Ezaugarriok sistema batean gailentzen direnak dira. Software produktu lerroen ingeniaritzan, oso garrantzitsua da kalitatea garaiz egiaztatzea: kalitate atributuak bete egingo direla ziurtatzea. Produktu lerroetako aktiboak malguak izan daitezela ziurtatu behar da, produktu lerroen egitura bereziki, eta lerroko produktu guztientzat (baita etorkizuneko produktuentzat ere) euskarri gisa balioko dutela. Alabaina, ebaluatzeko orduan irizpide funtzionalak soilik hartu ohi dira kontuan, eta kalitate atributuen aldakortasunak ez du ikertzaileen arreta bereganatzen. Arazo horri aurre egiteko CaLiPro metodoa proposatzen dugu. Metodo horrek kalitate atributuak eta beraien aldakortasuna ebaluatzeko aukera ematen du software produktu lerroetan, modu eraginkor batean eta koste baxuarekin. Oinarrietako bat kalitate atributuen aldakortasuna modelatzea da: garapenaren une guztietan kalitatearen aldakortasuna balioestea, lehen graduko entitatetzat hartzea, alegia. Hala, aldakortasun funtzionalaren eta kalitate atributuen aldakortasunaren arteko harremanak eta interakzioak atzeman daitezke, eta posible da kalitatean eragiten duten ezaugarri aldakorrak zein diren jakitea, eta informazio hori ebaluazio ahalegina murrizteko erabiltzea, produktu denak banan-banan ebaluatu beharrik gabe. Ebaluazio ahalegina murrizteko bi estrategia proposamen dauzkagu: batetik, ebaluaketa modelo generikoa (aldakorra) sortzea; horrek produktu lerroetako produktu guztiak ebaluatzea ahalbidetuko du. Eta bestetik, ahalik eta produktu edo diseinu kopuru txikiena aukeratzea ebaluaziorako, eta gero emaitzak lerro osora estrapolatzea. Metodoaren helburu nagusia kalitatea ebaluatzea bada ere, lortutako emaitzak oso baliagarriak dira deribazio aldian ere. Horregatik, kalitate irizpideak aintzat hartuta produktuen deribazioa errazteko fase bat ere aurreikusten da.La ingeniería de línea de productos software es un paradigma de desarrollo software que permite una reutilización sistemática en el desarrollo de una familia de productos, un conjunto de productos relacionados que comparten características (features) comunes. Una feature es un aspecto o característica relevante de un sistema. En la ingeniería de líneas de productos software, la validación temprana de la calidad (asegurar que los requisitos de calidad se van a lograr) cobra una importancia especial. Hay que asegurar que los activos de la línea de productos, sobre todo la arquitectura de línea de productos, sean exibles y den soporte a todos los productos de la línea, así como a futuros productos. Sin embargo, tradicionalmente a la hora de evaluar, sólo se ha considerado la variabilidad en los requisitos funcionales y la evaluación de la variabilidad en los atributos de calidad ha recibido poca atención. Para responder a esta problemática, se propone el método Ca-LiPro (Evaluación de atributos de Calidad en Líneas de Productos Software) que permite evaluar los atributos de calidad y su variabilidad en una línea de productos software de una forma efectiva en costes. Una de las bases del método es el modelado de la variabilidad en los atributos de calidad, que trata la variabilidad de los atributos de calidad como una entidad de primer grado durante todo el desarrollo y permite capturar las relaciones e interacciones existentes entre la variabilidad funcional y la variabilidad en los atributos de calidad. De este modo, es posible centrarse en los aspectos variables que afectan a la calidad y utilizar esta información para reducir el esfuerzo de evaluación y evitar tener que evaluar todos los productos uno a uno. Para ello, se proponen dos estrategias de reducción de esfuerzo de las evaluaciones: crear un modelo de evaluación genérico (con variabilidad) que permita evaluar a nivel de diseño todos los productos de la línea y seleccionar el mínimo número de productos o diseños para su evaluación de modo que se puedan extrapolar los resultados a toda la línea. Aunque el objetivo principal del método es la evaluación de la calidad, los resultados obtenidos de la evaluación son una informaci ón muy útil durante la derivación. Por esta razón, el método también contempla una fase para facilitar una derivación de productos tendiendo en cuenta aspectos de calidad

    Programming Language Evolution and Source Code Rejuvenation

    Get PDF
    Programmers rely on programming idioms, design patterns, and workaround techniques to express fundamental design not directly supported by the language. Evolving languages often address frequently encountered problems by adding language and library support to subsequent releases. By using new features, programmers can express their intent more directly. As new concerns, such as parallelism or security, arise, early idioms and language facilities can become serious liabilities. Modern code sometimes bene fits from optimization techniques not feasible for code that uses less expressive constructs. Manual source code migration is expensive, time-consuming, and prone to errors. This dissertation discusses the introduction of new language features and libraries, exemplifi ed by open-methods and a non-blocking growable array library. We describe the relationship of open-methods to various alternative implementation techniques. The benefi ts of open-methods materialize in simpler code, better performance, and similar memory footprint when compared to using alternative implementation techniques. Based on these findings, we develop the notion of source code rejuvenation, the automated migration of legacy code. Source code rejuvenation leverages enhanced program language and library facilities by finding and replacing coding patterns that can be expressed through higher-level software abstractions. Raising the level of abstraction improves code quality by lowering software entropy. In conjunction with extensions to programming languages, source code rejuvenation o ers an evolutionary trajectory towards more reliable, more secure, and better performing code. We describe the tools that allow us efficient implementations of code rejuvenations. The Pivot source-to-source translation infrastructure and its traversal mechanism forms the core of our machinery. In order to free programmers from representation details, we use a light-weight pattern matching generator that turns a C like input language into pattern matching code. The generated code integrates seamlessly with the rest of the analysis framework. We utilize the framework to build analysis systems that find common workaround techniques for designated language extensions of C 0x (e.g., initializer lists). Moreover, we describe a novel system (TACE | template analysis and concept extraction) for the analysis of uninstantiated template code. Our tool automatically extracts requirements from the body of template functions. TACE helps programmers understand the requirements that their code de facto imposes on arguments and compare those de facto requirements to formal and informal specifications
    corecore