jehanweerasuriya/uni-ai-dataset huggingface dataset:
Maturing Software Engineering Knowledge through Classifications: A Case Study on Unit Testing Techniques
Authors: Sira Vegas, Natália Juristo, Victor R. Basili
Published in: IEEE Transactions on Software Engineering (2009-02-13)

Classification makes a significant contribution to advancing knowledge in both science and engineering. It is a way of investigating the relationships between the objects to be classified and identifies gaps in knowledge. Classification in engineering also has a practical application; it supports object selection. They can help mature software engineering knowledge, as classifications constitute an organized structure of knowledge items. Till date, there have been few attempts at classifying in software engineering. In this research, we examine how useful classifications in software engineering are for advancing knowledge by trying to classify testing techniques. The paper presents a preliminary classification of a set of unit testing techniques. To obtain this classification, we enacted a generic process for developing useful software engineering classifications. The proposed classification has been proven useful for maturing knowledge about testing techniques, and therefore, SE, as it helps to: 1) provide a systematic description of the techniques, 2) understand testing techniques by studying the relationships among techniques (measured in terms of differences and similarities), 3) identify potentially useful techniques that do not yet exist by analyzing gaps in the classification, and 4) support practitioners in testing technique selection by matching technique characteristics to project characteristics.
Techniques for trusted software engineering
Authors: Prémkumar Dévanbu, Philip Fong, Stuart G. Stubblebine
Published in:  (1998-04-01)

How do we decide if it is safe to run a given piece of software on our machine? Software used to arrive in shrink-wrapped packages from known vendors. But increasingly, software of unknown provenance arrives over the internet as applets or agents. Running such software risks serious harm to the hosting machine. Risks include serious damage to the system and loss of private information. Decisions about hosting such software are preferably made with good knowledge of the software product itself, and of the software process used to build it. We use the term Trusted Software Engineering to describe tools and techniques for constructing safe software artifacts in a manner designed to inspire trust in potential hosts. Existing approaches have considered issues such as schedule, cost and e#ciency; we argue that the traditionally software engineering issues of con#guration management and intellectual property protection are also of vital concern. Existing approaches #e.g., Java# to this proble...
50 Years of Software Engineering: Progress and Perils
Authors: Christof Ebert
Published in: IEEE Software (2018-09-01)

A survey of software professionals worldwide suggests the past, present, and future challenges of software engineering. This article is part of a theme issue on software engineering’s 50th anniversary.
A Call to Promote Soft Skills in Software Engineering
Authors: Luiz Fernando Capretz, Faheem Ahmed
Published in: Psychology and Cognitive Sciences - Open Journal (2018-08-02)

We have been thinking about other aspects of software engineering for many years; the missing link in engineering software is the soft skills set, essential in the software development process. Although soft skills are among the most important aspects in the creation of software, they are often overlooked by educators and practitioners. One of the main reasons for the oversight is that soft skills are usually related to social and personality factors, i.e., teamwork, motivation, commitment, leadership, multi-culturalism, emotions, interpersonal skills, etc. This editorial is a manifesto declaring the importance of soft skills in software engineering with the intention to draw professionals’ attention to these topics. We have approached this issue by mentioning what we know about the field, what we believe to be evident, and which topics need further investigation. Important references to back up our claims are also included.\nIn summary, technical people tend to overlook the importance of soft skills as it is unrelated to their technical area and because their training is in dealing with technical issue; thus considering the soft skills in the software development process to be foreign to them, since the field deals with human factors and touches social sciences. These are topics that software professionals do not have expertise in. We believe that it is high time for the software development community to realize that the human element is pivotal to success in the engineering of software. We have to recognize that software engineering is a people-intensive discipline, hence requires appropriate treatment. Therefore, human aspects of software engineering are important subjects to teach, study and research. We urge software engineers to take on this challenge.
Design science research for learning software engineering and computational thinking: Four cases
Authors: Mikko Apiola, Erkki Sutinen
Published in: Computer Applications in Engineering Education (2020-06-19)

Abstract This study proposes design science research (DSR) as a relevant framework for computational thinking, software engineering, and science, technology, engineering, arts and mathematics integration in higher education. We present four concrete case examples, where DSR has been applied in projects that consist of interdisciplinary teams, which learn by designing solutions for pressing real‐world problems. Our results show that DSR is a potent framework for learning to tackle pressing and wicked problems, and connecting technology projects with research methodology and knowledge from other fields. Our results also show multiple learning gains, including creativity, communication, critical thinking and collaboration. Based on our case analysis, we recommend more extensive use of DSR in future technology curricula.
Assessing Problem-Based Learning in a Software Engineering Curriculum Using Bloom’s Taxonomy and the IEEE Software Engineering Body of Knowledge
Authors: Peter Dolog, Lone Leth Thomsen, Bent Thomsen
Published in: ACM Transactions on Computing Education (2016-05-20)

