jehanweerasuriya/uni-ai-dataset huggingface dataset:
Deep learning-based software engineering: progress, challenges, and opportunities
Authors: Xiangping Chen, Xing Hu, Yuan Huang, He Jiang, Weixing Ji, Yanjie Jiang, Yanyan Jiang, Bo Liu, Hui Liu, Xiaochen Li, Xiaoli Lian, Guozhu Meng, Peng Xin, Hailong Sun, Lin Shi, Bo Wang, Chong Wang, Jiayi Wang, Tiantian Wang, Jifeng Xuan, Xin Xia, Yibiao Yang, Yixin Yang, Yixin Yang, Yixin Yang, Lu Zhang, Zhang Li, Yuming Zhou, Lu Zhang, Lu Zhang
Published in: Science China Information Sciences (2024-12-24)

Abstract Researchers have recently achieved significant advances in deep learning techniques, which in turn has substantially advanced other research disciplines, such as natural language processing, image processing, speech recognition, and software engineering. Various deep learning techniques have been successfully employed to facilitate software engineering tasks, including code generation, software refactoring, and fault localization. Many studies have also been presented in top conferences and journals, demonstrating the applications of deep learning techniques in resolving various software engineering tasks. However, although several surveys have provided overall pictures of the application of deep learning techniques in software engineering, they focus more on learning techniques, that is, what kind of deep learning techniques are employed and how deep models are trained or fine-tuned for software engineering tasks. We still lack surveys explaining the advances of subareas in software engineering driven by deep learning techniques, as well as challenges and opportunities in each subarea. To this end, in this study, we present the first task-oriented survey on deep learning-based software engineering. It covers twelve major software engineering subareas significantly impacted by deep learning techniques. Such subareas spread out through the whole lifecycle of software development and maintenance, including requirements engineering, software development, testing, maintenance, and developer collaboration. As we believe that deep learning may provide an opportunity to revolutionize the whole discipline of software engineering, providing one survey covering as many subareas as possible in software engineering can help future research push forward the frontier of deep learning-based software engineering more systematically. For each of the selected subareas, we highlight the major advances achieved by applying deep learning techniques with pointers to the available datasets in such a subarea. We also discuss the challenges and opportunities concerning each of the surveyed software engineering subareas.
The role of artificial intelligence in software engineering
Authors: Mark Harman
Published in:  (2012-01-01)

There has been a recent surge in interest in the application of Artificial Intelligence (AI) techniques to Software Engineering (SE) problems. The work is typified by recent advances in Search Based Software Engineering, but also by long established work in Probabilistic reasoning and machine learning for Software Engineering. This paper explores some of the relationships between these strands of closely related work, arguing that they have much in common and sets out some future challenges in the area of AI for SE. © 2012 IEEE.
Component-Based Software Engineering - New Challenges in Software Development
Authors: Ivica Crnković
Published in: Journal of Computing and Information Technology (2003-01-01)

The primary role of component-based software engineering is to address the development of systems as an assembly of parts (components), the development of parts as reusable entities, and the maintenance and upgrading of systems by customising and replacing such parts. This requires established methodologies and tool support covering the entire component and system lifecycle including technological, organisational, marketing, legal, and other aspects. The traditional disciplines from software engineering need new methodologies to support component-based development.
Software engineering challenges for machine learning applications: A literature review
Authors: Fumihiro Kumeno
Published in: Intelligent Decision Technologies (2020-02-10)

Machine learning techniques, especially deep learning, have achieved remarkable breakthroughs over the past decade. At present, machine learning applications are deployed in many fields. However, the outcomes of software engineering researches are not always easily utilized in the development and deployment of machine learning applications. The main reason for this difficulty is the many differences between machine learning applications and traditional information systems. Machine learning techniques are evolving rapidly, but face inherent technical and non-technical challenges that complicate their lifecycle activities. This review paper attempts to clarify the software engineering challenges for machine learning applications that either exist or potentially exist by conducting a systematic literature collection and by mapping the identified challenge topics to knowledge areas defined by the Software Engineering Body of Knowledge (Swebok).
Exploring the software engineering component in MIS research
Authors: Joline Morrison, Joey F. George
Published in: Communications of the ACM (1995-07-01)

