jehanweerasuriya/uni-ai-dataset huggingface dataset:
Whether software engineering needs to be artificially intelligent
Authors: Herbert A. Simon
Published in: IEEE Transactions on Software Engineering (1986-07-01)

The author discusses the roles that humans now play versus the roles that could be taken over by artificial intelligence in developing computer systems. Also discussed is how the intelligent part of the automatic system can communicate effectively with humans. Topics covered include an artificial intelligence overview; weak methods; the heuristic search; the problem space; the knowledge base; expert systems; and conclusions drawn from a description of the general artificial intelligence paradigm.
Fifty years of progress in software engineering
Authors: L. B. S. Raccoon
Published in: ACM SIGSOFT Software Engineering Notes (1997-01-01)

In this paper, I describe a new outlook on the history of Software Engineering. I portray large-scale structures within Software Engineering to give a better understanding of the flow of history. I use these large-scale structures to reveal the steady, ongoing evolution of concepts, and show how they relate to the myriad whorls and eddies of change. I also have four smaller, more specific purposes in writing this paper.First, I want to point out that old ideas do not die. In The Mythical Man-Month after 20 Years, Brooks claims "the Waterfall Model is Wrong." But if the Waterfall model were wrong, we would stop arguing over it. Though the Waterfall model may not describe the whole truth, it describes an interesting structure that occurs in many well-defined projects and it will continue to describe this truth for a long time to come. I expect the Waterfall model will live on for the next one hundred years and more.Second, I want to show that the Chaos model, Chaos life cycle, Complexity Gap, and Chaos strategy are part of the natural evolution of Software Engineering. The Chaos model and strategy supersede, but do not contradict, the Waterfall and Spiral models, and the Stepwise Refinement strategy. They are more up to date because they express contemporary issues more effectively, and fit our contemporary situations better. The Chaos model, life cycle, and strategy are equally as important, but not better than, other concepts.Third, I compare the Chaos model, life cycle, and strategy to other models, life cycles, and strategies. This paper can be considered a comparison of the ideas presented in my papers about chaos with other ideas in the field. I avoided comparisons in my other papers because I wanted to define those ideas in their own terms and the comparisons did not further the new ideas.Fourth, I make a few predictions about the next ten years of Software Engineering. The large-scale structures described in this history provide a stronger base for understanding how software engineering will evolve in the future.This paper is laid out as follows. In the first section, I use the flow of water as a metaphor to describe the flow of progress in Software Engineering. I use the Water metaphor to show some of the structures within Software Engineering. The current work builds on top of the historical work, and future work will build on top of current work. In the remaining sections, I describe the waves, streams, and tides that portray the evolution of concepts and technologies in Software Engineering.
Reflections on software engineering education
Authors: H. van Vilet
Published in: IEEE Software (2006-05-01)

The "engineering" focus in software engineering education leaves instructors vulnerable to several traps. It also misleads students as to SE's essential human and social dimensions. Here, the author discusses how this limited conception of SE contributes to five assumptions that can trap SE educators: (i) an SE course needs an industrial project. (ii) SE is like other branches of engineering. (iii) Planning in SE is poorly done relative to other fields. (iv) The user interface is part of low-level design. (v) SWEBOK represents the state of the practice.
The Role of Deliberate Artificial Design Elements in Software Engineering Experiments
Authors: Jo Erskine Hannay, Magne Jørgensen
Published in: IEEE Transactions on Software Engineering (2008-03-01)

Increased realism in software engineering experiments is often promoted as an important means to increase generalizability and industrial relevance. In this context, artificiality, e.g., the use of constructed tasks in place of realistic tasks, is seen as a threat. In this article, we examine the opposite view, that deliberately introduced artificial design elements may increase knowledge gain and enhance both generalizability and relevance. In the first part of the article, we identify and evaluate arguments and examples in favor of, and against, deliberately introducing artificiality into software engineering experiments. In the second part of the article, we summarize a content analysis of articles reporting software engineering experiments published over the ten-year period 1993-2002. The analysis reveals a striving for realism and external validity, but little awareness of for what and when, various degrees of artificiality and realism are appropriate. We conclude that an increased awareness and deliberation in these respects is essential. However, arguments in favor of artificial design elements should not be used to justify studies that are badly designed or that have research questions of low relevance.
Summary of the Dagstuhl workshop on future directions in software engineering
Authors: Walter F. Tichy, Nico Habermann, Lutz Prechelt
Published in: ACM SIGSOFT Software Engineering Notes (1993-01-01)

