Journal of Software Engineering Research and Development Cover Image

  • Search by keyword
  • Search by citation

Page 1 of 2

Metric-centered and technology-independent architectural views for software comprehension

The maintenance of applications is a crucial activity in the software industry. The high cost of this process is due to the effort invested on software comprehension since, in most of cases, there is no up-to-...

  • View Full Text

Back to the future: origins and directions of the “Agile Manifesto” – views of the originators

In 2001, seventeen professionals set up the manifesto for agile software development. They wanted to define values and basic principles for better software development. On top of being brought into focus, the ...

Investigating the effectiveness of peer code review in distributed software development based on objective and subjective data

Code review is a potential means of improving software quality. To be effective, it depends on different factors, and many have been investigated in the literature to identify the scenarios in which it adds qu...

On the benefits and challenges of using kanban in software engineering: a structured synthesis study

Kanban is increasingly being used in diverse software organizations. There is extensive research regarding its benefits and challenges in Software Engineering, reported in both primary and secondary studies. H...

Challenges on applying genetic improvement in JavaScript using a high-performance computer

Genetic Improvement is an area of Search Based Software Engineering that aims to apply evolutionary computing operators to the software source code to improve it according to one or more quality metrics. This ...

Actor’s social complexity: a proposal for managing the iStar model

Complex systems are inherent to modern society, in which individuals, organizations, and computational elements relate with each other to achieve a predefined purpose, which transcends individual goals. In thi...

Investigating measures for applying statistical process control in software organizations

The growing interest in improving software processes has led organizations to aim for high maturity, where statistical process control (SPC) is required. SPC makes it possible to analyze process behavior, pred...

An approach for applying Test-Driven Development (TDD) in the development of randomized algorithms

TDD is a technique traditionally applied in applications with deterministic algorithms, in which the input and the expected result are known. However, the application of TDD with randomized algorithms have bee...

Supporting governance of mobile application developers from mining and analyzing technical questions in stack overflow

There is a need to improve the direct communication between large organizations that maintain mobile platforms (e.g. Apple, Google, and Microsoft) and third-party developers to solve technical questions that e...

Working software over comprehensive documentation – Rationales of agile teams for artefacts usage

Agile software development (ASD) promotes working software over comprehensive documentation. Still, recent research has shown agile teams to use quite a number of artefacts. Whereas some artefacts may be adopt...

Development as a journey: factors supporting the adoption and use of software frameworks

From the point of view of the software framework owner, attracting new and supporting existing application developers is crucial for the long-term success of the framework. This mixed-methods study explores th...

Applying user-centered techniques to analyze and design a mobile application

Techniques that help in understanding and designing user needs are increasingly being used in Software Engineering to improve the acceptance of applications. Among these techniques we can cite personas, scenar...

A measurement model to analyze the effect of agile enterprise architecture on geographically distributed agile development

Efficient and effective communication (active communication) among stakeholders is thought to be central to agile development. However, in geographically distributed agile development (GDAD) environments, it c...

A survey of search-based refactoring for software maintenance

This survey reviews published materials related to the specific area of Search-Based Software Engineering that concerns software maintenance and, in particular, refactoring. The survey aims to give a comprehen...

Guest editorial foreword for the special issue on automated software testing: trends and evidence

Similarity testing for role-based access control systems.

Access control systems demand rigorous verification and validation approaches, otherwise, they can end up with security breaches. Finite state machines based testing has been successfully applied to RBAC syste...

An algorithm for combinatorial interaction testing: definitions and rigorous evaluations

Combinatorial Interaction Testing (CIT) approaches have drawn attention of the software testing community to generate sets of smaller, efficient, and effective test cases where they have been successful in det...

How diverse is your team? Investigating gender and nationality diversity in GitHub teams

Building an effective team of developers is a complex task faced by both software companies and open source communities. The problem of forming a “dream”

Investigating factors that affect the human perception on god class detection: an analysis based on a family of four controlled experiments

Evaluation of design problems in object oriented systems, which we call code smells, is mostly a human-based task. Several studies have investigated the impact of code smells in practice. Studies focusing on h...

On the evaluation of code smells and detection tools

Code smells refer to any symptom in the source code of a program that possibly indicates a deeper problem, hindering software maintenance and evolution. Detection of code smells is challenging for developers a...

On the influence of program constructs on bug localization effectiveness

Software projects often reach hundreds or thousands of files. Therefore, manually searching for code elements that should be changed to fix a failure is a difficult task. Static bug localization techniques pro...

DyeVC: an approach for monitoring and visualizing distributed repositories

Software development using distributed version control systems has become more frequent recently. Such systems bring more flexibility, but also greater complexity to manage and monitor multiple existing reposi...

A genetic algorithm based framework for software effort prediction

Several prediction models have been proposed in the literature using different techniques obtaining different results in different contexts. The need for accurate effort predictions for projects is one of the ...

Elaboration of software requirements documents by means of patterns instantiation

Studies show that problems associated with the requirements specifications are widely recognized for affecting software quality and impacting effectiveness of its development process. The reuse of knowledge ob...

ArchReco: a software tool to assist software design based on context aware recommendations of design patterns

This work describes the design, development and evaluation of a software Prototype, named ArchReco, an educational tool that employs two types of Context-aware Recommendations of Design Patterns, to support us...

On multi-language software development, cross-language links and accompanying tools: a survey of professional software developers

Non-trivial software systems are written using multiple (programming) languages, which are connected by cross-language links. The existence of such links may lead to various problems during software developmen...

SoftCoDeR approach: promoting Software Engineering Academia-Industry partnership using CMD, DSR and ESE

The Academia-Industry partnership has been increasingly encouraged in the software development field. The main focus of the initiatives is driven by the collaborative work where the scientific research work me...

Issues on developing interoperable cloud applications: definitions, concepts, approaches, requirements, characteristics and evaluation models

Among research opportunities in software engineering for cloud computing model, interoperability stands out. We found that the dynamic nature of cloud technologies and the battle for market domination make clo...

Game development software engineering process life cycle: a systematic review

Software game is a kind of application that is used not only for entertainment, but also for serious purposes that can be applicable to different domains such as education, business, and health care. Multidisc...

Correlating automatic static analysis and mutation testing: towards incremental strategies

Traditionally, mutation testing is used as test set generation and/or test evaluation criteria once it is considered a good fault model. This paper uses mutation testing for evaluating an automated static anal...

A multi-objective test data generation approach for mutation testing of feature models

Mutation approaches have been recently applied for feature testing of Software Product Lines (SPLs). The idea is to select products, associated to mutation operators that describe possible faults in the Featur...

An extended global software engineering taxonomy

In Global Software Engineering (GSE), the need for a common terminology and knowledge classification has been identified to facilitate the sharing and combination of knowledge by GSE researchers and practition...

A systematic process for obtaining the behavior of context-sensitive systems

Context-sensitive systems use contextual information in order to adapt to the user’s current needs or requirements failure. Therefore, they need to dynamically adapt their behavior. It is of paramount importan...

Distinguishing extended finite state machine configurations using predicate abstraction

Extended Finite State Machines (EFSMs) provide a powerful model for the derivation of functional tests for software systems and protocols. Many EFSM based testing problems, such as mutation testing, fault diag...

Extending statecharts to model system interactions

Statecharts are diagrams comprised of visual elements that can improve the modeling of reactive system behaviors. They extend conventional state diagrams with the notions of hierarchy, concurrency and communic...

On the relationship of code-anomaly agglomerations and architectural problems

Several projects have been discontinued in the history of the software industry due to the presence of software architecture problems. The identification of such problems in source code is often required in re...

An approach based on feature models and quality criteria for adapting component-based systems

Feature modeling has been widely used in domain engineering for the development and configuration of software product lines. A feature model represents the set of possible products or configurations to apply i...

Patch rejection in Firefox: negative reviews, backouts, and issue reopening

Writing patches to fix bugs or implement new features is an important software development task, as it contributes to raise the quality of a software system. Not all patches are accepted in the first attempt, ...

Investigating probabilistic sampling approaches for large-scale surveys in software engineering

Establishing representative samples for Software Engineering surveys is still considered a challenge. Specialized literature often presents limitations on interpreting surveys’ results, mainly due to the use o...

Characterising the state of the practice in software testing through a TMMi-based process

The software testing phase, despite its importance, is usually compromised by the lack of planning and resources in industry. This can risk the quality of the derived products. The identification of mandatory ...

Self-adaptation by coordination-targeted reconfigurations

A software system is self-adaptive when it is able to dynamically and autonomously respond to changes detected either in its internal components or in its deployment environment. This response is expected to ensu...

Templates for textual use cases of software product lines: results from a systematic mapping study and a controlled experiment

Use case templates can be used to describe functional requirements of a Software Product Line. However, to the best of our knowledge, no efforts have been made to collect and summarize these existing templates...

F3T: a tool to support the F3 approach on the development and reuse of frameworks

Frameworks are used to enhance the quality of applications and the productivity of the development process, since applications may be designed and implemented by reusing framework classes. However, frameworks ...

NextBug: a Bugzilla extension for recommending similar bugs

Due to the characteristics of the maintenance process followed in open source systems, developers are usually overwhelmed with a great amount of bugs. For instance, in 2012, approximately 7,600 bugs/month were...

Assessing the benefits of search-based approaches when designing self-adaptive systems: a controlled experiment

The well-orchestrated use of distilled experience, domain-specific knowledge, and well-informed trade-off decisions is imperative if we are to design effective architectures for complex software-intensive syst...

Revealing influence of model structure and test case profile on the prioritization of test cases in the context of model-based testing

Test case prioritization techniques aim at defining an order of test cases that favor the achievement of a goal during test execution, such as revealing failures as earlier as possible. A number of techniques ...

A metrics suite for JUnit test code: a multiple case study on open source software

The code of JUnit test cases is commonly used to characterize software testing effort. Different metrics have been proposed in literature to measure various perspectives of the size of JUnit test cases. Unfort...

Designing fault-tolerant SOA based on design diversity

Over recent years, software developers have been evaluating the benefits of both Service-Oriented Architecture (SOA) and software fault tolerance techniques based on design diversity. This is achieved by creat...

Method-level code clone detection through LWH (Light Weight Hybrid) approach

Many researchers have investigated different techniques to automatically detect duplicate code in programs exceeding thousand lines of code. These techniques have limitations in finding either the structural o...

The problem of conceptualization in god class detection: agreement, strategies and decision drivers

The concept of code smells is widespread in Software Engineering. Despite the empirical studies addressing the topic, the set of context-dependent issues that impacts the human perception of what is a code sme...

  • Editorial Board
  • Sign up for article alerts and news from this journal

Thank you for visiting nature.com. You are using a browser version with limited support for CSS. To obtain the best experience, we recommend you use a more up to date browser (or turn off compatibility mode in Internet Explorer). In the meantime, to ensure continued support, we are displaying the site without styles and JavaScript.

  • View all journals
  • Explore content
  • About the journal
  • Publish with us
  • Sign up for alerts
  • CAREER Q&A
  • 31 May 2022

Why science needs more research software engineers

  • Chris Woolston 0

Chris Woolston is a freelance writer in Billings, Montana.

You can also search for this author in PubMed   Google Scholar

Paul Richmond poses for a portrait in his garden

Paul Richmond is a research software engineer in the United Kingdom. Credit: Shelley Richmond

In March 2012, a group of like-minded software developers gathered at the University of Oxford, UK, for what they called the Collaborations Workshop. They had a common vocation — building code to support scientific research — but different job titles. And they had no clear career path. The attendees coined a term to describe their line of work: research software engineer (RSE).

A decade later, RSE societies have sprung up in the United Kingdom, mainland Europe, Australia and the United States. In the United Kingdom, at least 31 universities have their own RSE groups, a sign of the growing importance of the profession, says Paul Richmond, an RSE group leader at the University of Sheffield and a past president of the country’s Society of Research Software Engineering. Nature spoke with Richmond about life as an RSE, the role of software in the research enterprise and the state of the field as it reaches its tenth anniversary.

What do RSEs do?

Fundamentally, RSEs build software to support scientific research. They generally don’t have research questions of their own — they develop the computer tools to help other people to do cool things. They might add features to existing software, clear out bugs or build something from scratch. But they don’t just sit in front of a computer and write code. They have to be good communicators who can embed themselves in a team.

What sorts of projects do they work on?

Almost every field of science runs on software, so an RSE could find themselves working on just about anything. In my career, I’ve worked on software for imaging cancer cells and modelling pedestrian traffic. As a postdoc, I worked on computational neuroscience. I don’t know very much about these particular research fields, so I work closely with the oncologists or neuroscientists or whomever to develop the software that’s needed.

Close up of multi-coloured code on a computer screen

Building code is just one part of the role of a research software engineer. Credit: Norman Posselt/Getty

Why do so many universities support their own RSE groups?