article Free Access Share on Exploring the software engineering component in MIS research Authors: Joline Morrison Dept. of Management science, College of Business Administration, University of Iowa, Iowa city, IA Dept. of Management science, College of Business Administration, University of Iowa, Iowa city, IAView Profile , Joey F. George IMS Department, College of Business, Florida State University, Tallahassee, FL IMS Department, College of Business, Florida State University, Tallahassee, FLView Profile Authors Info & Claims Communications of the ACMVolume 38Issue 7July 1995pp 80–91https://doi.org/10.1145/213859.214802Published:01 July 1995Publication History 35citation1,090DownloadsMetricsTotal Citations35Total Downloads1,090Last 12 Months62Last 6 weeks7 Get Citation AlertsNew Citation Alert added!This alert has been successfully added and will be sent to:You will be notified whenever a record that you have chosen has been cited.To manage your alert preferences, click on the button below.Manage my AlertsNew Citation Alert!Please log in to your account Save to BinderSave to BinderCreate a New BinderNameCancelCreateExport CitationPublisher SiteeReaderPDF
Teaching and learning programming and software engineering via interactive gaming
Authors: Nikolai Tillmann, Jonathan de Halleux, Tao Xie, Sumit Gulwani, Judith Bishop
Published in:  (2013-05-18)

Abstract—Massive Open Online Courses (MOOCs) have recently gained high popularity among various universities and even in global societies. A critical factor for their success in teaching and learning effectiveness is assignment grading. Traditional ways of assignment grading are not scalable and do not give timely or interactive feedback to students. To address these issues, we present an interactive-gaming-based teaching and learning platform called Pex4Fun. Pex4Fun is a browser-based teaching and learning environment targeting teachers and students for introductory to advanced programming or software engineering courses. At the core of the platform is an automated grading engine based on symbolic execution. In Pex4Fun, teachers can create virtual classrooms, customize existing courses, and publish new learning material including learning games. Pex4Fun was released to the public in June 2010 and since then the number of attempts made by users to solve games has reached over one million. Our work on Pex4Fun illustrates that a sophisticated software engineering technique – automated test generation – can be successfully used to underpin automatic grading in an online programming system that can scale to hundreds of thousands of users. I.
Cloud engineering is Search Based Software Engineering too
Authors: Mark Harman, Kiran Lakhotia, Jeremy Singer, David R. White, Shin Yoo
Published in: Journal of Systems and Software (2012-11-23)

Many of the problems posed by the migration of computation to cloud platforms can be formulated and solved using techniques associated with Search Based Software Engineering (SBSE). Much of cloud software engineering involves problems of optimisation: performance, allocation, assignment and the dynamic balancing of resources to achieve pragmatic trade-offs between many competing technical and business objectives. SBSE is concerned with the application of computational search and optimisation to solve precisely these kinds of software engineering challenges. Interest in both cloud computing and SBSE has grown rapidly in the past five years, yet there has been little work on SBSE as a means of addressing cloud computing challenges. Like many computationally demanding activities, SBSE has the potential to benefit from the cloud; ‘SBSE in the cloud’. However, this paper focuses, instead, of the ways in which SBSE can benefit cloud computing. It thus develops the theme of ‘SBSE for the cloud’, formulating cloud computing challenges in ways that can be addressed using SBSE.
Ontologies in the Software Engineering Process.
Authors: Wolfgang Hesse
Published in:  (2005-01-01)

The term ontology has become popular in several fields of Informatics like Artificial Intelligence, Agent systems, Database or Web Technology. Deviating from its original philosophical meaning, in the context of Computer Sciences the term ontology stands for a formal explicit specification of a shared conceptualization. Software Engineering (SE) is a field where conceptualisation plays a major role, e.g. in the early phases of software development, in the definition, use and re-use of software components and as a basis for their integration. Thus, ontologies are likely to invade the SE field as well soon. In this contribution, conceptual modeling as practiced in SE and Information Systems projects is contrasted with the ontology approach. The corresponding life cycle models for their development are compared. Finally, some perspectives of an Ontology-based Software Engineering (OBSE) approach are outlined.
Understanding coordination in global software engineering: A mixed-methods study on the use of meetings and Slack
Authors: Viktoria Stray, Nils Brede Moe
Published in: Journal of Systems and Software (2020-07-04)

Given the relevance of coordination in the field of global software engineering, this work was carried out to further understand coordination mechanisms. Specifically, we investigated meetings and the collaboration tool Slack. We conducted a longitudinal case study using a mixed-methods approach with surveys, observations, interviews, and chat logs. Our quantitative results show that employees in global projects spend 7 h 45 min per week on average in scheduled meetings and 8 h 54 min in unscheduled meetings. Furthermore, distributed teams were significantly larger than co-located teams, and people working in distributed teams spent somewhat more time in meetings per day. We found that low availability of key people, absence of organizational support for unscheduled meetings and unbalanced activity from team members in meetings and on Slack were barriers for effective coordination across sites. The positive aspects of using collaboration tools in distributed teams were increased team awareness and informal communication and reduced the need for e-mail. Our study emphasizes the importance of reflecting on how global software engineering teams use meetings and collaboration tools to coordinate. We provide practical advice for conducting better meetings and give suggestions for more efficient use of collaboration tools in global projects.
Intelligent agents: theory and practice
Authors: Michael Wooldridge, Nicholas R. Jennings
Published in: The Knowledge Engineering Review (1995-06-01)

