jehanweerasuriya/uni-ai-dataset huggingface dataset:
Supporting Reflective Practice in Software Engineering Education through a Studio-Based Approach
Authors: Christopher Bull, Jon Whittle
Published in: IEEE Software (2014-03-18)

Learning is a lifelong process, especially in the fast-paced software industry. In addition to formal training courses, good software developers continually learn by reflecting on what they've done in the past. However, reflective practice is rarely taught explicitly in university software engineering education. One way to teach reflective techniques from the start is through studio-based learning.
A student-enacted simulation approach to software engineering education
Authors: M. Brian Blake
Published in: IEEE Transactions on Education (2003-02-01)

In some cases, real-world application of software engineering concepts does not effectively map with current undergraduate curriculums. Typically, a student's first "hands-on" experience working on large-scale software development projects is via an intern position or his/her first full-time position. However, prior exposure to the corporate project environment would greatly improve a student's performance in industry. In order to develop students for successful careers in software engineering, specifically for software development, they must be immersed not only in the software development lifecycle and paradigms, but also in the workings of large project teams. Currently, most undergraduate software engineering courses are taught by presenting the concepts and methodologies and assigning fragmented three-to-four person group projects. In the Department of Computer Science, Georgetown University, Washington, DC, a two-course approach to undergraduate software engineering education has been developed that incorporates the practical application of coursework in a large team setting. The first course presents a firm software design basis, while the second course demonstrates corporate-level software engineering concepts with a semester-long software development simulation where the entire class is the development team. This paper presents the experiences from offering this software engineering simulation approach.
An agent-based approach for building complex software systems
Authors: Nicholas R. Jennings
Published in: Communications of the ACM (2001-04-01)

This article explores why agent oriented approaches are well suited for developing complex distributed systems, like in a range of telecommunication, commercial, and industrial applications. If agents have to enter the mainstream of software engineering it is vital that clear arguments are advanced as to their suitability for solving large classes of problems. It is shown how agent oriented approaches apply in a specific telecommunication application. In making these arguments, it is possible for proponents of other software engineering paradigms to claim that the key concepts of agent-oriented computing can be reproduced using their technique. Agent-oriented systems are, after all, computer programs and all programs have the same set of computable functions. However, this misses the point. The value of a paradigm is the mindset and techniques it provides to software engineers. In this respect, agent-oriented concepts and techniques are both well suited to developing complex, distributed systems and an extension of those currently available in other paradigms. INSET: Comparing Object- and Agent-based Approaches.
Development of recommendation systems for software engineering: the CROSSMINER experience
Authors: Juri Di Rocco, Davide Di Ruscio, Claudio Di Sipio, Phuong T. Nguyen, Riccardo Rubei
Published in: Empirical Software Engineering (2021-05-14)

Abstract To perform their daily tasks, developers intensively make use of existing resources by consulting open source software (OSS) repositories. Such platforms contain rich data sources, e.g., code snippets, documentations, and user discussions, that can be useful for supporting development activities. Over the last decades, several techniques and tools have been promoted to provide developers with innovative features, aiming to bring in improvements in terms of development effort, cost savings, and productivity. In the context of the EU H2020 CROSSMINER project, a set of recommendation systems has been conceived to assist software programmers in different phases of the development process. The systems provide developers with various artifacts, such as third-party libraries, documentation about how to use the APIs being adopted, or relevant API function calls. To develop such recommendations, various technical choices have been made to overcome issues related to several aspects including the lack of baselines, limited data availability, decisions about the performance measures, and evaluation approaches. This paper is an experience report to present the knowledge pertinent to the set of recommendation systems developed through the CROSSMINER project. We explain in detail the challenges we had to deal with, together with the related lessons learned when developing and evaluating these systems. Our aim is to provide the research community with concrete takeaway messages that are expected to be useful for those who want to develop or customize their own recommendation systems. The reported experiences can facilitate interesting discussions and research work, which in the end contribute to the advancement of recommendation systems applied to solve different issues in Software Engineering.
Software process modeling for an educational software engineering simulation game
Authors: Emily Oh Navarro, André van der Hoek
Published in: Software Process Improvement and Practice (2005-07-01)