Some high-powered researchers at the top of the academic ladder can afford to hire their own RSE. That engineer might be dedicated to maintaining a single piece of software that’s been around for 10 or 20 years. But most research groups need — or can afford —an RSE only on an occasional basis. If their university has an RSE group, they can hire an in-house engineer for one day a week, or for a month at a time, or whatever they need. In that way, the RSE group is like a core facility. The university tries to ensure a steady workflow for the group, but that’s usually not a problem — there’s no shortage of projects to work on.

What else do RSEs do?

A big part of the job is raising awareness about the importance of quality software. An RSE might train a postdoc or graduate student to develop software on their own. Or they might run a seminar on good software practices. In theory, training 50 people could be more impactful than working on a single project. In practice, it’s often hard for RSEs to find the time for teaching, mentorship and advocacy because they’re so busy supporting research.

Do principal investigators (PIs) appreciate the need for RSEs?

It’s mixed. In the past, researchers weren’t always incentivized to use or create good software. But that’s changing. Many journals now require authors to publish code, and that code has to be FAIR: findable, accessible, interoperable and reproducible. That last term is very important: good software is a crucial component of research reproducibility. We explain to PIs that they need reliable code so they won’t have to retract their paper six months later.

Who should consider a career as an RSE?

Many RSEs started out as PhD students or postdocs who worked on software to support their own project. They realized that they enjoyed that part of the job more than the actual research. RSEs certainly have the skills to work in industry but they thrive in an environment of cutting-edge science in academia.

Most RSEs have a PhD — I have a PhD in computer graphics — but that’s not necessarily a requirement. Some RSEs end up on the tenure track; I was recently promoted to professor. Many others work as laboratory technicians or service staff. I would encourage any experienced developers with an interest in research to consider RSE as a career. I would also love to see more people from under-represented groups join the field. We need more diversity going forward.

What’s your advice for RSE hopefuls?

Try working on a piece of open-source software. If possible, do some training in a collaborative setting. If you have questions, talk to a working RSE. Consider joining an association. The UK Society of Research Software Engineering is always happy to advise people about getting into the field or how to stand out in a job application. People in the United States can reach out to the US Research Software Engineer Association.

research work in software engineering

NatureTech hub

If you’re a PhD student or postdoc, give yourself a challenge: try to convince your supervisors or PI that they really need to embrace good software techniques. If you can change their minds, it’s a good indication that you have the passion and drive to succeed.

What do you envision for the profession over the next 10 years?

I want to see RSEs as equals in the academic environment. Software runs through the entire research process, but professors tend to get most of the recognition and prestige. Pieces of software can have just as much impact as certain research papers, some of them much more so. If RSEs can get the recognition and rewards that they deserve, then the career path will be that much more visible and attractive.

doi: https://doi.org/10.1038/d41586-022-01516-2

Related Articles

research work in software engineering

Learn to code to boost your research career

Love science, loathe coding? Research software engineers to the rescue

What we do — and don’t — know about how misinformation spreads online

What we do — and don’t — know about how misinformation spreads online

Editorial 05 JUN 24

Meta AI system is a boost to endangered languages — as long as humans aren’t forgotten

Meta AI system is a boost to endangered languages — as long as humans aren’t forgotten

Companies inadvertently fund online misinformation despite consumer backlash

Companies inadvertently fund online misinformation despite consumer backlash

Article 05 JUN 24

AI’s keen diagnostic eye

AI’s keen diagnostic eye

Outlook 18 APR 24

So … you’ve been hacked

So … you’ve been hacked

Technology Feature 19 MAR 24

No installation required: how WebAssembly is changing scientific computing

No installation required: how WebAssembly is changing scientific computing

Technology Feature 11 MAR 24

‘I saw that discrimination wasn’t hearsay or rumours — it really did exist’

‘I saw that discrimination wasn’t hearsay or rumours — it really did exist’

Career Q&A 05 JUN 24

Need a policy for using ChatGPT in the classroom? Try asking students

Need a policy for using ChatGPT in the classroom? Try asking students

Career Column 05 JUN 24

Why China has been a growing study destination for African students

Why China has been a growing study destination for African students

Nature Index 05 JUN 24

Tenured Position in Huzhou University School of Medicine (Professor/Associate Professor/Lecturer)

※Tenured Professor/Associate Professor/Lecturer Position in Huzhou University School of Medicine

Huzhou, Zhejiang (CN)

Huzhou University

research work in software engineering

Electron Microscopy (EM) Specialist

APPLICATION CLOSING DATE: July 5th, 2024 About the Institute Human Technopole (HT) is an interdisciplinary life science research institute, created...

Human Technopole

research work in software engineering

Post-Doctoral Fellow in Chemistry and Chemical Biology

We are seeking a highly motivated, interdisciplinary scientist to investigate the host-gut microbiota interactions that are associated with driving...

Cambridge, Massachusetts

Harvard University - Department of Chemistry and Chemical Biology

Postdoc Position (f/m/d) in “Building Healthcare Resilience Against Cyber-Attacks"

Karlsruhe Institute of Technology (KIT) – The Research University in the Helmholtz Association creates and imparts knowledge for the society and th...

76344, Eggenstein-Leopoldshafen (DE)

Karlsruher Institut für Technologie (KIT) Campus Nord

research work in software engineering

Research assistant (Praedoc) (m/f/d) - Department of Biology, Chemistry, Pharmacy

Department of Biology, Chemistry, Pharmacy - Institute of Chemistry and Biochemistry AG Absmeier   Research assistant (Praedoc) (m/f/d) with 65%-pa...

14195, Berlin (DE)

Freie Universität Berlin

research work in software engineering

Sign up for the Nature Briefing newsletter — what matters in science, free to your inbox daily.

Quick links

  • Explore articles by subject
  • Guide to authors
  • Editorial policies

Software engineering and programming languages

Software engineering and programming language researchers at Google study all aspects of the software development process, from the engineers who make software to the languages and tools that they use.

About the team

We are a collection of teams from across the company who study the problems faced by engineers and invent new technologies to solve those problems. Our teams take a variety of approaches to solve these problems, including empirical methods, interviews, surveys, innovative tools, formal models, predictive machine learning modeling, data science, experiments, and mixed-methods research techniques. As our engineers work within the largest code repository in the world, the solutions need to work at scale, across a team of global engineers and over 2 billion lines of code.

We aim to make an impact internally on Google engineers and externally on the larger ecosystem of software engineers around the world.

Team focus summaries

Developer tools.

Google provides its engineers’ with cutting edge developer tools that operate on codebase with billions of lines of code. The tools are designed to provide engineers with a consistent view of the codebase so they can navigate and edit any project. We research and create new, unique developer tools that allow us to get the benefits of such a large codebase, while still retaining a fast development velocity.

Developer Inclusion and Diversity

We aim to understand diversity and inclusion challenges facing software developers and evaluate interventions that move the needle on creating an inclusive and equitable culture for all.

Developer Productivity

We use both qualitative and quantitative methods to study how to make engineers more productive. Google uses the results of these studies to improve both our internal developer tools and processes and our external offerings for developers on GCP and Android.

Program Analysis and Refactoring

We build static and dynamic analysis tools that find and prevent serious bugs from manifesting in both Google’s and third-party code. We also leverage this large-scale analysis infrastructure to refactor Google’s code at scale.

Machine Learning for Code

We apply deep learning to Google’s large, well-curated codebase to automatically write code and repair bugs.

Programming Language Design and Implementation

We design, evaluate, and implement new features for popular programming languages like Java, C++, and Go through their standards’ processes.

Automated Software Testing and Continuous Integration

We design, implement and evaluate tools and frameworks to automate the testing process and integrate tests with the Google-wide continuous integration infrastructure.

Featured publications

Highlighted work.

ES flamingo

Some of our locations

Atlanta

Some of our people

Andrew Macvean

Andrew Macvean

  • Human-Computer Interaction and Visualization
  • Software Systems

Caitlin Sadowski

Caitlin Sadowski

  • Data Management
  • Software Engineering

Charles Sutton

Charles Sutton

  • Machine Intelligence
  • Natural Language Processing

Ciera Jaspan

Ciera Jaspan

Domagoj Babic

Domagoj Babic

  • Algorithms and Theory
  • Distributed Systems and Parallel Computing

Emerson Murphy-Hill

Emerson Murphy-Hill

Franjo Ivancic

Franjo Ivancic

  • Security, Privacy and Abuse Prevention

John Penix

Kathryn S. McKinley

  • Hardware and Architecture

Marko Ivanković

Marko Ivanković

Martín Abadi

Martín Abadi

Hans-Juergen Boehm

Hans-Juergen Boehm

Hyrum Wright

Hyrum Wright

Lisa Nguyen Quang Do

Lisa Nguyen Quang Do

John Field

Danny Tarlow

Petros Maniatis

Petros Maniatis

  • Mobile Systems

Albert Cohen

Albert Cohen

research work in software engineering

Kaiyuan Wang

Dustin C Smith

Dustin C Smith

Harini Sampath

Phitchaya Mangpo

Phitchaya Mangpo

We're always looking for more talented, passionate people.

Careers

Society of Research Software Engineering

Society of Research Software Engineering

RSECon is returning to Newcastle in September 2024

A professional society for Research Software Engineering - accepting members now

Are you a Research Software Engineer?

A Research Software Engineer combines professional software engineering expertise with an intimate understanding of research

Join the Society of Research Software Engineering

The Society of Research Software Engineering was founded on the belief that a world which relies on software must recognise the people who develop it. Our mission is to establish a research environment that recognises the vital role of software in research. We work to increase software skills across everyone in research, to promote collaboration between researchers and software experts, and to support the creation of an academic career path for Research Software Engineers.

Our events help RSEs learn skills with new technologies, and techniques for managing projects and building careers.

The RSE community has grown rapidly across the UK and around the world.

The society advocates changes that will advance research by improving the software it relies on.

Resources that describe what it's like to work as an RSE and current RSE vacancies.

The society creates or collates resources for helping with advocacy or career advancement activities.

Announcements

News on the Society's activities and the activities of its members.

Past Events

research work in software engineering

Contact information for all of the RSE groups in the UK.

RSE Fellows

Background on the 2016 and 2018 EPSRC RSE Fellows.

Regional Groups

All of the regional groups and meetups for RSE activities.

To advance the RSE role as a viable long-term career path within research institutions.

Communication

To highlight the important role RSEs play in delivering research results.

To champion the difference RSEs can make to a grant, and encourage funders to value this role in their calls.

Vacancies

Current RSE job openings

Current RSE job opportunities around the world.

RSE Journeys

RSE Journeys

Examples of rse careers.

RSEs from different backgrounds talk about their roles and how they got there.

Hiring

Resources for hiring RSEs

Help with writing job descriptions and adverts to attract RSEs.

Latest News

June 2024 newsletter.

  • 5 June 2024

Society AGM 2023 report

An update on the selection of programme chairs for future rse conferences.

U.S. flag

An official website of the United States government

The .gov means it’s official. Federal government websites often end in .gov or .mil. Before sharing sensitive information, make sure you’re on a federal government site.

The site is secure. The https:// ensures that you are connecting to the official website and that any information you provide is encrypted and transmitted securely.

  • Publications
  • Account settings

Preview improvements coming to the PMC website in October 2024. Learn More or Try it out now .

  • Advanced Search
  • Journal List
  • Gigascience

Ten recommendations for software engineering in research

Janna hastings.

Cheminformatics and Metabolism, European Molecular Biology Laboratory – European Bioinformatics Institute, Wellcome Trust Genome Campus, CB10 1SD Hinxton, UK

Kenneth Haug

Christoph steinbeck.

Research in the context of data-driven science requires a backbone of well-written software, but scientific researchers are typically not trained at length in software engineering, the principles for creating better software products. To address this gap, in particular for young researchers new to programming, we give ten recommendations to ensure the usability, sustainability and practicality of research software.

Scientific research increasingly harnesses computing as a platform [ 1 ], and the size, complexity, diversity and relatively high availability of research datasets in a variety of formats is a strong driver to deliver well-designed, efficient and maintainable software and tools. As the frontier of science evolves, new tools constantly need to be written; however scientists, in particular early-career researchers, might not have received training in software engineering [ 2 ], thus their code is in jeopardy of being difficult and costly to maintain and re-use.

To address this gap, we have compiled ten brief software engineering recommendations.

Recommendations

Keep it simple.

Every software project starts somewhere. A rule of thumb is to start as simply as you possibly can . Significantly more problems are created by over-engineering than under-engineering. Simplicity starts with design: a clean and elegant data model is a kind of simplicity that leads naturally to efficient algorithms.

Do the simplest thing that could possibly work, and then double-check it really does work.

Test, test, test

For objectivity, large software development efforts assign different people to test software than those who develop it. This is a luxury not available in most research labs, but there are robust testing strategies available to even the smallest project.

Unit tests are software tests which are executed automatically on a regular basis. In test driven development, the tests are written first, serving as a specification and checking every aspect of the intended functionality as it is developed [ 3 ]. One must make sure that unit tests exhaustively simulate all possible – not only that which seems reasonable – inputs to each method.

Do not repeat yourself