Abstract The concept of an agent has become important in both artificial intelligence (AT) and mainstream computer science. Our aim in this paper is to point the reader at what we perceive to be the most important theoretical and practical issues associated with the design and construction of intelligent agents. For convenience, we divide these issues into three areas (though as the reader will see, the divisions are at times somewhat arbitrary). Agent theory is concerned with the question of what an agent is, and the use of mathematical formalisms for representing and reasoning about the properties of agents. Agent architectures can be thought of as software engineering models of agents; researchers in this area are primarily concerned with the problem of designing software or hardware systems that will satisfy the properties specified by agent theorists. Finally, agent languages are software systems for programming and experimenting with agents; these languages may embody principles proposed by theorists. The paper is not intended to serve as a tutorial introduction to all the issues mentioned; we hope instead simply to identify the most important issues, and point to work that elaborates on them. The article includes a short review of current and potential applications of agent technology.
Introduction to Distributed-Software Engineering
Authors: Shatz, Jia-Ping Wang
Published in: Computer (1987-10-01)

Distributed-software is made up of a fixed set of software processes that are allocated to various interconnected computers but that closely cooperate to achieve a common goal. Interconnected computers are loosely coupled in the sense that interprocessor communication is done by message passing, not by sharing memory. Distributed-software engineering poses a host of new and challenging problems for software developers. This article addresses several of these problems, using the software life cycle as a guide.
On the Validity of Pre-Trained Transformers for Natural Language Processing in the Software Engineering Domain
Authors: Julian von der Mosel, Alexander Trautsch, Steffen Herbold
Published in: IEEE Transactions on Software Engineering (2022-05-30)

Transformers are the current state-of-the-art of natural language processing in many domains and are using traction within software engineering research as well. Such models are pre-trained on large amounts of data, usually from the general domain. However, we only have a limited understanding regarding the validity of transformers within the software engineering domain, i.e., how good such models are at understanding words and sentences within a software engineering context and how this improves the state-of-the-art. Within this article, we shed light on this complex, but crucial issue. We compare BERT transformer models trained with software engineering data with transformers based on general domain data in multiple dimensions: their vocabulary, their ability to understand which words are missing, and their performance in classification tasks. Our results show that for tasks that require understanding of the software engineering context, pre-training with software engineering data is valuable, while general domain models are sufficient for general language understanding, also within the software engineering domain.
A software engineering methodology for rule-based systems
Authors: Robert J.K Jacob, Judith N. Froscher
Published in: IEEE Transactions on Knowledge and Data Engineering (1990-06-01)

Current expert systems are typically difficult to change once they are built. The authors introduce a method for developing more easily maintainable rule-based expert systems, which is based on dividing the rules into groups and focusing attention on those facts that carry information between rules in different groups. They describe a new algorithm for grouping the rules of a knowledge base automatically and a notation set of software tools for the proposed method. The approach is supported by a study of the connectivity of rules and facts in rule-based systems; it is found that they indeed have the latent structure necessary for the programming methodology. Recent experimental results also support the approach. In contrast to the homogeneous way in which the facts of a rule-based system are usually viewed, this approach shows that certain facts are more important than others with regard to future modifications of the rules.&gt;
The Essence of Software Engineering: The SEMAT Kernel
Authors: Ivar Jacobson, Pan-Wei Ng, Paul E. McMahon, Ian Spence, Svante Lidman
Published in: Queue (2012-10-01)

Everyone who develops software knows that it is a complex and risky business, and its participants are always on the lookout for new ideas that will lead to better software. Fortunately, software engineering is still a young and growing profession that sees innovations and improvements in best practices every year. Just look, for example, at the improvements and benefits that lean and agile thinking have brought to software-development teams.
A Cooperative Parallel Search-Based Software Engineering Approach for Code-Smells Detection
Authors: Wael Kessentini, Marouane Kessentini, Houari Sahraoui, Slim Bechikh, Ali Ouni
Published in: IEEE Transactions on Software Engineering (2014-06-19)

