jehanweerasuriya/uni-ai-dataset huggingface dataset:
Software Engineering: Principles and Practice
Authors: Hans van Vliet
Published in:  (1993-04-26)

Software Engineering: Principles and Practice challenges the reader to appreciate the issues, design trade-offs and teamwork required for successful software development. This new edition has been brought fully up to date, with complete coverage of all aspects of the software lifecycle and a strong focus on all the skills needed to carry out software projects on time and within budget. Highlights of the third edition include: * Fully updated chapters on requirements engineering and software architecture. * New chapters on component-based software engineering, service orientation and global software development. * Extensive coverage of the human and social aspects of software development. * Balanced coverage of both traditional, heavyweight development and agile, lightweight development approaches such as Extreme Programming (XP). Written to support both introductory and advanced software engineering courses, this book is invaluable for everyone in software development and maintenance who wants an accessible account of the problems incurred in large-scale software development and the proposed solutions. A companion website with additional resources for students and instructors can be found at www.wileyeurope.com/college/van vliet
Cleanroom Software Engineering
Authors: Harlan D. Mills, Michael Dyer, R.C. Linger
Published in: IEEE Software (1987-09-01)

Software quality can be engineered under statistical quality control and delivered with better quality. The Cleanroom process gives management an engineering approach to release reliable products.
Software engineering economics
Authors: Mohamed Mohamed Al Hady
Published in: Cybrarians Journal (2007-09-30)

This work aims to shed light on an important topic that has begun to emerge in recent years, which is the economics of software engineering as a basic pillar in national development and confronting the competitive market challenges that characterize this industry. This work reviews the knowledge economy and its connection to the information economy and the digital economy. The background and generations of software engineering from the beginning of reliance on craftsmanship based on manual effort to professionalism based on superior skill and creative creative thought; He defined the field of software engineering characterized by distinguished human performance and the speed of change. He also defined this field from the perspective of organized, controlled and effective software based on the analysis, evaluation, description, design and development of software within the framework of management, quality, modernity, innovation and the availability of standards and skills. He explained the direct connection to computer science. It clarified the characteristics and dimensions of the software industry related to the industrial structure, education, development of qualified human resources, the distribution of software producing companies, their characteristics and sizes, and the integration of software systems and packages sold locally in the face of exports from them. The economics of software engineering was discussed from the perspective of making better decisions to create added value, monitoring and controlling dynamic investment in a better way, and the stages of development of competitive advantage related to leading production, investment, creativity, and wealth. It demonstrated the elements of practicing software engineering applications that determine the parameters of software production and the use of the capability maturity model. This work included the foundations of improving the economics of software engineering in terms of reducing size and reducing the degree of complexity, improving the development process, forming work teams and using integrated tools that use a greater mechanism, developing software within the framework of economic and technical feasibility; Advancement challenges related to cost, reliability, ease of use, and maintainability of the application were highlighted; This work ended with the conclusion of a set of governing results and some recommendations that are required to be adopted by adopting national tools and standards that are compatible with global ones.
An open graph visualization system and its applications to software engineering
Authors: Emden R. Gansner, Stephen C. North
Published in: Software Practice and Experience (2000-01-01)

We describe a package of practical tools and libraries for manipulating graphs and their drawings. Our design, which is aimed at facilitating the combination of the package components with other tools, includes stream and event interfaces for graph operations, high-quality static and dynamic layout algorithms, and the ability to handle sizeable graphs. We conclude with a description of the applications of this package to a variety of software engineering tools. Copyright © 2000 John Wiley & Sons, Ltd.
Evidence-based software engineering for practitioners
Authors: T. Dyba, Barbara Kitchenham, Magne Jørgensen
Published in: IEEE Software (2005-01-01)

Software managers and practitioners often must make decisions about what technologies to employ on their projects. They might be aware of problems with their current development practices (for example, production bottlenecks or numerous defect reports from customers) and want to resolve them. Or, they might have read about a new technology and want to take advantage of its promised benefits. However, practitioners can have difficulty making informed decisions about whether to adopt a new technology because there's little objective evidence to confirm its suitability, limits, qualities, costs, and inherent risks. This can lead to poor decisions about technology adoption. Software engineers might make incorrect decisions about adopting new techniques it they don't consider scientific evidence about the techniques' efficacy. They should consider using procedures similar to ones developed for evidence-based medicine. Software companies are often under pressure to adopt immature technologies because of market and management pressures. We suggest that practitioners consider evidence-based software engineering as a mechanism to support and improve their technology adoption decisions.
A Hitchhiker's guide to statistical tests for assessing randomized algorithms in software engineering
Authors: Andrea Arcuri, Lionel Briand
Published in: Software Testing Verification and Reliability (2012-11-06)