Problem-Based Learning (PBL) has often been seen as an all-or-nothing approach, difficult to apply in traditional curricula based on traditional lectured courses with exercise and lab sessions. Aalborg University has since its creation in 1974 practiced PBL in all subjects, including computer science and software engineering, following a model that has become known as the Aalborg Model. Following a strategic decision in 2009, the Aalborg Model has been reshaped. We first report on the software engineering program as it was in the old Aalborg Model. We analyze the programme wrt competence levels according to Bloom’s taxonomy and compare it with the expected skills and competencies for an engineer passing a general software engineering 4-year program with an additional 4 years of experience as defined in the IEEE Software Engineering Body of Knowledge (SWEBOK) [Abran et al. 2004]. We also compare with the Graduate Software Engineering 2009 Curriculum Guidelines for Graduate Degree Programmes in Software Engineering (GSwE2009) [Pyster 2009]. We then describe the new curriculum and draw some preliminary conclusions based on analyzing the curriculum according to Bloom’s taxonomy and the results of running the program for 2 years. As the new program is structured to be compliant with the Bologna Process and thus presents all activities in multipla of 5 European Credit Transfer System points, we envision that elements of the program could be used in more traditional curricula. This should be especially easy for programs also complying with the Bologna Process.
Software engineering in Europe: a study of best practices
Authors: S. Dutta, M. Lee, Luk N. Van Wassenhove
Published in: IEEE Software (1999-01-01)

Software development organizations are increasingly aware of the importance of using best practices to improve their development processes, but how many are actually adopting them? The authors analyzed data on almost 400 companies in 20 European countries to find out.
Enhancing Software Engineering Processes towards Sustainable Software Product Design.
Authors: Markus Dick, Stefan Naumann
Published in: EnviroInfo (2010-01-01)

The power consumption of ICT is still increasing. T o date, it is not clear if the energy savings throu gh ICT overbalance the energy consumption by ICT, or not. Where manifold efforts of Green IT address the environment al aspects of sustainability considering computer hardware, th ere is a lack of models, descriptions, or realizati ons in the area of computer software. In this paper, we propose a gene ric software development process enhancement that has the potential to integrate the consideration of sustainab ility aspects into arbitrary software development m ethodologies.
How the new Software Engineering Code of Ethics affects you
Authors: Don Gotterbarn
Published in: IEEE Software (1999-01-01)

The Software Engineering Code of Ethics and Professional Practice has recently been approved. This article looks at the immediate and long-term implications: Why does a profession need a code of ethics? How will this code function in an emerging profession like software engineering? What impact will it have on software practitioners?.
What Do We Know about Knowledge Management? Practical Implications for Software Engineering
Authors: Torgeir Dingsøyr, Finn Olav Bjørnson, Forrest Shull
Published in: IEEE Software (2009-04-18)

Knowledge management is an overarching idea with a large potential impact on knowledge-intensive work such as software engineering. What do we know about these approaches and how they work in practice? What are the main findings from research on knowledge management in software engineering, and what are these findings' practical implications? This article summarizes a systematic review of research on knowledge management in software engineering, characterizing the research findings and practical implications according to knowledge management school.
A Survey of Software Engineering Practice: Tools, Methods, and Results
Authors: Leland L. Beck, Thomas E. Perkins
Published in: IEEE Transactions on Software Engineering (1983-09-01)

The results of a survey of software development practice are reported and analyzed. The problems encountered in various phases of the software life cycle are measured and correlated with characteristics of the responding installations. The use and acceptance of the term "software engineer" is investigated, and the functions and background of persons identified as software engineers are reported. The usage of a wide variety of software engineerilng tools and methods is measured; conclusions are drawn concerning the usefulness of these techniques.
Collaboration In Software Engineering Projects: A Theory Of Coordination.
Authors: James D. Herbsleb, Jeffrey A. Roberts
Published in:  (2006-01-01)

