- Research Article
8
- 10.1016/j.jss.2023.111749
Behaviour driven development: A systematic mapping study
- May 19, 2023
- Journal of Systems and Software
- Leonard Peter Binamungu + 1 more +1
Behaviour driven development: A systematic mapping study
Behavior Driven Development (BDD) is a widely adopted agile methodology for software development that emphasizes the behavior of an application as a series of test cases, using the keywords, which include "Given," "When," and "Then." It involves writing requirements in a structured and testable format that can be evaluated to ensure compliance with the expected behavior. Although a significant amount of research has been conducted to examine the impact of using BDD on software development process yet rare work is observed to synthesize these studies and identify areas for future exploration. This study presents a review of the state-of-the-art BDD by synthesizing the recent advancements in its uses and applications. It aims to systematically investigate the impact of BDD on software development process as well as on product quality by aiding to bridge the communication gap between the stakeholders. The results reveal that BDD is an effective technique to clarify requirements during the software development process as it helps minimizing the intrinsic ambiguities. This work proposes a taxonomy based on the role and applications of BDD in various contexts. It suggests a framework for applying BDD in software development and defines a workflow for its application in software development. Finally, this work highlights some pertinent future directions for the use of BDD in software development.
Behaviour driven development: A systematic mapping study
Behaviour driven development: A systematic mapping study
ScrumOntoBDD: Agile software development based on scrum, ontologies and behaviour-driven development
When developing a Learning Management System (LMS) using Scrum, we noticed that it was quite often necessary to redefine some system behaviour scenarios, due to ambiguities in the requirement specifications, or due to misinterpretations of stories reported by the Product Owners (POs). The definition of test suites was also cumbersome, resulting in test suites that were incomplete or did not at all comply with the system requirements. Based on this experience and to deal with these problems, in this paper, we propose the ScrumOntoBDD approach to agile software development, which combines Scrum, ontologies and Behaviour-Driven Development (BDD). This approach is centred on the concepts and techniques of Scrum and BDD and focuses on the planning and analysis phases of the software life cycle, since the BDD tools currently provide little support to these phases, while most of the problems during the LMS development were found exactly there. We claim that our approach improves the software development practices in this respect. Furthermore, ScrumOntoBDD employs ontologies in order to reduce ambiguities intrinsic to the use of a natural language as a BDD ubiquitous language. In this paper, we illustrate and systematically evaluate our approach, showing that it is beneficial since it improves the communication between members of an agile development team.
Read moreThe Impact of Human Factors on Software Development Processes Applying the Agile and Waterfall Methodologies: A Case Study Using Real Data
The software development process (SDP) contains many variables depending on the methodology chosen. Software development methodologies such as Agile or Waterfall can specify how and in what sequence software is developed. However, the SDP remains a hot topic among practitioners and academics, who seek to clarify the key aspects that influence the successful implementation of the SDP. As the SDP is a dynamic and knowledge-intensive business process (BP), one of its most impact components is the human factor (HF). It is difficult to predict how the HF impacts the sequence and results of SDP implementation. This paper proposes a new approach to investigate the impact of the HF on the SDP through the perspectives of different software development methodologies. The advantages and novelties of this approach include modelling HF uncertainties through their fuzzification in SDP activities, modelling different SDP methodologies using a case-handling approach, and simulating a dynamic, case-based SDP with real HF-related data collected from several IT organizations. The results show that the impact of the HF on SDP performance differs across the Waterfall and Agile methodologies. The results also allow researchers and practitioners working on software development projects to familiarize themselves with the impact of the HF on different SDPs, and to assess the degree of development risk associated with the SDP depending on the methodology chosen.
Read moreA Study of the Characteristics of Behaviour Driven Development
Behaviour Driven Development (BDD) has gained increasing attention as an agile development approach in recent years. However, characteristics that constitute the BDD approach are not clearly defined. In this paper, we present a set of main BDD characteristics identified through an analysis of relevant literature and current BDD toolkits. Our study can provide a basis for understanding BDD, as well as for extending the exisiting BDD toolkits or developing new ones.
Read moreIs business domain language support beneficial for creating test case specifications: A controlled experiment
Is business domain language support beneficial for creating test case specifications: A controlled experiment
Software Practices For Agile Developers: A Systematic Literature Review
Software development is one of the work practices in a company’s startup, academics, and industries. Agile is a software development methodology that is currently quite popular. Agile development practices existing methodologies include Test-Driven Development (TDD), Behavior-Driven Development (BDD), Domain-Driven Design (DDD), and Model-Driven Development (MDD). Each software development practice is unique as it could hinder or contribute greatly to the creation of said software. Agile is a consideration for developers when selecting appropriate development practices due to the breadth of available practices. Thus, this study identifies the characteristics and effectiveness of Agile methods. Our opinion is that this study can help software developers to better understand the challenges of each agile practices and implement them to create better optimized softwares.
Read moreDevelopment modeling of software based on performance process
In particular, an early integration of performance specifications in the SDP has been recognized during the last few years as an effective approach to improve the overall quality of a software. Performance related problems are becoming more and more strategic in the software development, especially recently with the advent of Web Services and related business-oriented composition techniques (software as a service, Web 2.0, orchestration, choreography, etc.). The goal of our work is the definition of a software development process that integrates performance evaluation and prediction. The software performance engineering development process (SPEDP) we specify is focused on performance, which plays a key role driving the software development process, thus implementing a performance/QoS-driven (software) development process. More specifically, in this paper our aim is to formally define the SPEDP design process, posing particular interest on the basis, on the first step of SPEDP, the software/system architecture design, modeling and/or representation. We define both the diagrams to use and show how to model the structure of the software architecture, its behavior and performance requirements. This is the first mandatory step for the automation of the SPEDP into a specific tool.
Read moreDESIGN AND MODELING IN THE SOFTWARE PERFORMANCE ENGINEERING DEVELOPMENT PROCESS
Performance related problems are becoming more and more strategic in the software development, especially recently with the advent of Web Services and related business-oriented composition techniques (software as a service, Web 2.0, orchestration, choreography, etc.). In particular, an early integration of performance specifications in the SDP has been recognized during the last few years as an effective approach to improve the overall quality of a software. The goal of our work is the definition of a software development process that integrates performance evaluation and prediction. The software performance engineering development process (SPEDP) we specify is focused on performance, which plays a key role driving the software development process, thus implementing a performance/QoS-driven (software) development process. More specifically, in this paper our aim is to formally define the SPEDP design process, posing particular interest on the basis, on the first step of SPEDP, the software/system architecture design, modeling and/or representation. We define both the diagrams to use and show how to model the structure of the software architecture, its behavior and performance requirements. This is the first mandatory step for the automation of the SPEDP into a specific tool, which we have partially implemented as a performance plug-in for ArgoUML, ArgoPerformance.
Read moreUsing behaviour-driven development with hardware-software co-design for autonomous load management
The typical approach to designing embedded systems manages the specification and design of the hardware and software separately. HW/SW Co-design is used, in embedded computing, to allow the hardware and the software to be designed and implemented together and make sure that the non-functional properties are met. Behavior-driven development (BDD) is an agile software development approach that spurs collaboration of project stakeholders to ensure the right software is developed to meet their needs. BDD describes the behavior of the system as executable user stories and focuses on how the system behaves for users interact with the system. In this paper, we introduce an approach that integrates BDD with HW/SW Co-design. The approach provides the ability to describe the behavior of the software as executable user stories in a HW/SW Co-design environment. The approach is evaluated using a renewable energy project in collaboration with a private company in Canada to build a system for autonomous load management of self-forming renewable energy nanogrids.
Read moreDeveloping green and sustainable software: Success factors for vendors
Software plays an important role in various aspects of our life. However, recent software development practices have substantial negative impacts (direct and indirect) on economy, society, human beings, and environment. To cope with these issues the concept of Green Software Engineering has boomed recently. Green and sustainable software development aims to create green software that meets the needs of current and future users while minimizing its negative impacts on the environment and society. Green software development is getting attention in Global Software Engineering (GSE). Software development multi-sourcing vendor organizations have focused on the adaptation of green practices in software development projects. The objectives of this study are to identify and scrutinize a list of critical success factors (CSFs) for vendors in the development of green and sustainable software. The required data for conducting the study was taken, via systematic literature review (SLR) process, from a sample of 74 research papers. The SLR findings reveal that ‘green software design and efficient coding ’, ‘power-saving software strategies ’, ‘low carbon emission throughout the software development process ’, ‘efficient resource utilization ’, ‘paperless communication ’, ‘filtration of requirements through green evaluator and e-waste management’ are the critical factors to be implanted by vendors in the development of green and sustainable software.
Read moreEarly Formalization of AI-tools Usage in Software Engineering in Europe: Study of 2023
This scientific article presents the results of a study focused on the current practices and future prospects of AI-tools usage, specifically large language models (LLMs), in software development (SD) processes within European IT companies. The Pan-European study covers 35 SD teams from all regions of Europe and consists of three sections: the first section explores the current adoption of AI-tools in software production, the second section addresses common challenges in LLMs implementation, and the third section provides a forecast of the tech future in AI-tools development for SD. The study reveals that AI-tools, particularly LLMs, have gained popularity and approbation in European IT companies for tasks related to software design and construction, coding, and software documentation. However, their usage for business and system analysis remains limited. Nevertheless, challenges such as resource constraints and organizational resistance are evident. The article also highlights the potential of AI-tools in the software development process, such as automating routine operations, speeding up work processes, and enhancing software product excellence. Moreover, the research examines the transformation of IT paradigms driven by AI-tools, leading to changes in the skill sets of software developers. Although the impact of LLMs on the software development industry is perceived as modest, experts anticipate significant changes in the next 10 years, including AI-tools integration into advanced IDEs, software project management systems, and product management tools. Ethical concerns about data ownership, information security and legal aspects of AI-tools usage are also discussed, with experts emphasizing the need for legal formalization and regulation in the AI domain. Overall, the study highlights the growing importance and potential of AI-tools in software development, as well as the need for careful consideration of challenges and ethical implications to fully leverage their benefits.
Read moreAnalysis and Comparison of Automatic Code Generation and Transformation Techniques on Low-Code Platforms
The low-code approach is an important area of research being developed to improve the rapid creation and performance of software applications. This approach allows developers and users to easily create software applications through an interactive interface. Existing research shows that the low-code approach accelerates the development process in innovative ways, saves effort and time, and reduces code complexity. This study analyses and compares automatic code generation and transformation techniques in low-code platforms. The study analyses the contributions of automatic code generation and transformation to software engineering processes and evaluates the impact of these techniques on software product quality and development speed. The importance of the Model-Based Development (MBD) approach in automated code generation processes is highlighted. It is stated that MBD provides benefits such as speeding up the software development process and reducing errors by enabling automatic code generation from high-level abstract models. In the study, various literature studies were evaluated to examine the impact of automatic code generation and transformation techniques on the application development process. These studies have shown how automatic code generation and transformation techniques are applied, what results are achieved and what contributions these techniques make to the software development process. The results of the study show that automatic code generation and transformation techniques have a great impact on the application development process. In particular, the acceleration of the software development process, the reduction of errors and the ability to produce more effective and efficient software products are important benefits of these techniques. In addition, it has been found that this approach increases the success of software projects by enabling software developers to produce fast and accurate solutions in complex systems. In this context, the importance of automatic code generation and transformation techniques plays an important role in software development processes.
Read moreReview of an Agile Software Development Methodology with SCRUM & Extreme Programming
Software development methodologies offer a methodical way to working on projects in accordance with client expectations. In the software development process, the customer is seen as the main entity. In order to build valuable software quickly and within a given budget, firms are now seeking to implement customer-centric techniques. Customer satisfaction plays a crucial part in the development and deployment of software products. One software development process that helps to best fulfil changing customer requirements is agile software development. In the following part, a table of comparisons between the various agile modelling methodologies with regard to requirements and the role of the customer follows a discussion of agile methodology. The Scrum & Extreme Programming framework is presented, along with how different firms use the approach for projects of various sizes.
Read moreProceedings of the 2015 International Conference on Software and System Process
Welcome to the International Conference on Software and Systems Process (ICSSP) held in Zurich, Switzerland, on June 2nd and 3rd, 2012. Having grown from a Software Process Workshop in 2005 to the International Conference on Software Process (ICSP) in 2007, and finally to the International Conference on Software and Systems Process (ICSSP) in 2011, this conference series has established its place in the software engineering community as a respected conference focusing on research and practice related to software and systems development process. Software and software systems development use processes as one major means for achieving and ensuring the quality of the final product. This leads to specific challenges regarding software processes such as simplicity, adaptability, standard conformance, the coordination of multiple domains and lifecycles, etc. Processes from other domains (e.g., health care, manufacturing, business, aerospace, automotive systems, and others) face similar challenges. Yet, they share interesting similarities with and differences to software processes. The question is: How can we in the software domain learn from other domains to meet our software process engineering challenges? The ICSSP conferences hence connect the traditional software and systems process community with outside views and insights, broadening its scope of software development processes to system development and explicitly including processes of other domains such as health care, business, and manufacturing. By sharing process development theories and practices from such domains, ICSSP 2012 is investigating novel solutions to today's process challenges. Correspondingly, the main theme of ICSSP 2012 is Beyond Software and Software Systems Processes, signaling our goal of learning from domains other than the traditional software process community.
Read moreThe knowledge-gap reduction in software engineering
Many papers proposed in the software engineering and information systems literature are dedicated to analysis of software projects missing their schedules, exceeding their budgets, delivering software products with poor quality and in some cases even wrong functionality. The expression “software crisis“ has been coined since the late 60's to illustrate this phenomenon. Various solutions has been proposed by academics and practitioners in order to deal with the software crisis, counter these trends and improve productivity and software quality. Such solutions recommend software process improvement as the best way to build software products needed by modern organizations. Among the well-known solutions, many are based either on software development tools or on software development approaches, methods, processes, and notations. Nevertheless, the scope of these solutions seems to be limited and the improvements they provide are often not significant. We think that since software artifacts are accumulation of knowledge owned by organizational stakeholders, the software crisis is due to a knowledge gap resulting from the discrepancy between the knowledge integrated in software systems and the knowledge owned by organizational actors. In particular, integrating knowledge management in software development process permits reducing the knowledge gap through building software products which reflect at least partly the organization's know-how. In this paper, we propose a framework which provides a definition of knowledge based on information systems architecture and describes a knowledge-oriented software development process to help organizations in reducing the software crisis impacts.
Read more