Randomized algorithms are widely used to address many types of software engineering problems, especially in the area of software verification and validation with a strong emphasis on test automation. However, randomized algorithms are affected by chance and so require the use of appropriate statistical tests to be properly analysed in a sound manner. This paper features a systematic review regarding recent publications in 2009 and 2010 showing that, overall, empirical analyses involving randomized algorithms in software engineering tend to not properly account for the random nature of these algorithms. Many of the novel techniques presented clearly appear promising, but the lack of soundness in their empirical evaluations casts unfortunate doubts on their actual usefulness. In software engineering, although there are guidelines on how to carry out empirical analyses involving human subjects, those guidelines are not directly and fully applicable to randomized algorithms. Furthermore, many of the textbooks on statistical analysis are written from the viewpoints of social and natural sciences, which present different challenges from randomized algorithms. To address the questionable overall quality of the empirical analyses reported in the systematic review, this paper provides guidelines on how to carry out and properly analyse randomized algorithms applied to solve software engineering tasks, with a particular focus on software testing, which is by far the most frequent application area of randomized algorithms within software engineering. Copyright © 2012 John Wiley & Sons, Ltd.
Recommendation Systems for Software Engineering
Authors: Martin P. Robillard, Robert J. Walker, Thomas Zimmermann
Published in: IEEE Software (2009-09-11)

Software development can be challenging because of the large information spaces that developers must navigate. Without assistance, developers can become bogged down and spend a disproportionate amount of their time seeking information at the expense of other value-producing tasks. Recommendation systems for software engineering (RSSEs) are software tools that can assist developers with a wide range of activities, from reusing code to writing effective bug reports. The authors provide an overview of recommendation systems for software engineering: what they are, what they can do for developers, and what they might do in the future.
Software-engineering research revisited
Authors: Colin Potts
Published in: IEEE Software (1993-09-01)

The author discusses three major changes that he suggests are occurring as a result of the software engineering industry adopting the industry-as-laboratory approach, in which researchers identify problems through close involvement with industrial projects and create and evaluate solutions in an almost indivisible research activity. This approach emphasizes what people actually do or can do in practice, rather than what is possible in principle. The three changes are a greater reliance on empirical definition of problems, an emphasis on real case studies, and a greater emphasis on contextual issues.&gt;
A Survey of App Store Analysis for Software Engineering
Authors: William H. Martin, Federica Sarro, Yue Jia, Yuanyuan Zhang, Mark Harman
Published in: IEEE Transactions on Software Engineering (2016-12-02)

App Store Analysis studies information about applications obtained from app stores. App stores provide a wealth of information derived from users that would not exist had the applications been distributed via previous software deployment methods. App Store Analysis combines this non-technical information with technical information to learn trends and behaviours within these forms of software repositories. Findings from App Store Analysis have a direct and actionable impact on the software teams that develop software for app stores, and have led to techniques for requirements engineering, release planning, software design, security and testing. This survey describes and compares the areas of research that have been explored thus far, drawing out common aspects, trends and directions future research should take to address open problems and challenges.
Docker [Software engineering]
Authors: Charles Anderson
Published in: IEEE Software (2015-04-23)

In episode 217 of Software Engineering Radio, host Charles Anderson talks with James Turnbull, a software developer and security specialist who's vice president of services at Docker. Lightweight Docker containers are rapidly becoming a tool for deploying microservice-based architectures.
Facts and fallacies of software engineering
Authors: Robert L. Glass
Published in:  (2002-10-28)

The practice of building software is a &amp;quot;new kid on the block&amp;quot; technology. Though it may not seem this way for those who have been in the field for most of their careers, in the overall scheme of professions, software builders are relative &amp;quot;newbies.&amp;quot; &#13;\nIn the short history of the software field, a lot of facts have been identified, and a lot of fallacies promulgated. Those facts and fallacies are what this book is about.&#13;\nThere&amp;apos;s a problem with those facts—and, as you might imagine, those fallacies. Many of these fundamentally important facts are learned by a software engineer, but over the short lifespan of the software field, all too many of them have been forgotten. While reading Facts and Fallacies of Software Engineering, you may experience moments of &amp;quot;Oh, yes, I had forgotten that,&amp;quot; alongside some &amp;quot;Is that really true?&amp;quot; thoughts.&#13;\nThe author of this book doesn&amp;apos;t shy away from controversy. In fact, each of the facts and fallacies is accompanied by a discussion of whatever controversy envelops it. You may find yourself agreeing with a lot of the facts and fallacies, yet emotionally disturbed by a few of them! Whether you agree or disagree, you will learn why the author has been called &amp;quot;the premier curmudgeon of software practice.&amp;quot;&#13;\nThese facts and fallacies are fundamental to the software building field—forget or neglect them at your peril!&#13;\n
Applications of Ontologies in Software Engineering
Authors: Hans-Jörg Happel, Stefan Seedorf
Published in:  (2006-01-01)