Do not be tempted to use the copy-paste-modify coding technique when you encounter similar requirements. Even though this seems to be the simplest approach, it will not remain simple, because important lines of code will end up duplicated. When making changes, you will have to do them twice, taking twice as long, and you may forget an obscure place to which you copied that code, leaving a bug.

Automated tools, such as Simian [ 4 ], can help to detect and fix duplication in existing codebases. To fix duplications or bugs, consider writing a library with methods that can be called when needed.

Use a modular design

Modules act as building blocks that can be glued together to achieve overall system functionality. They hide the details of their implementation behind a public interface, which provides all the methods that should be used. Users should code – and test – to the interface rather than the implementation [ 5 ]. Thus, concrete implementation details can change without impacting downstream users of the module. Application programming interfaces (APIs) can be shared between different implementation providers.

Scrutinise modules and libraries that already exist for the functionality you need. Do not rewrite what you can profitably re-use – and do not be put off if the best candidate third-party library contains more functionality than you need (now).

Involve your users

Users know what they need software to do. Let them try the software as early as possible, and make it easy for them to give feedback, via a mailing list or an issue tracker. In an open source software development paradigm, your users can become co-developers. In closed-source and commercial paradigms, you can offer early-access beta releases to a trusted group.

Many sophisticated methods have been developed for user experience analysis. For example, you could hold an interactive workshop [ 6 ].

Resist gold plating

Sometimes, users ask for too much, leading to feature creep or “gold plating”. Learn to tell the difference between essential features and the long list of wishes users may have. Prioritise aggressively with as broad a collection of stakeholders as possible, perhaps using “game-storming” techniques [ 7 ].

Gold plating is a challenge in all phases of development, not only in the early stages of requirements analysis. In its most mischievous disguise, just a little something is added in every iterative project meeting. Those little somethings add up.

Document everything

Comprehensive documentation helps other developers who may take over your code, and will also help you in the future. Use code comments for in-line documentation, especially for any technically challenging blocks, and public interface methods. However, there is no need for comments that mirror the exact detail of code line-by-line.

It is better to have two or three lines of code that are easy to understand than to have one incomprehensible line, for example see Figure ​ Figure1 1 .

An external file that holds a picture, illustration, etc.
Object name is 13742_2014_62_Fig1_HTML.jpg

An example of incomprehensible code: What does this code actually do? It contains a bug; is it easy to spot?

Write clean code [ 8 ] that you would want to maintain long-term (Figure ​ (Figure2). 2 ). Meaningful, readable variable and method names are a form of documentation.

An external file that holds a picture, illustration, etc.
Object name is 13742_2014_62_Fig2_HTML.jpg

This code peforms the same function, but is written more clearly.

Write an easily accessible module guide for each module, explaining the higher level view: what is the purpose of this module? How does it fit together with other modules? How does one get started using it?

Avoid spaghetti

Since GOTO-like commands fell justifiably out of favour several decades ago [ 9 ], you might believe that spaghetti code is a thing of the past. However, a similar phenomenon may be observed in inter-method and inter-module relationships (see Figures ​ Figures3 3 and ​ and4). 4 ). Debugging – stepping through your code as it executes line by line – can help you diagnose modern-day spaghetti code. Beware of module designs where for every unit of functionality you have to step through several different modules to discover where the error is, and along the way you have long lost the record of what the original method was actually doing or what the erroneous input was. The use of effective and granular logging is another way to trace and diagnose problems with the flow through code modules.

An external file that holds a picture, illustration, etc.
Object name is 13742_2014_62_Fig3_HTML.jpg

An unhealthy module design for ‘biotool‘ with multiple interdependencies between different packages. An addition of functionality to the system (such as supporting a new field) requires updating the software in many different places. Refactoring into a simpler architecture would improve maintainability.

An external file that holds a picture, illustration, etc.
Object name is 13742_2014_62_Fig4_HTML.jpg

The functional units from the biotool architecture can be grouped together in a refactoring process, putting similar functions together. The result may resemble a Model-View-Controller architecture.

Optimise last

Beware of optimising too early. Although research applications are often performance-critical, until you truly encounter the wide range of inputs that your software will eventually run against in the production environment, it may not be possible to anticipate where the real bottlenecks will lie. Develop the correct functionality first, deploy it and then continuously improve it using repeated evaluation of the system running time as a guide (while your unit tests keep checking that the system is doing what it should).

Evolution, not revolution

Maintenance becomes harder as a system gets older. Take time on a regular basis to revisit the codebase, and consider whether it can be renovated and improved [ 10 ]. However, the urge to rewrite an entire system from the beginning should be avoided, unless it is really the only option or the system is very small. Be pragmatic [ 11 ] – you may never finish the rewrite [ 12 ]. This is especially true for systems that were written without following the preceding recommendations.

Use a good version control system (e.g., Git [ 13 ]) and a central repository (e.g., GitHub [ 14 ]). In general, commit early and commit often, and not only when refactoring.

Effective software engineering is a challenge in any enterprise, but may be even more so in the research context. Among other reasons, the research context can encourage a rapid turnover of staff, with the result that knowledge about legacy systems is lost. There can be a shortage of software engineering-specific training, and the “publish or perish” culture may incentivise taking shortcuts.

The recommendations above give a brief introduction to established best practices in software engineering that may serve as a useful reference. Some of these recommendations may be debated in some contexts, but nevertheless are important to understand and master. To learn more, Table ​ Table1 1 lists some additional online and educational resources.

Further reading

This table lists additional online resources where the interested reader can learn more about software engineering best practices in the research context.

Acknowledgements

This commentary is based on a presentation given by JH at a workshop on Software Engineering held at the 2014 annual Metabolomics conference in Tsuruoka, Japan. The authors would like to thank Saravanan Dayalan for organising the workshop and giving JH the opportunity to present. We would furthermore like to thank Robert P. Davey and Chris Mungall for their careful and helpful reviews of an earlier version of this manuscript.

Competing interests

The authors declare that they have no competing interests.

Authors’ contributions

JH prepared the initial draft. All authors contributed to, and have read and approved, the final version.

Contributor Information

Janna Hastings, Email: ku.ca.ibe@sgnitsah .

Kenneth Haug, Email: ku.ca.ibe@htennek .

Christoph Steinbeck, Email: ku.ca.ibe@kcebniets .

software engineering Recently Published Documents

Total documents.

  • Latest Documents
  • Most Cited Documents
  • Contributed Authors
  • Related Sources
  • Related Keywords

Identifying Non-Technical Skill Gaps in Software Engineering Education: What Experts Expect But Students Don’t Learn

As the importance of non-technical skills in the software engineering industry increases, the skill sets of graduates match less and less with industry expectations. A growing body of research exists that attempts to identify this skill gap. However, only few so far explicitly compare opinions of the industry with what is currently being taught in academia. By aggregating data from three previous works, we identify the three biggest non-technical skill gaps between industry and academia for the field of software engineering: devoting oneself to continuous learning , being creative by approaching a problem from different angles , and thinking in a solution-oriented way by favoring outcome over ego . Eight follow-up interviews were conducted to further explore how the industry perceives these skill gaps, yielding 26 sub-themes grouped into six bigger themes: stimulating continuous learning , stimulating creativity , creative techniques , addressing the gap in education , skill requirements in industry , and the industry selection process . With this work, we hope to inspire educators to give the necessary attention to the uncovered skills, further mitigating the gap between the industry and the academic world.

Opportunities and Challenges in Code Search Tools

Code search is a core software engineering task. Effective code search tools can help developers substantially improve their software development efficiency and effectiveness. In recent years, many code search studies have leveraged different techniques, such as deep learning and information retrieval approaches, to retrieve expected code from a large-scale codebase. However, there is a lack of a comprehensive comparative summary of existing code search approaches. To understand the research trends in existing code search studies, we systematically reviewed 81 relevant studies. We investigated the publication trends of code search studies, analyzed key components, such as codebase, query, and modeling technique used to build code search tools, and classified existing tools into focusing on supporting seven different search tasks. Based on our findings, we identified a set of outstanding challenges in existing studies and a research roadmap for future code search research.

Psychometrics in Behavioral Software Engineering: A Methodological Introduction with Guidelines

A meaningful and deep understanding of the human aspects of software engineering (SE) requires psychological constructs to be considered. Psychology theory can facilitate the systematic and sound development as well as the adoption of instruments (e.g., psychological tests, questionnaires) to assess these constructs. In particular, to ensure high quality, the psychometric properties of instruments need evaluation. In this article, we provide an introduction to psychometric theory for the evaluation of measurement instruments for SE researchers. We present guidelines that enable using existing instruments and developing new ones adequately. We conducted a comprehensive review of the psychology literature framed by the Standards for Educational and Psychological Testing. We detail activities used when operationalizing new psychological constructs, such as item pooling, item review, pilot testing, item analysis, factor analysis, statistical property of items, reliability, validity, and fairness in testing and test bias. We provide an openly available example of a psychometric evaluation based on our guideline. We hope to encourage a culture change in SE research towards the adoption of established methods from psychology. To improve the quality of behavioral research in SE, studies focusing on introducing, validating, and then using psychometric instruments need to be more common.

Towards an Anatomy of Software Craftsmanship

Context: The concept of software craftsmanship has early roots in computing, and in 2009, the Manifesto for Software Craftsmanship was formulated as a reaction to how the Agile methods were practiced and taught. But software craftsmanship has seldom been studied from a software engineering perspective. Objective: The objective of this article is to systematize an anatomy of software craftsmanship through literature studies and a longitudinal case study. Method: We performed a snowballing literature review based on an initial set of nine papers, resulting in 18 papers and 11 books. We also performed a case study following seven years of software development of a product for the financial market, eliciting qualitative, and quantitative results. We used thematic coding to synthesize the results into categories. Results: The resulting anatomy is centered around four themes, containing 17 principles and 47 hierarchical practices connected to the principles. We present the identified practices based on the experiences gathered from the case study, triangulating with the literature results. Conclusion: We provide our systematically derived anatomy of software craftsmanship with the goal of inspiring more research into the principles and practices of software craftsmanship and how these relate to other principles within software engineering in general.

On the Reproducibility and Replicability of Deep Learning in Software Engineering

Context: Deep learning (DL) techniques have gained significant popularity among software engineering (SE) researchers in recent years. This is because they can often solve many SE challenges without enormous manual feature engineering effort and complex domain knowledge. Objective: Although many DL studies have reported substantial advantages over other state-of-the-art models on effectiveness, they often ignore two factors: (1) reproducibility —whether the reported experimental results can be obtained by other researchers using authors’ artifacts (i.e., source code and datasets) with the same experimental setup; and (2) replicability —whether the reported experimental result can be obtained by other researchers using their re-implemented artifacts with a different experimental setup. We observed that DL studies commonly overlook these two factors and declare them as minor threats or leave them for future work. This is mainly due to high model complexity with many manually set parameters and the time-consuming optimization process, unlike classical supervised machine learning (ML) methods (e.g., random forest). This study aims to investigate the urgency and importance of reproducibility and replicability for DL studies on SE tasks. Method: In this study, we conducted a literature review on 147 DL studies recently published in 20 SE venues and 20 AI (Artificial Intelligence) venues to investigate these issues. We also re-ran four representative DL models in SE to investigate important factors that may strongly affect the reproducibility and replicability of a study. Results: Our statistics show the urgency of investigating these two factors in SE, where only 10.2% of the studies investigate any research question to show that their models can address at least one issue of replicability and/or reproducibility. More than 62.6% of the studies do not even share high-quality source code or complete data to support the reproducibility of their complex models. Meanwhile, our experimental results show the importance of reproducibility and replicability, where the reported performance of a DL model could not be reproduced for an unstable optimization process. Replicability could be substantially compromised if the model training is not convergent, or if performance is sensitive to the size of vocabulary and testing data. Conclusion: It is urgent for the SE community to provide a long-lasting link to a high-quality reproduction package, enhance DL-based solution stability and convergence, and avoid performance sensitivity on different sampled data.

Predictive Software Engineering: Transform Custom Software Development into Effective Business Solutions

The paper examines the principles of the Predictive Software Engineering (PSE) framework. The authors examine how PSE enables custom software development companies to offer transparent services and products while staying within the intended budget and a guaranteed budget. The paper will cover all 7 principles of PSE: (1) Meaningful Customer Care, (2) Transparent End-to-End Control, (3) Proven Productivity, (4) Efficient Distributed Teams, (5) Disciplined Agile Delivery Process, (6) Measurable Quality Management and Technical Debt Reduction, and (7) Sound Human Development.

Software—A New Open Access Journal on Software Engineering

Software (ISSN: 2674-113X) [...]

Improving bioinformatics software quality through incorporation of software engineering practices