The intent of the workshop was to bring together leading scientists for identifying promising directions for future research in Software Engineering. The motivation for the workshop was the realization that Software Engineering research was not in good shape, with the present emphasis on management and risk control diverting attention from hard, technical subjects.After week-long, intensive discussions of a great number of issues, the following topics were seen as most crucial for progress:1. Developing the area of software architecture as a foundation of Software Engineering;2. Learning to master evolving systems;3. Building a scientific basis for Software Engineering;4. Emphasizing science and engineering know-how when educating practitioners.Formal methods, domain specific knowledge, special purpose languages, and reuse were seen as important approaches, but not as solutions or ends in themselves. There was also a fair amount of introspection on proper method, evaluation, and experimentation in Software Engineering research.This report contains participants' position statements and a record of the discussions. The editors hope that it may help make research in Software Engineering an exciting and thriving endeavor once again.
Crowdsourcing for Software Engineering
Authors: Klaas-Jan Stol, Thomas D. LaToza, Christian Bird
Published in: IEEE Software (2017-03-01)

Crowdsourcing, which leverages the intelligence and contributions of a large group of people to achieve a specific goal, is disrupting business models and work practices. Because crowdsourcing approaches could have a far-reaching impact on future software development, this theme issue explores various ways developers and managers can benefit from these new opportunities. The Web Extra https://youtu.be/Z_8vWQjU7iY is an audio podcast of the introduction to the theme issue on crowdsourcing for software engineering.
Classification And Analysis Of Risks In Software Engineering
Authors: Hooman Hoodat, Hassan Rashidi
Published in: Zenodo (CERN European Organization for Nuclear Research) (2009-08-27)

Despite various methods that exist in software risk management, software projects have a high rate of failure. When complexity and size of the projects are increased, managing software development becomes more difficult. In these projects the need for more analysis and risk assessment is vital. In this paper, a classification for software risks is specified. Then relations between these risks using risk tree structure are presented. Analysis and assessment of these risks are done using probabilistic calculations. This analysis helps qualitative and quantitative assessment of risk of failure. Moreover it can help software risk management process. This classification and risk tree structure can apply to some software tools.
Bayesian Networks For Evidence-Based Decision-Making in Software Engineering
Authors: Ayşe Tosun, Ayşe Bener
Published in: IEEE Transactions on Software Engineering (2014-04-30)

Recommendation systems in software engineering (SE) should be designed to integrate evidence into practitioners experience. Bayesian networks (BNs) provide a natural statistical framework for evidence-based decision-making by incorporating an integrated summary of the available evidence and associated uncertainty (of consequences). In this study, we follow the lead of computational biology and healthcare decision-making, and investigate the applications of BNs in SE in terms of 1) main software engineering challenges addressed, 2) techniques used to learn causal relationships among variables, 3) techniques used to infer the parameters, and 4) variable types used as BN nodes. We conduct a systematic mapping study to investigate each of these four facets and compare the current usage of BNs in SE with these two domains. Subsequently, we highlight the main limitations of the usage of BNs in SE and propose a Hybrid BN to improve evidence-based decision-making in SE. In two industrial cases, we build sample hybrid BNs and evaluate their performance. The results of our empirical analyses show that hybrid BNs are powerful frameworks that combine expert knowledge with quantitative data. As researchers in SE become more aware of the underlying dynamics of BNs, the proposed models will also advance and naturally contribute to evidence based-decision-making.
Enhancing Project-Based Learning in Software Engineering Lab Teaching Through an E-Portfolio Approach
Authors: José A. Macías
Published in: IEEE Transactions on Education (2012-04-12)

Project-based learning is one of the main successful student-centered pedagogies broadly used in computing science courses. However, this approach can be insufficient when dealing with practical subjects that implicitly require many deliverables and a great deal of feedback and organizational resources. In this paper, a worked e-portfolio is presented as an approach to improve the teaching/learning and evaluation processes in project-based learning environments needing considerable resources. To validate this approach, a practical project-based software engineering course supported by a Moodle-based e-portfolio was designed and taught. The results obtained corroborated the effectiveness of the e-portfolio in practical software engineering teaching; this approach can be extended to similar subjects in other studies and/or curricula.
Software Engineering for Sustainability: Find the Leverage Points!
Authors: Birgit Penzenstadler, Letícia Duboc, Colin C. Venters, Stefanie Betz, Norbert Seyff, Krzsztof Wnuk, Ruzanna Chitchyan, Steve Easterbrook, Christoph Becker
Published in: IEEE Software (2018-01-11)