The emerging field of semantic web technologies promises new stimulus for Software Engineering research. However, since the underlying concepts of the semantic web have a long tradition in the knowledge engineering field, it is sometimes hard for software engineers to overlook the variety of ontology-enabled approaches to Software Engineering. In this paper we therefore present some examples of ontology applications throughout the Software Engineering lifecycle. We discuss the advantages of ontologies in each case and provide a framework for classifying the usage of ontologies in Software Engineering.
Commonality and variability in software engineering
Authors: James O. Coplien, Daniel Hoffman, David M. Weiss
Published in: IEEE Software (1998-01-01)

The article describes how to perform domain engineering by identifying the commonalities and variabilities within a family of products. Through interesting examples dealing with reuse libraries, design patterns, and programming language design, the authors suggest a systematic scope, commonalities, and variabilities approach to formal analysis. Their SCV analysis has been an integral part of the FAST (Family-oriented Abstraction, Specification, and Translation) technology applied to over 25 domains at Lucent Technologies.
Principles of software engineering management
Authors: Dick Bowman
Published in: ACM SIGAPL APL Quote Quad (1989-03-01)

No abstract available.
Reformulating software engineering as a search problem
Authors: J.-P. Clarke, José Javier Dolado, Mark Harman, Robert M. Hierons, B.F. Jones, M. Lumkin, Brian S. Mitchell, Spiros Mancoridis, K. Rees, Marc Roper, Martin Shepperd
Published in: IEE Proceedings - Software (2003-01-01)

Metaheuristic techniques such as genetic algorithms, simulated annealing and tabu search have found wide application in most areas of engineering. These techniques have also been applied in business, financial and economic modelling. Metaheuristics have been applied to three areas of software engineering: test data generation, module clustering and cost/effort prediction, yet there remain many software engineering problems which have yet to be tackled using metaheuristics. It is surprising that metaheuristics have not been more widely applied to software engineering; many problems in software engineering are characterised by precisely the features which make metaheuristics search applicable. In the paper it is argued that the features which make metaheuristics applicable for engineering and business applications outside software engineering also suggest that there is great potential for the exploitation of metaheuristics within software engineering. The paper briefly reviews the principal metaheuristic search techniques and surveys existing work on the application of metaheuristics to the three software engineering areas of test data generation, module clustering and cost/effort prediction. It also shows how metaheuristic search techniques can be applied to three additional areas of software engineering: maintenance/evolution system integration and requirements scheduling. The software engineering problem areas considered thus span the range of the software development process, from initial planning, cost estimation and requirements analysis through to integration, maintenance and evolution of legacy systems. The aim is to justify the claim that many problems in software engineering can be reformulated as search problems, to which metaheuristic techniques can be applied. The goal of the paper is to stimulate greater interest in metaheuristic search as a tool of optimisation of software engineering problems and to encourage the investigation and exploitation of these technologies in finding near optimal solutions to the complex constraint-based scenarios which arise so frequently in software engineering.
Software Engineering in Industrial Automation: State-of-the-Art Review
Authors: Valeriy Vyatkin
Published in: IEEE Transactions on Industrial Informatics (2013-04-15)

This paper presents one perspective on recent developments related to software engineering in the industrial automation sector that spans from manufacturing factory automation to process control systems and energy automation systems. The survey's methodology is based on the classic SWEBOK reference document that comprehensively defines the taxonomy of software engineering domain. This is mixed with classic automation artefacts, such as the set of the most influential international standards and dominating industrial practices. The survey focuses mainly on research publications which are believed to be representative of advanced industrial practices as well.
The ABC of Software Engineering Research
Authors: Klaas-Jan Stol, Brian Fitzgerald
Published in: ACM Transactions on Software Engineering and Methodology (2018-07-31)

A variety of research methods and techniques are available to SE researchers, and while several overviews exist, there is consistency neither in the research methods covered nor in the terminology used. Furthermore, research is sometimes critically reviewed for characteristics inherent to the methods. We adopt a taxonomy from the social sciences, termed here the ABC framework for SE research, which offers a holistic view of eight archetypal research strategies. ABC refers to the research goal that strives for generalizability over Actors (A) and precise measurement of their Behavior (B), in a realistic Context (C). The ABC framework uses two dimensions widely considered to be key in research design: the level of obtrusiveness of the research and the generalizability of research findings. We discuss metaphors for each strategy and their inherent limitations and potential strengths. We illustrate these research strategies in two key SE domains, global software engineering and requirements engineering, and apply the framework on a sample of 75 articles. Finally, we discuss six ways in which the framework can advance SE research.
Using Mapping Studies in Software Engineering.
Authors: David Budgen, Mark Turner, Pearl Brereton, Barbara Kitchenham
Published in:  (2008-01-01)

