15 research outputs found

    Lean Software Development: Evaluating Techniques for Parsimonious Feature Selection of Evolving Information Systems Products

    Get PDF
    Lean software development is a product development paradigm with focus on creating value for the customer and eliminating waste from all phases of the development life cycle. Applying lean principles, empirical studies were conducted focusing on identifying and assessing methods that parsimoniously select features from a given set of user feature requests. The results of the studies show that the Kano survey method has potential. It demonstrated efficacy in not only identifying the feature subset, from a given set of feature requests, that maximizes value to the users but also in eliminating waste by identifying the subset of features which does not provide significant value to the users when implemented into the software product. The design and results of one study is elaborated in this article. The findings obtained in the study have useful implications for practice and opens up new avenues of research for evolving market-driven software products

    Evidences in the evolution of OS projects through Changelog Analyses

    Get PDF
    Most empirical studies about Open Source (OS) projects or products are vertical and usually deal with the flagship, successful projects. There is a substantial lack of horizontal studies to shed light on the whole population of projects, including failures. This paper presents a horizontal study aimed at characterizing OS projects. We analyze a sample of around 400 projects from a popular OS project repository. Each project is characterized by a number of attributes. We analyze these attributes statically and over time. The main results show that few projects are capable of attracting a meaningful community of developers. The majority of projects is made by few (in many cases one) person with a very slow pace of evolution. We then try to observe how many projects count on a substantial number of developers, and analyze those projects more deeply. The goal is to achieve a better insight in the dynamics of open source development. The initial results of this analysis, especially growth in code size and tendency to stability in modularity, seem to be in line with traditional close source development

    FEED-FORWARD IN SOFTWARE ENGINEERING WITH PARTICULAR FOCUS ON REQUIREMENTS ENGINEERING AND SOFTWARE ARCHITECTING

    Get PDF
    This study is intended to determine the characteristics, impact and state of the practice of feed-forward in software engineering; in particular, in the fields of Requirements Engineering (RE) and Software Architecting (SA). Feed-forward is used in many domains such as systems engineering, neural networks, management and psychotherapy. However, in software engineering, especially in RE and SA, the concept of feed-forward is not well researched. For example, what are the characteristics of feed-forward information? What effect does feed-forward information have on architectural artefacts and software project aspects such as cost, quality, time, etc.? What is the current state of practice of feed-forward? A knowledge seeking empirical investigation including an industrial survey and an embedded case study with four projects as four units of analysis were carried out based on these questions. The overall findings ofthis study show that the most common types of information that are fed-forward consistently are requirements and architectural information. This information affects a multitude of aspects of a software project (such as time, cost and quality) and influences several architectural artefacts (such as tactics, patterns and decisions). The results also show that approximately 20% of software professionals have never, or rarely, practiced feed­ forward in their organizations. On the other hand, approximately 66% of software professionals practice feed-forward in their organization in varying levels (“sometimes”, “most of the time”, “always”). 64% of software professionals find feed-forward to be useful for their organization and 4% thought that feed-forward would not be useful, citing reasons such as information overload and lack of motivation. From a researcher’s perspective, determining the properties of feed-forward could provide ground work for doing further research on feed-forward such as: the practice of feed-forward in the other areas of software engineering and the comparison of feedback and feed-forward in software engineerin

    A Model-Driven Architecture based Evolution Method and Its Application in An Electronic Learning System

    Get PDF
    Software products have been racing against aging problem for most of their lifecycles, and evolution is the most effective and efficient solution to this problem. Model-Driven Architecture (MDA) is a new technique for software product for evolving development and reengineering methods. The main steps for MDA are to establish models in different levels and phases, therefore to solve the challenges of requirement and technology change. However, there is only a standard established by Object Management Group (OMG) but without a formal method and approach. Presently, MDA is widely researched in both industrial and research areas, however, there is still without a smooth approach to realise it especially in electronic learning (e-learning) system due to the following reasons: (1) models’ transformations are hard to realise because of lack of tools, (2) most of existing mature research results are working for business and government services but not education area, and (3) most of existing model-driven researches are based on Model-Driven Development (MDD) but not MDA because of OMG standard’s preciseness. Hence, it is worth to investigate an MDA-based method and approach to improve the existing software development approach for e-learning system. Due to the features of MDA actuality, a MDA-based evolution method and approach is proposed in this thesis. The fundamental theories of this research are OMG’s MDA standard and education pedagogical knowledge. Unified Modelling Language (UML) and Unified Modelling Language Profile are hired to represent the information of software system from different aspects. This study can be divided into three main parts: MDA-based evolution method and approach research, Platform-Independent Model (PIM) to Platform-Specific Model (PSM) transformation development, and MDA-based electronic learning system evolution. Top-down approach is explored to develop models for e-learning system. A transformation approach is developed to generate Computation Independent Model (CIM), Platform-Independent Model (PIM), and Platform-Specific Model (PSM); while a set of transformation rules are defined following MDA standard to support PSM’ s generation. In addition, proposed method is applied in an e-learning system as a case study with the prototype rules support. In the end, conclusions are drawn based on analysis and further research directions are discussed as well. The kernel contributions are the proposed transformation rules and its application in electronic learning system

    Understanding, Analysis, and Handling of Software Architecture Erosion

    Get PDF
    Architecture erosion occurs when a software system's implemented architecture diverges from the intended architecture over time. Studies show erosion impacts development, maintenance, and evolution since it accumulates imperceptibly. Identifying early symptoms like architectural smells enables managing erosion through refactoring. However, research lacks comprehensive understanding of erosion, unclear which symptoms are most common, and lacks detection methods. This thesis establishes an erosion landscape, investigates symptoms, and proposes identification approaches. A mapping study covers erosion definitions, symptoms, causes, and consequences. Key findings: 1) "Architecture erosion" is the most used term, with four perspectives on definitions and respective symptom types. 2) Technical and non-technical reasons contribute to erosion, negatively impacting quality attributes. Practitioners can advocate addressing erosion to prevent failures. 3) Detection and correction approaches are categorized, with consistency and evolution-based approaches commonly mentioned.An empirical study explores practitioner perspectives through communities, surveys, and interviews. Findings reveal associated practices like code review and tools identify symptoms, while collected measures address erosion during implementation. Studying code review comments analyzes erosion in practice. One study reveals architectural violations, duplicate functionality, and cyclic dependencies are most frequent. Symptoms decreased over time, indicating increased stability. Most were addressed after review. A second study explores violation symptoms in four projects, identifying 10 categories. Refactoring and removing code address most violations, while some are disregarded.Machine learning classifiers using pre-trained word embeddings identify violation symptoms from code reviews. Key findings: 1) SVM with word2vec achieved highest performance. 2) fastText embeddings worked well. 3) 200-dimensional embeddings outperformed 100/300-dimensional. 4) Ensemble classifier improved performance. 5) Practitioners found results valuable, confirming potential.An automated recommendation system identifies qualified reviewers for violations using similarity detection on file paths and comments. Experiments show common methods perform well, outperforming a baseline approach. Sampling techniques impact recommendation performance

    An approach to modelling and describing software evolution processes

    Get PDF
    EThOS - Electronic Theses Online ServiceGBUnited Kingdo

    Análise da evolução de software com séries temporais

    Get PDF
    Trabalho apresentado no âmbito do Mestrado em Engenharia Informática, como requisito parcial para obtenção do grau de Mestre em Engenharia InformáticaUm sistema de software nunca está terminado. Mesmo depois de ter sido entregue, o software continua a evoluir. Por esta razão,governos, empresas, e comunidades open source gastam muitos recursos regularmente para corrigir, adaptar, ou melhorar, os seus sistemas de software. Alguns estudos referem que cerca de 90% dos recursos das empresas dedicados ao software são gastos em actividades de manutenção. Isso implica que apenas 10% é dedicado para outras actividades, entre as quais o desenvolvimento de novos projectos. Isto representa uma oportunidade para, com um melhor planeamento, se tornar o processo de software mais eficiente, com importantes ganhos económicos que daí resultam. É por isso que a capacidade de desenvolver software de uma forma rápida e fiável é um grande desafio na Engenharia de Software. Uma possível técnica para ajudar a reduzir custos e produzir um software de qualidade é, a previsão do seu comportamento no futuro. Para os gestores de projecto e programadores, prever a evolução do software será de grande utilidade, pois permitirá direccionar esforços para partes que necessitem uma maior intervenção. Para a previsão ser possível, é necessário analisar a história da vida do software, que está normalmente guardada nos repositórios de dados dos projectos. Pretendemos por isso, efectuar uma análise da evolução do IDE Eclipse, usando séries temporais. Esta análise permitirá visualizar a evolução do número de defeitos do Eclipse ao longo do tempo e sua previsão no futuro. Serão usados dados do sistema de rastreio de defeitos. Isto permitirá identificar possíveis padrões e tendências na distribuição do número de defeitos, permitindo a criação de um modelo fiável de previsão. O resultado desta dissertação constituirá mais um caso de estudo da evolução de um sistema de sucesso, duradouro e bastante usado, que diverge nos objectivos de trabalhos anteriores sobre o Eclipse, mas que com outro estudo é um reforço da utilização da análise de séries temporais, uma técnica insuficientemente explorada, no contexto do estudo da evolução de software, particularmente na previsão dessa evolução

    A Re-engineering approach for software systems complying with the utilisation of ubiquitous computing technologies.

    Get PDF
    The evident progression of ubiquitous technologies has put forward the introduction of new features which software systems can sustain. Several of the ubiquitous technologies available today are regarded as fundamental elements of many software applications in various domains. The utilisation of ubiquitous technologies has an apparent impact on business processes that can grant organisations a competitive advantage and improve their productivity. The change in the business processes in such organisations typically leads to a change in the underlying software systems. In addressing the need for change in the underlying software systems, this research is focused on establishing a general framework and methodology to facilitate the reengineering of software systems in order to allow the incorporation of new features which are introduced by the employment of ubiquitous technologies. Although this thesis aims to be general and not limited to a specific programming language or software development approach, the focus is on Object-Oriented software. The reengineering framework follows a systematic step-based approach, with greater focus on the reverse engineering aspect. The four stages of the framework are: program understanding, additional-requirement engineering, integration, and finally the testing and operation stage. In its first stage, the proposed reengineering framework regards the source code as the starting point to understand the system using a static-analysis based method. The second stage is concerned with the elicitation of the user functional requirements resulting from the introduction of ubiquitous technologies. In the third stage, the goal is to integrate the system’s components and hardware handlers using a developed integration algorithm and available integration techniques. In the fourth and final stage, which is discussed in a general manner only in this thesis, the reengineered system is tested and put in the operation phase. The proposed approach is demonstrated using a case study in Java to show that the proposed approach is feasible and promising in its domain. Conclusions are drawn based on analysis and further research directions are discussed at the end of the study

    A knowledge based reengineering approach via ontology and description logic.

    Get PDF
    Traditional software reengineering often involves a great deal of manual effort by software maintainers. This is time consuming and error prone. Due to the knowledge intensive properties of software reengineering, a knowledge-based solution is proposed in this thesis to semi-automate some of this manual effort. This thesis aims to explore the principle research question: “How can software systems be described by knowledge representation techniques in order to semi-automate the manual effort in software reengineering?” The underlying research procedure of this thesis is scientific method, which consists of: observation, proposition, test and conclusion. Ontology and description logic are employed to model and represent the knowledge in different software systems, which is integrated with domain knowledge. Model transformation is used to support ontology development. Description logic is used to implement ontology mapping algorithms, in which the problem of detecting semantic relationships is converted into the problem of deducing the satisfiability of logical formulae. Operating system ontology has been built with a top-down approach, and it was deployed to support platform specific software migration [132] and portable software development [18]. Data-dominant software ontology has been built via a bottom-up approach, and it was deployed to support program comprehension [131] and modularisation [130]. This thesis suggests that software systems can be represented by ontology and description logic. Consequently, it will help in semi-automating some of the manual tasks in software reengineering. However, there are also limitations: bottom-up ontology development may sacrifice some complexity of systems; top-down ontology development may become time consuming and complicated. In terms of future work, a greater number of diverse software system categories could be involved and different software system knowledge could be explored
    corecore