jehanweerasuriya/uni-ai-dataset huggingface dataset:
Report on the first SEMAT workshop on general theory of software engineering (GTSE 2012)
Authors: Paul Ralph, Pontus Johnson, Howell Jordan
Published in: ACM SIGSOFT Software Engineering Notes (2013-03-23)

Many academic disciplines have general theories, which apply across the discipline and underlie much of its research. Examples include the Big Bang theory (cosmology), Maxwell's equations (electrodynamics), the theories of the cell and evolution (biology), the theory of supply and demand (economics), and the general theory of crime (criminology). Software engineering, in contrast, has no widely-accepted general theory. Consequently, the SEMAT Initiative organized a workshop to encourage development of general theory in software engineering. Workshop participants reached broad consensus that software engineering would benefit from better theoretical foundations, which require diverse theoretical approaches, consensus on a primary dependent variable and better instrumentation and descriptive research.
Fifteen principles of software engineering
Authors: A.M. Davis
Published in: IEEE Software (1994-11-01)

Because the product of software engineering is not physical, physical laws do not form a suitable foundation. Instead, software engineering has had to evolve its principles based solely on observations of thousands of projects. The following are probably the 15 most important principles: (1) make quality number one priority; (2) high-quality software is possible; (3) give products to customers early; (4) determine the problem before writing requirements; (5) evaluate design alternatives; (6) use an appropriate process model; (7) use different languages for different phases; (8) minimize intellectual distance; (9) put technique before tools; (10) get it right before you make it faster; (11) inspect code; (12) good management is more important than good technology; (13) people are the key to success; (14) follow hype with care; and (15) take responsibility. An additional 15 software engineering principles are also listed.&gt;
MetaBAT 2: an adaptive binning algorithm for robust and efficient genome reconstruction from metagenome assemblies
Authors: Dongwan Kang, Feng Li, Edward Kirton, Ashleigh Thomas, Rob Egan, Hong An, Zhong Wang
Published in: PeerJ (2019-07-26)

We previously reported on MetaBAT, an automated metagenome binning software tool to reconstruct single genomes from microbial communities for subsequent analyses of uncultivated microbial species. MetaBAT has become one of the most popular binning tools largely due to its computational efficiency and ease of use, especially in binning experiments with a large number of samples and a large assembly. MetaBAT requires users to choose parameters to fine-tune its sensitivity and specificity. If those parameters are not chosen properly, binning accuracy can suffer, especially on assemblies of poor quality. Here, we developed MetaBAT 2 to overcome this problem. MetaBAT 2 uses a new adaptive binning algorithm to eliminate manual parameter tuning. We also performed extensive software engineering optimization to increase both computational and memory efficiency. Comparing MetaBAT 2 to alternative software tools on over 100 real world metagenome assemblies shows superior accuracy and computing speed. Binning a typical metagenome assembly takes only a few minutes on a single commodity workstation. We therefore recommend the community adopts MetaBAT 2 for their metagenome binning experiments. MetaBAT 2 is open source software and available at https://bitbucket.org/berkeleylab/metabat.
Guiding the selection of research methodology in industry–academia collaboration in software engineering
Authors: Claes Wohlin, Per Runeson
Published in: Information and Software Technology (2021-07-13)

The literature concerning research methodologies and methods has increased in software engineering in the last decade. However, there is limited guidance on selecting an appropriate research methodology for a given research study or project. Based on a selection of research methodologies suitable for software engineering research in collaboration between industry and academia, we present, discuss and compare the methodologies aiming to provide guidance on which research methodology to choose in a given situation to ensure successful industry–academia collaboration in research. Three research methodologies were chosen for two main reasons. Design Science and Action Research were selected for their usage in software engineering. We also chose a model emanating from software engineering, i.e., the Technology Transfer Model. An overview of each methodology is provided. It is followed by a discussion and an illustration concerning their use in industry–academia collaborative research. The three methodologies are then compared using a set of criteria as a basis for our guidance. The discussion and comparison of the three research methodologies revealed general similarities and distinct differences. All three research methodologies are easily mapped to the general research process describe–solve–practice, while the main driver behind the formulation of the research methodologies is different. Thus, we guide in selecting a research methodology given the primary research objective for a given research study or project in collaboration between industry and academia. We observe that the three research methodologies have different main objectives and differ in some characteristics, although still having a lot in common. We conclude that it is vital to make an informed decision concerning which research methodology to use. The presentation and comparison aim to guide selecting an appropriate research methodology when conducting research in collaboration between industry and academia.
Educational software engineering: where software engineering, education, and gaming meet
Authors: Tao Xie, Nikolai Tillmann, Jonathan de Halleux
Published in:  (2013-05-18)