Abstract SimSE is an educational software engineering simulation game that uses a unique software process modeling approach. This approach combines both predictive and prescriptive aspects to support the creation of dynamic, interactive, graphical models for software engineering process education. This article describes the different constructs in a SimSE process model, introduces the associated model‐builder tool, describes how we built an initial model of a waterfall process, and discusses the underlying trade‐offs and issues involved in our approach. Copyright © 2005 John Wiley &amp; Sons, Ltd.
Formal specification languages in knowledge and software engineering
Authors: Dieter Fensel
Published in: The Knowledge Engineering Review (1995-12-01)

Abstract During the last few years, a number of formal specification languages for knowledge-based systems (KBS) have been developed. Characteristics of such systems are a complex knowledge base and an inference engine which uses this knowledge to solve a given problem. Languages for KBS have to cover both these aspects. They have to provide a means to specify a complex and large amount of knowledge and they have to provide a means to specify the dynamic reasoning behaviour of a KBS. Nevertheless, KBS are just a specific type of software system. Therefore, it seems quite natural to compare formal languages for specifying KBS with formal languages which were developed by the software community for specifying software systems. That is the subject of this paper.
Intelligent Systems and Formal Methods in Software Engineering
Authors: Bernhard Beckert, Tony Hoare, Reiner Hähnle, Douglas R. Smith, Cordell Green, Silvio Ranise, Cesare Tinelli, Thomas Ball, Sriram K. Rajamani
Published in: IEEE Intelligent Systems (2006-11-01)

Over the last few years, technologies for the formal description, construction, analysis, and validation of software - based mostly on logics and formal reasoning - have matured. We can expect them to complement and partly replace traditional software engineering methods in the future. Formal methods in software engineering are an increasingly important application area for intelligent systems. The field has outgrown the area of academic case studies, and industry is showing serious interest. We convincingly argue that we've reached the point where we can solve the problem of how to formally verify industrial-scale software. We propose program verification as a computer science Grand Challenge. Deductive software verification is a core technology of formal methods. We describe recent dramatic changes in the way it's perceived and used. Another important base technique of formal methods, besides software verification, is synthesizing software that's correct by construction because it's formally derived from its specification. We discuss recent developments and trends in this area. Surprisingly efficient decision procedures for the satisfiability modulo theories problem have recently emerged. We explain these techniques and why they're important for all formal-methods tools. We look at formal methods from an industry perspective. We explain the success of Microsoft Research's SLAM project, which has developed a verification tool for device drivers
Functional group roles in software engineering teams
Authors: Georgine Beranek, Wolfgang Zuser, Thomas Grechenig
Published in: ACM SIGSOFT Software Engineering Notes (2005-05-16)

For building and leading successful software engineering teams it is vital to understand their team structure as well as many other "soft" factors, e.g. the personality and skills of individual team members. A key element of the team structure, besides power distribution, knowledge distribution etc., is the role distribution within the team. The role distribution has a twofold aspect: first, the formal role distribution, which is defined by the standard process and role model or the project management, and second, the informal role distribution which grows within a team by the natural interactions between the team members and is based to some extent upon their individual characteristics.This paper presents an empirical examination of the informal role distribution in student software engineering teams and compares the results to the concept of functional group roles.
Software Engineering for Big Data Systems
Authors: Ian Gorton, Ayşe Bener, Audris Mockus
Published in: IEEE Software (2016-02-26)

Software engineering for big data systems is complex and faces challenges including pervasive distribution, write-heavy workloads, variable request loads, computation-intensive analytics, and high availability. The articles in this theme issue examine several facets of this complicated puzzle. The Web extra at https://youtu.be/YKBGf9EOBUo is an audio recording of Davide Falessi speaking with Ayse Basar Bener and Audris Mockus about the authors, articles, and discussions that went into the IEEE Software March/April 2016 theme issue on software engineering for big data systems.
Parallelizing Bzip2: A Case Study in Multicore Software Engineering
Authors: Victor Pankratius, Ali Jannesari, Walter F. Tichy
Published in: IEEE Software (2009-10-19)

We conducted a case study of parallelizing a real program for multicore computers using currently available libraries and tools. We selected the sequential Bzip2 compression program for the study because it's a computing-intensive, widely used, and relevant application in everyday life. Its source code is available, and its algorithm is well documented. In addition, the algorithm is non-trivial, but, with 8,000 LOC, the application is small enough to manage in a course.
A review of awareness in distributed collaborative software engineering
Authors: Inah Omoronyia, John Ferguson, Marc Roper, Murray Wood
Published in: Software Practice and Experience (2010-11-01)