Background: A mapping study provides a systematic and objective procedure for identifying the nature and extent of the empirical study data that is available to answer a particular research question. Such studies can also form a useful preliminary step for PhD study. Aim: We set out to assess how effective such studies have been when used for software engineering topics, and to identify the specific challenges that they present. Method: We have conducted an informal review of a number of mapping studies in software engineering, describing their main characteristics and the forms of analysis employed. Results: We examine the experiences and outcomes from six mapping studies, of which four are published. From these we note a recurring theme about the problems of classification and a preponderance of ‘gaps ’ in the set of empirical studies. Conclusions: We identify our challenges as improving classification guidelines, encouraging better reporting of primary studies, and argue for identifying some ’empirical grand challenges ’ for software engineering as a focus for the community 1. 1
Bayesian analysis of empirical software engineering cost models
Authors: Sunita Chulani, Barry Boehm, Bert M. Steece
Published in: IEEE Transactions on Software Engineering (1999-01-01)

Many parametric software estimation models have evolved in the last two decades (L.H. Putnam and W. Myers, 1992; C. Jones, 1997; R.M. Park et al., 1992). Almost all of these parametric models have been empirically calibrated to actual data from completed software projects. The most commonly used technique for empirical calibration has been the popular classical multiple regression approach. As discussed in the paper, the multiple regression approach imposes a few assumptions frequently violated by software engineering datasets. The paper illustrates the problems faced by the multiple regression approach during the calibration of one of the popular software engineering cost models, COCOMO II. It describes the use of a pragmatic 10 percent weighted average approach that was used for the first publicly available calibrated version (S. Chulani et al., 1998). It then moves on to show how a more sophisticated Bayesian approach can be used to alleviate some of the problems faced by multiple regression. It compares and contrasts the two empirical approaches, and concludes that the Bayesian approach was better and more robust than the multiple regression approach.
End-user software engineering
Authors: Margaret Burnett, Curtis R. Cook, Gregg Rothermel
Published in: Communications of the ACM (2004-09-01)

End-user programming has become the most common form of programming in use today [2], but there has been little investigation into the dependability of the programs end users create. This is problematic because the dependability of these programs can be very important; in some cases, errors in end-user programs, such as formula errors in spreadsheets, have cost millions of dollars. (For example, see www.theregister.co.uk/content/67/31298.html or panko.cba.hawaii.edu/ssr/Mypapers/whatknow.htm.) We have been investigating ways to address this problem by developing a software engineering paradigm viable for end-user programming, an approach we call end-user software engineering .
Collaboration Tools for Global Software Engineering
Authors: Filippo Lanubile, Christof Ebert, Rafael Prikladnicki, Aurora Vizcaíno
Published in: IEEE Software (2010-03-01)

Global software engineering requires tool support. A survey of current collaborative development tools and environments summarizes their features and development trends.
Robust Statistical Methods for Empirical Software Engineering
Authors: Barbara Kitchenham, Lech Madeyski, David Budgen, Jacky Keung, Pearl Brereton, Stuart Charters, Shirley Gibbs, Amnart Pohthong
Published in: Empirical Software Engineering (2016-06-16)

There have been many changes in statistical theory in the past 30 years, including increased evidence that non-robust methods may fail to detect important results. The statistical advice available to software engineering researchers needs to be updated to address these issues. This paper aims both to explain the new results in the area of robust analysis methods and to provide a large-scale worked example of the new methods. We summarise the results of analyses of the Type 1 error efficiency and power of standard parametric and non-parametric statistical tests when applied to non-normal data sets. We identify parametric and non-parametric methods that are robust to non-normality. We present an analysis of a large-scale software engineering experiment to illustrate their use. We illustrate the use of kernel density plots, and parametric and non-parametric methods using four different software engineering data sets. We explain why the methods are necessary and the rationale for selecting a specific analysis. We suggest using kernel density plots rather than box plots to visualise data distributions. For parametric analysis, we recommend trimmed means, which can support reliable tests of the differences between the central location of two or more samples. When the distribution of the data differs among groups, or we have ordinal scale data, we recommend non-parametric methods such as Cliff’s δ or a robust rank-based ANOVA-like method.