Abstract—We define and advocate the subfield of educational software engineering (i.e., software engineering for education), which develops software engineering technologies (e.g., software testing and analysis, software analytics) for general educational tasks, going beyond educational tasks for software engineering. In this subfield, gaming technologies often play an important role together with software engineering technologies. We expect that researchers in educational software engineering would be among key players in the education domain and in the coming age of Massive Open Online Courses (MOOCs). Educational software engineering can and will contribute significant solutions to address various critical challenges in education especially MOOCs such as automatic grading, intelligent tutoring, problem generation, and plagiarism detection. In this position paper, we define educational software engineering and illustrate Pex for Fun (in short as Pex4Fun), one of our recent examples
Requirements Engineering: A Good Practice Guide
Authors: Ian Sommerville, Pete Sawyer
Published in: Lancaster EPrints (Lancaster University) (1997-05-05)

From the Publisher: Requirements engineering is the process of discovering, documenting and managing the requirements for a computer-based system. The goal of requirements engineering is to produce a set of system requirements which, as far as possible, is complete, consistent, relevant and reflects what the customer actually wants. Although this ideal is probably unattainable, the use of a systematic approach based on engineering principles leads to better requirements than the informal approach which is still commonly used. This book presents a set of guidelines which reflect the best practice in requirements engineering. Based on the authors' experience in research and in software and systems development, these guidelines explain in an easy-to-understand way how you can improve your requirements engineering processes. The guidelines are applicable for any type of application and, in general, apply to both systems and software engineering.
Software Engineering and Scale-Free Networks
Authors: Lian Wen, R. Geoff Dromey, Diana Kirk
Published in: IEEE Transactions on Systems Man and Cybernetics Part B (Cybernetics) (2009-02-09)

Complex-network theory is a new approach in studying different types of large systems in both the physical and the abstract worlds. In this paper, we have studied two kinds of network from software engineering: the component dependence network and the sorting comparison network (SCN). It is found that they both show the same scale-free property under certain conditions as complex networks in other fields. These results suggest that complex-network theory can be a useful approach to the study of software systems. The special properties of SCNs provide a more repeatable and deterministic way to study the evolution and optimization of complex networks. They also suggest that the closer a sorting algorithm is to the theoretical optimal limit, the more its SCN is like a scale-free network. This may also indicate that, to store and retrieve information efficiently, a concept network might need to be scale-free.
Computer science and software engineering
Authors: Peter J. Denning
Published in: Communications of the ACM (1998-08-01)

No abstract available.
Adopting Cleanroom software engineering with a phased approach
Authors: Philip A. Hausler, R.C. Linger, Carmen J. Trammell
Published in: IBM Systems Journal (1994-01-01)

Cleanroom software engineering is a theory-based, team-oriented engineering process for developing very high quality software under statistical quality control. The Cleanroom process combines formal methods of object-based box structure specification and design, function-theoretic correctness verification, and statistical usage testing for reliability certification to produce software approaching zero defects. Management of the Cleanroom process is based on a life cycle of development and certification of a pipeline of user-function increments that accumulate into the final product. Teams in IBM and other organizations that use the process are achieving remarkable quality results with high productivity. A phased implementation of the Cleanroom process enables quality and productivity improvements with an increased control of change. An introductory implementation involves the application of Cleanroom principles without the full formality of the process; full implementation involves the comprehensive use of formal Cleanroom methods; and advanced implementation optimizes the process through additional formal methods, reuse, and continual improvement. The AOEXPERT/MVS™ project, the largest IBM Cleanroom effort to date, successfully applied an introductory level of implementation. This paper presents both the implementation strategy and the project results.
Software engineering in 1968
Authors: Brian Randell
Published in:  (1979-09-17)

The paper attempts to portray the 1968 software scene, by recalling the principle technical issues and concerns of the time. These are discussed under the headings Software as a Commodity, Programming Languages, Multiprogramming and Time-Sharing, Modularity and Structuring, and The Problems of Large Systems. The paper ends with an account of the major debates at the first conference ever held on the subject of “software engineering”, the NATO Conference that took place in Garmisch in October 1968.
Software Engineering Research and Industry: A Symbiotic Relationship to Foster Impact
Authors: Victor R. Basili, Lionel Briand, Domenico Bianculli, Shiva Nejati, Fabrizio Pastore, Mehrdad Sabetzadeh
Published in: IEEE Software (2018-07-11)