Abstract Software development projects are inherently cooperative, requiring many developers to coordinate their efforts to produce complex systems. An integral part of this process is the development and maintenance of a shared understanding concerning the state of software project tasks, artefacts, and the activities and expertise of developers working on the project. In co‐located settings, this vital awareness information that concerns developers, either directly or tangentially, is typically acquired using formal, regular meetings, informal personal interruptions and electronic communication. Developing and maintaining such an awareness are far more difficult in distributed teams where developers are separated by time and space. The goal of this review is to help bridge the gap between the theoretical benefits of distributed collaborative software development and the practical impediments to successful implementation, and more specifically, achieving similar levels of awareness in distributed settings to those available in co‐located settings. The review starts with a detailed discussion of awareness and awareness types with particular relevance to collaboration. This is followed by a discussion of how awareness information is disseminated during collaborative processes. Awareness information needs and dissemination mechanisms in software development teams are then presented. The main contribution of the review, derived from a comparison of awareness needs in distributed collaborative software engineering and current support from tools and techniques, is that more support is required for the type of awareness known as context awareness . Context awareness crosscuts other (more basic) forms of awareness and arises because, over time, individual collaborators work on different sets of tasks and artefacts and form different perceptions of their colleagues; their colleagues' work, roles, and relationships; and, the workspace. This awareness is highly contextual and therefore cannot be generalized across individuals, entities or activities that are found in a collaboration space. Copyright © 2010 John Wiley &amp; Sons, Ltd.
Patterns as a Means for Intelligent Software Engineering.
Authors: Dwight Deugo, Franz Oppacher, J. Kuester, Ingo von Otte
Published in:  (1999-01-01)

Abstract- In this paper, we make a case for the development of intelligent software engineering patterns. Patterns have proven extremely useful to the object-oriented programming community. However, of the large amount of pattern research, little effort has been devoted to developing intelligent software engineering patterns. We wish to correct this situation. We believe, for example, that the ongoing success of agent systems depends on the development of sound software engineering principles for them. Patterns are a recognized means to this end, and one that we wish to promote.
An Improved Assessment of Personality Traits in Software Engineering
Authors: Adesina S. Sodiya, Olumide Babatope Longe, Adebukola Onashoga, Oludele Awodele, L. O. Omotosho
Published in: Interdisciplinary Journal of Information Knowledge and Management (2007-01-01)

An international association advancing the multidisciplinary study of informing systems. Founded in 1998, the Informing Science Institute (ISI) is a global community of academics shaping the future of informing science.
Software Engineering for Embedded Systems: Methods, Practical Techniques, and Applications
Authors: Robert Oshana, Mark Kraeling
Published in:  (2013-05-06)

Software Engineering for Embedded Systemsclearly explains the software engineering tools and techniques needed to optimally design and implement embedded systems in contexts sure as networking, storage, and automotive applications. Written by experts with a solutions focus, this encyclopedic reference is a useful aid to tackling typical problems and issues, including: Architecture and design patternsHardware interfacesEmbedded operating systems, including Linux and AndroidMemory, performance, and power optimizationUser interface considerationsSoftware development toolsTesting and quality controlAdvanced guidelines for multicore software development Includes contributions from: Frank Schirrmeister, Shelly Gretlein, Bruce Douglass, Erich Styger, Gary Stringham, Jean Labrosse, Jim Trudeau, Mike Brogioli, Mark Pitchford, Catalin Dan Udma, Markus Levy, Pete Wilson, Whit Waldo, Inga Harris, Xinxin Yang, Srinivasa Addepalli, Andrew McKay, Mark Kraeling and Robert Oshana. Clearly lays out key problems and issues, and how to solve themExamples demonstrate proven implementation detailsPractical case studies cover examples of multicore programming, sensor programming, user interface design, and performance engineering
An architecture for software engineering gamification
Authors: Óscar Pedreira, Félix García, Mario Piattini, Alejandro Cortiñas, Ana Cerdeira-Pena
Published in: Tsinghua Science & Technology (2020-06-12)

Gamification has been applied in software engineering to improve quality and results by increasing people's motivation and engagement. A systematic mapping has identified research gaps in the field, one of them being the difficulty of creating an integrated gamified environment comprising all the tools of an organization, since most existing gamified tools are custom developments or prototypes. In this paper, we propose a gamification software architecture that allows us to transform the work environment of a software organization into an integrated gamified environment, i.e., the organization can maintain its tools, and the rewards obtained by the users for their actions in different tools will mount up. We developed a gamification engine based on our proposal, and we carried out a case study in which we applied it in a real software development company. The case study shows that the gamification engine has allowed the company to create a gamified workplace by integrating custom-developed tools and off-the-shelf tools such as Redmine, TestLink, or JUnit, with the gamification engine. Two main advantages can be highlighted: (i) our solution allows the organization to maintain its current tools, and (ii) the rewards for actions in any tool accumulate in a centralized gamified environment.
<i>Virtual Scrum</i>: A teaching aid to introduce undergraduate software engineering students to scrum
Authors: Guillermo Rodríguez, Álvaro Soria, Marcelo Campo
Published in: Computer Applications in Engineering Education (2013-11-18)

