608 research outputs found

    Hybrid Software and System Development in Practice: Waterfall, Scrum, and Beyond

    Get PDF
    Software and system development faces numerous challenges of rapidly changing markets. To address such challenges, companies and projects design and adopt specific development approaches by combining well-structured comprehensive methods and flexible agile practices. Yet, the number of methods and practices is large, and available studies argue that the actual process composition is carried out in a fairly ad-hoc manner. The present paper reports on a survey on hybrid software development approaches. We study which approaches are used in practice, how different approaches are combined, and what contextual factors influence the use and combination of hybrid software development approaches. Our results from 69 study participants show a variety of development approaches used and combined in practice. We show that most combinations follow a pattern in which a traditional process model serves as framework in which several fine-grained (agile) practices are plugged in. We further show that hybrid software development approaches are independent from the company size and external triggers. We conclude that such approaches are the results of a natural process evolution, which is mainly driven by experience, learning, and pragmatism

    When agility meets a project portfolio: A study of success factors in large organisations

    Get PDF
    The iterative nature of agile methods combined with high levels of team and customer interactions and continuously changing IT and software development project requirements make the management of agile project portfolios very complex. To date, the mechanisms under which project portfolio management adapts to these complexities and achieves portfolio success have not been thoroughly investigated. This study explores the notion of success and its impacting factors in large organisations\u27 portfolios of agile IT and software development projects. Using a multiple case study design, we analysed the agile project portfolios of seven large organisations. We identified four success criteria and 15 success factors and categorised them into a unique agile portfolio success framework. Some of these criteria and factors are unique to agile project portfolios. The framework contributes to agile and project management literature by conceptualising the notion of success in portfolios of agile projects while revealing a set of factors that affect the relationship between an agile portfolio with its subcomponents and the surrounding environment. The framework supports managers and practitioners in large organisations in reflecting on their agility efforts to achieve higher success rates in their agile portfolios

    Iterations in software development processes: A comparison of agile and waterfall software development projects

    Get PDF
    Iteration is an essential element of software development processes. Software methodologies like agile and waterfall use the term ‘iteration’ in several different ways for improving either the quality or the functionality of the software. There are no studies, however, which have thoroughly analyzed and characterized these forms of iterations and their differences as they are enacted in organizations. In order to reveal these iterative forms we conducted a study of two mid-sized software development projects at a large global Fortune 100 corporation – one agile project and one waterfall project. Using advanced event sequence-analytic techniques based on detailed process data, our analysis reveals that agile and waterfall iterations differed in design and development phases due to different sources and types of iterations

    Using scrum together with UML models: a collaborative university-industry R&D software project

    Get PDF
    Conducting research and development (R&D) software projects, in an environment where both industry and university collaborate, is challenging due to many factors. In fact, industrial companies and universities have generally different interests and objectives whenever they collaborate. For this reason, it is not easy to manage and negotiate the industrial companies’ interests, namely schedules and their expectations. Conducting such projects in an agile framework is expected to decrease these risks, since partners have the opportunity to frequently interact with the development team in short iterations and are constantly aware of the characteristics of the system under development. However, in this type of collaborative R&D projects, it is often advantageous to include some waterfall practices, like upfront requirements modeling using UML models, which are not commonly used in agile processes like Scrum, in order to better prepare the implementation phase of the project. This paper presents some lessons learned that result from experience of the authors in adopting some Scrum practices in a R&D project, like short iterations, backlogs, and product increments, and simultaneously using UML models, namely use cases and components.This research is sponsored by the Portugal Incentive System for Research and Technological Development PEst-UID/CEC/00319/2013 and by project in co–promotion nº 36265/2013 (Project HMIExcel - 2013-2015)

    Mikropalveluiden testauskäytännöt julkisen sektorin projekteissa

    Get PDF
    Online services are constantly evolving, which makes service maintainability challenging. This has led to micro service architecture, where big applications are split into smaller services in order to improve applications' maintainability, scalability, and flexibility. However, splitting a single process application into multiple services causes the testing process to be more challenging. This Master's thesis is exploring these testing problems in a micro service context and finding practical guidance for the test implementation. Moreover, this Master's thesis focuses on public sector software projects. Public sector software projects are clearly predefined and the provider has open information about the project's needs. Thus, the project has a clear goal and known boundaries right from the beginning. The research approach for this study is an exploratory multiple case study consisting of three case projects. The data of the case projects were collected through semi-structural interviews and version history commit analysis. The results of this study present a set of successful practices and recommendations for taking testing into account during a micro service oriented agile development process. Successful testing requires monitoring of the project's maturity level to focus testing resources at the right time. Additionally, the case projects brought up practical testing guidance, such as understanding of the common testing responsibility, the importance of peer review, and the value of assigning a specific tester after the project has reached its end-to-end testing phase.Web-palvelut kehittyvät jatkuvasti, mikä vaikeuttaa palveluiden ylläpitoa. Yhtenä ratkaisuna on palvelun pilkkominen osiin mikropalveluiksi. Palvelun pilkkominen edistää palvelun ylläpitoa, skaalattavuutta ja joustavuutta. Toisaalta palvelun pilkkominen mikropalveluiksi vaikeuttaa testausprosessia. Tämä diplomityö tutkii mikropalveluiden testausprosessiin liittyviä ongelmia ja etsii käytännönläheistä ohjeistuista testien toteuttamiseen mikropalveluympäristössä. Diplomityö keskittyy julkisen sektorin mikropalveluprojekteihin, koska kaikki tässä diplomityössä käytetyt tutkimusprojektit ovat julkisen sektorin hallinnoimia. Julkisen sektorin ohjelmistoprojektit ovat selkeästi esimääriteltyjä ja projektien aineisto on avoimesti saatavilla. Tämän takia projekteilla on selkeä päämäärä ja tunnetut rajat heti projektin alussa. Tutkimusmenetelmänä käytettiin tutkivaa case study -menetelmää. Tutkimus sisälsi kolme tutkimuskohdetta. Tutkimusdata kerättiin osittain jäsennetyillä kontekstuaalisilla haastatteluilla ja ohjelmistokoodin versiohallinnan historian analyysillä. Tuloksena syntyi kokoelma hyväksi todettuja käytäntöjä ja suosituksia, jotka auttavat ottamaan testauksen huomioon mikropalvelun iteratiivisessa ohjelmistokehitysprosessissa. Suositeltaviksi testauskäytännöiksi havaittiin projektin maturiteetin tarkkaileminen, että testauksen resursointi voidaan tehdä oikeaan aikaan. Lisäksi, projekteista nousi esiin muita suosituksia, kuten kehitystiimin yhteisen testaamisvastuun ymmärtäminen, koodikatselmoinnin merkitys ja erillisen testaajan tärkeys, kun projektin maturiteetti on kasvanut riittävästi

    Evolution Of Object-Oriented Methods From The Reverse Engineering Of Programming Code

    Get PDF
    Many software development projects fail because of their inability to deliver the product in a timely and cost-effective manner, i.e. the software crisis. In a commercial airline company, a safety-critical system for preventing a “single-point of failure” needs to be developed and certified. To meet the project deadline an Agile approach was used in developing the first portion of the system. An appropriate software development methodology, i.e. reverse-engineering was then applied to the software system to develop method that would be used in system maintenance and evaluation. The goals of this research study were to develop a segment of one of the UML activity diagrams as a purposeful and systematic methodology for conducting reverse-engineering on complete safety critical systems of the airline system. This was done to capture very high and very low-level designs of software engineering and to verify and validate the source code. The UML activity diagram was developed from a source code of an aircraft-gate assignment system. This was done in order to capture very low-level details of the program code, from which the model was reversed engineered. The diagram was made to represent the entire source code, by going through and analyzing the source code line-by-line. Whenever there is a condition in the source code, the diagram branches out and interacts with other activities. To directly see the flow of the program, the directional arrows in the diagram were assigned. With the data flow of the source code being represented in the visual format of the UML activity diagram, the interaction of each component can be easily understood and identified. The user can see the information that goes into each method, and what each method required. Once the user understands the flow of data within the program, the user can validate and verify that the software was developed with correct methods. As the UML activity diagram represented the pseudo code of the program in a graphic way, it should be a good candidate to be used as a tool to help in reverse-engineering safety critical systems of an airline system. The UML activity diagram should be able to represent all aspects required in the deconstruction phrase of the reverse-engineering methodology. With the source code in the graphic diagram form, it should be much easier to identify the structure, functions and determine how each aspect of the program interact with each other so that the activity diagram can be used in a formal methodology for reverse-engineering

    Exploring the critical success factors of virtual-agile IT projects: a grounded theory study

    Get PDF
    Business dynamics and competition have necessitated IT organizations to use virtual style of working depending on the principles of agile methods. Virtual-agile IT projects are most relevant in the context of software and web development, new product development and information system projects. Organizations where fulfilling the demands of clients, face several complexities during projects; mainly obstructed by differences in location, time, culture and working dynamics etc. This paper aims to explore some useful practices undertaken in IT industry to deal with such criticalities. The research uses qualitative methods and grounded theory methodology to generate emerging themes recognized as codes or concepts; which were further transformed into categories based on their properties and dimensions. Categories or sub-categories identified were arranged using coding paradigm which helped to identify a core-category. Consequently, the relationships were refined, arranged in a unique way in selective coding phase and a storyline was generated elaborating the relationships between various categories, sub-categories and concepts. Finally, a conclusion is made and recommendations are proposed for future research

    Managing Distributed Software Projects

    Get PDF

    “Computing” Requirements for Open Source Software: A Distributed Cognitive Approach

    Get PDF
    Most requirements engineering (RE) research has been conducted in the context of structured and agile software development. Software, however, is increasingly developed in open source software (OSS) forms which have several unique characteristics. In this study, we approach OSS RE as a sociotechnical, distributed cognitive process where distributed actors “compute” requirements—i.e., transform requirements-related knowledge into forms that foster a shared understanding of what the software is going to do and how it can be implemented. Such computation takes place through social sharing of knowledge and the use of heterogeneous artifacts. To illustrate the value of this approach, we conduct a case study of a popular OSS project, Rubinius—a runtime environment for the Ruby programming language—and identify ways in which cognitive workload associated with RE becomes distributed socially, structurally, and temporally across actors and artifacts. We generalize our observations into an analytic framework of OSS RE, which delineates three stages of requirements computation: excavation, instantiation, and testing-in-the-wild. We show how the distributed, dynamic, and heterogeneous computational structure underlying OSS development builds an effective mechanism for managing requirements. Our study contributes to sorely needed theorizing of appropriate RE processes within highly distributed environments as it identifies and articulates several novel mechanisms that undergird cognitive processes associated with distributed forms of RE
    corecore