Software engineering is not only an increasingly challenging endeavor that goes beyond the intellectual capabilities of any single individual engineer but also an intensely human one. Tools and methods to develop software are employed by engineers of varied backgrounds within a large variety of organizations and application domains. As a result, the variation in challenges and practices in system requirements, architecture, and quality assurance is staggering. Human, domain, and organizational factors define the context within which software engineering methodologies and technologies are to be applied and therefore the context that research needs to account for, if it is to be impactful. This article provides an assessment of the current challenges faced by software engineering research in achieving its potential, a description of the root causes of such challenges, and a proposal for the field to move forward and become more impactful through collaborative research and innovation between public research and industry. This article is part of a theme issue on software engineering’s 50th anniversary.
Software Engineering Using design RATionale
Authors: Janet E. Burge
Published in: Digital WPI (2005-05-02)

For a number of years, members of the Artificial Intelligence (AI) in Design community have studied Design Rationale (DR), the reasons behind decisions made while designing. DR is invaluable as an aid for revising, maintaining, documenting, evaluating, and learning the design. The presence of DR would be especially valuable for software maintenance. The rationale would provide insight into why the system is the way it is by giving the reasons behind the design decisions, could help to indicate where changes might be needed during maintenance if design goals change, and help the maintainer avoid repeating earlier mistakes by explicitly documenting alternatives that were tried earlier that did not work. Unfortunately, while everyone agrees that design rationale is useful, it is still not used enough in practice. Possible reasons for this are that the uses proposed for rationale are not compelling enough to justify the effort involved in its capture and that there are few systems available to support rationale use and capture. We have addressed this problem by developing and evaluating a system called SEURAT (Software Engineering Using RATionale) which integrates with a software development environment and goes beyond mere presentation of rationale by inferencing over it to check for completeness and consistency in the reasoning used while a software system is being developed and maintained. We feel that the SEURAT system will be invaluable during development and maintenance of software systems. During development, SEURAT will help the developers ensure that the systems they build are complete and consistent. During maintenance, SEURAT will provide insight into the reasons behind the choices made by the developers during design and implementation. The benefits of DR are clear but only with appropriate tool support, such as that provided by SEURAT, can DR live up to its full potential as an aid for revising, maintaining, and documenting the software design and implementation.
Bots in software engineering: a systematic mapping study
Authors: Sivasurya Santhanam, Tobias Hecking, Andreas Schreiber, Stefan Wagner
Published in: PeerJ Computer Science (2022-02-09)

Bots have emerged from research prototypes to deployable systems due to the recent developments in machine learning, natural language processing and understanding techniques. In software engineering, bots range from simple automated scripts to decision-making autonomous systems. The spectrum of applications of bots in software engineering is so wide and diverse, that a comprehensive overview and categorization of such bots is needed. Existing works considered selective bots to be analyzed and failed to provide the overall picture. Hence it is significant to categorize bots in software engineering through analyzing why, what and how the bots are applied in software engineering. We approach the problem with a systematic mapping study based on the research articles published in this topic. This study focuses on classification of bots used in software engineering, the various dimensions of the characteristics, the more frequently researched area, potential research spaces to be explored and the perception of bots in the developer community. This study aims to provide an introduction and a broad overview of bots used in software engineering. Discussions of the feedback and results from several studies provide interesting insights and prospective future directions.
The Mythical Man-Month
Authors: Fred Brooks
Published in: ACM SIGPLAN Notices (1975-01-01)

The book, The Mythical Man-Month, Addison-Wesley, 1975 (excerpted in Datamation, December 1974), gathers some of the published data about software engineering and mixes it with the assertion of a lot of personal opinions. In this presentation, the author will list some of the assertions and invite dispute or support from the audience. This is intended as a public discussion of the published book, not a regular paper.
C in education and software engineering
Authors: R. P. Mody
Published in: ACM SIGCSE Bulletin (1991-09-01)