ABSTRACT Teaching agile practices is becoming a priority in Software engineering curricula as a result of the increasing use of agile methods (AMs) such as Scrum in the software industry. Limitations in time, scope, and facilities within academic contexts hinder students' hands‐on experience in the use of professional AMs. To enhance students' exposure to Scrum, we have developed Virtual Scrum , an educational virtual world that simulates a Scrum‐based team room through virtual elements such as blackboards, a Web browser, document viewers, charts, and a calendar. A preliminary version of Virtual Scrum was tested with a group of 45 students running a capstone project with and without Virtual Scrum support. Students' feedback showed that Virtual Scrum is a viable and effective tool to implement the different elements in a Scrum team room and to perform activities throughout the Scrum process. © 2013 Wiley Periodicals, Inc. Comput Appl Eng Educ 999: XX–XX, 2013; View this article online at wileyonlinelibrary.com/journal/cae ; DOI 10.1002/cae.21588 © 2013 Wiley Periodicals, Inc. Comput Appl Eng Educ 23:147–156, 2015; View this article online at wileyonlinelibrary.com/journal/cae ; DOI 10.1002/cae.21588
Self-Perceptions about Software Engineering: A Survey of Scientists and Engineers
Authors: Jeffrey C. Carver, Dustin Heaton, Lorin Hochstein, Roscoe Bartlett
Published in: Computing in Science & Engineering (2013-01-01)

Scientists and engineers devote considerable effort to developing large, complex codes to solve important problems. However, while they often develop useful code, many scientists and engineers are frequently unaware of how various software engineering practices can help them write better code. This article presents the results of a survey on this topic.
Software security
Authors: Gary McGraw
Published in: IEEE Security & Privacy (2004-03-01)

Software security is the idea of engineering software so that it continues to function correctly under malicious attack. Most technologists acknowledge this undertaking's importance, but they need some help in understanding how to tackle it. The article aims to provide that help by exploring software security best practices. A central and critical aspect of the computer security problem is a software problem. Software defects with security ramifications, including implementation bugs such as buffer overflows and design flaws such as inconsistent error handling, promise to be with us for years. All too often, malicious intruders can hack into systems by exploiting software defects. Internet-enabled software applications present the most common security risk encountered today, with software's ever-expanding complexity and extensibility adding further fuel to the fire. By any measure, security holes in software are common, and the problem is growing.
Software security testing
Authors: B.J. Potter, Gary McGraw
Published in: IEEE Security & Privacy (2004-09-01)

Testing software security is a commonly misunderstood task. Done properly, it goes deeper than simple black-box probing on the presentation layer (the sort performed by so-called application security tools) - and even beyond the functional testing of security apparatus. Testers must use risk-based approaches, grounded in both the system's architectural reality and the attacker's mindset, to gauge software security adequately. By identifying risks in the system and creating tests driven by those risks, a software security tester can properly focus on areas of code in which an attack is likely to succeed. This approach provides a higher level of software security assurance than is possible with classical black-box testing.
Software security and privacy risks in mobile e-commerce
Authors: A. K. Ghosh, Tara M. Swaminatha
Published in: Communications of the ACM (2001-02-01)

Most current e-commerce transactions are conducted by users in fixed locations using workstations and personal computers. Soon, one expect a significant portion of e-commerce will take place via wireless, Internet-enabled devices such as cellular phones and personal digital assistants. Wireless devices provide users mobility to research, communicate and purchase goods and services from anywhere at any time without being tethered to the desktop. Using the Internet from wireless devices has come to be known as mobile e-commerce, or simply "m-commerce and encompasses many more activities than merely online purchasing. One of the major wireless applications is Web access for retrieval of real-time information such as weather reports, sport scores, flight and reservation information, navigational maps and stock quotes. While email will continue to dominate wireless applications, innovative online applications that, for instance, use location reference information of end users will drive new areas of mobile e-business growth.