Coordination of engineering decisions is a central concern of software engineering. We present a theory in which coordination of engineering decisions is modeled as a distributed constraint satisfaction problem (DCSP). We derive six hypotheses, predicting how the distribution of decisions over developers and the density of constraints among decisions will affect development time, probability that a file contains a field defect, and developer productivity. We test these hypotheses using data from a commercial project. We find support for all hypotheses predicting detrimental effects from poor distribution of decisions over developers. The effects of constraint density were mixed, showing that dense constraints slowed development but did not significantly affect productivity. Dense data dependencies increased the chances that a file contained a field defect, but, very surprisingly, dense call dependencies significantly lowered the chances that a file contained a field defect. We discuss the implications of these findings.
A study into the effects of personality type and methodology on cohesion in software engineering teams
Authors: John Karn, Sharifah Lailee Syed-Abdullah, A.J. Cowling, Mike Holcombe
Published in: Behaviour and Information Technology (2006-01-24)

The aim of the research described in this paper is to gain a qualitative understanding of how cohesiveness relates to personality type, performance and adherence to a particular software engineering methodology (XP). A variety of research methods were employed including ethnographic methods, questionnaires and interviews. An online personality test based on the Myers-Briggs Type Indicator (MBTI) was used to ascertain the personality types, and questionnaires were used throughout the project to measure levels of cohesiveness. Examples of how the teams worked together throughout the project are described, and whether and how this relates to the personality types of the individual members. The results indicate that certain teams were found to work consistently well over the project due to homogeneity in personality type and others were found to be very cohesive due to a mixture of types.
Teaching Software Engineering Project Management – A Novel Approach for Software Engineering Programs
Authors: Craig Caulfield, David Veal, Stanislaw Maj
Published in: Modern Applied Science (2011-09-29)

In response to real and perceived short-comings in the quality and productivity of software engineering practices and projects, professionally-endorsed graduate and post-graduate curriculum guides have been developed to meet technical developments and evolving industry demands. Each of these curriculum guidelines identify better software project management skills as critical for all graduating students, but they provide little guidance on how to achieve this. One possible way is to use a serious game — a game designed to teach and educate players about some of the dynamic complexities of the field in a safe and inexpensive environment. This paper presents the results of a qualitative research project that used a simple game of a software project to see if and how games could contribute to better software project management education. Initial results suggest that suitably-designed games are able to teach software engineering and project management concepts at higher-order Bloom taxonomy levels.
Teaching agile methodology in a software engineering capstone course
Authors: Baochuan Lu, Tim DeClue
Published in: Journal of computing sciences in colleges (2011-05-01)

Agile methodology as a relatively new approach to software engineering is becoming more popular in both industry and academia. Learning agile software development methodologies will unquestionably increase the marketability of our students as entry-level software engineers. But how agile methods should be taught at the undergraduate level in addition to traditional approaches is still being debated. The authors taught agile methods in their software engineering/senior project course for the first time in the fall of 2010. Students seemed stimulated by fresh perspectives and the lightweight processes offered by agile, but implementing agile methodology in an academic environment posed unique challenges. In this paper, the authors document their increased understanding of agile methodology through literature reviews, the challenges learned by teaching agile methods, and some potential areas for improvement.
SWEBOS – The Software Engineering Body of Skills
Authors: Yvonne Sedelmaier, Dieter Landes
Published in: International Journal of Engineering Pedagogy (iJEP) (2015-02-11)

The development of complex software systems requires a mixture of various technical and non-technical competencies. While some guidelines exist which technical knowledge is required to make a good software engineer, there is a lack of insight as to which non-technical or soft skills are necessary to master complex software projects. This paper proposes a body of skills (SWEBOS) for soft-ware engineering. The collection of necessary skills is developed on the basis of a clear, data-driven research design. The resulting required soft skills for software engineering are described precisely and semantically rich in a three-level structure. This approach guarantees that skills are not just characterized in a broad and general manner, but rather they are specifically adapted to the domain of software engineering.
Towards a paradigm change in computer science and software engineering: a synthesis
Authors: Franco Zambonelli, H. Van Dyke Parunak
Published in: The Knowledge Engineering Review (2003-12-01)

In this paper, we identify and analyse a set of characteristics that increasingly distinguish today's complex software systems from ‘‘traditional” ones. Several examples in different areas show that these characteristics are not limited to a few application domains but are widespread. Then, we discuss how these characteristics are likely to impact dramatically on the very way software systems are modelled and engineered. In particular, we appear to be on the edge of a radical shift of paradigm, which is about to change our very attitudes in software systems modelling and engineering.
A process model for component-oriented software engineering
Authors: Ali H. Doğru, Murat M. Tanik
Published in: IEEE Software (2003-03-01)

