
Richard W. Hamming's The Art of Doing Science and Engineering: Learning to Learn is one of the true essentials, a book to be read by every scientist or engineer (and certainly software engineer) interested in the big picture; it may be safely skipped by those who aim only at a life and career where one has "merely survived and amused" oneself, as Hamming himself puts it in his final, summative, chapter. The essence of this book is a combination of anecdote and aphorism drawn from a mature, active mind, reflecting on a great career spent at great places (Los Alamos, and then Bell Labs in its heyday, to be precise). There is also a great deal of mathematics, but the aphorism, backed by well-chosen anecdote(s), is fundamental; you do not need to know or care much about differential equations (and there are many here) to benefit from this book. It is hard to convey the value of the anecdotes, in a short review. The aphorisms, however, can be more than mentioned; what follows is, in reverse order, the entire set of Hamming's bolded, inset, aphorisms, by chapter (combining multiple chapters on the same topic, e.g., simulation). I have truncated one long item, which offers up a description of pure mathematics; you will have to read the book to get that one. The focus on aphorism is appropriate; I think Hamming himself would have agreed that this entire wonderful book is a kind of elaboration and proof of Pasteur's "Luck favors the prepared mind", which Hamming quotes not once, not twice, but seven times.
This is an annotated summary of the main items contributed to the ACM Risks Forum in the most recent quarter, orgnanized categorically. References (R i j) to the online Risks Forum denote RISKS vol i number j. Cited RISKS items generally identify contributors and sources, together with URLs. Official RISKS archives are available at www.risks.org, with nice html formatting and search engine courtesy of Lindsay Marshall at Newcastle: http://catless.ncl.ac.uk/Risks/i.j.html (also ftp://www.sri.com/risks). CACM Inside Risks: https://www.csl.sri.com/users/neumann/insiderisks.html
Tsong Yueh Chen received the 2024 SIGSOFT Outstanding Research Award for contributions to software testing through the invention and development of metamorphic testing. He is currently a Professor of Software Engineering at the Department of Computer Science and Software Engineering, Swinburne University of Technology, Australia. Previously, he pursued a PhD degree from the University of Melbourne and an MSc degree and DIC from the Imperial College of Science and Technology, London, U.K. Before joining Swinburne University of Technology, he has lectured at The University of Hong Kong and The University of Melbourne. His research interests fall within the area of software engineering, with a focus on software analysis and testing, debugging, and program repair. He invented adaptive random testing and metamorphic testing. In 2021, the article he co-authored on "Adaptive Random Testing: The ART of test case diversity" (2010) was awarded with the Grand Champion of the Most Influential Paper Award of the "Journal of Systems and Software".
The professors need to do their part in reducing the so-called academiaindustry 'gap'. However, doing so through their teaching, the professors face seemingly unavoidable limits and limitations, which can induce cognitive dissonance, or even feeling of ineptitude and/or culpability. This note investigates such phenomenon.
Massimiliano Di Penta received the 2024 SIGSOFT Early Career Researcher Award for outstanding service to the software engineering community, including serving as program co-chair for all premier software engineering conferences and several other events. Massimiliano received a Ph.D. in Computer Engineering at the University of Sannio (Italy) in 2003. He is now a Full Professor at the University of Sannio (Italy), where he is also the Director of the PhD program in Information Technology for Engineering, and has been Director of the Bachelor's and Master's Degree Programs in Computer Science Engineering.
Test flakiness refers to the non-deterministic behavior of software tests. A flaky test may pass or fail without changes to the test case code or the code under test. This leads to decreased developer productivity, expensive and excessive retrying of tests, bugs masked or missed by persistent flakiness, and loss of developer trust in test suites. Despite the problem receiving increasing attention from both practitioners and researchers over the past decade, no workshop dedicated to flakiness had been established.
This article reports on the results of the 12th ACM/IEEE International Workshop on Software Engineering for Systems-of-Systems and Software Ecosystems (SESoS 2024) in which researchers and practitioners discussed ideas and experiences on the research and practice for the development and evolution of complex softwareintensive systems, more specifically systems-of-systems (SoS) and software ecosystems (SECO). SESoS 2024 was co-located with the 46th IEEE/ACM International Conference on Software Engineering (ICSE 2024). After a decade running this workshop, the SESoS community is advancing on how to cope with the different dimensions that should be considered in the engineering of those classes of systems (i.e. technological, organizational, and social), and also is taking awareness of newer challenges for inclusiveness and sustainability. In addition, benchmarks for conducting research on the areas as well as approaches for investigating emerging domains (smart ecosystems) and non-functional requirements on those systems were also pointed out as relevant challenges.
Martin Robillard received the 2024 SIGSOFT Influential Educator Award for his significant contributions to hands-on software design education, including a textbook (Introduction to Software Design with Java) and a learner-focused software modeling tool (JetUML). He is currently a Professor in the School of Computer Science at McGill University, Montréal, Canada, he is a Distinguished Member of the ACM and a Fellow of the Alexander von Humboldt Foundation. He received his Ph.D. in Computer Science from the University of British Columbia. His research interests fall within the area of software engineering, focussing on human-centred software development. He was awarded six ACM SIGSOFT Distinguished Paper Awards for his work on recommendation systems, software traceability, and software documentation. Recently, he has been working on software documentation generation, test suite quality, and information privacy.
In this paper, the outcomes of the 8th International Workshop on Games and Software Engineering (GAS 2024)1 are reported. The one-day workshop has been held as part of the 46th International Conference on Software Engineering (ICSE 2024) in Lisbon, Portugal on April 14, 2024. The workshop programme includes two exciting keynotes discussing topics related to harnessing video game simulations to generate content and locate bugs, and the experience of maintaining a popular FOSS library, raylib. There are three research paper sessions. The first relates to automation in game engineering; the second explores testing and quality assurance; and the third discusses specification and quality of service. The conclusion of the workshop is anchored by a panel of four researchers, educators, and practitioners discussing the current strengths and limitations of large language models in game engineering.
We face a new software crisis. In 1968, computer scientists learned that developing robust software requires skills, methods, and tools. Today, software and hardware engineers realize that developing a robust Internet of Things (IoT) also pushes the states of their art and practice. Recent news illustrates the many problems IoT faces: from lack of interoperability to broken updates to massive security attacks. In this context, the 6th International Workshop on Software Engineering Research and Practices for the Internet of Things (SERP4IoT) aims to provide a highly interactive forum for researchers and practitioners to address the challenges of, find solutions for, and share experiences with the development, release, and testing of robust software for IoT systems.
Self expression is no longer conveyed by arts and literature. In the world of digitization and software-led products, one needs another way of expressing themselves. That need to automate a workflow or that idea to create new business are only expressible through software - that you would then need to hire a professional developer to first listen to your needs then express them on your behalf in the form of software. No, not that; I need this way instead of this way; you as the customer would say to your developer until you arrive at what you need. Or if you are a developer yourself, cutting time away from your coding job to build your own stuff is a cut of your personal time outside of coding already; unless you are building your own business. Both, customers to software, need to be able to express themselves in software and with minimal knowledge and time. Enter the world of Low-Code software development. This paper discusses key impacts coming with this trend
We demonstrate that no empirical evidence supports long-held beliefs related to code velocity. The best-known pragmatic way to increase code velocity is to periodically nudge engineers to unblock the code review process. The industry needs to revisit the Modern Code Review process in light of the availability of various tools and techniques that analyze and prevalidate the proposed code changes. The code review bots are coming.
Despite considerable research efforts on handling uncertainty in self-adaptive systems, a comprehensive understanding of the precise nature of uncertainty is still lacking. This paper summarises the findings of the 2023 Bertinoro Seminar on Uncertainty in Self- Adaptive Systems, which aimed at thoroughly investigating the notion of uncertainty, and outlining open challenges associated with its handling in self-adaptive systems. The seminar discussions were centered around five core topics: (1) agile end-toend handling of uncertainties in goal-oriented self-adaptive systems, (2) managing uncertainty risks for self-adaptive systems, (3) uncertainty propagation and interaction, (4) uncertainty in self-adaptive machine learning systems, and (5) human empowerment under uncertainty. Building on the insights from these discussions, we propose a research agenda listing key open challenges, and a possible way forward for addressing them in the coming years.
Sustainability is the use of existing resources without compromising them for future generations. Resources must be guaranteed in the environmental, economic, and social dimensions. Sustainable Software Engineering is an emerging research field aiming to minimize software development's negative impacts on society. Furthermore, software sustainability can be defined as a way of keeping something running at a certain level of quality in relation to these dimensions. From the social dimension perspective, it is necessary to confirm software's trade-offs, benefits, and impacts on society since it lacks empirical evidence of its achievements in software. In this research thesis, we will explore how the literature addresses the aspect of social sustainability during software development and understand how social sustainability approaches can be integrated into the context of agile software development. In the end, we expect to have a set of guidelines, activities, and practices that can be adopted by agile teams.
This paper is a response to the invitation by Forti et al. [1] to contribute to the discussion of trending topics in software engineering. The main focus of this contribution is the growing importance of data in software engineering, that is the data fabric and the datafication. Based on some (personal) observations, it is tried to refine the research questions raised by Forti et al. in more detail, in particular with respect to sharing and processing data in an environment of highly interacting distributed software components.
Micro-Frontends is an emerging approach aimed at decomposing the frontend into individual and semi-independent micro applications. Micro-Frontends enable teams to develop the full-stack, from the database to the back-end to the frontend part. Teams are independent and can follow the same guardrails and can make technical decisions associated with their business domain. Many companies, such as SAP, Springer, Zalando, NewRelic, Ikea, Starbucks, and DAZN adopted Micro-Frontends. Micro-Frontends have several advantages, but also drawbacks. In this article, we introduce Micro-Frontends describing the main principles, and presenting the approaches to decompose a web page into Micro- Frontends. Moreover, we report our experience in developing Micro-Frontends describing pros, cons, and issues we faced at DAZN.
We can easily misunderstand the prevalence of software products packed with features over the years as an indicator to our success in impressing customers; thinking that we don't need to do something more than just keep shipping features one after another and keep up with competition. We'd better change that misconception before it's too late. The generation that created sustainable existence for some software products today will not be the same as the generations that would make the decision whether these products would continue to exist. For instance, Generation Z, those born mid-to-late 1990 up to early 2010, grew up with tech that they are no longer impressed by the mere notion of Feature. Their lives are so ingrained in utility from day one that software became something they experience rather than use. It is convenience, reliability, security, seamless interactions, performance, speed and all the matters that directly contribute to positive emotional, sensory, or cognitive perception are what's important. Additionally, it's no longer the app or the piece of software alone that matters; it's the entire Brand. This is because such generations have to be acquired before they even hold the product through brand image and maintained by evolving the brand by their ever changing needs. Such perception of the software product formulated by convenience characteristics and a supportive trustable brand is what constitute Customer Experience. In this paper, it is discussed the key elements that are needed by every software company in order to create an excellent Customer Experience to acquire and maintain happy customers.
The book Enterprise Integration Patterns: Designing Building and Deploying Messaging Solutions is written by Hohpe and Woolf and published by Addison Wesley © 2004, ISBN-13: 978-0-321-20068-6, 683 pp., $69.99.
Software Engineering (SE) has evolved over many decades and has led to many proven and well-established methods and tools that support the efficient development of software and IT systems in general. Although software development had often been performed by distributed teams even before the pandemic, the COVID-19 outbreak exacerbated the physical separation of teams, creating numerous challenges and issues for both organizations and developers. Therefore, in this new column "Software Engineering After the COVID-19 Outbreak", we aim at providing insights into the impact of the COVID-19 outbreak on the work of Software Engineering practitioners and researchers. We intend to collect past and current challenges, changes in structures and organizations, reports of experiences and, of course, proven solutions for solving problems that have arisen.
Artifacts support evaluating new research results and help comparing them with the state of the art in a field of interest. Over the past years, several artifacts have been introduced to support research in the field of self-adaptive systems. While these artifacts have shown their value, it is not clear to what extent these artifacts support research on problems in self-adaptation that are relevant to industry. This paper provides a set of guidelines for artifacts that aim at supporting industry-relevant research on self-adaptation. The guidelines that are grounded on data obtained from a survey with practitioners were derived during working sessions at the 17th International Symposium on Software Engineering for Adaptive and Self-Managing Systems. Artifact providers can use the guidelines for aligning future artifacts with industry needs; they can also be used to evaluate the industrial relevance of existing artifacts. We also propose an artifact template.