We as software engineers are responsible for the long-term consequences of the systems we design—including impacts on the wider environmental and societal sustainability. However, the field lacks analytical tools for understanding these potential impacts while designing a system or for identifying opportunities for using software to bring about broader societal transformations. This article explores how the concept of leverage points can be used to make sustainability issues more tangible in system design. The example of software for transportation systems illustrates how leverage points can help software engineers map out and investigate the wider system in which the software resides, such that we can use software as an effective tool for engineering a more sustainable world. This article is part of a theme issue on Process Improvement.
“Sampling” as a Baseline Optimizer for Search-Based Software Engineering
Authors: Jianfeng Chen, Vivek Nair, Rahul Krishna, Tim Menzies
Published in: IEEE Transactions on Software Engineering (2018-01-08)

Increasingly, Software Engineering (SE) researchers use search-based optimization techniques to solve SE problems with multiple conflicting objectives. These techniques often apply CPU-intensive evolutionary algorithms to explore generations of mutations to a population of candidate solutions. An alternative approach, proposed in this paper, is to start with a very large population and sample down to just the better solutions. We call this method “Sway”, short for “the sampling way”. This paper compares Sway versus state-of-the-art search-based SE tools using seven models: five software product line models; and two other software process control models (concerned with project management, effort estimation, and selection of requirements) during incremental agile development. For these models, the experiments of this paper show that Sway is competitive with corresponding state-of-the-art evolutionary algorithms while requiring orders of magnitude fewer evaluations. Considering the simplicity and effectiveness of Sway, we, therefore, propose this approach as a baseline method for search-based software engineering models, especially for models that are very slow to execute.
User Software Engineering and the design of interactive systems
Authors: Anthony I. Wasserman
Published in:  (1981-03-09)

The successful construction of interactive systems requires the utilization of principles of user-centered design, combined with techniques for software engineering, in order to produce systems that are reliable, easy to use, and well adapted to user needs. This paper presents some of these principles and shows how they are achieved in the User Software Engineering (USE) project, which is intended to provide the applications developer with a development environment that supports the systematic specification and implementation of interactive systems.
Continuous Integration and Deployment Strategies for Streamlined DevOps in Software Engineering and Application Delivery
Published in: International Journal of Computer Applications Technology and Research (2025-01-01)

In modern software engineering, Continuous Integration (CI) and Continuous Deployment (CD) have emerged as essential practices for improving the efficiency and reliability of software delivery.These practices form the backbone of DevOps, a set of methodologies that bridges the gap between development and operations, fostering collaboration and automating the delivery pipeline.The concept of CI involves the frequent integration of code changes into a shared repository, allowing for early detection of bugs and ensuring that new code aligns with the project's standards.CD extends this by automating the deployment of code changes into production, enabling frequent and reliable releases without manual intervention.This paper explores the strategies and tools that enable seamless integration and deployment in software engineering.It examines the role of version control systems, automated testing, and containerization technologies such as Docker in optimizing CI/CD workflows.The challenges associated with scaling CI/CD pipelines, handling microservices architectures, and maintaining security throughout the deployment process are discussed in detail.Additionally, this paper highlights the importance of monitoring and feedback loops for continuous improvement and the adoption of best practices in DevOps, such as automation, collaboration, and rapid iteration.By embracing CI/CD strategies, organizations can reduce time-to-market, enhance software quality, and increase deployment frequency, ultimately streamlining DevOps processes and accelerating application delivery.This paper provides insights into the transformative impact of CI/CD practices on the software engineering lifecycle, offering practical approaches for successful implementation.
Context and Adaptivity in Pervasive Computing Environments: Links with Software Engineering and Ontological Engineering
Authors: Ahmet Soylu, Patrick De Causmaecker, Piet Desmet
Published in: Journal of Software (2009-11-01)

In this article we present a review of selected literature of context-aware pervasive computing while integrating theory and practice from various disciplines in order to construct a theoretical grounding and a technical follow-up path for our future research. This paper is not meant to provide an extensive review of the literature, but rather to integrate and extend fundamental and promising theoretical and technical aspects found in the literature. Our purpose is to use the constructed theory and practice in order to enable anywhere and anytime adaptive e-learning environments. We particularly elaborate on context, adaptivity, context-aware systems, ontologies and software development issues. Furthermore, we represent our view point for context-aware pervasive application development particularly based on higher abstraction where ontologies and semantic web activities, also web itself, are of crucial.
Essential Elements of Software Engineering Education Revisited
Authors: Peter Freeman
Published in: IEEE Transactions on Software Engineering (1987-11-01)

A basis for software engineering education proposed in 1976 is reviewed and found to still be valid today, although needing more emphasis on design and better delivery mechanisms. Specific recommendations are made.
A framework for modeling and implementing visual notations with applications to software engineering
Authors: Gennaro Costagliola, Vincenzo Deufemia, Giuseppe Polese
Published in: ACM Transactions on Software Engineering and Methodology (2004-10-01)