The investigation of reuse has a long history, eventually maturing into the "build by integration" paradigm. Meanwhile, component technologies also improved along with engineering practices. What is missing is a methodology that uses components within such a paradigm, thus bridging the gap. The authors propose a model devoted to complete component orientation, rather than modifying object-oriented approaches to accommodate components. They investigate component-based technologies to address new needs and, consequently, to integrate adequate practices toward a consistent process model.
The Need for Software Engineering
Authors: Ware Myers
Published in: Computer (1978-02-01)

Early in this decade a set of programming practices began to appear that seemed to offer a way out of the software difficulties accompanying the development of large systems. These practices, developed by Brooks,1 Baker,2 Dijkstra,3 Mills,4,5 and others, included structured programming, top-down development, chief programmer teams, HIPO (hierarchy/input-process-output) documentation, development support library, and structured walk-throughs. But despite the increasing amount of software development ment and its rising cost relative to the defense budget, corporation expenditures, and even the gross national product, the new programming techniques have not been adopted by acclamation. McClure,6 surveying the scene at COMPCON '76 Spring, saw "the great masses of programmers conducting their business exactly as they did five years ago." Nor was there the slightest sign in McClure's 5-year projection of "strong winds of change." His intuition was later supported by a survey of major Los Angeles area corporations,7 which concluded that, for all the fanfare, "the techniques are simply not widely used."
Software evolution in the age of component-based software engineering
Authors: M. M. Lehman, J.F. Ramil
Published in: IEE Proceedings - Software (2000-01-01)

The eight laws of software evolution provide phenomenological descriptors of the evolutionary behaviour observed over the years in a number of software systems. The laws relate to E-type software, that is, software used to solve a problem or address an application in a real-world domain. Any computer application must undergo continuing evolution. The fact that the system implementing the application includes a significant number of components does not affect this fundamental truth. Thus one must expect the laws to be relevant in the context of component-based software engineering, though their statement, the phenomenology they reflect, may have to be refined. The most immediate implications of these observations are examined, their potential managerial impact discussed and some recommendations provided, thus giving a basis for questions and hypotheses to be further investigated and developed.
Guiding the selection of service-oriented software engineering methodologies
Authors: Qing Gu, Patricia Lago
Published in: Service Oriented Computing and Applications (2011-03-09)

Service-oriented computing is a paradigm for effectively delivering software services in a dynamic environment. Accordingly, many service-oriented software engineering (SOSE) methodologies have been proposed and practiced in both academia and industry. Some of these methodologies share common features (e.g. cover similar life-cycle phases) but are presented for different purposes, ranging from project management to system modernization, and from business analysis to technical solutions development. Given this diversity in the methodologies available in the literature, it is very hard for a company to decide which methodology would fit best for its specific needs. With this aim, we took a feature analysis approach and devised a framework for comparing the existing SOA methodologies. Different from existing comparison frameworks, ours specifically highlights aspects that are specific to SOA and aims to differentiate the methodologies that are truly service-oriented from those that deal little with service aspects. As such, the criteria defined in the framework can be used as a checklist for selecting a SOSE methodology.
Engineering the Software for Understanding Climate Change
Authors: Steve Easterbrook, Timothy C. Johns
Published in: Computing in Science & Engineering (2009-11-01)

Climate scientists build large, complex simulations with little or no software engineering training—and don't readily adopt the latest software engineering tools and techniques. This ethnographic study of climate scientists shows that their culture and practices share many features of agile and open source projects, but with highly customized software validation and verification techniques.
Advances in software engineering
Authors: C. V. Ramamoorthy, Wei‐Tek Tsai
Published in: Computer (1996-01-01)

Software is the key technology in applications as diverse as accounting, hospital management, aviation, and nuclear power. Application advances in different domains such as these-each with different requirements-have propelled software development from small batch programs to large, real-time programs with multimedia capabilities. To cope, software's enabling technologies have undergone tremendous improvement in hardware, communications, operating systems, compilers, databases, programming languages, and user interfaces, among others. In turn, those improvements have fueled even more advanced applications. Improvements in VLSI technology and multimedia, for example, have resulted in faster, more compact computers that significantly widened the range of software applications. Database and user interface enhancements, on the other hand, have spawned more interactive and collaborative development environments. Such changes have a ripple effect on software development processes as well as on software techniques and tools. In this article, we highlight software development's crucial methods and techniques of the past 30 years.