Background Bioinformatics software is developed for collecting, analyzing, integrating, and interpreting life science datasets that are often enormous. Bioinformatics engineers often lack the software engineering skills necessary for developing robust, maintainable, reusable software. This study presents review and discussion of the findings and efforts made to improve the quality of bioinformatics software. Methodology A systematic review was conducted of related literature that identifies core software engineering concepts for improving bioinformatics software development: requirements gathering, documentation, testing, and integration. The findings are presented with the aim of illuminating trends within the research that could lead to viable solutions to the struggles faced by bioinformatics engineers when developing scientific software. Results The findings suggest that bioinformatics engineers could significantly benefit from the incorporation of software engineering principles into their development efforts. This leads to suggestion of both cultural changes within bioinformatics research communities as well as adoption of software engineering disciplines into the formal education of bioinformatics engineers. Open management of scientific bioinformatics development projects can result in improved software quality through collaboration amongst both bioinformatics engineers and software engineers. Conclusions While strides have been made both in identification and solution of issues of particular import to bioinformatics software development, there is still room for improvement in terms of shifts in both the formal education of bioinformatics engineers as well as the culture and approaches of managing scientific bioinformatics research and development efforts.

Inter-team communication in large-scale co-located software engineering: a case study

AbstractLarge-scale software engineering is a collaborative effort where teams need to communicate to develop software products. Managers face the challenge of how to organise work to facilitate necessary communication between teams and individuals. This includes a range of decisions from distributing work over teams located in multiple buildings and sites, through work processes and tools for coordinating work, to softer issues including ensuring well-functioning teams. In this case study, we focus on inter-team communication by considering geographical, cognitive and psychological distances between teams, and factors and strategies that can affect this communication. Data was collected for ten test teams within a large development organisation, in two main phases: (1) measuring cognitive and psychological distance between teams using interactive posters, and (2) five focus group sessions where the obtained distance measurements were discussed. We present ten factors and five strategies, and how these relate to inter-team communication. We see three types of arenas that facilitate inter-team communication, namely physical, virtual and organisational arenas. Our findings can support managers in assessing and improving communication within large development organisations. In addition, the findings can provide insights into factors that may explain the challenges of scaling development organisations, in particular agile organisations that place a large emphasis on direct communication over written documentation.

Aligning Software Engineering and Artificial Intelligence With Transdisciplinary

Study examined AI and SE transdisciplinarity to find ways of aligning them to enable development of AI-SE transdisciplinary theory. Literature review and analysis method was used. The findings are AI and SE transdisciplinarity is tacit with islands within and between them that can be linked to accelerate their transdisciplinary orientation by codification, internally developing and externally borrowing and adapting transdisciplinary theories. Lack of theory has been identified as the major barrier toward towards maturing the two disciplines as engineering disciplines. Creating AI and SE transdisciplinary theory would contribute to maturing AI and SE engineering disciplines.  Implications of study are transdisciplinary theory can support mode 2 and 3 AI and SE innovations; provide an alternative for maturing two disciplines as engineering disciplines. Study’s originality it’s first in SE, AI or their intersections.

Export Citation Format

Share document.

  • Publications
  • News and Events
  • Education and Outreach

Software Engineering Institute

Cite this post.

AMS Citation

Carleton, A., 2021: Architecting the Future of Software Engineering: A Research and Development Roadmap. Carnegie Mellon University, Software Engineering Institute's Insights (blog), Accessed June 5, 2024, https://insights.sei.cmu.edu/blog/architecting-the-future-of-software-engineering-a-research-and-development-roadmap/.

APA Citation

Carleton, A. (2021, July 12). Architecting the Future of Software Engineering: A Research and Development Roadmap. Retrieved June 5, 2024, from https://insights.sei.cmu.edu/blog/architecting-the-future-of-software-engineering-a-research-and-development-roadmap/.

Chicago Citation

Carleton, Anita. "Architecting the Future of Software Engineering: A Research and Development Roadmap." Carnegie Mellon University, Software Engineering Institute's Insights (blog) . Carnegie Mellon's Software Engineering Institute, July 12, 2021. https://insights.sei.cmu.edu/blog/architecting-the-future-of-software-engineering-a-research-and-development-roadmap/.

IEEE Citation

A. Carleton, "Architecting the Future of Software Engineering: A Research and Development Roadmap," Carnegie Mellon University, Software Engineering Institute's Insights (blog) . Carnegie Mellon's Software Engineering Institute, 12-Jul-2021 [Online]. Available: https://insights.sei.cmu.edu/blog/architecting-the-future-of-software-engineering-a-research-and-development-roadmap/. [Accessed: 5-Jun-2024].

BibTeX Code