article Free Access Share on C in education and software engineering Author: R. P. Mody Department of Computer Science, University of Poona, Poona 411007, India Department of Computer Science, University of Poona, Poona 411007, IndiaView Profile Authors Info & Claims ACM SIGCSE BulletinVolume 23Issue 3Sept. 1991 pp 45–56https://doi.org/10.1145/126459.126471Online:01 September 1991Publication History 25citation327DownloadsMetricsTotal Citations25Total Downloads327Last 12 Months12Last 6 weeks5 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 Alerts New Citation Alert!Please log in to your account Save to BinderSave to BinderCreate a New BinderNameCancelCreateExport CitationPublisher SiteeReaderPDF
Tool Integration in Software Engineering Environments.
Authors: Anthony I. Wasserman
Published in:  (1989-01-01)

This paper has described the various types of tool integration with the goal of illustrating how diverse tools can be effectively integrated into CASE environments. Issues of data integration, control integration, and presentation integration may be viewed as orthogonal and defining a three-dimensional space in which tool integration occurs. The absence of standards has been shown to be a barrier to integration, as various tool developers remain unable to reach agreement on the appropriate point(s) in this space at which integration should occur. As a result, experience with tool integration has been largely at a tool-to-tool level, with little use of standard tool integration mechanisms.
Towards an Agent Oriented Approach to Software Engineering.
Authors: Anna Perini, Paolo Bresciani, Paolo Giorgini, Fausto Giunchiglia, John Mylopoulos
Published in:  (2001-01-01)

This paper describes a methodology for agent oriented software engineering, called Tropos. Tropos is based on three key ideas. First, the notion of agent and all the related mentalistic notions (for instance: goals and plans) are used in all phases of software development, from the early analysis down to the actual implementation. Second, Tropos covers also the very early phases of requirements analysis, thus allowing for a deeper understanding of the environment where the software must operate, and of the kind of interactions that should occur between software and human agents. Third, Tropos adopts a transformational approach to process artifacts refinement. The methodology is partially illustrated with the help of a case study.
A web-based support environment for software engineering experiments
Authors: Erik Arisholm, Dag I. K. Sjøberg, Gunnar J. Carelius, Yngve Lindsjørn
Published in: Nordic journal of computing (2002-09-01)

The software engineering communities frequently propose new software engineering technologies, such as new development techniques, programming languages and tools, without rigorous scientific evaluation. One way to evaluate software engineering technologies is through controlled experiments where the effects of the technology can be isolated from confounding factors, i.e., establishing cause-effect relationships. For practical and financial reasons, however, such experiments are often quite unrealistic, typically involving students in a class-room environment solving small pen-and-paper tasks. A common criticism of the results of the experiments is their lack of external validity, i.e., that the results are not valid outside the experimental conditions. To increase the external validity of the experimental results, the experiments need to be more realistic. The realism can be increased using professional developers as subjects who conduct larger experimental tasks in their normal work environment. However, the logistics involved in running such experiments are tremendous. More specifically, the experimental materials (e.g., questionnaires, task descriptions, code and tools) must be distributed to each programmer, the progress of the experiment needs to be controlled and monitored, and the results of the experiment need to be collected and analyzed. To support this logistics for large-scale, controlled experiments, we have developed a web-based experiment support environment called SESE. This paper describes SESE, its development and the experiences from using it to conduct a large controlled experiment in industry.
Experiences with Open Source Software Engineering Tools
Authors: Kal Toth
Published in: IEEE Software (2006-11-01)

For software engineering (SE) and computer science (CS) programs to deliver on their promises, they must go beyond teaching students about principles, processes, models, and strategies and offer them realistic, practical experience as well. Although industry has been pressing to increase the emphasis on practical aspects, many CS programs continue to give students relatively simple problems focused on selected computing and software concepts and theories. Open source software offers CS and SE educators an opportunity to give their students practical, hands-on software engineering experience
Software engineering for self-organizing systems
Authors: H. Van Dyke Parunak, Sven Brueckner
Published in: The Knowledge Engineering Review (2015-09-01)

Abstract Self-organizing software systems are an increasingly attractive approach to highly distributed, decentralized, dynamic applications. In some domains (such as the Internet), the interaction of originally independent systems yields a self-organizing system de facto , and engineers must take these characteristics into account to manage them. This review surveys current work in this field and outlines its main themes, identifies challenges for future research, and addresses the continuity between software engineering in general and techniques appropriate for self-organizing systems.
An annotated bibliography on integration in software engineering environments
Authors: Alan W. Brown, Maria H. Penedo
Published in: ACM SIGSOFT Software Engineering Notes (1992-07-01)

This paper provides an annotated bibliography on integration in software engineering environments (SEEs). The aim is to provide readers with a source of information that can be used as the basis for more detailed studies in this area.