We propose in this paper to consider code-smells detection as a distributed optimization problem. The idea is that different methods are combined in parallel during the optimization process to find a consensus regarding the detection of code-smells. To this end, we used Parallel Evolutionary algorithms (P-EA) where many evolutionary algorithms with different adaptations (fitness functions, solution representations, and change operators) are executed, in a parallel cooperative manner, to solve a common goal which is the detection of code-smells. An empirical evaluation to compare the implementation of our cooperative P-EA approach with random search, two single population-based approaches and two code-smells detection techniques that are not based on meta-heuristics search. The statistical analysis of the obtained results provides evidence to support the claim that cooperative P-EA is more efficient and effective than state of the art detection approaches based on a benchmark of nine large open source systems where more than 85 percent of precision and recall scores are obtained on a variety of eight different types of code-smells.
Requirements engineering as a success factor in software projects
Authors: Hubert F. Hofmann, Franz Lehner
Published in: IEEE Software (2001-07-01)

Defficient requirements are the single biggest cause of software project failure. From studying several hundred organizations, Gapers Jones discovered that RE is deficient in more than 75 percent of all enterprises,(1) In other words, getting requirements right might be the single most important and difficult part of a software project. Despite its importance, we know surprisingly little about the actual process of specifying software. "The RE Process" sidebar provides a basic description.
<b>Collaborative Learning in a Wiki Environment: Experiences from a software engineering course</b>
Authors: Shaíley Minocha, Peter Thomas
Published in: New Review of Hypermedia and Multimedia (2007-12-01)

The post-graduate course, Software Requirements for Business Systems, in the Department of Computing of the Open University involves teaching systematic elicitation and documentation of requirements for software systems. On a software development project, team members often work remotely from one another and increasingly use wikis to collaboratively develop the requirements specification. In order to emulate requirements engineering practice, the course has been enhanced to include group collaboration using a wiki. In this paper, we describe the wiki-based collaborative activities and the evaluation of the pedagogical effectiveness of a wiki for collaborative learning. Our evaluations have confirmed that the strength of a wiki, as a collaborative authoring tool, can facilitate the learning of course concepts and students’ appreciation of the distributed nature of the RE process context. However, there is a need to support the discussion aspects of collaborative activities with more appropriate tools. We have also found that there are certain usability aspects of wikis that can mar a positive student experience. This paper will be of interest to academics aspiring to employ wikis on their courses and to practitioners who wish to realize the potential of wikis in facilitating information sharing, knowledge management, and in fostering collaboration within and between organizations.
AI-Driven Innovations in Software Engineering: A Review of Current Practices and Future Directions
Authors: Mamdouh Alenezi, Mohammed Akour
Published in: Applied Sciences (2025-01-28)

The software engineering landscape is undergoing a significant transformation with the advent of artificial intelligence (AI). AI technologies are poised to redefine traditional software development practices, offering innovative solutions to long-standing challenges. This paper explores the integration of AI into software engineering processes, aiming to identify its impacts, benefits, and the challenges that accompany this paradigm shift. A comprehensive analysis of current AI applications in software engineering is conducted, supported by case studies and theoretical models. The study examines various phases of software development to assess where AI contributes most effectively. The integration of AI enhances productivity, improves code quality, and accelerates development cycles. Key areas of impact include automated code generation, intelligent debugging, predictive maintenance, and enhanced decision-making processes. AI is revolutionizing software engineering by introducing automation and intelligence into the development lifecycle. Embracing AI-driven tools and methodologies is essential for staying competitive in the evolving technological landscape.
Requirements Engineering: Processes and Techniques
Authors: Gerald Kotonya, Ian Sommerville
Published in:  (1998-09-16)

Requirements Engineering Processes and Techniques Why this book was written The value of introducing requirements engineering to trainee software engineers is to equip them for the real world of software and systems development. What is involved in Requirements Engineering? As a discipline, newly emerging from software engineering, there are a range of views on where requirements engineering starts and finishes and what it should encompass. This book offers the most comprehensive coverage of the requirements engineering process to date - from initial requirements elicitation through to requirements validation. How and Which methods and techniques should you use? As there is no one catch-all technique applicable to all types of system, requirements engineers need to know about a range of different techniques. Tried and tested techniques such as data-flow and object-oriented models are covered as well as some promising new ones. They are all based on real systems descriptions to demonstrate the applicability of the approach. Who should read it? Principally written for senior undergraduate and graduate students studying computer science, software engineering or systems engineering, this text will also be helpful for those in industry new to requirements engineering. Accompanying Website: http: //www.comp.lancs.ac.uk/computing/resources/re Visit our Website: http://www.wiley.com/college/wws