We present a framework for modeling visual notations and for generating the corresponding visual programming environments. The framework can be used for modeling the diagrammatic notations of software development methodologies, and to generate visual programming environments with CASE tools functionalities. This is accomplished through an underlying modeling process based on the visual notation syntactic model of eXtended Positional Grammars (XPG, for short), and the associated parsing methodology, XpLR. In particular, the process requires the modeling of the basic elements (visual symbols) of a visual notation, their syntactic properties, the relations between them, the syntactic rules to formally define the set of feasible visual sentences, and a set of semantic routines performing additional checks and translation tasks. Such a process is completely supported by the VLDesk system, which enables the automatic generation of an editor for drawing visual sentences, as well as a processor for their recognition, parsing, and translation into other notations.The proposed framework also provides the basis for the definition of a meta-CASE technology. In fact, we can customize the generated visual programming environment in terms of the supported visual notation, its syntactic properties, and the translation rules. We have used this framework to model several diagrammatic notations used in software development methodologies, including those of the Unified Modeling Language.
Major Issues in Software Engineering Project Management
Authors: Richard H. Thayer, Art Pyster, R. Wood
Published in: IEEE Transactions on Software Engineering (1981-07-01)

Software engineering project management (SEPM) has been the focus of much recent attention because of the enormous penalties incurred during software development and maintenance resulting from poor management. To date there has been no comprehensive study performed to determine the most significant problems of SEPM, their relative importance, or the research directions necessary to solve them. We conducted a major survey of individuals from all areas of the computer field to determine the general consensus on SEPM problems. Twenty hypothesized problems were submitted to several hundred individuals for their opinions. The 294 respondents validated most of these propositions. None of the propositions was rejected by the respondents as unimportant. A number of research directions were indicated by the respondents which, if followed, the respondents believed would lead to solutions for these problems.
Teaching Computational Thinking Using Agile Software Engineering Methods
Authors: Ilenia Fronza, Nabil El Ioini, Luis Corral
Published in: ACM Transactions on Computing Education (2017-08-24)

Computational Thinking (CT) has been recognized as one of the fundamental skills that all graduates should acquire. For this reason, motivational concerns need to be addressed at an early age of a child, and reaching students who do not consider themselves candidates for science, technology, engineering, and mathematics disciplines is important as well if the broadest audience possible is to be engaged. This article describes a framework for teaching and assessing CT in the context of K-12 education. The framework is based on Agile software engineering methods, which rely on a set of principles and practices that can be mapped to the activities of CT. The article presents as well the results of an experiment applying this framework in two sixth-grade classes, with 42 participants in total. The results show that Agile software engineering methods are effective at teaching CT in middle schools, after the addition of some tasks to allow students to explore, project, and experience the potential product before using the software tools at hand. Moreover, according to the teachers’ feedback, the students reached all the educational objectives of the topics involved in the multidisciplinary activities. This result can be taken as an indicator that it is possible to use computing as a medium for teaching other subjects, besides computer science.
Software Engineering for Internet of Things
Authors: Mahdi Fahmideh, Abbasi, Aakash Ahmad, Ali Behnaz, John Grundy, Willy Susilo
Published in: Research Online (University of Wollongong) (2021-01-01)

Internet of Things based systems (IoT systems for short) are becoming increasingly popular across different industrial domains and their development is rapidly increasing to provide value-added services to end-users and citizens. Little research to date uncovers the core development process lifecycle needed for IoT systems, and thus software engineers find themselves unprepared and unfamiliar with this new genre of system development. To ameliorate this gap, we conducted a mixed quantitative and qualitative research study where we derived a conceptual process framework from the extant literature on IoT, through which 27 key tasks for incorporation into the development processes of IoT systems were identified. The framework was then validated by means of a survey of 127 IoT practitioners from 35 countries across 6 continents with 15 different industry backgrounds. Our research provides an understanding of the most important development process tasks and informs both software engineering practitioners and researchers of the challenges and recommendations related to the development of next-generation of IoT systems.
Text mining for software engineering
Authors: Jane Huffman Hayes, Alex Dekhtyar, Senthil Karthikeyan Sundaram
Published in: ACM SIGSOFT Software Engineering Notes (2005-05-17)

The mining of textual artifacts is requisite for many important activities in software engineering: tracing of requirements; retrieval of components from a repository; location of manpage text for an area of question, etc. Many such activities leave the "final word" to the analyst --- have the relevant items been retrieved? are there other items that should have been retrieved? When analysts become a part of the text mining process, their decisions on the relevance of retrieved elements impact the final outcome of the activity. In this paper, we undertook a pilot study to examine the impact of analyst decisions on the final outcome of a task.