{"id":118910,"date":"2022-08-18T22:18:38","date_gmt":"2022-08-18T22:18:38","guid":{"rendered":"https:\/\/livablesoftware.com\/?p=118910"},"modified":"2022-08-18T22:32:59","modified_gmt":"2022-08-18T22:32:59","slug":"present-future-bots-software-engineering","status":"publish","type":"post","link":"https:\/\/livablesoftware.com\/present-future-bots-software-engineering\/","title":{"rendered":"The Present and Future of Bots in Software Engineering"},"content":{"rendered":"

Software Engineering bots are applications able to react to external stimuli such as events triggered by tools or messages posted by users and run automated tasks in response, working as an interface between users and services.<\/p>\n

Bots often include conversational capabilities<\/a> to interact with end-users through textual messages (in chatbots) or speech (in voicebots) in the same communication channels as their human counterparts. Bots can support technical and social activities in software engineering, including communication and decision-making.<\/p>\n

We are witnessing a massive adoption of bots in a variety of domains, including e-commerce<\/a>, customer service, and education. Software development is no exception [1], [2]. Given the essential complexity of software projects and the large community of people around them (stakeholders, designers, developers and, let\u2019s not forget, end-users), there are plenty of opportunities for bots to jump in and tame this complexity by (semi)automating repetitive tasks.<\/p>\n

We often see bots working on software repositories<\/a>, e.g., to manage pull requests, acting as Q&A bots, e.g., for information retrieval, or integrated in software development environments, e.g., automating bug repair [3].<\/p>\n

Automation is even more relevant for open-source projects<\/a>, which typically face sustainability issues. The adoption of bots may help free some responsibilities of the open-source maintainers and allow them to focus on the most critical tasks, benefiting the long-term health of open source. In open-source (or inner-source) projects, bots can leverage the public availability of software assets, including source code, discussions, issues and comments, to target more significant contributions.<\/p>\n

All these topics in the intersection between bots and software engineering was the focus of a special issue at IEEE Software<\/a> co-organized together with Emad Shihab<\/a>, Stefan Wagner<\/a>, Marco A. Gerosa<\/a> and Mairieli Wessel.<\/a> As part of our editorial<\/a> we included a discussion on the future challenges in the development of bots<\/a> for software engineering.<\/p>\n

Future challenges for bots in software engineering<\/h2>\n

The growth in popularity and contribution of bots is undeniable. The number of libraries, platforms, and reusable bots keeps mounting up. Nevertheless, to fully unleash the potential of bots in software engineering, we would like to draw attention to several technical and socioeconomic open challenges<\/strong>.<\/p>\n

Regarding technical challenges, we need better systems to facilitate the coordination and collaboration of bots<\/strong> in the same project, as right\u00a0now, each bot behaves in an independent way, and they can have conflicting actions. This challenge requires defining bot-specific coordination and integration policies.<\/p>\n

Quality evaluation of bots<\/strong> is another key area. Mainly when bots include conversational capabilities, bot testing implies redefining many of the classical testing concepts as we need to test the behavioral part of the bot, the conversational component, and the combination of the two [4], [5].<\/p>\n

Finally, security and privacy<\/strong> also pose relevant challenges. As we must be able to trust the bots we add to our projects, we need techniques that assure that bots will not perform malicious activities, leak data and request the bare minimum permissions<\/a>.<\/p>\n

Beyond technical aspects, we need to better understand users\u2019 perception of bots and how to optimize human-bot collaboration<\/strong>. Bots will need to get better communication and cognitive skills. For instance, when interacting with users, bots should be able to show empathy and re-act differently depending on the result of the sentiment analysis of the conversation they are having so far. Another example would be the need to learn and mimic the specific idiosyncrasy of a project (including its vocabulary and natural language use) to increase their chances of being accepted.<\/p>\n

At the same time, bots could help in promoting social diversity in the project<\/strong>. As an example, they could identify and better support contributions from community minorities in the project. Finally, they should be able to explain their behavior to improve their trustworthiness.<\/p>\n

The economic impact of bots in<\/strong> a project also deserves special attention. We do not have good economic models to evaluate the return-on-investment (ROI) of adopting a certain bot<\/strong>. If we could estimate the value of a bot for a project, it would be much easier to have rational discussions with project owners considering the cost-benefit analysis of integrating it. Even if some bots are released as open-source software, this doesn\u2019t mean there is no cost to adopt them. For example, developers often disregard the cost of learning how to use a bot properly.<\/p>\n

So far, we have mostly discussed the im-pact of bots on software engineering. But as bots are software components themselves, bot development could and should benefit from well-grounded software engineering practices<\/strong>. What the best practices are for this specific type of software component remains to be seen. For example, it is still unclear how bots, especially collaborative and cognitive bots, will be tested. Bots are becoming smarter, and we know that the creation of smart software applications poses a specific set of additional challenges [6]. We hope the community can benefit from this special issue\u2019s papers and keep working on innovating in this increasingly important field.<\/p>\n

References<\/h2>\n
    \n
  1. M. Storey and A. Zagalsky, \u201cDisrupting developer productivity one bot at a time<\/a>,\u201d in Proceedings of the 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE 2016<\/li>\n
  2. L. Erlenhov, F. G. de Oliveira Neto, and P. Leitner, \u201cAn empirical study of bots in software development: characteristics and challenges from a practitioner\u2019s perspective<\/a>,\u201d in ESEC\/FSE \u201920: 28th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering.<\/li>\n
  3. Santhanam, T. Hecking, A. Schreiber, and S. Wagner, \u201cBots in software engineering: a systematic mapping study<\/a>,\u201d PeerJ Computer Science, vol. 8, no. e866, 2022.<\/li>\n
  4. Riccio, G. Jahangirova, A. Stocco, N. Humbatova, M. Weiss, and P. Tonella, \u201cTesting machine learning based systems: a systematic mapping<\/a>,\u201d Empir. Softw. Eng., vol. 25, no. 6, pp. 5193\u20135254, 2020.<\/li>\n
  5. J. Cabot, L. Burgue\u00f1o, R. Claris\u00f3, G. Daniel, J. Perianez-Pascual, and R. Rodr\u00edguez-Echeverr\u00eda, \u201cTesting challenges for NLP-intensive bots<\/a>,\u201d in 3rd IEEE\/ACM International Workshop on Bots in Software Engineering, BotSE@ICSE 2021<\/li>\n
  6. Ozkaya, \u201cWhat is really different in engineering ai-enabled systems?<\/a>\u201d IEEE Softw., vol. 37, no. 4, pp. 3\u20136, 2020.<\/li>\n<\/ol>\n

     <\/p>\n

    Featured image generated with DALL\u00b7E using the prompt a picture of a robot doing pair programming with a human developer<\/em><\/p>\n<\/span>","protected":false},"excerpt":{"rendered":"

    What is the role of bots in Software Engineering? What are the main challenges to build, adopt and integrate bots in software development processes? <\/p>\n","protected":false},"author":2,"featured_media":118912,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[9],"tags":[81,137,163],"_links":{"self":[{"href":"https:\/\/livablesoftware.com\/wp-json\/wp\/v2\/posts\/118910"}],"collection":[{"href":"https:\/\/livablesoftware.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/livablesoftware.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/livablesoftware.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/livablesoftware.com\/wp-json\/wp\/v2\/comments?post=118910"}],"version-history":[{"count":0,"href":"https:\/\/livablesoftware.com\/wp-json\/wp\/v2\/posts\/118910\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/livablesoftware.com\/wp-json\/wp\/v2\/media\/118912"}],"wp:attachment":[{"href":"https:\/\/livablesoftware.com\/wp-json\/wp\/v2\/media?parent=118910"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/livablesoftware.com\/wp-json\/wp\/v2\/categories?post=118910"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/livablesoftware.com\/wp-json\/wp\/v2\/tags?post=118910"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}