@misc{carleton_2021, author={Carleton, Anita}, title={Architecting the Future of Software Engineering: A Research and Development Roadmap}, month={Jul}, year={2021}, howpublished={Carnegie Mellon University, Software Engineering Institute's Insights (blog)}, url={https://insights.sei.cmu.edu/blog/architecting-the-future-of-software-engineering-a-research-and-development-roadmap/}, note={Accessed: 2024-Jun-5} }

Architecting the Future of Software Engineering: A Research and Development Roadmap

Headshot of Anita Carleton.

Anita Carleton

July 12, 2021, published in.

Software Engineering Research and Development

This post has been shared 10 times.

This post is coauthored by John Robert, Mark Klein, Doug Schmidt, Forrest Shull, John Foreman, Ipek Ozkaya, Robert Cunningham, Charlie Holland, Erin Harper, and Edward Desautels

Software is vital to our country’s global competitiveness, innovation, and national security. It also ensures our modern standard of living and enables continued advances in defense, infrastructure, healthcare, commerce, education, and entertainment. As the DoD’s federally funded research and development center (FFRDC) focused on improving the practice of software engineering, the Carnegie Mellon University (CMU) Software Engineering Institute (SEI) is leading the community in creating a multi-year research and development vision and roadmap for engineering next-generation software-reliant systems. This blog post describes that effort.

Software Engineering as Strategic Advantage

In a 2020 National Academy of Science Study on Air Force software sustainment , the U.S. Air Force recognized that “to continue to be a world-class fighting force, it needs to be a world-class software developer.” This concept clearly applies far beyond the Department of Defense . Software systems enable world-class healthcare, commerce, education, energy generation, and more. These systems that run our world are rapidly becoming more data intensive and interconnected, increasingly utilize AI, require larger-scale integration, and must be considerably more resilient. Consequently, significant investment in software engineering R&D is needed now to enable and ensure future capability.

Goals of This Work

The SEI has leveraged its connections with academic institutions and communities, DoD leaders and members of the Defense Industrial Base , and industry innovators and research organizations to:

  • identify future challenges in engineering software-reliant and intelligent systems in emerging, national-priority technical domains, including gaps between current engineering techniques and future domains that will be more reliant on continuous evolution and AI
  • develop a research roadmap that will drive advances in foundational software engineering principles across a range of system types, such as intelligent, safety-critical, and data-intensive systems
  • raise the visibility of software to the point where it receives the sustained recognition commensurate with its importance to national security and competitiveness
  • enable strategic partnerships and collaborations to drive innovation among industry, academia, and government.

Guided by an Advisory Board of U.S. Visionaries and Senior Thought Leaders

To succeed in developing our vision and roadmap for software engineering research and development, it is vital to coordinate the academic, defense, and commercial communities to define an effective agenda and implement impactful results. To help represent the views of all these software engineering constituencies, the SEI formed an advisory board from DoD, industry, academia, research labs, and technology companies to offer guidance. Members of this advisory board include the following:

  • Deb Frincke , advisory board chair, Associate Laboratory Director for National Security Sciences, Oak Ridge National Laboratory
  • Michael McQuade , vice president for research, Carnegie Mellon University
  • Vint Cerf , vice president and chief internet evangelist, Google
  • Penny Compton , vice president for software systems, cyber, and operations, Lockheed Martin Space
  • Tim Dare , deputy director for prototyping and software, Office of the Under Secretary of Defense for Research and Engineering (previous position)
  • Sara Manning Dawson , chief technology officer enterprise security, Microsoft
  • Jeff Dexter , senior director of flight software & cybersecurity, SPACEX
  • Yolanda Gil, president, Association for the Advancement of Artificial Intelligence (AAAI); Director of Knowledge Technologies, Information Sciences Institute at University of Southern California
  • Tim McBride , president, Zoic Studios
  • Nancy Pendleton , vice president and senior chief engineer for mission systems, payloads and sensors, Boeing Defense, Space and Security
  • William Scherlis , director Information Innovation Office, DARPA

In June 2020, the SEI assembled this board to leverage their diverse perspectives and provide strategic advice, influence stakeholders, develop connections, assist in executing the roadmap, and advocate for the use of our results.

Future Systems and Fundamental Shifts in Software Engineering Require New Research Focus

Rapidly deploying software with confidence requires fundamental shifts in software engineering. New types of systems will continue to push beyond the bounds of what current software engineering theories, tools, and practices can support, including (but not limited to):

  • Systems that fuse data at a huge scale, whether for news, entertainment, or intelligence: We will need to continuously mine vast amounts of open-source data streams (e.g., YouTube videos and Twitter feeds) for important information that will in turn drive decision making. This vast stream of data will also drive new ways of constructing systems.
  • Smart cities, buildings, roads, cars, and transport: How will these highly connected systems work together seamlessly? How will we enable safe and affordable transportation and living?
  • Personal digital assistants: How will these assistants learn, adapt, and engage in home and business workflows?
  • Dynamically integrated healthcare: Data from your personal device will be combined with hospital data. How do we meet stringent safety and privacy requirements? How do we evaluate assurance in a highly data-driven environment?
  • Mission-level adaptation for DoD systems: DoD systems will feature mission-level construction of new integrated systems that combine a range of capabilities, such as intel, weapons, and human/machine teaming. The DoD is already moving in this direction, but how can we increase confidence that there will be no unintended consequences?

A Guiding Vision of the Future of Software Engineering

Our guiding vision is one in which the current notion of software development is replaced by the concept of a software pipeline consisting of humans and software as trustworthy collaborators who rapidly evolve systems based on user intent. To achieve this vision, we anticipate the need for not only new development paradigms but also new architectural paradigms for engineering new kinds of systems.

Advanced development paradigms, such as those listed below, lead to efficiency and trust at scale:

  • Humans leverage trusted AI as a workforce multiplier for all aspects of software creation.
  • Formal assurance arguments are evolved to assure and efficiently re-assure continuously evolving software.
  • Advanced software composition mechanisms enable predictable construction of systems at increasingly large scale.

Advanced architectural paradigms, as outlined below, enable the predictable use of new computational models:

  • Theories and techniques drawn from the behavioral sciences are used to design large-scale socio-technical systems, leading to predictable social outcomes.
  • New analysis and design methods facilitate the development of quantum-enabled systems.

AI and non-AI components interact in predictable ways to achieve enhanced mission, societal, and business goals.

Research Focus Areas

The fundamental shifts and needed advances in software engineering described above require new areas of research. In close collaboration with our advisory board and other leaders in the software engineering community, we have developed a research roadmap with six focus areas. Figure 1 shows those areas and outlines a suggested course of research topics to undertake. Short descriptions of each focus area and its challenges follow.

Figure 1: Software Engineering Research Roadmap with Research Focus Areas and Research Objectives (10-15 Year Horizon)

  • AI-Augmented Software Development . At almost every stage of the software development process, AI holds the promise of assisting humans. By relieving humans of tedious tasks, they will be better able to focus on tasks that require the creativity and innovation that only humans can provide. To reach this goal, we need to re-envision the entire software development process with increased AI and automation tool support for developers, and we need to ensure we take advantage of the data generated throughout the entire lifecycle. The focus of this research area is on what AI-augmented software development will look like at each stage of the development process and during continuous evolution, where it will be particularly useful in taking on routine tasks.
  • Assuring Continuously Evolving Systems . When we consider the software-reliant systems of today, we see that they are not static (or even infrequently updated) engineering artifacts. Instead, they are fluid—meaning that they are expected to undergo continuing updates and improvements throughout their lifespan. The goal of this research area is therefore to develop a theory and practice of rapid and assured software evolution that enables efficient and bounded re-assurance of continuously evolving systems.
  • Software Construction through Compositional Correctness . As the scope and scale of software-reliant systems continues to grow and change continuously, the complexity of these systems makes it unrealistic for any one person or group to understand the entire system. It is therefore necessary to integrate (and continually re-integrate) software-reliant systems using technologies and platforms that support the composition of modular components, many of which are reused from existing elements that were not designed to be integrated or evolved together. The goal of this research area is to create methods and tools (such as domain specific modeling language and annotation-based dependency injection) that enable the specification and enforcement of composition rules that allow (1) the creation of required behaviors (both functionality and quality attributes) and (2) the assurance of these behaviors.
  • Engineering Socio-Technical Systems . Societal-scale software systems, such as today’s commercial social media systems, are designed to keep users engaged to influence them. However, avoiding bias and ensuring the accuracy of information are not always goals or outcomes of these systems. Engineering societal-scale systems focuses on prediction of such outcomes (which we refer to as socially inspired quality attributes) that arise when we humans as integral components of the system. The goal is to leverage insights from the social sciences to build and evolve societal-scale software systems that consider qualities such as bias and influence.
  • Engineering AI-enabled Software Systems . AI-enabled systems, which are software-reliant systems that include AI and non-AI components, have some inherently different characteristics than those without AI. However, AI-enabled systems are, above all, a type of software system. These systems have many parallels with the development and sustainment of more conventional software-reliant systems. This research area focuses on exploring which existing software engineering practices can reliably support the development of AI systems, as well as identifying and augmenting software engineering techniques for the specification, design, architecture, analysis, deployment, and sustainment of systems with AI components.
  • Engineering Quantum Computing Systems . Advances in software engineering for quantum are as important as the hardware advances. The goals of this research area are to first enable current quantum computers so they can be programmed more easily and reliably, and then enable increasing abstraction as larger, fully fault-tolerant quantum computing systems become available. Eventually, it should be possible fully integrate these types of systems into a unified classical and quantum software development lifecycle.

Help Shape Our National Software Research Agenda

Along with the advisory board, our research team has examined future trends in the computing landscape and emerging technologies; conducted a series of expert interviews; and convened multiple workshops for broad engagement and diverse perspectives, including a workshop on Software Engineering Grand Challenges and Future Visions co-hosted with the Defense Advanced Research Projects Agency (DARPA) . This workshop brought together leaders in the software engineering research and development community to describe (1) important classes of future software-reliant systems and their associated software engineering challenges, and (2) research methods, tools, and practices that are needed to make those systems feasible. An upcoming SEI blog post will provide a synopsis of what was covered in this workshop.

Your feedback would be appreciated on the software engineering challenges and proposed research focus areas to help inform the National Agenda for Software Engineering Study. Please email [email protected] to send your thoughts and comments on the software engineering study & research roadmap or to volunteer as a potential reviewer of study drafts. Thank you.

Headshot of Anita Carleton.

Author Page

Digital library publications, send a message, more by the author, application of large language models (llms) in software engineering: overblown hype or disruptive change, october 2, 2023 • by ipek ozkaya , anita carleton , john e. robert , douglas schmidt (vanderbilt university), join the sei and white house ostp to explore the future of software and ai engineering, may 30, 2023 • by anita carleton , john e. robert , mark h. klein , douglas schmidt (vanderbilt university) , erin harper, software engineering as a strategic advantage: a national roadmap for the future, november 15, 2021 • by anita carleton , john e. robert , mark h. klein , erin harper, more in software engineering research and development, the latest work from the sei: an openai collaboration, generative ai, and zero trust, april 10, 2024 • by douglas schmidt (vanderbilt university), applying the sei sbom framework, february 5, 2024 • by carol woody, 10 benefits and 10 challenges of applying large language models to dod software acquisition, january 22, 2024 • by john e. robert , douglas schmidt (vanderbilt university), the latest work from the sei, january 15, 2024 • by douglas schmidt (vanderbilt university), the top 10 blog posts of 2023, january 8, 2024 • by douglas schmidt (vanderbilt university), get updates on our latest work..

Sign up to have the latest post sent to your inbox weekly.

Each week, our researchers write about the latest in software engineering, cybersecurity and artificial intelligence. Sign up to get the latest post sent to your inbox the day it's published.

Software Engineering’s Top Topics, Trends, and Researchers

Ieee account.

  • Change Username/Password
  • Update Address

Purchase Details

  • Payment Options
  • Order History
  • View Purchased Documents

Profile Information

  • Communications Preferences
  • Profession and Education
  • Technical Interests
  • US & Canada: +1 800 678 4333
  • Worldwide: +1 732 981 0060
  • Contact & Support
  • About IEEE Xplore
  • Accessibility
  • Terms of Use
  • Nondiscrimination Policy
  • Privacy & Opting Out of Cookies

A not-for-profit organization, IEEE is the world's largest technical professional organization dedicated to advancing technology for the benefit of humanity. © Copyright 2024 IEEE - All rights reserved. Use of this web site signifies your agreement to the terms and conditions.

banner-in1

  • Programming

Top 10 Software Engineer Research Topics for 2024

Home Blog Programming Top 10 Software Engineer Research Topics for 2024

Play icon

Software engineering, in general, is a dynamic and rapidly changing field that demands a thorough understanding of concepts related to programming, computer science, and mathematics. As software systems become more complicated in the future, software developers must stay updated on industry innovations and the latest trends. Working on software engineering research topics is an important part of staying relevant in the field of software engineering. 

Software engineers can do research to learn about new technologies, approaches, and strategies for developing and maintaining complex software systems. Software engineers can conduct research on a wide range of topics. Software engineering research is also vital for increasing the functionality, security, and dependability of software systems. Going for the Top Programming Certification course contributes to the advancement of the field's state of the art and assures that software engineers can continue to build high-quality, effective software systems.

What are Software Engineer Research Topics?

Software engineer research topics are areas of exploration and study in the rapidly evolving field of software engineering. These research topics include various software development approaches, quality of software, testing of software, maintenance of software, security measures for software, machine learning models in software engineering, DevOps, and architecture of software. Each of these software engineer research topics has distinct problems and opportunities for software engineers to investigate and make major contributions to the field. In short, research topics for software engineering provide possibilities for software engineers to investigate new technologies, approaches, and strategies for developing and managing complex software systems. 

For example, research on agile software development could identify the benefits and drawbacks of using agile methodology, as well as develop new techniques for effectively implementing agile practices. Software testing research may explore new testing procedures and tools, as well as assess the efficacy of existing ones. Software quality research may investigate the elements that influence software quality and develop approaches for enhancing software system quality and minimizing the faults and errors. Software metrics are quantitative measures that are used to assess the quality, maintainability, and performance of software. 

The research papers on software engineering topics in this specific area could identify novel measures for evaluating software systems or techniques for using metrics to improve the quality of software. The practice of integrating code changes into a common repository and pushing code changes to production in small, periodic batches is known as continuous integration and deployment (CI/CD). This research could investigate the best practices for establishing CI/CD or developing tools and approaches for automating the entire CI/CD process.

Top Software Engineer Research Topics

In this article we will be going through the following Software Engineer Research Topics:

1. Artificial Intelligence and Software Engineering

Intersections between AI and SE

The creation of AI-powered software engineering tools is one potential research area at the intersection of artificial intelligence (AI) and software engineering. These technologies use AI techniques that include machine learning, natural language processing, and computer vision to help software engineers with a variety of tasks throughout the software development lifecycle. An AI-powered code review tool, for example, may automatically discover potential flaws or security vulnerabilities in code, saving developers a lot of time and lowering the chance of human error. Similarly, an AI-powered testing tool might build test cases and analyze test results automatically to discover areas for improvement. 

Furthermore, AI-powered project management tools may aid in the planning and scheduling of projects, resource allocation, and risk management in the project. AI can also be utilized in software maintenance duties such as automatically discovering and correcting defects or providing code refactoring solutions. However, the development of such tools presents significant technical and ethical challenges, such as the necessity of large amounts of high-quality data, the risk of bias present in AI algorithms, and the possibility of AI replacing human jobs. Continuous study in this area is therefore required to ensure that AI-powered software engineering tools are successful, fair, and responsible.

Knowledge-based Software Engineering

Another study area that overlaps with AI and software engineering is knowledge-based software engineering (KBSE). KBSE entails creating software systems capable of reasoning about knowledge and applying that knowledge to enhance software development processes. The development of knowledge-based systems that can help software engineers in detecting and addressing complicated problems is one example of KBSE in action. To capture domain-specific knowledge, these systems use knowledge representation techniques such as ontologies, and reasoning algorithms such as logic programming or rule-based systems to derive new knowledge from already existing data. 

KBSE can be utilized in the context of AI and software engineering to create intelligent systems capable of learning from past experiences and applying that information to improvise future software development processes. A KBSE system, for example, may be used to generate code based on previous code samples or to recommend code snippets depending on the requirements of a project. Furthermore, KBSE systems could be used to improve the precision and efficiency of software testing and debugging by identifying and prioritizing bugs using knowledge-based techniques. As a result, continued research in this area is critical to ensuring that AI-powered software engineering tools are productive, fair, and responsible.

2. Natural Language Processing

Multimodality

Multimodality in Natural Language Processing (NLP) is one of the appealing research ideas for software engineering at the nexus of computer vision, speech recognition, and NLP. The ability of machines to comprehend and generate language from many modalities, such as text, speech, pictures, and video, is referred to as multimodal NLP. The goal of multimodal NLP is to develop systems that can learn from and interpret human communication across several modalities, allowing them to engage with humans in more organic and intuitive ways. 

The building of conversational agents or chatbots that can understand and create responses using several modalities is one example of multimodal NLP in action. These agents can analyze text input, voice input, and visual clues to provide more precise and relevant responses, allowing users to have a more natural and seamless conversational experience. Furthermore, multimodal NLP can be used to enhance language translation systems, allowing them to more accurately and effectively translate text, speech, and visual content.

The development of multimodal NLP systems must take efficiency into account. as multimodal NLP systems require significant computing power to process and integrate information from multiple modalities, optimizing their efficiency is critical to ensuring that they can operate in real-time and provide users with accurate and timely responses. Developing algorithms that can efficiently evaluate and integrate input from several modalities is one method for improving the efficiency of multimodal NLP systems. 

Overall, efficiency is a critical factor in the design of multimodal NLP systems. Researchers can increase the speed, precision, and scalability of these systems by inventing efficient algorithms, pre-processing approaches, and hardware architectures, allowing them to run successfully and offer real-time replies to consumers. Software Engineering training will help you level up your career and gear up to land you a job in the top product companies as a skilled Software Engineer. 

3. Applications of Data Mining in Software Engineering

Mining Software Engineering Data

The mining of software engineering data is one of the significant research paper topics for software engineering, involving the application of data mining techniques to extract insights from enormous datasets that are generated during software development processes. The purpose of mining software engineering data is to uncover patterns, trends, and various relationships that can inform software development practices, increase software product quality, and improve software development process efficiency. 

Mining software engineering data, despite its potential benefits, has various obstacles, including the quality of data, scalability, and privacy of data. Continuous research in this area is required to develop more effective data mining techniques and tools, as well as methods for ensuring data privacy and security, to address these challenges. By tackling these issues, mining software engineering data can continue to promote many positive aspects in software development practices and the overall quality of product.

Clustering and Text Mining

Clustering is a data mining approach that is used to group comparable items or data points based on their features or characteristics. Clustering can be used to detect patterns and correlations between different components of software, such as classes, methods, and modules, in the context of software engineering data. 

On the other hand, text mining is a method of data mining that is used to extract valuable information from unstructured text data such as software manuals, code comments, and bug reports. Text mining can be applied in the context of software engineering data to find patterns and trends in software development processes

4. Data Modeling

Data modeling is an important area of research paper topics in software engineering study, especially in the context of the design of databases and their management. It involves developing a conceptual model of the data that a system will need to store, organize, and manage, as well as establishing the relationships between various data pieces. One important goal of data modeling in software engineering research is to make sure that the database schema precisely matches the system's and its users' requirements. Working closely with stakeholders to understand their needs and identify the data items that are most essential to them is necessary.

5. Verification and Validation

Verification and validation are significant research project ideas for software engineering research because they help us to ensure that software systems are correctly built and suit the needs of their users. While most of the time, these terms are frequently used interchangeably, they refer to distinct stages of the software development process. The process of ensuring that a software system fits its specifications and needs is referred to as verification. This involves testing the system to confirm that it behaves as planned and satisfies the functional and performance specifications. In contrast, validation is the process of ensuring that a software system fulfils the needs of its users and stakeholders. 

This includes ensuring that the system serves its intended function and meets the requirements of its users. Verification and validation are key components of the software development process in software engineering research. Researchers can help to improve the functionality and dependability of software systems, minimize the chance of faults and mistakes, and ultimately develop better software products for their consumers by verifying that software systems are designed correctly and that they satisfy the needs of their users.

6. Software Project Management

Software project management is an important component of software engineering research because it comprises the planning, organization, and control of resources and activities to guarantee that software projects are finished on time, within budget, and to the needed quality standards. One of the key purposes of software project management in research is to guarantee that the project's stakeholders, such as users, clients, and sponsors, are satisfied with their needs. This includes defining the project's requirements, scope, and goals, as well as identifying potential risks and restrictions to the project's success.

7. Software Quality

The quality of a software product is defined as how well it fits in with its criteria, how well it performs its intended functions, and meets the needs of its consumers. It includes features such as dependability, usability, maintainability, effectiveness, and security, among others. Software quality is a prominent and essential research topic in software engineering. Researchers are working to provide methodologies, strategies, and tools for evaluating and improving software quality, as well as forecasting and preventing software faults and defects. Overall, software quality research is a large and interdisciplinary field that combines computer science, engineering, and statistics. Its mission is to increase the reliability, accessibility, and overall quality of software products and systems, thereby benefiting both software developers and end consumers.

8. Ontology

Ontology is a formal specification of a conception of a domain used in computer science to allow knowledge sharing and reuse. Ontology is a popular and essential area of study in the context of software engineering research. The construction of ontologies for specific domains or application areas could be a research topic in ontology for software engineering. For example, a researcher may create an ontology for the field of e-commerce to give common knowledge and terminology to software developers as well as stakeholders in that domain. The integration of several ontologies is another intriguing study topic in ontology for software engineering. As the number of ontologies generated for various domains and applications grows, there is an increasing need to integrate them in order to enable interoperability and reuse.

9. Software Models

In general, a software model acts as an abstract representation of a software system or its components. Software models can be used to help software developers, different stakeholders, and users communicate more effectively, as well as to properly evaluate, design, test, and maintain software systems. The development and evaluation of modeling languages and notations is one research example connected to software models. Researchers, for example, may evaluate the usefulness and efficiency of various modeling languages, such as UML or BPMN, for various software development activities or domains. 

Researchers could also look into using software models for software testing and verification. They may investigate how models might be used to produce test cases or to do model checking, a formal technique for ensuring the correctness of software systems. They may also examine the use of models for monitoring at runtime and software system adaptation.

The Software Development Life Cycle (SDLC) is a software engineering process for planning, designing, developing, testing, and deploying software systems. SDLC is an important research issue in software engineering since it is used to manage software projects and ensure the quality of the resultant software products by software developers and project managers. The development and evaluation of novel software development processes is one SDLC-related research topic. SDLC research also includes the creation and evaluation of different software project management tools and practices. 

SDLC

Researchers may also check the implementation of SDLC in specific sectors or applications. They may, for example, investigate the use of SDLC in the development of systems that are more safety-critical, such as medical equipment or aviation systems, and develop new processes or tools to ensure the safety and reliability of these systems. They may also look into using SDLC to design software systems in new sectors like the Internet of Things or in blockchain technology.

Why is Software Engineering Required?

Software engineering is necessary because it gives a systematic way to developing, designing, and maintaining reliable, efficient, and scalable software. As software systems have become more complicated over time, software engineering has become a vital discipline to ensure that software is produced in a way that is fully compatible with end-user needs, reliable, and long-term maintainable.

When the cost of software development is considered, software engineering becomes even more important. Without a disciplined strategy, developing software can result in overinflated costs, delays, and a higher probability of errors that require costly adjustments later. Furthermore, software engineering can help reduce the long-term maintenance costs that occur by ensuring that software is designed to be easy to maintain and modify. This can save money in the long run by lowering the number of resources and time needed to make software changes as needed.

2. Scalability

Scalability is an essential factor in software development, especially for programs that have to manage enormous amounts of data or an increasing number of users. Software engineering provides a foundation for creating scalable software that can evolve over time. The capacity to deploy software to diverse contexts, such as cloud-based platforms or distributed systems, is another facet of scalability. Software engineering can assist in ensuring that software is built to be readily deployed and adjusted for various environments, resulting in increased flexibility and scalability.

3. Large Software

Developers can break down huge software systems into smaller, simpler parts using software engineering concepts, making the whole system easier to maintain. This can help to reduce the software's complexity and makes it easier to maintain the system over time. Furthermore, software engineering can aid in the development of large software systems in a modular fashion, with each module doing a specific function or set of functions. This makes it easier to push new features or functionality to the product without causing disruptions to the existing codebase.

4. Dynamic Nature

Developers can utilize software engineering techniques to create dynamic content that is modular and easily modifiable when user requirements change. This can enable adding new features or functionality to dynamic content easier without disturbing the existing codebase. Another factor to consider for dynamic content is security. Software engineering can assist in ensuring that dynamic content is generated in a secure manner that protects user data and information.

5. Better Quality Management

An organized method of quality management in software development is provided by software engineering. Developers may ensure that software is conceived, produced, and maintained in a way that fulfills quality requirements and provides value to users by adhering to software engineering principles. Requirement management is one component of quality management in software engineering. Testing and validation are another part of quality control in software engineering. Developers may verify that their software satisfies its requirements and is error-free by using an organized approach to testing.

In conclusion, the subject of software engineering provides a diverse set of research topics with the ability to progress the discipline while enhancing software development and maintenance procedures. This article has dived deep into various research topics in software engineering for masters and research topics for software engineering students such as software testing and validation, software security, artificial intelligence, Natural Language Processing, software project management, machine learning, Data Mining, etc. as research subjects. Software engineering researchers have an interesting chance to explore these and other research subjects and contribute to the development of creative solutions that can improve software quality, dependability, security, and scalability. 

Researchers may make important contributions to the area of software engineering and help tackle some of the most serious difficulties confronting software development and maintenance by staying updated with the latest research trends and technologies. As software grows more important in business and daily life, there is a greater demand for current research topics in software engineering into new software engineering processes and techniques. Software engineering researchers can assist in shaping the future of software creation and maintenance through their research, ensuring that software stays dependable, safe, reliable and efficient in an ever-changing technological context. KnowledgeHut’s top Programming certification course will help you leverage online programming courses from expert trainers.

Frequently Asked Questions (FAQs)

 To find a research topic in software engineering, you can review recent papers and conference proceedings, talk to different experts in the field, and evaluate your own interests and experience. You can use a combination of these approaches. 

You should study software development processes, various programming languages and their frameworks, software testing and quality assurance, software architecture, various design patterns that are currently being used, and software project management as a software engineering student. 

Empirical research, experimental research, surveys, case studies, and literature reviews are all types of research in software engineering. Each sort of study has advantages and disadvantages, and the research method chosen is determined by the research objective, resources, and available data. 

Profile

Eshaan Pandey

Eshaan is a Full Stack web developer skilled in MERN stack. He is a quick learner and has the ability to adapt quickly with respect to projects and technologies assigned to him. He has also worked previously on UI/UX web projects and delivered successfully. Eshaan has worked as an SDE Intern at Frazor for a span of 2 months. He has also worked as a Technical Blog Writer at KnowledgeHut upGrad writing articles on various technical topics.

Avail your free 1:1 mentorship session.

Something went wrong

Upcoming Programming Batches & Dates

Course advisor icon

HR MIT Logo

  • Saved Jobs ( 0 )

research work in software engineering

Working at MIT offers opportunities that just aren’t found anywhere else , including generous and unique benefits that help to ensure that MIT employees are healthy, supported, and enjoy a fulfilling work/life balance. Discover more about what it's like to work at MIT.

We welcome people from all walks of life to bring their talent, ideas, and experience to our community. We value diversity and strongly encourage applications from individuals from all identities and backgrounds – like yours. If you want to be part of our exceptional, multicultural, collaborative, and inclusive community, then take a look at this opportunity.

  • Job Number: 24092
  • Functional Area: Research - Scientific
  • Department: McGovern Institute for Brain Research
  • School Area: Office of Provost
  • Employment Type: Full-Time
  • Employment Category: Exempt
  • Visa Sponsorship Available: No

SOFTWARE ENGINEER , McGovern Institute for Brain Research , to play a central role in a new, cutting-edge neuroscience project in the Jazayeri Lab.  This large-scale effort focuses on understanding how the brain controls the body to rapidly learn physical skills and interact intelligently with scenes of objects.  The lab’s approach involves state-of-the-art neural and behavioral recording of animals interacting with a robotically controlled environment.  While the focus is fundamental science, this work may lead to applications in medicine, robotics, and artificial intelligence. The software engineer will help develop systems for data collection, management, and analysis.  These include software for the robotically controlled environment and data acquisition hardware, data structures for recording streams, infrastructure for large-scale data management, system integration, and algorithms to infer the behavior from recorded data (e.g., body pose from motion capture data).  The position offers an opportunity to design creative solutions, take ownership of your contributions, work very closely with a tight-knit team of enthusiastic and multidisciplinary problem-solvers, and engage deeply with the scientific process, including publications.  Experience with neuroscience is beneficial, but not necessary. The Jazayeri Lab offers opportunities for newcomers to learn about the discipline in a fun, supportive environment. 

cp.jobdetails.sn.label.facebook

REQUIRED :  bachelor’s degree in computer science or related field, experience developing large-scale software infrastructure, Python expertise, and experience with collaborative software engineering and version control.  PREFERRED :  master’s degree in computer science or related field; experience with programming robotic control systems, machine learning, musculoskeletal models in MuJoCo, AWS for data storage and analysis, motion capture data and Unity environments, programming Arduino boards, and C++; and experience working in a neuroscience lab.  Job #24092 5/29/24

Application of Deep Learning for Code Smell Detection: Challenges and Opportunities

  • Review Article
  • Published: 03 June 2024
  • Volume 5 , article number  614 , ( 2024 )

Cite this article

research work in software engineering

  • Mouna Hadj-Kacem 1 &
  • Nadia Bouassida 1  

Explore all metrics

Code smells are indicators of deeper problems in source code that affect the system maintainability and evolution. Detecting code smells is crucial as a software maintenance task. Recently, there has been a growing interest in utilizing deep learning techniques for code smell detection. However, there is limited research on the current state-of-the-art in this topic. To bridge this gap, this paper conducts a systematic literature review to investigate the application of deep learning in code smell detection. We have followed a well-defined methodology for conducting a systematic literature review in the field of software engineering. Through this process, we have identified a total of 30 primary studies. The reviewed studies have been thoroughly analysed according to different research aspects in the detection process, including the used code representations and learning algorithms. We have also explored the frequently identified code smells in terms of type and number, where the results have revealed a research gap in this context. Our analysis has also focused on determining how detection performance was evaluated and validated. Specifically, we have compiled a list of available datasets and compared between them based on various criteria. It was observed that the oracles within these datasets were developed using different approaches, but supported a limited number of identified code smells. Furthermore, through our investigation, we have highlighted several challenges that need to be addressed. Alongside the challenges, we have identified numerous promising opportunities that serve to improve future research.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price includes VAT (Russian Federation)

Instant access to the full article PDF.

Rent this article via DeepDyve

Institutional subscriptions

research work in software engineering

https://github.com/dspinellis/tokenizer .

April A, Abran A. Software maintenance management: evaluation and continuous improvement. Hoboken: John Wiley & Sons; 2012.

Google Scholar  

Fowler M, Beck K, Brant J, Opdyke W, Roberts D. Refactoring: improving the design of existing code. Chennai: Pearson Education India; 1999.

Kaur A. A systematic literature review on empirical analysis of the relationship between code smells and software quality attributes. Arch Comput Methods Eng. 2020;27(4):1267–96.

Article   MathSciNet   Google Scholar  

Palomba F, Bavota G, Di Penta M, Fasano F, Oliveto R, De Lucia A. On the diffuseness and the impact on maintainability of code smells: a large scale empirical investigation. Empir Softw Eng. 2018;23(3):1188–221.

Article   Google Scholar  

Soh Z, Yamashita A, Khomh F, Guéhéneuc Y-G. Do code smells impact the effort of different maintenance programming activities? In: 23rd international conference on software analysis, evolution, and reengineering, pp. 393–402, vol. 1; 2016. IEEE.

Abbes M, Khomh F, Gueheneuc Y-G, Antoniol G. An empirical study of the impact of two antipatterns, blob and spaghetti code, on program comprehension. In: 15th European conference on software maintenance and reengineering, pp. 181–190; 2011. IEEE.

Politowski C, Khomh F, Romano S, Scanniello G, Petrillo F, Guéhéneuc Y-G, Maiga A. A large scale empirical study of the impact of spaghetti code and blob anti-patterns on program comprehension. Inf Softw Technol. 2020;122: 106278.

Khomh F, Di Penta M, Gueheneuc Y-G. An exploratory study of the impact of code smells on software change-proneness. In: 16th working conference on reverse engineering; 2009. pp. 75–84. IEEE.

Cunningham W. The WyCash portfolio management system. ACM SIGPLAN OOPS Messenger. 1992;4(2):29–30.

Arcelli FF, Mäntylä MV, Zanoni M, Marino A. Comparing and experimenting machine learning techniques for code smell detection. Empir Softw Eng. 2016;21(3):1143–91.

Palomba F, Bavota G, Di Penta M, Oliveto R, De Lucia A, Poshyvanyk D. Detecting bad smells in source code using change history information. In: 28th IEEE/ACM international conference on automated software engineering; 2013. pp. 268–278. IEEE.

Moha N, Guéhéneuc Y-G, Duchien L, Le Meur A-F. Decor: a method for the specification and detection of code and design smells. IEEE Trans Softw Eng. 2010;36(1):20–36. https://doi.org/10.1109/TSE.2009.50 .

LeCun Y, Bengio Y, Hinton G. Deep learning. Nature. 2015;521(7553):436–44.

Wang S, Liu T, Tan L. Automatically learning semantic features for defect prediction. In: International conference on software engineering; 2016. pp. 297–308. IEEE.

Hellendoorn VJ, Devanbu P. Are deep neural networks the best choice for modeling source code? In: 11th joint meeting on foundations of software engineering; 2017. pp. 763–773. https://doi.org/10.1145/3106237.3106290 .

Tufano M, Palomba F, Bavota G, Oliveto R, Di Penta M, De Lucia A, Poshyvanyk D. When and why your code starts to smell bad (and whether the smells go away). IEEE Trans Softw Eng. 2017;43(11):1063–88.

Fontana FA, Zanoni M. Code smell severity classification using machine learning techniques. Knowl Based Syst. 2017;128:43–58.

Mens T, Tourwe T. A survey of software refactoring. IEEE Trans Softw Eng. 2004;30(2):126–39. https://doi.org/10.1109/TSE.2004.1265817 .

Rasool G, Arshad Z. A review of code smell mining techniques. J Softw Evol Process. 2015;27(11):867–95.

Fernandes E, Oliveira J, Vale G, Paiva T, Figueiredo E. A review-based comparative study of bad smell detection tools. In: 20th international conference on evaluation and assessment in software engineering; 2016. pp. 1–12.

Sabir F, Palma F, Rasool G, Guéhéneuc Y-G, Moha N. A systematic literature review on the detection of smells and their evolution in object-oriented and service-oriented systems. Softw Pract Exp. 2019;49(1):3–39.

Lewowski T, Madeyski L. Code smells detection using artificial intelligence techniques: a business-driven systematic review. Dev Inf Knowl Manag Bus Appl. 2022;3:285–319.

Bafandeh Mayvan B, Rasoolzadegan A, Javan Jafari A. Bad smell detection using quality metrics and refactoring opportunities. J Softw Evol Process. 2020;32(8):2255.

Reis J, Abreu F, Figueiredo Carneiro G, Anslow C. Code smells detection and visualization: a systematic literature review. Arch Comput Methods Eng. 2022;29(1):47–94.

Kaur A, Dhiman G. A review on search-based tools and techniques to identify bad code smells in object-oriented systems. In: Harmony search and nature inspired optimization algorithms. Springer. 2019. pp. 909-–21.

Azeem MI, Palomba F, Shi L, Wang Q. Machine learning techniques for code smell detection: a systematic literature review and meta-analysis. Inf Softw Technol. 2019;108:115–38.

Caram FL, Rodrigues BRDO, Campanelli AS, Parreiras FS. Machine learning techniques for code smells detection: a systematic mapping study. Int J Softw Eng Knowl Eng. 2019;29(02):285–316.

Al-Shaaby A, Aljamaan H, Alshayeb M. Bad smell detection using machine learning techniques: a systematic literature review. Arab J Sci Eng. 2020;45:2341–69.

Lei M, Li H, Li J, Aundhkar N, Kim D-K. Deep learning application on code clone detection: a review of current knowledge. J Syst Softw. 2022;184: 111141.

Rattan D, Bhatia R, Singh M. Software clone detection: a systematic review. Inf Softw Technol. 2013;55(7):1165–99.

Paulo Sobrinho EV, De Lucia A, Almeida Maia M. A systematic literature review on bad smells-5 w’s: which, when, what, who, where. IEEE Trans Softw Eng. 2018;47(1):17–66.

Petersen K, Feldt R, Mujtaba S, Mattsson M. Systematic mapping studies in software engineering. In: 12th international conference on evaluation and assessment in software engineering; 2008. pp. 1–10.

Kitchenham B, Charters S, et al. Guidelines for performing systematic literature reviews in software engineering. UK: EBSE Technical Report; 2007.

ACM Digital Library. https://dl.acm.org . Accessed 31 Jan 2023.

IEEEXplore Digital Library. https://ieeexplore.ieee.org . Accessed 31 Jan 2023.

ScienceDirect. https://www.sciencedirect.com . Accessed 31 Jan 2023.

Springer Link. https://link.springer.com . Accessed 31 Jan 2023.

Scopus. https://www.scopus.com . Accessed 31 Jan 2023.

Mongeon P, Paul-Hus A. The journal coverage of web of science and scopus: a comparative analysis. Scientometrics. 2016;106:213–28.

Guo X, Shi C, Jiang H. Deep semantic-based feature envy identification. In: 11th Asia-Pacific symposium on internetware; 2019. pp. 1–6.

Yu J, Mao C, Ye X. A novel tree-based neural network for android code smells detection. In: 21st international conference on software quality, reliability and security; 2021. pp. 738–748. IEEE. https://doi.org/10.1109/QRS54544.2021.00083 .

Tarwani S, Chug A. Application of deep learning models for code smell prediction. In: 10th international conference on reliability, Infocom technologies and optimization (trends and future directions); 2022. pp. 1–5. IEEE. https://doi.org/10.1109/ICRITO56286.2022.9965048 .

Barbez A, Khomh F, Guéhéneuc Y-G. Deep learning anti-patterns from code metrics history. In: international conference on software maintenance and evolution; 2019. pp. 114–124. IEEE. https://doi.org/10.1109/ICSME.2019.00021 .

Liu H, Jin J, Xu Z, Zou Y, Bu Y, Zhang L. Deep learning based code smell detection. IEEE Trans Softw Eng. 2021;47(9):1811–37. https://doi.org/10.1109/TSE.2019.2936376 .

Bhave A, Sinha R. Deep multimodal architecture for detection of long parameter list and switch statements using distilbert. In: 22nd international working conference on source code analysis and manipulation; 2022. pp. 116–120. IEEE. https://doi.org/10.1109/SCAM55253.2022.00018 .

Hadj-Kacem M, Bouassida N. Deep representation learning for code smells detection using variational auto-encoder. In: International joint conference on neural networks; 2019. pp. 1–8. IEEE. https://doi.org/10.1109/IJCNN.2019.8851854 .

Yu D, Xu Y, Weng L, Chen J, Chen X, Yang Q. Detecting and refactoring feature envy based on graph neural network. In: 33rd international symposium on software reliability engineering; 2022. pp. 458–469. IEEE. https://doi.org/10.1109/ISSRE55969.2022.00051 .

Das AK, Yadav S, Dhal S. Detecting code smells using deep learning. In: TENCON 2019-2019 IEEE region 10 conference (TENCON); 2019. pp. 2081–2086. IEEE. https://doi.org/10.1109/TENCON.2019.8929628 .

Ren S, Shi C, Zhao S. Exploiting multi-aspect interactions for god class detection with dataset fine-tuning. In: 45th annual computers, software, and applications conference; 2021. pp. 864–873. IEEE. https://doi.org/10.1109/COMPSAC51774.2021.00119 .

Wang H, Liu J, Kang J, Yin W, Sun H, Wang H. Feature envy detection based on bi-lstm with self-attention mechanism. In: Intl conf on parallel & distributed processing with applications, big data & cloud computing, sustainable computing & communications, social computing & networking (ISPA/BDCloud/SocialCom/SustainCom); 2020. pp. 448–457. IEEE.

Zhang M, Jia J. Feature envy detection with deep learning and snapshot ensemble. In: 9th international conference on dependable systems and their applications; 2022. pp. 215–223. IEEE. https://doi.org/10.1109/DSA56465.2022.00037 .

Yin X, Shi C, Zhao S. Local and global feature based explainable feature envy detection. In: 45th annual computers, software, and applications conference; 2021. pp. 942–951. IEEE. https://doi.org/10.1109/COMPSAC51774.2021.00127 .

Kovacevic A, Slivka J, Vidakovic D, Grujic K-G, Luburic N, Prokic S, Sladic G. Automatic detection of long method and god class code smells through neural source code embeddings. Expert Syst Appl. 2022;204: 117607. https://doi.org/10.1016/j.eswa.2022.117607 .

Zhang Y, Ge C, Hong S, Tian R, Dong C, Liu J. Delesmell: code smell detection based on deep learning and latent semantic analysis. Knowl Based Syst. 2022;255: 109737. https://doi.org/10.1016/j.knosys.2022.109737 .

Ardimento P, Aversano L, Bernardi ML, Cimitile M, Iammarino M. Temporal convolutional networks for just-in-time design smells prediction using fine-grained software metrics. Neurocomputing. 2021;463:454–71. https://doi.org/10.1016/j.neucom.2021.08.010 .

Imam AT, Al-Srour BR, Alhroob A. The automation of the detection of large class bad smell by using genetic algorithm and deep learning. J King Saud Univ Comput Inf Sci. 2022; 34(6, Part A):2621–2636. https://doi.org/10.1016/j.jksuci.2022.03.028 .

Gupta H, Kulkarni TG, Kumar L, Neti LBM, Krishna A. An empirical study on predictability of software code smell using deep learning models. In: International conference on advanced information networking and applications; 2021. pp. 120–132. Springer.

Hadj-Kacem M, Bouassida N. Improving the identification of code smells by combining structural and semantic information. In: 26th international conference on neural information processing; 2019. pp. 296–304. Springer.

Mhawish MY, Gupta M. Predicting code smells and analysis of predictions: using machine learning techniques and software metrics. J Comput Sci Technol. 2020;35:1428–45.

Hadj-Kacem M, Bouassida N. A hybrid approach to detect code smells using deep learning. In: 13th international conference on evaluation of novel approaches to software engineering; 2018. pp. 137–146. SciTePress.

Sharma T, Efstathiou V, Louridas P, Spinellis D. Code smell detection by deep direct-learning and transfer-learning. J Syst Softw. 2021;176: 110936.

Dewangan S, Rao RS, Mishra A, Gupta M. Code smell detection using ensemble machine learning algorithms. Appl Sci. 2022;12(20):10321.

Zhao S, Shi C, Ren S, Mohsin H. Correlation feature mining model based on dual attention for feature envy detection. In: 34th International conference on software engineering and knowledge engineering. KSI Research Inc.; 2022. pp. 634–9. https://doi.org/10.18293/SEKE2022-009 .

Khleel NAA, Nehéz K. Deep convolutional neural network model for bad code smells detection based on oversampling method. Indones J Electr Eng Comput Sci. 2022;26(3):1725–35.

Hamdy A, Tazy M. Deep hybrid features for code smells detection. J Theor Appl Inf Technol. 2020;98(14):2684–96.

Jeevanantham M, Jones J. Extension of deep learning based feature envy detection for misplaced fields and methods. Int J Intell Eng Syst. 2022;15(1):563–74.

Zhang Y, Dong C. Mars: Detecting brain class/method code smell based on metric–attention mechanism and residual network. J Softw Evol Process. 2021;36:e2403.

Xu W, Zhang X. Multi-granularity code smell detection using deep learning method based on abstract syntax tree. In: 33rd international conference on software engineering and knowledge engineering; 2021, vol. 7, pp. 503–9.

Li Y, Zhang X. Multi-label code smell detection with hybrid model based on deep learning. In: 34th International conference on software engineering and knowledge engineering. KSI Research Inc.; 2022. pp. 42–7. https://doi.org/10.18293/SEKE2022-077 .

Allamanis M, Barr ET, Devanbu P, Sutton C. A survey of machine learning for big code and naturalness. ACM Comput Surv. 2018;51(4):1–37.

Kitchenham B. What’s up with software metrics?—A preliminary mapping study. J Syst Softw. 2010;83(1):37–51.

Lanza M, Marinescu R. Object-oriented metrics in practice: using software metrics to characterize, evaluate, and improve the design of object-oriented systems. Berlin: Springer; 2007.

Marinescu C, Marinescu R, Florin Mihancea P, Ratiu D, Wettel R. iPlasma: an integrated platform for quality assessment of object-oriented design. In: International conference on software maintenance; 2005. pp. 77–80.

Ferme V. Jcodeodor: A software quality advisor through design flaws detection. Master’s thesis. Milano: University of Milano-Bicocca. 2013.

Hindle A, Barr ET, Gabel M, Su Z, Devanbu P. On the naturalness of software. Commun ACM. 2016;59(5):122–31.

Goller C, Kuchler A. Learning task-dependent distributed representations by backpropagation through structure. In: International conference on neural networks, vol. 1; 1996. pp. 347–352. IEEE.

Hochreiter S, Schmidhuber J. Long short-term memory. Neural Comput. 1997;9(8):1735–80.

Kingma DP, Welling M. Auto-encoding variational bayes. 2013. arXiv:1312.6114 . preprint.

Peng H, Mou L, Li G, Liu Y, Zhang L, Jin Z. Building program vector representations for deep learning. In: 8th international conference on knowledge science, engineering and management; 2015. pp. 547–553. Springer.

Bahdanau D, Cho K, Bengio Y. Neural machine translation by jointly learning to align and translate. 2014. arXiv preprint arXiv:1409.0473 .

Trindade RPF, Silva Bigonha MA, Ferreira K A M. Oracles of bad smells: a systematic literature review. In: Brazilian symposium on software engineering; 2020. pp. 62–71. ACM.

Tempero E, Anslow C, Dietrich ., Han T, Li J, Lumpe M, Melton H, Noble J. The qualitas corpus: A curated collection of java code for empirical studies. In: Asia Pacific software engineering conference; 2010. pp. 336–345. https://doi.org/10.1109/APSEC.2010.46 .

PMD (PMD). http://pmd.sourceforge.net/ .

Nongpong K. Integrating code smells detection with refactoring tool support. PhD thesis, The University of Wisconsin-Milwaukee. 2012.

Wieman R. Anti-pattern scanner: an approach to detect anti-patterns and design violations. LAP Lambert Academic Publishing; 2011.

Marinescu R. Measurement and quality in object-oriented design. In: 21st IEEE international conference on software maintenance; 2005. pp. 701–704.

Di Nucci D, Palomba F, Tamburri DA, Serebrenik A, De Lucia A. Detecting code smells using machine learning techniques: are we there yet? In: 25th international conference on software analysis, evolution and reengineering; 2018. pp. 612–621. IEEE.

Liu H, Xu Z, Zou Y. Deep learning based feature envy detection. In: 33rd ACM/IEEE international conference on automated software engineering; 2018. pp. 385–396. ACM.

Palomba F, Di Nucci D, Tufano M, Bavota G, Oliveto R, Poshyvanyk D, De Lucia A. Landfill: An open dataset of code smells with public evaluation. In: 12th working conference on mining software repositories; 2015. pp. 482–485. IEEE.

Sharma T, Kessentini M. Qscored: A large dataset of code smells and quality metrics. In: 18th international conference on mining software repositories; 2021. pp. 590–594. IEEE.

Madeyski L, Lewowski T. Mlcq: Industry-relevant code smell data set. In: 24th international conference on evaluation and assessment in software engineering; 2020. pp. 342–347. ACM.

Sharma T, Efstathiou V, Louridas P, Spinellis D. On the feasibility of transfer-learning code smells using deep learning. 2019. arXiv preprint arXiv:1904.03031 .

Fokaefs M, Tsantalis N, Chatzigeorgiou A. Jdeodorant: Identification and removal of feature envy bad smells. In: International conference on software maintenance. IEEE; 2007. pp. 519–520.

Terra R, Valente MT, Miranda S, Sales V. JMove: a novel heuristic and tool to detect move method refactoring opportunities. J Syst Softw. 2018;138:19–36.

Palomba F, Panichella A, Lucia AD, Oliveto R, Zaidman A. A textual-based technique for smell detection. In: 24th international conference on program comprehension. IEEE; 2016. pp. 1–10.

Guggulothu T, Moiz SA. Code smell detection using multi-label classification approach. Softw Qual J. 2020;28(3):1063–86.

Alazba A, Aljamaan H. Code smell detection using feature selection and stacking ensemble: An empirical investigation. Inf Softw Technol. 2021;138: 106648.

Dewangan S, Rao RS, Mishra A, Gupta M. A novel approach for code smell detection: an empirical study. IEEE Access. 2021;9:162869–83.

Ampatzoglou A, Bibi S, Avgeriou P, Verbeek M, Chatzigeorgiou A. Identifying, categorizing and mitigating threats to validity in software engineering secondary studies. Inf Softw Technol. 2019;106:201–30.

Download references

This study was not funded.

Author information

Authors and affiliations.

Mir@cl Laboratory, Sfax University, Sfax, Tunisia

Mouna Hadj-Kacem & Nadia Bouassida

You can also search for this author in PubMed   Google Scholar

Corresponding author

Correspondence to Mouna Hadj-Kacem .

Ethics declarations

Conflict of interest.

The authors declare that they have no Conflict of interest.

Additional information

Publisher's note.

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Rights and permissions

Springer Nature or its licensor (e.g. a society or other partner) holds exclusive rights to this article under a publishing agreement with the author(s) or other rightsholder(s); author self-archiving of the accepted manuscript version of this article is solely governed by the terms of such publishing agreement and applicable law.

Reprints and permissions

About this article

Hadj-Kacem, M., Bouassida, N. Application of Deep Learning for Code Smell Detection: Challenges and Opportunities. SN COMPUT. SCI. 5 , 614 (2024). https://doi.org/10.1007/s42979-024-02956-5

Download citation

Received : 10 September 2023

Accepted : 07 May 2024

Published : 03 June 2024

DOI : https://doi.org/10.1007/s42979-024-02956-5

Share this article

Anyone you share the following link with will be able to read this content:

Sorry, a shareable link is not currently available for this article.

Provided by the Springer Nature SharedIt content-sharing initiative

  • Systematic literature review
  • Code smell detection
  • Deep learning techniques
  • Code representation
  • Find a journal
  • Publish with us
  • Track your research

IMAGES

  1. (PDF) Writing research article introductions in software engineering

    research work in software engineering

  2. Research Jobs in Software Engineering

    research work in software engineering

  3. Research on Software Engineering

    research work in software engineering

  4. What is software engineering?

    research work in software engineering

  5. Importance of Software Engineering for Data Science

    research work in software engineering

  6. (PDF) Empirical Methods in Software Engineering Research

    research work in software engineering

VIDEO

  1. Software engineering job market has changed

  2. Ethics in Software Engineering: An Unspoken Rule

  3. How to get a Software Engineering Job 2024 #softwareengineer #webdevelopment #softwaredeveloper

  4. Day in The Life of Software Engineer

  5. SOFTWARE ENGINEERING IMPORTANT QUESTIONS // BTECH

  6. Software Engineer jobs #softwareengineer #coding #webdevelopment

COMMENTS

  1. Research in software engineering: an analysis of the literature

    1.. IntroductionOver the years, software engineering (SE) research has been criticized from several different points of view—that it is immature [26], that it lacks important elements such as evaluation [31], [35], that it is unscientific in its approaches [7].There have even been attacks on the very foundations of SE research—that it advocates more than it evaluates [24]; that it is, in ...

  2. Journal of Software Engineering Research and Development

    They wanted to define values and basic principles for better software development. On top of being brought into focus, the ... Philipp Hohl, Jil Klünder, Arie van Bennekum, Ryan Lockard, James Gifford, Jürgen Münch, Michael Stupperich and Kurt Schneider. Journal of Software Engineering Research and Development 2018 6 :15.

  3. Guidelines for Conducting Software Engineering Research

    This chapter presents a holistic overview of software engineering research strategies. It identifies the two main modes of research within the software engineering research field, namely knowledge-seeking and solution-seeking research—the Design Science model corresponding well with the latter. We present the ABC framework for research ...

  4. Research software engineering accelerates the translation of ...

    Research software engineering is central to data-driven biomedical research, but its role is often undervalued and poorly understood. ... Table 1 How researchers can engage and work effectively ...

  5. Why science needs more research software engineers

    The attendees coined a term to describe their line of work: research software engineer (RSE). A decade later, RSE societies have sprung up in the United Kingdom, mainland Europe, Australia and the ...

  6. Software Engineering

    Software Engineering. At Google, we pride ourselves on our ability to develop and launch new products and features at a very fast pace. This is made possible in part by our world-class engineers, but our approach to software development enables us to balance speed and quality, and is integral to our success. Our obsession for speed and scale is ...

  7. Software Engineering and Programming Languages

    Software engineering and programming language researchers at Google study all aspects of the software development process, from the engineers who make software to the languages and tools that they use. ... formal models, predictive machine learning modeling, data science, experiments, and mixed-methods research techniques. As our engineers work ...

  8. Home

    Join the Society of Research Software Engineering. The Society of Research Software Engineering was founded on the belief that a world which relies on software must recognise the people who develop it. Our mission is to establish a research environment that recognises the vital role of software in research. We work to increase software skills ...

  9. Ten recommendations for software engineering in research

    Research in the context of data-driven science requires a backbone of well-written software, but scientific researchers are typically not trained at length in software engineering, the principles for creating better software products. To address this gap, in particular for young researchers new to programming, we give ten recommendations to ...

  10. software engineering Latest Research Papers

    End To End . Predictive Software. The paper examines the principles of the Predictive Software Engineering (PSE) framework. The authors examine how PSE enables custom software development companies to offer transparent services and products while staying within the intended budget and a guaranteed budget.

  11. How software engineering research aligns with design science ...

    Background Assessing and communicating software engineering research can be challenging. Design science is recognized as an appropriate research paradigm for applied research, but is rarely explicitly used as a way to present planned or achieved research contributions in software engineering. Applying the design science lens to software engineering research may improve the assessment and ...

  12. Architecting the Future of Software Engineering: A Research and

    Goals of This Work. ... This workshop brought together leaders in the software engineering research and development community to describe (1) important classes of future software-reliant systems and their associated software engineering challenges, and (2) research methods, tools, and practices that are needed to make those systems feasible. ...

  13. Software Engineering's Top Topics, Trends, and Researchers

    For this theme issue on the 50th anniversary of software engineering (SE), Redirections offers an overview of the twists, turns, and numerous redirections seen over the years in the SE research literature. Nearly a dozen topics have dominated the past few decades of SE research—and these have been redirected many times. Some are gaining popularity, whereas others are becoming increasingly ...

  14. Research software engineering

    Research software engineering is the use of software engineering practices, methods and techniques for research software, i.e. software that was made for and is mainly used within research projects. The term was proposed in a research paper in 2010 in response to an empirical survey on tools used for software development in research projects. It started to be used in United Kingdom in 2012 ...

  15. The who, what, how of software engineering research: a socio ...

    Nowadays we recognize software engineering as a socio-technical endeavor (Whitworth 2009), and social aspects are becoming an increasingly critical part of the software engineering practice and research landscape (Feldt et al. 2008).What is more, while we may expect that many of our contributions are purely technical, somewhere, at some time, a software developer may be affected by our work.

  16. Top 10 Software Engineer Research Topics for 2024

    The integration of several ontologies is another intriguing study topic in ontology for software engineering. As the number of ontologies generated for various domains and applications grows, there is an increasing need to integrate them in order to enable interoperability and reuse. 9. Software Models.

  17. 2021 Research Review

    Annual Reviews. 2021 Research Review | Software Engineering Institute. The CMU SEI Research Review 2021 virtual event spotlights recent, innovative research projects through a mix of technical presentations and conversations among CMU SEI subject matter experts and their collaborators working in sponsor, customer, and academic organizations.

  18. PDF What Makes Good Research in Software Engineering?

    search processes or the ways we recognize excellent work. Science and engineering research fields can be characterized in terms of the kinds of questions they find worth investigating, the research methods they ... software engineering research have contributed elements of the answer, but they do not yet paint a comprehensive picture. In 1980 ...

  19. Research Software Engineering

    About Us. Our Research Software Engineering group is part of the Princeton Research Computing consortium, located in the distinctive Lewis Library. Our mission is to help researchers create the most efficient, scalable, and sustainable research codes possible in order to enable new scientific advances. We do this by working as an integral part ...

  20. The state of research on software engineering competencies: A

    2017 5th International Conference in Software Engineering Research and Innovation, 153-162. P31: ... she joined the Faculty 2001 to work in collaborative industry research projects and completed a M.Sc. degree in Information Systems 2005. In research, her focus has been enterprise architecture and organization IT management, and she defended ...

  21. Research Software Engineer jobs

    Research and Development (R&D) Software Engineer. ABB. Cleveland, OH 44122. $61,900 - $115,100 a year. Full-time. Monday to Friday. Activities include requirement analysis which leads to software design and definition, estimation of effort, coding and testing developed software. Posted 30+ days ago ·.

  22. Sampling in software engineering research: a critical review and

    Representative sampling appears rare in empirical software engineering research. Not all studies need representative samples, but a general lack of representative sampling undermines a scientific field. This article therefore reports a critical review of the state of sampling in recent, high-quality software engineering research. The key findings are: (1) random sampling is rare; (2 ...

  23. (PDF) Introduction to software engineering

    Electronics Engineers), "Software engineering is the application of a. systematic, disciplined, quantifiable approach to the. development, operation, and maintenance of. software; that is, the ...

  24. MIT

    If you want to be part of our exceptional, multicultural, collaborative, and inclusive community, then take a look at this opportunity. Software Engineer, Jazayeri Lab. Job Number: 24092. Functional Area: Research - Scientific. Department: McGovern Institute for Brain Research. School Area: Office of Provost.

  25. Zillow Tech Hub

    Want to work at Zillow Group? We're hiring engineers, designers and managers. Zillow is at the forefront of innovation, and the Zillow Tech Hub is where you can go to learn about our work in artificial intelligence, software engineering, machine learning, and much more.

  26. Trends and Trajectories in the Software Industry ...

    2.1 The changing nature of work within the software industry. According to a report by the World Bank (), changes, transformations, and even disruptions that are driven by technology can be the main drivers of the changing nature of work.Digital transformation (DT) is a key area of IS research that addresses such changes (Reis et al., 2018).The main body of DT research has involved examining a ...

  27. Postdoctoral Fellow: Light-element superconductivity in Washington, DC

    The position will involve the synthesis of new materials using conventional, non-equilibrium and high-pressure methods, and subsequent structure/properties characterization. The successful candidate will work in a dynamic environment with an expert team comprised of experimental and computational physicists, chemists, and materials scientists.

  28. Application of Deep Learning for Code Smell Detection ...

    Code smells are indicators of deeper problems in source code that affect the system maintainability and evolution. Detecting code smells is crucial as a software maintenance task. Recently, there has been a growing interest in utilizing deep learning techniques for code smell detection. However, there is limited research on the current state-of-the-art in this topic. To bridge this gap, this ...