6 research outputs found

    Complexity Metrics for Systems Development Methods and Techniques

    Get PDF
    So many systems development methods have been introduced in the last decade that one can talk about a ¿methodology jungle¿. To aid the method developers and evaluators in fighting their way through this jungle, we propose a systematic approach for measuring properties of methods. We describe two sets of metrics which measure the complexity of single diagram techniques, and of complete systems development methods. The proposed metrics provide a relatively fast and simple way to analyse the descriptive capabilities of a technique or method. When accompanied with other selection criteria, the metrics can be used for estimating the relative complexity of a technique compared to others. To demonstrate the applicability of the metrics, we have applied them to 36 techniques and 11 methods

    Adaptive Object-Oriented Programming using Graph-Based Customization

    No full text
    Object-oriented programs are easier to extend than programs which are not written in an object-oriented style, but object-oriented programs are still very rigid and hard to adapt and maintain. In this article, we introduce adaptive object-oriented programming as an extension to conventional object-oriented programming. Adaptive object-oriented programming facilitates expressing the elements - classes and methods - that are essential to an application by avoiding to make a commitment on the particular class structure of the application. Adaptive programs are specified using propagation patterns which specify sets of related constraints on class structures. An adaptive program denotes an entire family of programs, as many programs as there are class structures which satisfy its constraints. A class structure which satisfies the constraints of an adaptive program is said to customize the program. Adaptive programming, realized by the use of propagation patterns, offers a new paradigm, ext..

    The Reflex Sandbox : an experimentation environment for an aspect-oriented Kernel

    Get PDF
    Reflex es un núcleo versátil para la programación orientada aspectos en Java. Provee de las abstracciones básicas, estructurales y de comportamiento, que permiten implementar una variedad de técnicas orientadas a aspectos. Esta tesis estudia dos tópicos fundamentales. En primer lugar, el desarrollo formal, utilizando el lenguaje Haskell, de las construcciones fundamentales del modelo Reflex para reflexión parcial de comportamiento. Este desarrollo abarca el diseño de un lenguaje, llamado Kernel, el cual es una extensión reflexiva de un lenguaje orientado a objetos simple. La semántica operacional del lenguaje Kernel es presentada mediante una máquina de ejecución abstracta. El otro tópico fundamental que estudia esta tesis es validar que el modelo de reflexión parcial de comportamiento es suficientemente expresivo para proveer de semántica a un subconjunto del lenguaje AspectJ. Con este fin, se desarrolló el Reflex Sandbox: un ambiente de experimentación en Haskell para el modelo Reflex. Tanto el desarrollo formal del modelo de reflexión parcial de comportamiento como la validación del soporte de AspectJ, son estudiados en el contexto del Reflex Sandbox. La validación abarca la definición de un lenguaje orientado a aspectos que caracteriza el enfoque de AspectJ a la programación orientada a aspectos, así como la definición de su máquina de ejecución abstracta. También se presenta un compilador que transforma programas escritos en este lenguaje al lenguaje Kernel. Este proceso de compilación provee los fundamentos para entender como dicha transformación puede ser realizada. El proceso de compilación también fue implementado en Java, pero transformando programas AspectJ a programas Reflex. También se presentan mediciones preliminares del desempeño de un programa compilado y ejecutado en Reflex y un programa compilado, y ejecutado con el compilador AspectJ

    Inherently flexible software

    Get PDF
    Software evolution is an important and expensive consequence of software. As Lehman's First Law of Program Evolution states, software must be changed to satisfy new user requirements or become progressively less useful to the stakeholders of the software. Software evolution is difficult for a multitude of different reasons, most notably because of an inherent lack of evolveability of software, design decisions and existing requirements which are difficult to change and conflicts between new requirements and existing assumptions and requirements. Software engineering has traditionally focussed on improvements in software development techniques, with little conscious regard for their effects on software evolution. The thesis emphasises design for change, a philosophy that stems from ideas in preventive maintenance and places the ease of software evolution more at the centre of the design of software systems than it is at present. The approach involves exploring issues of evolveability, such as adaptability, flexibility and extensibility with respect to existing software languages, models and architectures. A software model, SEvEn, is proposed which improves on the evolveability of these existing software models by improving on their adaptability, flexibility and extensibility, and provides a way to determine the ripple effects of changes by providing a reflective model of a software system. The main conclusion is that, whilst software evolveability can be improved, complete adaptability, flexibility and extensibility of a software system is not possible, hi addition, ripple effects can't be completely eradicated because assumptions will always persist in a software system and new requirements may conflict with existing requirements. However, the proposed reflective model of software (which consists of a set of software entities, or abstractions, with the characteristic of increased evolveability) provides trace-ability of ripple effects because it explicitly models the dependencies that exist between software entities, determines how software entities can change, ascertains the adaptability of software entities to changes in other software entities on which they depend and determines how changes to software entities affect those software entities that depend on them

    A process capability profile driven proposal for software process improvement

    Get PDF
    Orientador: Mario JinoTese (doutorado) - Universidade Estadual de Campinas, Faculdade de Engenharia Eletrica e de ComputaçãoResumo: Melhoria de processo de software baseada nos níveis de maturidade fixos da arquitetura estagiada dos modelos SW-CMM e CMMI não atendem à diversidade de contextos e objetivos estratégicos das organizações intensivas em software. Esta pesquisa evoluí a área de melhoria de processo com a utilização da flexibilidade da arquitetura contínua da ISO/IEC 15504 para um melhor alinhamento da melhoria com o contexto e objetivos estratégicos específicos de cada organização, principalmente as micro e pequenas. São identificadas três gerações de arquiteturas de modelos de capacidade de processo (estagiada fixa, contínua fechada e contínua aberta). É proposta uma engenharia de processo, de software e de qualquer outro trabalho humano intensivo em conhecimento, dirigida por perfis de capacidade de processo. É desenvolvida uma abordagem exemplo dessa engenharia com um conjunto de propriedades, um modelo unificado, um ciclo de melhoria e um conjunto de medições, bem como um método para o estabelecimento de perfis de capacidade de processo. As propostas são validadas com análises, aplicações práticas e uma agenda de pesquisaAbstract: Software process improvement based on the staged architecture¿s fixed maturity levels of SWCMM and CMMI models do not support the diversity of software intensive organizations context and strategic objectives. This research evolves the current process improvement area taking advantage of the flexibility of ISO/IEC 15504 continuous architecture towards a better alignment between an improvement with each organization¿s specific context and strategic objectives, especially of micro and small ones. Three generations of architectures for process capability models (fixed staged, closed continuous, open continuous) are identified. A process capability profile driven, software and any other knowledge intensive human work, process engineering is proposed. An exemplar approach for this engineering is developed, with a set of properties, a unified model, an improvement cycle and a measurement set, as well as a method for establishing process capability profile. These proposals are validated by analyses, practical applications and a research agendaDoutoradoEngenharia de ComputaçãoDoutor em Engenharia Elétric
    corecore