For enquiries call:

+1-469-442-0620

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

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. 

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)

Ans: 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. 

Ans: 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. 

Ans: 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

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 evident in our developer infrastructure and tools. Developers across the world continually write, build, test and release code in multiple programming languages like C++, Java, Python, Javascript and others, and the Engineering Tools team, for example, is challenged to keep this development ecosystem running smoothly. Our engineers leverage these tools and infrastructure to produce clean code and keep software development running at an ever-increasing scale. In our publications, we share associated technical challenges and lessons learned along the way.

Recent Publications

Some of our teams.

Climate and sustainability

Software engineering and programming languages

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

Careers

Navigation Menu

Search code, repositories, users, issues, pull requests..., provide feedback.

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly.

To see all available qualifiers, see our documentation .

software-engineering-research

Here are 22 public repositories matching this topic..., mauricioaniche / repodriller.

a tool to support researchers on mining software repositories studies

  • Updated Nov 28, 2023

wogscpar / SZZUnleashed

An implementation of the SZZ algorithm, i.e., an approach to identify bug-introducing commits.

  • Updated Oct 4, 2023

carpentries-incubator / python-intermediate-development

Intermediate Research Software Development Skills In Python Lesson Material

  • Updated Apr 30, 2024

MrVPlusOne / Singularity

Pattern Fuzzing for Worst-Case Algorithmic Complexity using Program Synthesis

  • Updated Aug 24, 2021

ProdigyXable / defexts

Defexts: A Curated Dataset of Reproducible Real-World Bugs for Modern JVM Languages

  • Updated Aug 12, 2019

staslev / CodeDistillery

A highly parallel software repository mining framework.

  • Updated May 20, 2022

ponder-lab / GitHub-Issue-Classifier

Python script to mine for GitHub issues + comments and classify them.

  • Updated Dec 8, 2022

staslev / software-maintenance-explorer

A software maintenance explorer tool - https://soft-evo.shinyapps.io/maintenance-activities/ .

  • Updated May 31, 2019

mrksbrg / ImpRec

Recommendation System for Change Impact Analysis

  • Updated Feb 21, 2020

vcuse / alvo

⚙️ Software: A block-based programming language prototype for mobile robots.

  • Updated Mar 8, 2023

nirtiac / EmbeddingBugs

Source Code for Applying Embeddings to the Bug Localization Task

  • Updated Dec 11, 2018

apselab / duplo

⚙️ A block-based programming language for two-armed robots.

  • Updated Mar 14, 2024

mrksbrg / SZZUnleashed

  • Updated Jul 13, 2020

vcuse / workstation-setups

📄 Replication package: Investigating High-Res Virtual Reality with Passthrough Cameras in the Wild for Work in Homes and Offices.

  • Updated Aug 22, 2023

deenuy / se-imagenet

A large-scale repository of images for software-specific lexicons database called 'SE-ImageNet' to complement software engineering communities and computer vision researchers

  • Updated May 25, 2022

ganeshkavhar / Music-Player-Python

  • Updated Nov 7, 2020

ayaankazerouni / incremental-testing

Repo mining and analysis code to measure adherence to incremental testing.

  • Updated Jan 31, 2020

fronchetti / COLA-2022

📄 Replication package: Language impact on productivity for industrial end users: A case study from Programmable Logic Controllers

  • Updated Jan 25, 2022

martinvelez / stackoverflow_data_dump

Ruby scripts to process the Stack Overflow Posts.xml file in the Stack Exchange data dump.

  • Updated Aug 17, 2016

ganeshkavhar / Youtube-Downloader-App-with-Python

  • Updated Nov 18, 2020

Improve this page

Add a description, image, and links to the software-engineering-research topic page so that developers can more easily learn about it.

Curate this topic

Add this topic to your repo

To associate your repository with the software-engineering-research topic, visit your repo's landing page and select "manage topics."

How software engineering research aligns with design science: a review

  • Open access
  • Published: 18 April 2020
  • Volume 25 , pages 2630–2660, ( 2020 )

Cite this article

You have full access to this open access article

research project for software engineering

  • Emelie Engström 1 ,
  • Margaret-Anne Storey 2 ,
  • Per Runeson 1 ,
  • Martin Höst 1 &
  • Maria Teresa Baldassarre 3  

10k Accesses

26 Citations

13 Altmetric

Explore all metrics

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 communication of research contributions.

The aim of this study is 1) to understand whether the design science lens helps summarize and assess software engineering research contributions, and 2) to characterize different types of design science contributions in the software engineering literature.

In previous research, we developed a visual abstract template, summarizing the core constructs of the design science paradigm. In this study, we use this template in a review of a set of 38 award winning software engineering publications to extract, analyze and characterize their design science contributions.

We identified five clusters of papers, classifying them according to their different types of design science contributions.

Conclusions

The design science lens helps emphasize the theoretical contribution of research output—in terms of technological rules—and reflect on the practical relevance, novelty and rigor of the rules proposed by the research.

Similar content being viewed by others

research project for software engineering

Literature reviews as independent studies: guidelines for academic practice

research project for software engineering

What is Qualitative in Research

research project for software engineering

Introduction to Design Science Research

Avoid common mistakes on your manuscript.

1 Introduction

Design science is a paradigm for conducting and communicating applied research such as software engineering. The goal of design science research is to produce prescriptive knowledge for professionals in a discipline and to share empirical insights gained from investigations of the prescriptions applied in context (van Aken 2004 ). Such knowledge is referred to as “design knowledge” as it helps practitioners design solutions to their problems. Similar to other design sciences, much software engineering research aims to design solutions to practical problems in a real-world context.

Design science is an established research paradigm in the fields of information systems (Hevner et al. 2004 ) and other engineering disciplines, such as mechanical, civil, architectural, and manufacturing engineering. Footnote 1 It is also increasingly used in computer science; for example, it is now accepted as the de facto paradigm for presenting design contributions from information visualization research (Sedlmair et al. 2012 ). Although Wierenga has promoted design science for capturing design knowledge in software engineering (Wieringa 2014 ), we seldom see it being referred to in our field (although there are some exceptions (Wohlin and Aurum 2015 )). We are puzzled by its low adoption as the use of this lens could increase the clarity of research contributions for both practitioners and researchers, as it has been shown to do in other fields (Shneiderman 2016 ).

The goal of our research is to investigate if and how a design science paradigm may be a viable way to assess and communicate research contributions in existing software engineering literature. To this end, we consider a set of software engineering research papers and view these contributions through a design science lens by using and improving a visual abstract template we previously developed to showcase design knowledge (Storey et al. 2017 ).

We inspected 38 ACM distinguished papers published at the International Conference on Software Engineering (ICSE) over a five-year period—publications considered by many in the community as well-known exemplars of fine software engineering research, and papers that are expected to broadly represent the diverse topics addressed by our research community. Although these papers set a high bar for framing their research contributions, we found that the design science lens improved our understanding of their contributions. Also, most of the papers described research contributions that are congruent with a design science paradigm, even though none of them explicitly used the term. Applying this lens helped us elucidate certain aspects of the contributions (such as relevance, novelty and rigor), which in some cases were obscured by the original framing of the paper. However, not all the papers we considered produced design knowledge, thus some research publications do not benefit from using this lens.

Our analysis from this exercise led to five clusters of papers based on the type of design knowledge reported. We compare the papers within each cluster and reflect on how the design knowledge is typically achieved and reported in these clusters of papers.

In the remainder of this paper, we first present background on design science and our conceptualization of it by means of a visual abstract template (Section  2 ). We then describe our methodology for generating visual abstracts for the cohort of ACM distinguished papers we studied (Section  3 ), and use the information highlighted by the abstracts to extract the design knowledge in each paper. Finally, we cluster the papers by the type of design knowledge produced (Section  4 ). We interpret and discuss the implications of our findings (Sections  5 and  6 ), outline the limitations of our study (Section  7 ), and discuss related work (Section  8 ) before concluding the paper (Section  9 ).

2 Background

Our conceptualization of design science in software engineering, which our analysis is based on, was formed from a thorough review of the literature and a series of internal group workshops on the topic. This work helped us develop a visual abstract template to use as a lens for communicating and assessing research contributions (Storey et al. 2017 ). In this section, we give a brief introduction to design science and the visual abstract template. We use the term design knowledge to refer to the knowledge produced in design science research.

2.1 Design Science

Design science is a common research paradigm used in many fields of information systems and other engineering disciplines. By research paradigm, we refer to van Aken’s definition: “the combination of research questions asked, the research methodologies allowed to answer them and the nature of the pursued research products” (van Aken 2005 ). The mission of design science is to solve real-world problems. Hence, design science researchers aim to develop general design knowledge in a specific field to help practitioners create solutions to their problems. In Fig.  1 , we illustrate the relationship between the problem domain and solution domain , as well as between theory and practice . The arrows in the figure represent different types of contributions of design science research, i.e., problem conceptualization, solution design, instantiation, abstraction, and validation.

figure 1

An illustration of the interplay between problem and solution as well as between theory and practice in design science research. The arrows illustrate the knowledge-creating activities, and the boxes represent the levels and types of knowledge that is created

Design knowledge is holistic and heuristic by its nature, and must be justified by in-context validations (Wieringa 2014 ; van Aken 2004 ). The term holistic is used by van Aken ( 2004 ) and refers to the “magic” aspect of design knowledge, implying that we never fully understand why a certain solution works in a specific context. There will always be hidden context factors that affect a problem-solution pair (Dybå et al. 2012 ). As a consequence, we can never prove the effect of a solution conclusively, and must rely on heuristic prescriptions. By evaluating multiple problem-solution pairs matching a given prescription, our understanding about that prescription increases. Design knowledge can be expressed in terms of technological rules (van Aken 2004 ), which are rules that capture general knowledge about the mappings between problems and proposed solutions .

Van Aken describes the typical design science research strategy to be the multiple case study (van Aken 2004 ), which can be compared with alpha and beta testing in clinical research, i.e., first case and succeeding cases. Rather than proving theory, design science research strives to refine theory, i.e., finding answers to questions about why, when, and where a solution may or may not work. Each new case adds insights that can refine the technological rule until saturation is achieved (van Aken 2004 ). Gregor and Hevner present a similar view of knowledge growth through multiple design cycles (Gregor and Hevner 2013 ). Wieringa and Moralı ( 2012 ) and Johannesson and Perjons ( 2014 ) discuss action research as one of several empirical methodologies that can be used to produce design knowledge. Sein et al. ( 2011 ) propose how design science can be adapted by action research to emphasise the construction of artifacts in design science. However, action research does not explicitly aim to develop knowledge that can be transferred to other contexts, but rather it tries to make a change in one specific local context.

2.2 A Design Science Visual Abstract Template

The visual abstract template we designed, shown in Fig.  2 , captures three main aspects of design science contributions: 1) the theory proposed or refined in terms of a technological rule; 2) the empirical contribution of the study in terms of one or more instances of a problem-solution pair and the corresponding design and validation cycles; and 3) support for the assessment of the value of the produced knowledge in terms of relevance, rigor, and novelty. While adhering to the design science paradigm puts the focus on how to produce and assess design knowledge (i.e., the technological rules), our visual abstract template is designed to help researchers effectively communicate as well as justify design knowledge. It also helps highlight which instantiations of the rule have been studied and how they were validated, how problem understanding was achieved, and what foundations for the proposed solution were considered. In the visual abstract template, the researcher is encouraged to reflect on how a study adds new knowledge to the general theory (i.e., the constructs of the technological rule) and to be aware of the relationship between the general rule and its instantiation (the studied problem-solution pair).

figure 2

The visual abstract template (Storey et al. 2017 ) capturing 1) the theory proposed or refined in terms of a technological rule; 2) the empirical contribution of the study in terms of a problem-solution instance and the corresponding design and validation cycles; and 3) support for the assessment of the value of the produced knowledge in terms of relevance, rigor, and novelty

2.2.1 The Technological Rule

In line with van Aken ( 2004 ), our visual abstract template emphasizes technological rules (the top box in Fig.  2 ) as the main takeaway of design science within software engineering research. A technological rule can be expressed in the form: To achieve <Effect > in <Situation > apply <Intervention> . Here, a class of software engineering problems is generalized to a stakeholder’s desired effect of applying a potential intervention in a specified situation. Making this problem generalization explicit helps the researcher identify and communicate the different value-creating aspects of a research study or program. Refinements or evaluation of the technological rule may be derived from any one of the three processes of problem conceptualization , solution design , or empirical validation , applied in each instantiation.

Technological rules can be expressed at any convenient abstraction level and be hierarchically related to each other. However, technological rules expressed at a high abstraction level (e.g., “to produce software of high quality, apply good software engineering practices”) tend to be either too high-level or too bold (easy to debunk). On the other hand, an abstraction level that is too low level may lead to narrowly scoped and detailed rules that may lack relevance for most software engineers. It is important to explicitly formulate the technological rule when presenting design science research and to be consistent with it both when arguing for its relevance and novelty, as well as when presenting the empirical (or analytical) support for the claims.

2.2.2 The Problem-Solution Pair

The main body of the visual abstract template (the middle section in Fig.  2 ) focuses on the empirical contribution of one or more studies, and is composed of two boxes for the problem-solution instantiation of the technological rule and three corresponding descriptions of the knowledge-creating activities, problem conceptualization, solution design, and validation. This part of the VA helps to distinguish which empirical studies are done and how they contribute to insights about the problem, the solution, or solution evaluation.

2.2.3 The Assessment Criteria

The ultimate goal of design science research is to produce general design knowledge rather than to solve the problems of unique instances. Thus, the value of the research should be assessed with respect to the technological rule (i.e., the design knowledge) produced. The information in the three assessment boxes (the bottom of Fig.  2 ) aims to help the reader make an assessment that is relevant for their context. Hevner presents three research cycles in the conceptual model of design science, namely the relevance , rigor , and design cycles (Hevner et al. 2004 ). We propose that the contributions of design science research be assessed accordingly with respect to relevance, rigor , and novelty .

The relevance box aims to support answering the question To whom is this technological rule relevant? Relevance is a subjective concept and we are not striving to find a general definition. Instead we suggest that the basic information needed to assess relevance of a research contribution is the potential effect of the proposed intervention combined with the addressed context factors. The relevance of a research contribution could be viewed from two perspectives: the targeted practitioner’s perspective, and the research community’s perspective. From the individual practitioner’s point of view, the relevance of a research contribution relates to the prevalence and severity of the addressed problem and the applicability of the proposed intervention. This can be assessed by comparing their specific context with the one described in the research report. For the research community, a measure of relevance often relates to how common or severe the studied problem is. To enable both types of assessments, relevant context factors need to be reported.

The rigor box aims to support answering the question How mature is the technological rule? Rigor of a design science study refers to the strength of the added support for the technological rule and may be assessed with respect to all of the three knowledge-creating activities: problem conceptualization, solution design, and empirical validation. However, solution design is a creative process that does not necessarily add to the rigor of a study. One aspect of rigor in the design activity could be the extent to which the design is built on prior design knowledge. Also, the consideration of alternative solutions could be taken into account. The other two activities—problem conceptualization and empirical validation—are based on common empirical methods on which relevant validity criteria (e.g., construct validity) can be applied. Note that the template only captures the claims made in the paper, and the validity of the claims are assumed to be assessed in the peer review process.

The novelty box aims to capture the positioning of the technological rule in terms of previous knowledge, and it supports answering the question Are there other comparable rules (similar, more precise, or more general rules) that should also be considered when designing a similar solution in another context? Technological rules may be expressed at several abstraction levels; thus, it is always possible to identify a lower abstraction level where a research contribution may be novel, but doing so may be at the cost of more general relevance. For example, a technological rule that expresses the efficiency of a technique in general may be made more specialized if it instead expresses the efficiency in one specific type of project that has been studied. Then the relevance is less general, and the novelty may be increased since it is the first investigation at that level of detail. Similarly, rigor is increased since the claims are less bold.

To optimize rigor, novelty, and relevance of reported research, the researcher should strive to express the technological rule at the highest useful abstraction level, i.e., a level at which it is novel, the provided evidence gives strong support and it is not debunked by previous studies (or common sense). However, adding empirical support for existing but under-evaluated technological rules has value, making novelty less important than the rigor and relevance criteria. To this extent, replication of experiments has been discussed (Carver et al. 2014 ; Juristo and Gómez 2010 ; Shull et al. 2008 ) and is encouraged by the software engineering community. Footnote 2 The incremental adding of empirical support for a technological rule could be referred to as conceptual replication in which the same research question is evaluated by using a different study design, as discussed by Shull et al. ( 2008 ).

3 Methodology

The main goal of this work was to investigate how well software engineering (SE) research contributions are aligned with a design science paradigm. As part of this work, we aimed to answer the following research questions :

From a design science perspective, what types of contributions do we find in the SE community?

In papers that present design knowledge, how clearly are the theoretical contributions (i.e., the technological rules ) defined in these papers?

How are novelty , relevance and rigor discussed in papers with design knowledge contributions?

As mentioned above, our earlier research produced a visual abstract template for communicating design science research in SE (Storey et al. 2017 ). The principal steps of that study are presented in the left part of Fig.  3 . We started by reviewing the design science literature and extracting elements of the paradigm from different authors (van Aken 2004 ; Hevner et al. 2004 ; Wieringa 2014 ), from which we created our initial conceptualization of design science as a paradigm for SE. We then studied SE papers with design science contributions, and extracted information related to such contributions from the papers iteratively to identify elements of design science . This work resulted in the visual abstract template, with examples of SE research (Storey et al. 2017 ).

figure 3

The approach followed to develop the initial version of the visual abstract (the left side) and the main steps of the research presented in this paper (the right side)

In this paper we describe how we use the visual abstract template to describe the research contributions in a particular set of papers from the main technical track at the ICSE conference: those that were selected as the top 10% of papers (i.e., papers designated the ACM SIGSOFT Distinguished Paper Award Footnote 3 ) across five years of the conference (2014–2018 inclusive) We chose ICSE because it is considered to be one of the top publishing venues in software engineering that covers a broad set of diverse topics, and we chose the “best” of those papers because we expected this cohort would represent exemplars of fine research. In total, we considered and applied the visual abstract template to describe the research contributions across 38 papers, which are listed separately at the end of the references for this paper.

The principal steps of this study are outlined in the right part of Fig.  3 and elaborated below. Each paper in the cohort of the ICSE distinguished papers from 2014–2018 was randomly assigned to two reviewers (among the authors of this paper). As the work was not about judging papers, but about understanding, we did not care for any conflicts of interest. The two reviewers independently extracted information from the papers to answer the set of design science questions listed in Table  1 . This set of questions were derived from the constituents of our conceptualization of design science as a paradigm.

The first author derived an initial list of questions, which were reviewed by the other authors with minor changes. Since the visual abstract also represents the constituents of design science, the questions map to each of the elements in the visual abstract template. Thus, we defined a visual abstract for each paper, which we iterated until we arrived at an agreement for a shared response to these questions, seeking additional input through peer reviews by the rest of the research groups of the authors or other experts for papers on topics unfamiliar to us.

The answers to the questions were captured in a spreadsheet to facilitate future analysis as well as ongoing review and internal auditing of our process. Our combined responses were then used to populate the visual abstract template for each paper, from which we analyzed the design knowledge contributions in SE (RQ 2 and 3). The collection of visual abstracts for all of the papers is available online at http://dsse.org , which constitutes our combined understanding of the analyzed software engineering research from a design science perspective.

As part of our analysis, we wanted to validate our interpretations with the original authors . To assess the value of such validation, we confirmed our interpretations of the 2014 and 2015 ICSE distinguished papers with the original authors. We heard back from half of the authors of this set of papers, who confirmed the accuracy of our responses (mentioning minor improvements only). We assessed this feedback as a preliminary validation of our process and did not see the need to repeat this step for the other papers—in each case, the abstracts for all papers we studied are available online Footnote 4 and the authors may comment publicly on our interpretations if they choose.

Once we finished creating all the visual abstracts, we clustered the papers (see the rightmost part of Fig.  3 ) to identify contribution types (RQ1). As we answered the questions in Table  1 , we presented our answers to other members in this paper’s author team for peer review , which in many cases led to refinements in our responses. We also printed the visual abstracts we created for each paper (in miniature), and working as a group in a face-to-face meeting, we sorted the visual abstracts into clusters to identify different types of design science contributions.

Following this face-to-face visual abstract clustering activity, we worked again in pairs to inspect each of the papers in the clusters to confirm our categorization. Then, we reviewed and confirmed the categorization of each paper as a group. During this confirmation process, we refined our categorization and collapsed two categories into one: we combined papers that were initially classified as exploratory with papers that we initially thought were design science contributions in terms of problem understanding, but on reflection these were better framed as explanatory papers as the investigated problems were not linked to a specific solution. We present the stable clusters that emerged from these activities in the following section of this paper.

4 Results from the Paper Cluster Analysis

Overall we identified five clusters, described in detail below, based on our analysis of how each paper contributed to the extracted technological rule. Note the rules are not extracted by the original authors of the papers but by us for the purpose of this particular review of the papers according to their design science contributions.

Problem-solution pair : this cluster represents papers that balance their focus on a problem instance and solution.

Solution validation : this cluster is characterized by papers that concentrate largely on the solution and its validation, rather than on problem conceptualization.

Solution design : papers in this cluster focus on the design of the solution more than on problem conceptualization or solution validation.

Descriptive : these papers address a general software engineering phenomenon rather than a specific instance of a problem-solution pair.

Meta : this cluster of papers may be any of the types above but are aimed at contributing research insights for researchers rather than for practitioners.

Figure  4 illustrates how the first four clusters (1–4) map to a design science view, including both the problem-solution dimension and the theory-practice one. Clusters 1–3 each represent different types of design science research contributions since the papers in these clusters consider explicit problem-solution pairs. Papers in the 4th cluster contribute explanatory knowledge and, although such knowledge may support software engineering solution design, they are better framed through an explanatory lens. Cluster 5 is not represented in this figure as these papers produce knowledge for software engineering researchers rather than for software engineering practitioners.

figure 4

An illustration of how the identified clusters map to the problem/solution and the practice/theory axes respectively. The arrows show how typical studies in each cluster traverse the four quadrants (1. practical problem, 2. conceptual problem description, 3. general solution design, and 4. instantiated solution)

Figure  5 presents a visual representation of the main clusters that emerged from our analysis along with a listing of which papers (first author/year) belong to the different clusters. The two axes of this graph are defined as follows: the x-axis captures the solution contribution ranging from high-level recommendations to more concrete solutions that are designed and may be validated; and the y-axis indicates the problem understanding contribution, whereby the problem is already known or assumed, to where new insights are produced from the research.

figure 5

The main clusters that emerged from our analysis of the papers, showing the key design science contributions in terms of problem understanding insights and solution recommendations, design and/or validation

A more detailed and nuanced description for each cluster is provided below. For each cluster we refer to examples of papers from our analysis and include one visual abstract for each example to showcase the design knowledge that is or is not captured by each cluster.

4.1 Problem-Solution Pair

For the papers in this cluster, a problem instance is identified and investigated to gain a generalized problem formulation matching the proposed solution. A solution is proposed, designed and implemented, then validated rigorously in-context through empirical methods. It is the most populated cluster, indicating that many software engineering papers can be framed in accordance with a design science paradigm.

The technological rule is defined quite clearly in all of the papers belonging to this cluster and is in most cases a new proposal of either a tool or methodological approach necessary to solve the problem instance (see Fig.  6 ). Consequently, the relation between problem (e.g., difficulty of estimating energy consumption in Java Collection classes) and solution (e.g., use per-method energy profiles to chose among Java Collections and reduce/optimize energy consumption) is explicit.

figure 6

Visual abstract of a typical paper in the problem solution cluster, Hasan et al. ( 2016 )

Solutions are geared towards both practitioners and researchers, making it explicit and easy for a stakeholder to assess the relevance of the rule for their specific case. The solutions are mainly validated by conducting case studies on real projects (Nistor et al. 2015 ) or controlled experiments (Alimadadi et al. 2014 ; Bell and Kaiser 2014 ).

In some cases, alternative solutions are compared to the proposals made. For example, Rath et al. ( 2018 ) considered alternative information retrieval techniques and classifiers during the design of their solution, and used precision/recall values collected from all of the compared solutions to develop their classifier.

A representative example for this cluster is the paper by Hasan et al. ( 2016 ). The problem instance outlines how it is difficult to estimate energy consumption in Java Collections classes. As a solution, the authors created detailed profiles of commonly used API methods for three Java Collections datatypes, namely: List, Map, and Set, and validated them through a case study on Java libraries and applications. In this way, developers can use the information of the usage context of a data structure and the measured energy profiles to decide between alternative collection implementations and optimize their solutions. The visual abstract is shown in Fig.  6 . Other visual abstracts in this cluster (and other clusters) are available on our online website. Footnote 5

In summary, the problem-solution cluster papers can be seen as presenting complete design science contributions, considering both the general and specific aspects of a problem-solution pair investigated in context, with implications for researchers and practitioners.

4.2 Solution Validation

Papers in the solution validation cluster mainly focus on refining a previously proposed, but often implicit, technological rule. The problem is implicitly derived from a previous solution and its limitations rather than from an observed problem instance. Accordingly, in most cases, the problem is motivated by a general statement at an abstract level, making claims about “many bugs...” or “it is hard to...”. Some of the papers underpin these claims with references to empirical studies, either the authors’ own studies or from the literature, while others ground the motivation in what is assumed to be generally “known”.

As a typical example for this cluster, Loncaric et al. ( 2018 ) identify that others have tried to automate the synthesis of data structures and present a tool that embeds a new technique that overcomes the limitations of previous work. A proof of concept is demonstrated through four real cases. The corresponding visual abstract is presented in Fig.  7 .

figure 7

Visual abstract of a typical paper in the cluster of solution validation studies, Loncaric et al. ( 2018 )

Note that some of the papers in this cluster focus on understanding the problem with previous solutions, with the aim to improve the solution or come up with a new solution. For example, Rodeghero et al. ( 2014 ) attempt to improve code summarization techniques for program comprehension. They perform an extensive eye-tracking study to design a code summarization tool.

The technological rules are mostly implicit in these papers. As they are related to problems with existing solutions, rather than original problems in the SE domain, the presentation of the solutions are mostly related to previous solutions. A technological rule can sometimes be derived indirectly, through the aim of an earlier solution, but it is rarely defined explicitly.

The papers in this cluster discuss relevance to research explicitly, while the relevance to practice is mostly discussed indirectly, and at a high abstraction level. For example, Rojas et al. ( 2017 ) claim that writing good test cases and generating mutations is hard and boring, and thus they propose a gaming approach to make this more enjoyable and better. The validation is conducted, testing a specific code instance, while the original problem is rooted in high-level common sense knowledge. However, there are other papers in the cluster that back up the problem through evidence, such as a vulnerability database, used by Yan et al. ( 2018 ) to motivate addressing the vulnerability problem of Use-After-Free pointers.

In summary, the solution validation papers focus on refining an existing technological rule. The motivating problem is mostly expressed in terms of high-level knowledge, rather than specific instances, although some papers refer to empirical evidence for the existence and relevance of the problem. The more specific problem description is often related to problems with previous solutions. The papers clearly show a design science character, although they are at risk of solving academic problems, rather than practitioners’ problem instances.

4.3 Solution Design

The papers in this cluster present details of a new instantiation of a general solution. For example, Avgerinos et al. ( 2014 ) present a new way of testing with symbolic execution, see Fig.  8 . The presented approach finds more bugs than the previously available methods. However, the need for this tool was not explicitly stated and the authors perhaps assume the need is clear.

figure 8

Visual abstract of a typical paper in the solution design cluster, Avgerinos et al. ( 2014 )

Similarly, Bersani et al. ( 2016 ) propose a new semantics for metric temporal logic (MTL) called Lazy Semantics for addressing memory scalability. The proposal builds on previous research and is focused on the solution, a new trace checking algorithm. A similar observation can be made for analysis and validation. For example, the analysis in Avgerinos et al. ( 2014 ) is conducted by using the proposed solution on a rather large code base and using well known metrics such as number of faults found, node coverage, and path coverage. Whereas in Bersani et al. ( 2016 ), the validation is carried out comparing the designed solution with other, point-based semantics.

For papers in this cluster, the problem is not explicitly formulated but it is more generally discussed in terms of, for example, decreasing the number of faults. The papers tend to describe the designed solutions in rather technical terms. This is also how the novelty typically is highlighted. Validations are often conducted by applying the proposed solution on a code base and analyzing metrics of, e.g., the number of faults found in testing, and no humans are directly involved as subjects in validations. Empirical data for the validations are either obtained by technically measuring e.g., execution time, or by using data already published in programmer-forums.

In summary, the solution design papers focus on low level technological rules. The motivating problem is in most cases technical details of a solution to a more general problem. While the validity of the general solution is implicit, the low level solution is often validated through controlled experiments or benchmarking in a laboratory setting. The papers clearly show a design science character, although at a low abstraction level.

4.4 Descriptive

The papers categorized in this cluster develop an understanding of a software engineering phenomenon that is currently not well understood. Such research studies may expose problems that need to be addressed, or they may reveal practices or tools that could benefit other challenging software engineering scenarios.

For example, Murphy-Hill et al. ( 2014 ) conducted a study of game developers and identify a number of recommendations for how game developers could be better supported through improved tools or practices, while Hoda and Noble ( 2017 ) carried out a grounded theory study to achieve an understanding of how teams transition to agile.

Concrete instances of software engineering phenomena have been studied in various ways. Gousios et al. ( 2016 ) surveyed 4,000 open source contributors to understand the pull-based code contribution process, Tufano et al. ( 2015 ) analyzed git commits from 200 open source repositories to investigate more about code smells, Cacho et al. ( 2014 ) studied changes to 119 versions of code extracted from 16 different projects to understand trade-offs between robustness and maintenance and Lavallée and Robillard ( 2015 ) reported on a 10 month observational study of one software development team to understand why “good developers write bad code”.

Figure  9 shows a typical example of a visual abstract from this cluster. The theoretical contributions of these studies are descriptive problem characterizations. In four out of eight papers, a list of recommendations is provided as well. Thus, it is in most cases possible to derive several technological rules from each such paper. However, these technological rules are not instantiated or evaluated further, and neither are they highlighted as the main contributions of the reported studies.

figure 9

Visual abstract of a typical paper in the cluster of descriptive studies, Tufano et al. ( 2015 ). In this case the visual abstract template does not match the type of study, why some boxes are left empty (NA)

All papers in this cluster discuss relevance to practice: many explicitly discuss how common the phenomenon under study is (e.g., Gousios et al. 2016 show a diagram of the monthly growth of pull request usage on GitHub). Others implicitly highlight a knowledge gap assumed to be of importance (e.g., Lavallee et al. 2015 pinpoint the lack of knowledge about the impact of organizational factors on software quality). Novelty or positioning is, however, not described in terms of the problem or the solution but about aspects of the study as a whole. Gousios et al. ( 2016 ) add a novel perspective , the contributors’ code review, Lavallée and Robillard ( 2015 ) add more empirical data about organizational factors and software quality, and Tufano et al. ( 2015 ) claim to report the first empirical investigation of how code smells evolve over time.

In summary, although the descriptive papers may contribute to design knowledge, i.e., understanding of conceptual problems and initial recommendations, design knowledge in the form of technological rules are not directly described in the papers. The main contributions are discussed in more general terms such as descriptions of the phenomenon under study (defined in the titles) and general information about the study approach and the studied instances (which often appears in the abstracts). Potential problems and their solutions are described in the discussion sections of the papers. Their relevance to practice is in terms of the real-world problems or recommendations that other applications have that tend to be exposed by these kind of papers. Thus, such papers are typically reporting on exploratory research that may be quite high in novelty.

Three of the distinguished papers we reviewed do not aim to identify or solve software engineering problems in the real world. Rather, these studies aim at identifying or solving problems which software engineering researchers may experience. We therefore refer to them as Meta studies, i.e., addressing the meta level of software engineering research in contrast to the primary level of software engineering practice . Siegmund et al. ( 2015 ) conducted a study that reveals how the software engineering research community lacks a consensus on internal and external validity. Rizzi et al. ( 2016 ) advise researchers about how to improve the efficiency of tools that support large-scale trace checking. Finally, Floyd et al. ( 2017 ) propose how fMRI methods can help software engineering researchers gain more insights on how developers comprehend code, and in turn may improve comprehension activities. We show the visual abstract for the Floyd et al. ( 2017 ) paper in Fig.  10 .

figure 10

A typical example of a visual abstract in the Meta cluster, Floyd et al. ( 2017 )

Meta papers address software engineering research problems, and propose solutions for software engineering researchers. The design knowledge gained in these studies is primarily about the design of software engineering research , and the key stakeholders of the technological rule are rather the researchers rather than software engineers. Still, they fall under a design science paradigm and the Meta category of papers may show relevance to industry but in an indirect manner.

In summary, papers that we describe as Meta may fall under a design science research paradigm, leading to a technological rule with researchers rather than software engineers as the key stakeholders.

5 Discussion: Design Science Contributions in Software Engineering

The long term goal of much software engineering research is to provide useful recommendations on how to address real-world problems providing evidence for benefits and potential weaknesses of those recommendations. Our analysis of ICSE distinguished papers reveals empirical contributions (RQ1) related to problem conceptualization , solution design , solution instantiation , and empirical validation (see the path traversal in Fig.  4 ). In 13 of the 38 papers we analyzed, all four activities are explored in equal depth while others focus on one or two activities, as shown in the clusterings above in Section  4 . All of those activities generate knowledge corresponding to the elements of our visual abstract template (see Fig.  2 ). However, none of the papers are presented in terms of these elements and we had to spend significant effort using the questions in Table  1 to extract this knowledge in a systematic way. Extracting technological rules from most papers was also quite challenging. That said, applying the design science lens helped us notice and distinguish the different kinds of design contributions from the papers we analyzed, and guided our assessment of the papers in terms of research relevance, rigor and novelty. We discuss our experiences using the design science lens below and also the challenges we faced applying it to different types of papers. We also allude to experiences we have faced as researchers and reviewers of research papers below.

5.1 Problem Conceptualization and Descriptive Research in Software Engineering

We found a design science paradigm helped us distinguish descriptive research contributions from prescriptive research contributions in the papers we analyzed. Indeed eight of the papers we analyzed focused primarily on the understanding of software engineering problems or phenomenon that were not currently well understood. Descriptive papers are often labeled by the authors as “exploratory” research. Often these papers do not only describe or expose specific problems or phenomenon, but they may also describe why or how certain solutions or interventions are used, and conclude with directions for future research or with recommendations for practitioners to consider (e.g., to use a studied intervention in a new context).

We struggled at first to apply the design science lens to some of these descriptive papers as for most of them no explicit intervention or recommendations were described or given. Articulating clear technological rules was not possible as this research does not aim at producing design prescriptions (yet). However, on reflection we recognized that the design science lens helped us to recognize and appreciate the longer term goals behind this exploratory research that would later culminate in design knowledge. Sometimes we found that descriptive research is under appreciated over prescriptive solutions, but understanding problems clearly is also an important research contribution in a field like software engineering that changes rapidly. In fact, often researchers are “catching up” to what is happening in industry and to recognize new emerging problems that may arise in industrial settings as tools and practices evolve.

Another cluster of papers we identified, the 13 problem-solution pair papers, also contribute insights on problems experienced in software engineering projects. Many of the problem-solution papers derive problem insights from specific problem instances. This was the biggest cluster of papers. The design science lens helped us recognize and appreciate that these papers had contributions, not just on the solution design and validation side, but also contributed or confirmed insights on a studied problem. We have all had experiences when reviewing papers where a co-reviewer failed to recognize problem understanding contributions and argued that a given solution was either too trivial or poorly evaluated. As papers are written (and then typically read) in a linear fashion, losing track of the various contributions can happen. For us, laying out the contributions visually (and by answering the questions we explicitly posed in Table  1 ) helped us keep track of and appreciate contributions on both the problem and solution aspects.

5.2 Solution Design Contributions in Software Engineering Research

The other two main clusters of papers that are aimed at improving software engineering practice are the seven solution-design papers and seven solution-validation papers. These papers contribute design knowledge concerning an intervention and mostly rely on either previous research or accepted wisdom that the problem they address is in need of solving. For these papers, the first questions in Table  1 about the problem instance addressed and problem understanding approach did not always have an explicit answer in the paper. However, to conduct an empirical validation of the design, some kind of instantiation of the problem is required and we referred to these instances when extracting information about problem instance and problem understanding for our analysis. We found this to be an effective way to address distances between the abstraction level of the proposed technological rule and its empirical validation. Papers without specified problem instances are at risk of proposing solutions, which do not respond to real software engineering problems.

5.3 Identifying Technological Rules from Software Engineering Research

For most papers, we were able to extract technological rules from the presented research. However, none of the papers had any conclusion or recommendation in such a condensed form (see RQ2). In some cases, the abstracts and introduction sections were written clearly enough that we could identify the intended effect, the situation and the proposed solution intervention presented in the paper. Moreover, when research goals and questions were explicitly stated, technological rules were easier to formulate. Other papers required more detailed reading to extract the needed information. In some publication venues, structured abstracts are introduced as a means to achieve similar clarity and standardization (Budgen et al. 2008 ), but such abstracts are not typically used for ICSE. Introducing technological rules would, we believe, help in communicating the core of the contribution, both to peer academics and potentially also to industry. Development towards more explicit theory building in software engineering (Sjøberg et al. 2008 ; Stol and Fitzgerald 2015 ) may also pave the way for technological rules as a means to express theoretical contributions.

5.4 Assessing Design Knowledge Contributions: Rigor, Relevance and Novelty

Our analysis of rigor, relevance and novelty are based on questions 7-9 in Table  1 . Rigor can be considered in terms of the suitability of specific research methods used or in how a certain method is applied. Empirical research methods – quantitative as well as qualitative – fit well into both problem conceptualization and validation and we saw examples of very different methods being used. How rigor is ensured of course depends on the choice of method as we discuss above. We found that most authors discussed rigor —not surprising given that these papers were considered as the best papers from an already competitive publishing venue (see RQ3). Whether rigor was discussed for the steps of problem conceptualization, solution design and empirical validation, depended on the paper cluster. The solution validation and solution design papers tended to rigorously benchmark their solution against a code base or other artifacts to demonstrate the merits of the proposed approach. We found that validating the solutions in industrial contexts was not common in these two clusters of papers. Consequently we also found that relevance in terms of specific stakeholders was not discussed much in these papers (as compared to the descriptive or problem-solution clusters of papers).

How novelty was discussed by authors varied greatly depending on the paper cluster but also by the author. As the papers did not explicate the technological rules, none of them discussed their contribution in terms of technological rule novelty. Descriptive papers tended to focus on novelty of the described problem or phenomenon, problem-solution and solution-design papers focused on novelty of the solution, and solution-validation papers emphasized the solution (if refined or new) and insights from the solution validation.

6 Recommendations for Software Engineering Research

As researchers (and reviewers) ourselves we find that contributions from research papers are often not evident, and thus interested researchers and reviewers may miss the value in the papers. Furthermore, the technological rules, even for papers that aim at producing these rules, are not always easy to identify. To help in the design of research and perhaps also in the review of papers, we suggest using the design lens as follows:

Explicate design science constructs : We found design science constructs in most papers, but presenting each of the constructs explicitly, e.g., through the visual abstract (Storey et al. 2017 ), could help in communicating the research contributions to peer researchers and reviewers. Expressing the technological rules clearly and at a carefully selected level of abstraction, help in communicating the novelty of the contributions and may help in advancing the research in “standing on each others shoulders”.

Use real problem instances : Anchoring research in real problem instances could help to ensure the relevance of a solution. Without reference to an explicit problem instance, the research is at risk of losing the connection with the original question, as the details of a particular intervention are described or assessed by others.

Choose validation methods and context : Rigor in terms of method choice is an important consideration. The choice of methods and context for the validation may be different, depending on the intended scope of the theoretical contribution (i.e., the technological rule). If the scope is focused on fine tuning the design of an intervention, stakeholders may not need to be directly involved in the validation. If however the scope includes the perspective of stakeholders and their context, then methods and study contexts should reflect these perspectives.

Use the design science lens as a research guide : The visual abstract and its design science perspective may also be used to guide the design of studies and research programs, i.e., setting particular studies in a particular context. Similarly, a design science perspective can be used as an analysis tool in mapping studies (Petersen et al. 2008 ), to assess existing research and identify research gaps that can be explored in future research studies and lead to novel contributions.

Consider research design as a design science : The cluster of meta studies, which are primarily aimed for researchers as the stakeholders, indicate that the design science lens also fits for the design and conduct of studies that focus on understanding our research methodology and methods. Papers that address problems in conducting research and propose solutions to help achieve higher quality research contributions are important contributions for our community to reflect and grow in research maturity. Conducting and presenting these in the same way as studies in the software engineering domain adds to their credibility and emphasizes how they are relevant to our community. This paper is also an example of a meta study aimed at our research community members as stakeholders. We created a visual abstract for this paper as well, and it may be found with our online materials (at http://dsse.org ).

We hypothesize that following these recommendations, based on our in depth analysis of ICSE distinguished papers, would enable a more consistent assessment of rigor, relevance and novelty of the research contributions, and thus also help the peer review process for future conference and journal publications.

7 Limitations

In order to understand how design science can be a useful lens for describing software engineering research, we considered all papers that have received a distinguished paper award over a five year period within a major venue such as ICSE. We felt these may represent papers that our community considers relevant and fine exemplars of SE research. We acknowledge that we would likely see a different result for a different population of papers (e.g., all papers presented at ICSE or in other tracks or venues or journals). That said, we purposefully selected this sample of papers as an exploratory step.

Our view of design science may differ from other views that are reported in the literature. We developed it from examining several interpretations of design science as discussed in Storey et al. ( 2017 ) and in Section  2 . Our common view of design science in software engineering was developed over the course of two years spent reading and discussing many design science papers in related domains. Our interpretation was developed in an iterative manner. We have used our visual abstract template in several workshops (notably at ISERN 2017, Footnote 6 RET 2017 Footnote 7 and CBSoft 2019 Footnote 8 ) and received favorable feedback about the viable application of the template to software engineering papers that contain design knowledge. However, we recognize that applying the visual abstract to papers is not always straightforward and we found that even among our team, we would apply it differently and pull out different highlights from the papers we read. We found that the process of applying it is in the end more important than the actual text we put in the boxes as doing so helped us understand the main contributions in the papers we analyzed from a design science perspective.

We recognize that our interpretations of the research contributions from the papers we examined may not be entirely accurate or complete. For this reason we requested feedback from the authors of the papers from 2014 and 2015 to check that our view of the design knowledge in their papers was accurate based on our understanding of their work. Among the responses we received (7 of 14 of the paper authors responded), all but one agreed with our summaries presented through the visual abstracts, while the sole initial disagreement was due to misinterpretation of the visual abstract template. This feedback convinced us that we were proceeding in the right direction. Consequently, we decided to rely on our judgment alone for the remaining papers.

To do our own validation, we divided papers equally among us assigning two of us to each paper. We would independently answer the design science questions (as mentioned in Section  3 ), then refer back to the paper in cases of disagreement, and merge our responses until we reached full agreement. With cases of ongoing disagreement, we sought additional expert opinions. Finally, we reviewed all of the abstracts as a group to reconfirm our interpretations. These abstracts are available online and open for external audit by the paper authors or by others in the community.

To derive clusters of the papers, we followed a rigorous process. We met face to face in a several hour workshop and followed up in several sessions to derive the clusters and categorize and reconfirm the categorization of the papers. We recognize that how we clustered the papers is potentially subjective and others may feel papers belong in different clusters, and may also find different clusters. We have posted all of the visual abstracts and our cluster diagram online which links to all of the visual abstracts (see https://doi.org/10.5281/zenodo.3465675 ). We welcome comments on our clusters and the categorization of individual papers.

8 Related Work

In this paper, we introduced our conceptualization of design science and the visual abstract template which instantiates our conceptualization and was designed to support communication and dissemination of design knowledge. Furthermore, we reviewed a cohort of software engineering research papers through this lens to understand the design science contributions in the papers. In this section of the paper, we extend the scope of related work to include other conceptualizations of design science, as well as other reviews of design science research conducted in a related field.

Design science has been conceptualized by Wieringa in software engineering (Wieringa 2009 ) and by several researchers in other disciplines, such as information systems (Hevner et al. 2004 ; Gregor and Hevner 2013 ; Johannesson and Perjons 2014 ) and organization and management (van Aken 2005 ). Wieringa describes design science as an act of producing knowledge by designing useful things (Wieringa 2009 ) and makes a distinction between knowledge problems and practical problems. Similarly, Gregor and Hevner emphasize the dual focus on the artifact and its design (Gregor and Hevner 2013 ) in information systems, and argue for an iterative design process where evaluation of the artifact provides feedback to improve both the design process and the artifact.

In our paper, we do not distinguish between knowledge problems and solution problems within the design sciences, but stress that the researcher’s task is always to produce knowledge, which in turn can be used by practitioners for solving their problems. Such knowledge may be embedded in artifacts such as tools, models and techniques or distilled to simple technological rules. In accordance with van Aken ( 2005 ), we distinguish between the explanatory sciences and the design sciences as two different paradigms producing different types of theory (explanatory and prescriptive, respectively) with different validity criteria. This is similar to Wieringa’s distinction between knowledge problems and practical problems (Wieringa 2009 ). In our study, we identified one cluster of software engineering papers belonging to the explanatory sciences (descriptive) and three clusters of papers belonging to the design sciences (problem-solution, solution-design, and solution evaluation)

In the management domain, van Aken propose to distinguish management theory, that is prescriptive, from organizational theory, that is explanatory (van Aken 2005 ). A corresponding division of software engineering theory has not been proposed yet, although theory types are discussed by software engineering researchers (Sjøberg et al. 2008 ; Stol and Fitzgerald 2013 ).

In the literature, design science has been studied and is thereby conceptualized in a number literature studies, which are relevant for this study. In the area of information systems, several literature reviews were conducted of design science research. Indulska and Recker ( 2008 ) analyzed design science articles from 2005–07 from well-known information systems conferences. They identified 142 articles, which they divided into groups, such as methodology- and discussion-oriented papers and papers presenting implementations of the design science approach. They found an increasing number of design science papers over the studied years.

Deng et al. ( 2017 ) and Deng and Ji ( 2018 ) also published a systematic review of design science articles in information systems. They identified articles by searching in top information systems journals and conferences from the years 2001–15, filtering the results and applying snow-balling, resulting in a final review sample of 119 papers or books. In their review, they analyze the topic addressed, artifact type, and evaluation method used. In our review, we classified papers along another dimension, i.e., what types of software engineering design science contributions the papers present in terms of problem understanding, solution design and solution validation. To our knowledge no reviews of software engineering literature have been made from a design science perspective before.

Wieringa et al. ( 2011 ) analyzed reasons for the low use of theories in software engineering by studying a set of papers identified in Hannay et al. ( 2007 ). They compare identified theories in software engineering to general theories with respect to level of generalization, form of theory, and use of theory, and argue that the reasons for low use of theories have to do with idealizing assumptions, context of software engineering theories, and that statistical model building needs no theories.

Concerning research relevance, Beecham et al. communicated with a test group of practitioners (Beecham et al. 2014 ) and found that evidence based on experience was seen as most important, and if it was not available in their own organization, they would seek information from similar organizations in the world for insights on global software engineering. They compare typical sources for software engineering researchers and sources where practitioners seek information and found that the overlap is very small. Similar findings were obtained by Rainer et al. ( 2003 ) study based on focus groups with practitioners and a literature review. These observations point to the need for presenting research in a way that is useful for practitioners. This is also discussed by Grigoleit et al. ( 2015 ), who conclude that practitioners assess the usefulness of many artifacts as being too low. This is in line with our findings, where we put forward the design science lens as a means to better communicate prescriptive research contributions in software engineering. That said, we have not evaluated it with practitioners so far.

Another attempt to make evidence available to practitioners is presented by Cartaxo et al. ( 2016 ). They present the concept of “evidence briefings”, which is a way to summarize systematic literature reviews in a one-page format. They used accepted information design principles to design the structure of the one-page briefing. The format and content were positively validated by both practitioners and researchers. While evidence briefings may provide an effective way to synthesize evidence from several studies, our visual abstract template may provide a way to effectively summarize the contribution of one study or research program from a design science perspective.

9 Conclusions and Future Work

Design science, although suggested for some time as a useful research paradigm for software engineering research, is not commonly used as a way to frame software engineering research contributions. Yet our analysis of 38 ICSE distinguished papers indicates that the majority of these papers can be expressed in terms of a design science paradigm. Much software engineering research is solution oriented, providing design knowledge, although it is less clear which problems some papers aim to solve.

The technological rule, as a condensed summary of design knowledge, offers a means to communicate not just the solutions designed or validated, but also the problems addressed. We were able to derive technological rules from most papers, although they were not explicitly stated as such in these papers. In future work, we aim to investigate how technological rules could be linked across different research contributions that address the same underlying problem. A higher level technological rule could be decomposed into more narrow but related rules, thus bringing insights across multiple papers that are linked by context, intervention type and effect. Currently, we lack the machinery in our community to link papers at this theoretical level and the results in papers remain as silos and are often not even referenced in related work. The technological rule template could help fill this gap and help us to better understand what we know and what we don’t know yet about certain problems and challenges in software engineering.

Also as future work, we wish to investigate if the design science visual abstract (or some variant of it) could provide an efficient way to present software engineering research contributions to industry. We published our abstracts from this study online (at http://dsse.org ) but it remains to be seen if industry finds this format useful or not. We expect that extracting technological rules from a set of papers that address a common problem or topic is likely to be of more value to industry (but this was not a goal of this current work). In the meantime, we anticipate that our analysis of ICSE distinguished papers through the design science lens may help our community increase adoption of the design science lens, which we anticipate in turn will allow us to do a better job of communicating, understanding and building on each others’ work.

Furthermore, as a means for spreading the word of this research to the community, it is our intention to contact editors of important journals as well as program chairs of relevant conferences such as ICSE and promote the adoption of VAs for authors that submit a research paper.

http://springer.com/journal/163 Research in Engineering Design

See e.g. https://2018.fseconference.org/track/rosefest-2018

https://www.sigsoft.org/awards/distinguishedPaperAward.html

http://dsse.org

http://www.scs.ryerson.ca/eseiw2017/ISERN/index.html

https://dl.acm.org/citation.cfm?id=3149485.3149522

https://github.com/margaretstorey/cbsoft2019tutorial

Beecham S, O’Leary P, Baker S, Richardson I, Noll J (2014) Making software engineering research relevant. Computer 47(4):80–83. https://doi.org/10.1109/MC.2014.92

Article   Google Scholar  

Budgen D, Kitchenham BA, Charters SM, Turner M, Brereton P, Linkman SG (2008) Presenting software engineering results using structured abstracts: a randomised experiment. Empir Softw Eng 13 (4):435–468. https://doi.org/10.1007/s10664-008-9075-7

Cartaxo B, Pinto G, Vieira E, Soares S (2016) Evidence briefings: Towards a medium to transfer knowledge from systematic reviews to practitioners. In: Proceedings of the 10th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement, ESEM ’16, pp 57:1–57:10

Carver JC, Juristo N, Baldassarre MT, Vegas S (2014) Replications of software engineering experiments. Empir Softw Eng 19 (2):267–276. https://doi.org/10.1007/s10664-013-9290-8

Deng Q, Ji S (2018) A review of design science research in information systems: Concept, process, outcome, and evaluation. Pacific Asia journal of the association for information systems, vol 10

Deng Q, Wang Y, Ji S (2017) Design science research in information systems: A systematic literature review 2001-2015. In: CONF-IRM 2017 Proceedings

Dybå T, Sjøberg D, Cruzes DS (2012) What works for whom, where, when, and why? On the role of context in empirical software engineering. In: Proceedings of the 2012 ACM-IEEE international symposium on empirical software engineering and measurement, pp 19–28. https://doi.org/10.1145/2372251.2372256

Gregor S, Hevner AR (2013) Positioning and presenting design science research for maximum impact. MIS Q 37(2):337–356

Grigoleit F, Vetro A, Diebold P, Fernandez DM, Bohm W (2015) In quest for proper mediums for technology transfer in software engineering. In: 2015 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM), pp 1–4. https://doi.org/10.1109/ESEM.2015.7321203

Hannay JE, Sjöberg DIK, Dybå T (2007) A systematic review of theory use in software engineering experiments. IEEE Trans Softw Eng 33(2):87–107

Hevner AR, March ST, Park J, Ram S (2004) Design science in information systems research. MIS Q 28(1):75–105

Indulska M, Recker JC (2008) Design science in IS research : a literature analysis. In: Gregor S, Ho S (eds) 4th Biennial ANU workshop on information systems foundations. ANU E Press, Canberra

Johannesson P, Perjons E (2014) An introduction to design science. Springer Publishing Company, Incorporated

Juristo N, Gómez OS (2010) Replication of software engineering experiments. In: Empirical software engineering and verification. Springer, pp 60–88

Petersen K, Feldt R, Mujtaba S, Mattsson M (2008) Systematic mapping studies in software engineering. In: Proceedings of the 12th International Conference on Evaluation and Assessment in Software Engineering, EASE’08. BCS Learning & Development Ltd., Swindon, pp 68–77

Rainer A, Hall T, Baddoo N (2003) Persuading developers to “buy into” software process improvement: a local opinion and empirical evidence. In: International Symposium on Empirical Software Engineering, ISESE, pp 326–335

Sedlmair M, Meyer M, Munzner T (2012) Design study methodology: Reflections from the trenches and the stacks. IEEE Trans Vis Comput Graph 18(12):2431–2440. https://doi.org/10.1109/TVCG.2012.213

Sein MK, Henfridsson O, Purao S, Rossi M, Lindgren R (2011) Action design research. MIS Q 35(1):37–56

Shneiderman B (2016) The new ABCs of research: achieving breakthrough collaborations, 1st edn. Oxford University Press, Inc., New York

Book   Google Scholar  

Shull FJ, Carver JC, Vegas S, Juristo N (2008) The role of replications in empirical software engineering. Empir Softw Eng 13(2):211–218. https://doi.org/10.1007/s10664-008-9060-1

Sjøberg DI, Dybå T, Anda BC, Hannay JE (2008) Building theories in software engineering. In: Guide to advanced empirical software engineering. Springer, pp 312–336

Stol KJ, Fitzgerald B (2013) Uncovering theories in software engineering. In: 2013 2nd SEMAT Workshop on a General Theory of Software Engineering (GTSE), pp 5–14. https://doi.org/10.1109/GTSE.2013.6613863

Stol KJ, Fitzgerald B (2015) Theory-oriented software engineering. Towards general theories of software engineering, vol 101, pp 79–98, DOI https://doi.org/10.1016/j.scico.2014.11.010

Storey MA, Engström E, Höst M, Runeson P, Bjarnason E (2017) Using a visual abstract as a lens for communicating and promoting design science research in software engineering. In: Empirical Software Engineering and Measurement (ESEM), pp 181–186. https://doi.org/10.1109/ESEM.2017.28

van Aken JE (2004) Management research based on the paradigm of the design sciences: the quest for field-tested and grounded technological rules: paradigm of the design sciences. J Manag Stud 41(2):219–246. https://doi.org/10.1111/j.1467-6486.2004.00430.x

van Aken JE (2005) Management research as a design science: articulating the research products of mode 2 knowledge production in management. Br J Manag 16 (1):19–36. https://doi.org/10.1111/j.1467-8551.2005.00437.x

Wieringa R (2009) Design science as nested problem solving. In: Proceedings of the 4th International Conference on Design Science Research in Information Systems and Technology, DESRIST ’09. ACM, New York, pp 8:1–8:12, DOI https://doi.org/10.1145/1555619.1555630 , (to appear in print)

Wieringa R, Daneva M, Condori-Fernandez N (2011) The structure of design theories, and an analysis of their use in software engineering experiments. In: 2011 International symposium on empirical software engineering and measurement, pp 295–304

Wieringa R, Moralı A (2012) Technical action research as a validation method in information systems design science. In: Peffers K, Rothenberger M, Kuechler B (eds) Design science research in information systems. Advances in theory and practice. Springer, Berlin, pp 220–238

Wieringa RJ (2014) Design science methodology for information systems and software engineering. Springer, Berlin

Wohlin C, Aurum A (2015) Towards a decision-making structure for selecting a research design in empirical software engineering. Empir Softw Eng 20(6):1427–1455. https://doi.org/10.1007/s10664-014-9319-7

References to ICSE distinguished papers

Alimadadi S, Sequeira S, Mesbah A, Pattabiraman K (2014) Understanding javascript event-based interactions. In: Proceedings of the 36th International Conference on Software Engineering, ICSE 2014. ACM, New York, pp 367–377, DOI https://doi.org/10.1145/2568225.2568268 , (to appear in print)

Avgerinos T, Rebert A, Cha SK, Brumley D (2014) Enhancing symbolic execution with veritesting. In: Proceedings of the 36th International Conference on Software Engineering, ICSE 2014. ACM, New York, pp 1083–1094, DOI https://doi.org/10.1145/2568225.2568293 , (to appear in print)

Bell J, Kaiser G (2014) Unit test virtualization with vmvm. In: Proceedings of the 36th International Conference on Software Engineering, ICSE 2014. ACM, New York, pp 550–561, DOI https://doi.org/10.1145/2568225.2568248 , (to appear in print)

Bersani MM, Bianculli D, Ghezzi C, Krstić S, Pietro PS (2016) Efficient large-scale trace checking using mapreduce. In: Proceedings of the 38th International Conference on Software Engineering, ICSE ’16. ACM, New York, pp 888–898, DOI https://doi.org/10.1145/2884781.2884832 , (to appear in print)

Cacho N, César T, Filipe T, Soares E, Cassio A, Souza R, Garcia I, Barbosa EA, Garcia A (2014) Trading robustness for maintainability: An empirical study of evolving c# programs. In: Proceedings of the 36th International Conference on Software Engineering, ICSE 2014. ACM, New York, pp 584–595, DOI https://doi.org/10.1145/2568225.2568308 , (to appear in print)

Christakis M, Müller P, Wüstholz V (2016) Guiding dynamic symbolic execution toward unverified program executions. In: Proceedings of the 38th International Conference on Software Engineering, ICSE ’16. ACM, New York, pp 144–155, DOI https://doi.org/10.1145/2884781.2884843 , (to appear in print)

Fan L, Su T, Chen S, Meng G, Liu Y, Xu L, Pu G, Su Z (2018) Large-scale analysis of framework-specific exceptions in android apps. In: Proceedings of the 40th International Conference on Software Engineering, ICSE ’18. ACM, New York, pp 408–419, DOI https://doi.org/10.1145/3180155.3180222 , (to appear in print)

Floyd B, Santander T, Weimer W (2017) Decoding the representation of code in the brain: An fmri study of code review and expertise. In: Proceedings of the 39th international conference on software engineering. IEEE Press, pp 175–186

Gousios G, Storey MA, Bacchelli A (2016) Work practices and challenges in pull-based development: The contributor’s perspective. In: Proceedings of the 38th International Conference on Software Engineering, ICSE ’16. ACM, New York, pp 285–296, DOI https://doi.org/10.1145/2884781.2884826 , (to appear in print)

Hasan S, King Z, Hafiz M, Sayagh M, Adams B, Hindle A (2016) Energy profiles of java collections classes. In: Proceedings of the 38th International Conference on Software Engineering, ICSE ’16. ACM, New York, pp 225–236, DOI https://doi.org/10.1145/2884781.2884869 , (to appear in print)

Hoda R, Noble J (2017) Becoming agile: a grounded theory of agile transitions in practice. In: Proceedings of the 39th International Conference on Software Engineering. IEEE Press, pp 141–151

Inozemtseva L, Holmes R (2014) Coverage is not strongly correlated with test suite effectiveness. In: Proceedings of the 36th International Conference on Software Engineering, ICSE 2014. ACM, New York, pp 435–445, DOI https://doi.org/10.1145/2568225.2568271 , (to appear in print)

Landman D, Serebrenik A, Vinju JJ (2017) Challenges for static analysis of java reflection: Literature review and empirical study. In: Proceedings of the 39th International Conference on Software Engineering, ICSE ’17. IEEE Press, Piscataway, pp 507–518, DOI https://doi.org/10.1109/ICSE.2017.53 , (to appear in print)

Lavallée M, Robillard PN (2015) Why good developers write bad code: An observational case study of the impacts of organizational factors on software quality. In: Proceedings of the 37th International Conference on Software Engineering - Volume 1, ICSE ’15. IEEE Press, Piscataway, pp 677–687

Liu Y, Xu C, Cheung SC (2014) Characterizing and detecting performance bugs for smartphone applications. In: Proceedings of the 36th International Conference on Software Engineering, ICSE 2014. ACM, New York, pp 1013–1024, DOI https://doi.org/10.1145/2568225.2568229 , (to appear in print)

Loncaric C, Ernst MD, Torlak E (2018) Generalized data structure synthesis. In: Chaudron M, Crnkovic I, Chechik M, Harman M (eds) Proceedings of the 40th international conference on software engineering, ICSE 2018, Gothenburg, Sweden, May 27 - June 03, 2018. ACM, pp 958–968. https://doi.org/10.1145/3180155.3180211

Madsen M, Tip F, Andreasen E, Sen K, Møller A (2016) Feedback-directed instrumentation for deployed javascript applications. In: Proceedings of the 38th International Conference on Software Engineering, ICSE 2016, Austin, TX, USA, May 14-22, 2016, pp 899–910. https://doi.org/10.1145/2884781.2884846

Menendez D, Nagarakatte S (2016) Termination-checking for llvm peephole optimizations. In: Proceedings of the 38th International Conference on Software Engineering, ICSE ’16. ACM, New York, pp 191–202, DOI https://doi.org/10.1145/2884781.2884809 , (to appear in print)

Milicevic A, Near JP, Kang E, Jackson D (2015) Alloy*: A general-purpose higher-order relational constraint solver. In: Proceedings of the 37th international conference on software engineering - Volume 1, ICSE ’15. IEEE Press, Piscataway, pp 609–619

Murphy-Hill E, Zimmermann T, Nagappan N (2014) Cowboys, ankle sprains, and keepers of quality: How is video game development different from software development?. In: Proceedings of the 36th International Conference on Software Engineering, ICSE 2014. ACM, New York, pp 1–11, DOI https://doi.org/10.1145/2568225.2568226 , (to appear in print)

Nistor A, Chang PC, Radoi C, Lu S (2015) Caramel: Detecting and fixing performance problems that have non-intrusive fixes. In: Proceedings of the 37th international conference on software engineering - Volume 1, ICSE ’15. IEEE Press, Piscataway, pp 902–912

Okur S, Hartveld DL, Dig D, Deursen AV (2014) A study and toolkit for asynchronous programming in c#. In: Proceedings of the 36th international conference on software engineering, ICSE 2014. ACM, New York, pp 1117–1127, DOI https://doi.org/10.1145/2568225.2568309 , (to appear in print)

Rath M, Rendall J, Guo JLC, Cleland-Huang J, Mäder P. (2018) Traceability in the wild: Automatically augmenting incomplete trace links. In: Proceedings of the 40th international conference on software engineering, ICSE ’18. ACM, New York, pp 834–845, DOI https://doi.org/10.1145/3180155.3180207 , (to appear in print)

Ren Z, Jiang H, Xuan J, Yang Z (2018) Automated localization for unreproducible builds. In: Chaudron M, Crnkovic I, Chechik M, Harman M (eds) Proceedings of the 40th International Conference on Software Engineering, ICSE 2018, Gothenburg, Sweden, May 27 - June 03, 2018. ACM, pp 71–81. https://doi.org/10.1145/3180155.3180224

Rizzi EF, Elbaum S, Dwyer MB (2016) On the techniques we create, the tools we build, and their misalignments: a study of klee. In: Proceedings of the 38th international conference on software engineering. ACM, pp 132–143

Rodeghero P, McMillan C, McBurney PW, Bosch N, D’Mello SK (2014) Improving automated source code summarization via an eye-tracking study of programmers. In: 36th International Conference on Software Engineering, ICSE ’14, Hyderabad, India - May 31 - June 07, 2014, pp 390–401. https://doi.org/10.1145/2568225.2568247

Rojas JM, White TD, Clegg BS, Fraser G (2017) Code defenders: crowdsourcing effective tests and subtle mutants with a mutation testing game. In: Proceedings of the 39th International Conference on Software Engineering, ICSE 2017, Buenos Aires, Argentina, May 20-28, 2017, pp 677–688. https://doi.org/10.1109/ICSE.2017.68

Shi A, Thummalapenta S, Lahiri SK, Bjorner N, Czerwonka J (2017) Optimizing test placement for module-level regression testing. In: Proceedings of the 39th International Conference on Software Engineering, ICSE ’17. IEEE Press, Piscataway, pp 689–699, DOI https://doi.org/10.1109/ICSE.2017.69 , (to appear in print)

Siegmund J, Siegmund N, Apel S (2015) Views on internal and external validity in empirical software engineering. In: Proceedings of the 37th international conference on software engineering-Volume 1. IEEE Press, pp 9–19

Sousa L, Oliveira A, Oizumi W, Barbosa S, Garcia A, Lee J, Kalinowski M, de Mello R, Fonseca B, Oliveira R, et al. (2018) Identifying design problems in the source code: a grounded theory. In: Proceedings of the 40th International Conference on Software Engineering. ACM, pp 921–931

van Tonder R, Goues CL (2018) Static automated program repair for heap properties. In: Proceedings of the 40th International Conference on Software Engineering, ICSE ’18. ACM, New York, pp 151–162, DOI https://doi.org/10.1145/3180155.3180250 , (to appear in print)

Tsantalis N, Mazinanian D, Rostami S (2017) Clone refactoring with lambda expressions. In: Proceedings of the 39th International Conference on Software Engineering, ICSE ’17. IEEE Press, Piscataway, pp 60–70, DOI https://doi.org/10.1109/ICSE.2017.14 , (to appear in print)

Tufano M, Palomba F, Bavota G, Oliveto R, Di Penta M, De Lucia A, Poshyvanyk D (2015) When and why your code starts to smell bad. In: Proceedings of the 37th International Conference on Software Engineering - Volume 1, ICSE ’15. IEEE Press, Piscataway, pp 403–414

Wang X, Sun J, Chen Z, Zhang P, Wang J, Lin Y (2018) Towards optimal concolic testing. In: Proceedings of the 40th International Conference on Software Engineering, ICSE ’18. ACM, New York, pp 291–302, DOI https://doi.org/10.1145/3180155.3180177 , (to appear in print)

Waterman M, Noble J, Allan G (2015) How much up-front?: A grounded theory of agile architecture. In: Proceedings of the 37th International Conference on Software Engineering - Volume 1, ICSE ’15. IEEE Press, Piscataway, pp 347–357

Yan H, Sui Y, Chen S, Xue J (2018) Spatio-temporal context reduction: a pointer-analysis-based static approach for detecting use-after-free vulnerabilities. In: Chaudron M, Crnkovic I, Chechik M, Harman M (eds) Proceedings of the 40th International Conference on Software Engineering, ICSE 2018, Gothenburg, Sweden, May 27 - June 03, 2018. ACM, pp 327–337. https://doi.org/10.1145/3180155.3180178

Ye X, Shen H, Ma X, Bunescu R, Liu C (2016) From word embeddings to document similarities for improved information retrieval in software engineering. In: Proceedings of the 38th International Conference on Software Engineering, ICSE ’16. ACM, New York, pp 404–415, DOI https://doi.org/10.1145/2884781.2884862 , (to appear in print)

Yu T, Qu X, Cohen MB (2016) Vdtest: an automated framework to support testing for virtual devices. In: Proceedings of the 38th International Conference on Software Engineering, ICSE 2016, Austin, TX, USA, May 14-22, 2016, pp 583–594. https://doi.org/10.1145/2884781.2884866

Download references

Acknowledgements

We would like to thank Cassandra Petrachenko for her careful edits of our paper. Daniela Soares Cruzes, Johan Linåker, Sergio Rico and Eirini Kalliamvakou gave us helpful comments on an earlier draft of this paper. We would also like to thank some of the authors of ICSE distinguished papers for giving us feedback, as well as participants at ISERN 2017, RET 2017, and CBSoft 2019 for trying out the visual abstract. Marco Gerosa also gave us valuable insights on the visual abstract and how we applied it. We thank the anonymous EMSE reviewers for helping us sharpening the contribution of this paper. The research was partially funded by the Faculty of Engineering at Lund University through the Lise Meitner guest professorship (Storey), the ELLIIT strategic research area (Engström), and the EASE industrial excellence center (Runeson).

Open access funding provided by Lund University.

Author information

Authors and affiliations.

Lund University, Lund, Sweden

Emelie Engström, Per Runeson & Martin Höst

University of Victoria, Victoria, BC, Canada

Margaret-Anne Storey

University of Bari, Bari, Italy

Maria Teresa Baldassarre

You can also search for this author in PubMed   Google Scholar

Corresponding author

Correspondence to Emelie Engström .

Additional information

Communicated by: Sven Apel

Publisher’s note

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

Rights and permissions

Open Access This article is licensed under a Creative Commons Attribution 4.0 International License, which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons licence, and indicate if changes were made. The images or other third party material in this article are included in the article's Creative Commons licence, unless indicated otherwise in a credit line to the material. If material is not included in the article's Creative Commons licence and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder. To view a copy of this licence, visit http://creativecommons.org/licenses/by/4.0/ .

Reprints and permissions

About this article

Engström, E., Storey, MA., Runeson, P. et al. How software engineering research aligns with design science: a review. Empir Software Eng 25 , 2630–2660 (2020). https://doi.org/10.1007/s10664-020-09818-7

Download citation

Published : 18 April 2020

Issue Date : July 2020

DOI : https://doi.org/10.1007/s10664-020-09818-7

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

  • Design science
  • Research review
  • Empirical software engineering
  • Find a journal
  • Publish with us
  • Track your research

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
  • Published: 01 June 2023

Research software engineering accelerates the translation of biomedical research for health

  • David Horsfall   ORCID: orcid.org/0000-0002-8086-812X 1 , 2 ,
  • Jonah Cool 3 ,
  • Simon Hettrick 4 ,
  • Angela Oliveira Pisco 5   nAff7 ,
  • Neil Chue Hong   ORCID: orcid.org/0000-0002-8876-7606 6 &
  • Muzlifah Haniffa 1 , 2  

Nature Medicine volume  29 ,  pages 1313–1316 ( 2023 ) Cite this article

5039 Accesses

3 Citations

80 Altmetric

Metrics details

  • Research data

Research software engineering is central to data-driven biomedical research, but its role is often undervalued and poorly understood.

Biomedical and clinical research have become increasingly data driven. Transforming large amounts of data into new discoveries requires cutting-edge analytical approaches, as well as new infrastructure to provide a foundation upon which algorithmic advances can build. Greater collaboration with outside fields such as software engineering and computer science has driven new advances in computational biology, with experts in these domains working alongside biomedical researchers and clinicians to acquire cross-domain expertise.

Published papers are increasingly dependent on algorithms and software that underpin the reported research. With the increasingly foundational role of computational approaches in biomedical science come challenges associated with reproducibility of results and robustness of underlying code. A 2016 survey of 1,500 scientists found that over 70% had tried and failed to reproduce another scientist’s experiments 1 . That same year, the FAIR (findability, accessibility, interoperability and reusability) guiding principles were published 2 , aimed at enhancing the reusability of scientific data. Transparency of software code is a prerequisite for reproducibility and is necessary for understanding the provenance of research data and insights. Improving the transparency of methods and interoperability of data will engender a rapidly growing need for well-engineered solutions that transcend a single lab and can be used by a large number of scientists.

Research software engineering is an emerging field focused on addressing these core challenges through a unique skill set that enhances the value and usage of scientific data. Research software engineering can facilitate interdisciplinary science and accelerate translational research through efficient data management and equitable data provision.

An emerging role

Research software engineering combines professional software engineering expertise with an intimate understanding of research. The focus is on delivering best practices through the application of foundational software engineering practices such as version control, testing and automation, while at the same time ensuring the data output remains scientifically valid and accurate. The research software engineer (RSE) speaks the language of professional engineering and understands fundamental research methods. From this unique position, RSEs can think differently about research questions and spur innovative solutions that scientists and data analysts alone might not reach.

The application of professional software engineering is critical for the scaling and reproducibility of scientific output, especially as researchers grapple with the sheer size and volume of datasets, as well as an abundance of different analytical methods. The impact of research software across science is huge; consider, for example, the industrial scaling of centralized genome browser resources such as Ensembl that revolutionized the biosciences with massive infrastructure and engineering projects.

The concept of the RSE has existed for only a decade and has grown rapidly, establishing the importance of the discipline across various scientific domains 3 . Since the idea was first proposed at an event at The Queen’s College, Oxford, in March 2012 (ref. 4 ), the movement has spread to a substantial international community, with ten established associations in the United Kingdom, mainland Europe, Africa, Asia, Australia and North America. In the United Kingdom, at least 38 universities have their own centralized RSE groups that researchers can use to access skilled software professionals to develop the software tools they need for their research.

Through support from organizations such as the Software Sustainability Institute , the RSE community has helped develop several initiatives that champion open science and reproducibility in the life sciences. Any researcher who writes code, such as bioinformaticians, can align with RSE communities and benefit from exposure, training and peer support. Other resources such as The Turing Way 5 provide handbooks for reproducible, ethical and collaborative data science. As awareness improves, RSEs are being increasingly embedded within research teams, and this in turn increases accountability and enhances trust in the scientific results delivered by software. Ways to engage, receive training from and work effectively with RSEs are in Table 1 .

Data-driven science

Emerging technologies and big data open up exciting new opportunities for scientific discovery. Artificial intelligence has the potential to extract new actionable insights from the complexity of human health and disease, with prospective applications in biomedicine, including image-based diagnostics and the discovery of new, more effective treatments. Emerging computational approaches with the potential to transform biomedicine must be underpinned by robust and scalable software, ideally from professionals who sit between research and technology, as exemplified by AlphaFold , an artificial intelligence system developed by the DeepMind laboratory and the European Molecular Biology Laboratory’s European Bioinformatics Institute to provide open access to over 200 million protein structure predictions.

Although research software engineering can play a crucial part in the research lifecycle, the recognition of its importance does not yet match that of data generation and analysis. That being said, RSEs are a key driver of research success, dissemination and impact. By investing in the adoption of FAIR principles throughout the data pipeline and extending those principles to software 6 , RSEs can transform research data output from being seen as a final resting place into a dynamic, collaborative resource in an active ecosystem of tools and infrastructure.

Team science

The research landscape is seeing increasingly large interdisciplinary collaborations across institutions, which often generate high-impact research 7 . Approaches that integrate biological and clinical knowledge lead to innovations for improving health outcomes. Modern science relies on many people with many different skills to conduct research, from community managers to people who produce training materials.

One example of global collaborative science is the Human Cell Atlas initiative, which aims to characterize and map every cell type in the human body. This international consortium has over 2,000 members in over 80 countries and invests in building capacity through multidisciplinary teams that champion open science, including software engineers focused on data storage, sharing, browsing and dissemination. Their data and findings are shared openly with the broader scientific community, which accelerates discoveries and deepens collaboration among researchers around the world. RSEs played a fundamental role in the rapid coordination and deployment of the consortium’s centralized COVID-19 data portal .

Although many funders support software development, less money has historically been available for the critical work of software maintenance. Fortunately, a growing number of funders are seeking to address this problem. Schmidt Futures recently announced the creation of the US $40 million Virtual Institute of Scientific Software to fund the maintenance of researcher-written code 8 . The Chan Zuckerberg Initiative, a philanthropic organization that is dedicated to building the future of science by funding efforts such as the Human Cell Atlas, has also pledged US $40 million through its Essential Open Source Software for Science program. This provides support for ongoing maintenance of widely used open-source scientific software that is critical for maintaining the ecosystem, which is often overlooked by discovery-science-funding mechanisms.

Driving translation

RSEs drive clinical translation of research findings. By delivering data through web applications, for example, RSEs remove the technical burden from clinicians, students, investigators and industry partners. As the only requirement is internet access and a web browser, this substantially improves global, equitable access to research data. Similarly, if data visualization and analysis tools are more readily available through intuitive point-and-click interfaces, research teams around the world can collaborate more easily. The development of open-source scientific tools and resources for single-cell biology data, such as the Chan Zuckerberg cell-by-gene platform, the Human Developmental Cell Atlas and the Cambridge Cell Atlas , helps scientists explore and visualize high-dimensional single-cell datasets with which to derive scientific insights. Tools and resources such as these empower researchers to access data when it suits them, and facilitate collaborative research to improve data generation, analysis, biological interpretation and the clinical application of research findings. Essential design considerations for the success and development of these web applications are in Box 1 .

Although the scientific landscape has changed and new roles and expertise have become increasingly important, the judging of research excellence has not kept pace. Assessment of research success tends to focus on individual achievements, such as a published article or a successful grant, instead of cumulative progress that can lead to breakthroughs. Mechanisms that reward individual researchers inevitably undervalue those in roles essential to collective research projects, such as RSEs, lab managers and research technicians. That being said, there are new awards and accolades that are focused on recognizing the contributions of all roles within research. The Hidden REF campaign, for example, celebrates all research output and recognizes everyone who contributes to its creation 9 . However, these initiatives are frequently organized by volunteers, so their impact will remain limited until they can attract greater awareness and funding.

There is a need for greater acknowledgment and support for emerging roles (such as research software engineering) from all stakeholders, including funders, research organizations, learned societies and researchers with traditional scientific backgrounds. An important first step is the regular citation and acknowledgment of software and the contributions made by research software engineering to scientific papers 10 . Many researchers do not know that software is citable; frameworks such as the CZ Software Mentions Dataset 11 elevate software to a research output. Proper credit for software tools and their utility is key to ensuring the role of RSEs is fully understood and recognized by the broader scientific community. If researchers cite software they use in publications, and encourage training and peer support for software development, they might then build the skills and confidence to publish their own software. This supports collaboration and allows others to cite the software, leading to a cultural cycle of valuing software in research (Fig. 1 ).

figure 1

Researchers should cite the software that they use in publications, encourage training and peer support, and eventually have the skills and confidence to publish their own software.

Box 1 Design considerations for accelerating translational research

Remove technical burden of accessing research data

Unlock data with intuitive point-and-click interfaces

Make data available at any time, from any location

Drive community convergence of new scalable data models and file standards

Modernize the method of engagement with research narrative

A deluge of data

A critically undervalued part of research software engineering is the creation of new data models, data infrastructure, and file standards for emerging technologies. This work is essential, because it provides the underlying framework for labs to create, store, share and collaborate on research data at scale. Technical frameworks for new innovative projects have not yet been created, and only trained engineers with a solid understanding of research can deliver products at the required robustness and scale. Individual labs are infrequently motivated to take this work on, yet a rapidly growing cross-section of science benefits from, and indeed is reliant upon, the efforts of RSEs. For these projects, RSEs need to understand the structure of the data being generated, assess how the data will be consumed and anticipate future challenges and innovations.

The Open Problems in Single-Cell Analysis project provides an open-source, community-driven platform for continuously updated benchmarking of formalized tasks in single-cell analysis. Algorithms for tasks such as batch integration, or comparison of data-denoising methods, can now be easily benchmarked through the use of this platform. With Open Problems platform driving community convergence on new standards, data can be stored with integrity, ported between labs and easily interrogated. Recently, the Open Microscopy Environment consortium, which has maintained a common data model for bioimaging for the past 20 years, described their efforts to create a next-generation file format for bioimaging 12 , driven by the need to share large imaging data in the cloud. The adoption of this format was achieved only through considerable efforts by RSEs to update existing tools, but, critically, also required coordination efforts in the community, organizing events and gentle building of consensus.

Software engineering is a discipline rooted in identifying major challenges and then constructing solutions to them, for the benefit of many. In the case of modern biomedicine, the importance of this mindset and skill is growing rapidly. The deluge of data, potential of advanced computational approaches, and increasing impact of team science together create a research environment with RSEs as a critical central component. It is increasingly clear that sharing data openly at the scale at which it is being generated is not reaching its full potential. Promoting data utility requires not just storage solutions that scale, but also performant software and infrastructure solutions by which data can be made interoperable, visualized and leveraged by experts and non-experts alike. These important contributions need to be recognized and rewarded as biomedical science advances. Research software engineering is poised to revolutionize how the scientific community can democratize not just the data, but also the technical infrastructure and mechanism for interacting with it, providing an opportunity to modernize how scientists and the public engage with research narratives.

Baker, M. Nature 533 , 452–454 (2016).

Article   CAS   PubMed   Google Scholar  

Wilkinson, M. et al. Sci. Data 3 , 160018 (2016).

Article   PubMed   PubMed Central   Google Scholar  

Woolston, C. Nature https://doi.org/10.1038/d41586-022-01516-2 (2022).

Hettrick, S. Sustainability Institute https://www.software.ac.uk/blog/2016-08-17-not-so-brief-history-research-software-engineers-0 (2016).

The Turing Way Community. et al. zenodo https://doi.org/10.5281/zenodo.3233986 (2019).

Chue Hong, N. P. et al. zenodo https://doi.org/10.15497/RDA00068 (2022).

Wuchty, S., Jones, B. F. & Uzzi, B. Science 316 , 1036–1039 (2007).

Matthews, D. Nature 607 , 410–411 (2022).

Derrick, G. & Hettrick, S. Nature https://doi.org/10.1038/d41586-022-00454-3 (2022).

Katz, D. S. et al. F1000 Res. 9 , 1257 (2020).

Article   Google Scholar  

Hutson, M. Nature https://doi.org/10.1038/d41586-023-00053-w (2023).

Moore, J. et al. Nat. Methods 18 , 1496–1498 (2021).

Article   CAS   PubMed   PubMed Central   Google Scholar  

Download references

Acknowledgements

We are grateful to T. Hodges from The Carpentries for training recommendations; C. Admane for figure work; and A. Maartens for critical reading of the manuscript. S.H.’s and N.C.H.’s time was partly supported by the UK Research Councils through grant EP/H043160/1. M.H. is funded by a Wellcome Senior Research Fellowship in Clinical Sciences (223092/Z/21/Z) and Wellcome core grant (220540/Z/20/A).

Author information

Angela Oliveira Pisco

Present address: Insitro, South San Francisco, CA, USA

Authors and Affiliations

Biosciences Institute, Newcastle University, Newcastle upon Tyne, UK

David Horsfall & Muzlifah Haniffa

Wellcome Sanger Institute, Wellcome Genome Campus, Hinxton, Cambridge, UK

Chan Zuckerberg Initiative, Redwood City, CA, USA

University of Southampton and the Software Sustainability Institute, Southampton, UK

Simon Hettrick

Chan Zuckerberg Biohub, San Francisco, CA, USA

University of Edinburgh and the Software Sustainability Institute, Edinburgh, UK

Neil Chue Hong

You can also search for this author in PubMed   Google Scholar

Corresponding authors

Correspondence to David Horsfall or Muzlifah Haniffa .

Ethics declarations

Competing interests.

The authors declare no competing interests.

Rights and permissions

Reprints and permissions

About this article

Cite this article.

Horsfall, D., Cool, J., Hettrick, S. et al. Research software engineering accelerates the translation of biomedical research for health. Nat Med 29 , 1313–1316 (2023). https://doi.org/10.1038/s41591-023-02353-0

Download citation

Published : 01 June 2023

Issue Date : June 2023

DOI : https://doi.org/10.1038/s41591-023-02353-0

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

Quick links

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

Sign up for the Nature Briefing: AI and Robotics newsletter — what matters in AI and robotics research, free to your inbox weekly.

research project for software engineering

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

Software Engineering & Evolution

Software engineering is the most technical part of technical computer science , focused on developing and applying systematic principles common to other kinds of engineering (like mechanical or electrical engineering) to development of software systems. In particular, it covers:

  • Software requirements , their elicitation, specification and verification
  • Software architecture , modelling and design
  • Software testing , quality and guarantees
  • Software construction , methodologies and processes
  • Software deployment , configuration and maintenance
  • Software project management , planning and audit
  • Software ethics , licensing and collaboration

Software evolution , in particular, is a branch of software engineering focused on studying existing software and not necessarily creating new one. It covers, among other topics:

  • Mining repositories of versioned source code for interesting facts about software history
  • Refactoring, restructuring and replatforming of software
  • Developing and calculating metrics on software artefacts
  • Automatically measuring quality of source code by detecting harmful constructs
  • Bug fixing and other forms of corrective maintenance
  • Automating and tool-supporting maintenance activities

A typical research project in software engineering involves an implementation of a software system at least up to a fully functioning prototype , performing a feasibility study and/or a user study . A typical software evolution project covers development of a software system that analyses or transforms another software system. Both often use methodologies from empirical software engineering .

Prerequisites

  • Basic knowledge about programming and design of software

Related courses

  • Model-Driven Engineering
  • Principles of Programming, Processes and Patterns
  • Software Evolution

Available Project Proposals

If you are interested in the general topic of Software Engineering and Evolution , or if have your own project idea related to the topic, please contact us directly. Alternatively, you can also work on one of the following concrete project proposals:

Supervisors:  Iman Hemati Moghadam ,  Vadim Zaytsev .

Gaining insights into the patterns of previously applied refactorings can greatly enhance the accuracy of detecting applied refactorings. By utilizing machine learning algorithms, we can extract change patterns through model training on pre-existing refactorings. However, in order to achieve a highly accurate model, it is crucial to train it on a comprehensive and extensive dataset.

The first objective of this project is to create an automated mechanism that generates a dataset of refactorings applied in Java applications. Mauricio et al. [1] offer a dataset with millions of refactorings and an ML model trained on this dataset to recognize refactoring opportunities. The provided dataset includes class, method, and variable-level refactorings but lacks field-level refactorings. Furthermore, the dataset's refactorings are identified using an outdated version of RefactoringMiner [2], which may have missed some applied refactorings. Although RefactoringMiner has improved recall in its latest version, our new experiments [3] revealed still some applied refactorings not detected by its latest version. Consequently, the dataset by Mauricio et al. does not encompass all applied refactorings. Furthermore, in order to develop a model that can effectively identify applied refactoring, we need a more informative dataset that incorporates information from both the original and refactored versions of the program. Currently, the dataset provided by Mauricio et al. only includes information about the original version of the program. Therefore, we need to create the dataset from scratch. The most challenging aspect of this process lies in accurately assessing the validity of each refactoring included in the dataset.

Our approach involves employing RefactoringMiner [2] and RefDetect [3] to extract the refactorings that have been applied in Java applications within the dataset compiled by Mauricio et al. [1]. RefactoringMiner demonstrates high precision, ensuring that the refactorings identified by it can be considered valid. However, its recall rate is comparatively lower than that of RefDetect, which we will employ to identify refactoring instances missed by RefactoringMiner. Given RefDetect's strong recall performance, we are confident that any changes not recognized as refactorings by RefDetect can be classified as non-refactoring modifications. Nevertheless, it is imperative to verify changes identified by RefDetect as refactoring and detected as non-refactoring by RefactoringMiner. We call them ambiguous changes. Although it is not impossible to conduct a manual evaluation, it can be a time-consuming and error-prone task. Therefore, it is imperative to discover an automated approach for validating ambiguous changes. To address this, we propose exploring the possibility of automatically labelling the refactorings using a machine-learning algorithm or a combination of machine-learning and search-based techniques. Further information regarding the challenges encountered and the corresponding approaches proposed to address them is provided in a detailed description of the project.

After establishing the aforementioned dataset, the next objective of this project is to leverage the dataset to train a model that can proficiently recognize applied refactorings in Java applications or augment RefDetect [3] in making more informed determinations when identifying refactorings.

[1] Aniche, M., Maziero, E., Durelli, R., & Durelli, V. H. (2020). The effectiveness of supervised machine learning algorithms in predicting software refactoring . IEEE Transactions on Software Engineering, 48(4), 1432-1450.

[2] Tsantalis, N., Ketkar, A., & Dig, D. (2020). RefactoringMiner 2.0 . IEEE Transactions on Software Engineering, 48(3), 930-950.

[3] Moghadam, I. H., Cinnéide, M. Ó., Zarepour, F., & Jahanmir, M. A. (2021). RefDetect: A multi-language refactoring detection tool based on string alignment . IEEE Access, 9, 86698-86727.

There exist many pre-trained code embedding methods, and determining the most resilient approach in the presence of modifications has consistently intrigued researchers. Although certain investigations have examined and compared a selection of prevalent embedding models such as CodeBERT, Codex, Code2vec, and Code2src, their emphasis has predominantly centred around the generation of adversarial samples via the renaming of entities using Rename refactoring. In a few research works, however, code modifications were made using transformations like loop exchange, try-catch insertion, replacing switch statements with if, swapping unrelated statements, etc.

However, in the majority of software development activities where the pre-trained models are used (such as code completion, code understanding, bug detection and fixing and refactoring assistance, etc.), the modifications extend beyond simple changes. Therefore, it is necessary to evaluate the robustness of the existing pre-trained models on complex code modification. To accomplish this goal, as an initial step, we generate semantically equivalent code samples by applying refactorings such as Extract and Inline Method refactorings and subsequently evaluating the performance of different models. The findings from this research can offer invaluable insights for selecting a robust model for future projects, thereby enhancing decision-making processes.

Supervisor: Fernando Castor

The Rust programming language aims to make systems programming efficient and safe at the same time by helping developers build programs that are safe by construction. The language is statically typed and supports safe access to memory, without the need for a garbage collector or runtime system, with the help of its compiler. It also provides scoped concurrency while avoiding state sharing, with exit synchronization for groups of threads. According to the 2023 StackOverflow developers survey (https://survey.stackoverflow.co/2023/), it is the most admired technology for survey respondents and has been so for many years.

One thing that Rust does not have, though, is a specific mechanism for signaling and handling errors, differently from a number of popular programming languages, such as Java, C++, Swift, and Python. In Rust, unrecoverable errors are signaled by the panic() function. Computations that may produce errors are represented by values of Result, an enumerated type that encapsulates both correct and erroneous results. These values are just regular Rust values and are not propagated automatically, differently from exceptions in other languages. On the one hand, this means that Rust avoids additional runtime infrastructure to perform stack unwinding during exception propagation. On the other hand, developers must explicitly worry about whether the output of a function is an error or not.

Previous work has shown that, in a number of languages, developers give less attention to code that handles errors than to other parts of the code. They test error handling code less [1], capture errors without doing anything with them [2,3], capture the incorrect errors [4], fail to account for potential errors [5], and sometimes simply do not use the language's error handling mechanism [6]. Problemas with error handling are commonplace even in languages that do not include specific mechanisms for handling errors [7].

In this project we would like to address a high-level research question:

RQ  How do Rust programmers handle errors? How much code is dedicated to that?

This question can be decomposed in a number of more specific research questions:

RQ1  How are errors typically handled in Rust programs? Are they often ignored, as in other languages?

RQ1 .1 Is it common to have long sequences (in terms of method calls) where we have chained error handling, the kind of thing that would not be there with exception propagation?

RQ2  What do developers think of Rust error handling? Is it better than C? Better than exceptions?

RQ3  Do automated tests for Rust programs test exceptional paths?

RQ4  What are error handling bugs in Rust like?

RQ5  How are errors handled in the presence of scoped concurrency?

[1] Felipe Ebert, Fernando Castor, Alexander Serebrenik. An exploratory study on exception handling bugs in Java programs. J. Syst. Softw. 106: 82-101 (2015)

[2] Nathan Cassee, Gustavo Pinto, Fernando Castor, Alexander Serebrenik. How swift developers handle errors. MSR 2018: 292-302

[3] Bruno Cabral, Paulo Marques. Exception Handling: A Field Study in Java and .NET. ECOOP 2007: 151-175

[4] Nélio Cacho, Thiago César, Thomas Filipe, Eliezio Soares, Arthur Cassio, Rafael Souza, Israel García, Eiji Adachi Barbosa, Alessandro Garcia. Trading robustness for maintainability: an empirical study of evolving c# programs. ICSE 2014: 584-595

[5] Juliana Oliveira, Deise Borges, Thaisa Silva, Nélio Cacho, Fernando Castor. Do android developers neglect error handling? a maintenance-Centric study on the relationship between android abstractions and uncaught exceptions. J. Syst. Softw. 136: 1-18 (2018)

[6] Rodrigo Bonifácio, Fausto Carvalho, Guilherme Novaes Ramos, Uirá Kulesza, Roberta Coelho. The use of C++ exception handling constructs: A comprehensive study. SCAM 2015: 21-30

[7] Magiel Bruntink, Arie van Deursen, Tom Tourwé. Discovering faults in idiom-based exception handling. ICSE 2006: 242-251

Supervisors:  Uraz Odyurt ,  Vadim Zaytsev .

The role of simulation and synthetic data generation for High-Energy Physics (HEP) research is profound. While there are physics-accurate simulation frameworks available to provide the most realistic data syntheses, these tools are computationally demanding. Additionally, the output from physics-accurate simulations is hard to comprehend, hard to manipulate and difficult to work with, as the data is rather close to the real case. These simulations consider accurate models of real-world detectors, which is another limitation.

Parametric and complexity-aware simulation frameworks on the other hand, can redefine the complexity space in drastically simplified terms and generate complexity-reduced data sets. It is also possible to consider a variety of detector models for these simulations. The applications of complexity-reduced simulations and data are numerous. We will be focusing on the role of such data as an enabler for Machine Learning (ML) model design research.

This project aims to extend an existing REDVID simulation framework through addition of new features.

( Read the full project description )

Nowadays, thanks to the rapid proliferation of mobile phones, tablets, and unwired devices in general, energy efficiency is becoming a key software design consideration where the energy consumption is closely related to battery lifetime. It is also of increasing interest in the non-mobile arena, such as data centers and desktop environments. Energy-efficient solutions are highly sought after across the compute stack, with more established results through innovations in hardware/architecture [1,2], operating systems [3], and runtime systems [4]. In recent years, there is a growing interest in studying energy consumption from higher layers of the compute stack and most of these studies focus on application software [5,6,7,8]. These approaches complement prior hardware/OS-centric solutions, so that improvements at the hardware/OS level are not cancelled out at the application level, e.g., due to misuses of language/library/application features.

We believe a critical dimension to further improve energy efficiency of software systems is to understand how software developers think. The needs of developers and the challenges they face may help energy-efficiency researchers stay focused on the real-world problems. The collective wisdom shared by developers may serve as a practical guide for future energy- aware and energy-efficient software development. The conceptually incorrect views they hold may inspire educators to develop more state-of-the-art curricula.

The goal of this work is to obtain a deeper understanding of (i) whether application programmers are interested in software energy consumption, and, if so, (ii) how they are dealing with energy consumption issues. Specifically, the questions we are trying to answer are:

RQ1  What are the distinctive characteristics of energy-related questions?

RQ2  What are the most common energy-related problems faced by software developers?

RQ3  According to developers, what are the main causes for software energy consumption?

RQ4  What solutions do developers employ or recommend to save energy?

We leverage data from StackOverflow, the most popular software development Q&A website, and on issues reported in issue trackers of real open source software projects to answer these questions.

[1] L. Bircher and L. John. Analysis of dynamic power management on multi-core processors. In ICS, 2008.

[2] A. Iyer and D. Marculescu. Power efficiency of voltage scaling in multiple clock, multiple voltage cores. In ICCAD, 2002.

[3] R. Ge, X. Feng, W. chun Feng, and K. Cameron. Cpu miser: A performance-directed, run-time system for power-aware clusters. In ICPP, 2007.

[4] H. Ribic and Y. D. Liu. Energy-efficient work-stealing language runtimes. In ASPLOS, 2014.

[5] Wellington Oliveira, Bernardo Moraes, Fernando Castor, João Paulo Fernandes. Analyzing the Resource Usage Overhead of Mobile App Development Frameworks. EASE 2023: 152-161

[6] Wellington Oliveira, Renato Oliveira, Fernando Castor, Gustavo Pinto, João Paulo Fernandes. Improving energy-efficiency by recommending Java collections. Empir. Softw. Eng. 26(3): 55 (2021)

[7] Ding Li, Shuai Hao, William G. J. Halfond, Ramesh Govindan. Calculating source line level energy information for Android applications. ISSTA 2013: 78-89

[8] Stefanos Georgiou, Maria Kechagia, Tushar Sharma, Federica Sarro, Ying Zou. Green AI: Do Deep Learning Frameworks Have Different Costs? ICSE 2022: 1082-1094

Supervisors:  Iman Hemati Moghadam , Vadim Zaytsev .

Metric-based approaches are the most used technique in identifying refactoring opportunities by calculating a particular set of code metrics and applying predefined thresholds for each code metric. However, this approach faces three key challenges. Firstly, the lack of a universally accepted methodology for selecting metrics. Secondly, the absence of standardized definitions for code metrics. Furthermore, the accuracy of the metric-based approaches is heavily dependent on choosing appropriate thresholds.

Machine learning techniques provide effective solutions to overcome the aforementioned limitations. In certain approaches, the code snippet is transformed into a vector of source code metrics, which is then used to train ML classifiers. However, this approach fails to preserve the semantics and structure of the code. Conversely, pre-trained language models like CodeBERT and Codex have been trained in vast amounts of code and have learned to understand the syntax, semantics, and context of programming languages. This valuable knowledge can be transferred in recovering refactoring opportunities, and enable us to perform well even with limited task-specific training data.

The primary objective of this project is to improve the performance of a pre-trained language model (e.g., Codex, CodeBERT, etc.) in identifying opportunities for refactoring within Java applications. To accomplish this, we will start by fine-tuning the chosen language model using Mauricio et al.'s existing dataset [1]. Then, we will utilize the enhanced model to identify potential refactoring opportunities in Java applications. To assess the effectiveness of our approach, we will compare its accuracy with the model proposed by Mauricio et al. [1].

While current machine learning models, such as one developed by Mauricio et al. [1], can identify opportunities for refactorings, they do not provide specific guidance on how to apply the refactorings. For instance, while the existing models can recognize the necessity of applying an Extract Method refactoring to a given method, they do not specify which portion of the method should be extracted (e.g., the initial token and end token).

The goal of this project is to develop algorithms that not only identify parts of code that require refactorings but also recommend appropriate refactoring techniques. The focus of this project will be on two commonly used refactoring types: Extract Method and Inline Method. These two refactoring types are frequently employed by developers, and manually applying them is challenging.

Our proposed approach involves leveraging state-of-the-art deep learning models specifically designed for code analysis, including GraphCodeBERT, CuBERT, CodeGPT, Codex, etc. These models have undergone pre-training on extensive datasets, enabling them to comprehend the syntax, semantics, and context of programming languages effectively. Moreover, they offer the potential for fine-tuning based on our approach. However, before fine-tuning the chosen model, we need to construct a dataset that comprises both pre-refactoring and post-refactoring code snippets. To accomplish this, we will extend Mauricio et al.'s dataset [1], which encompasses thousands of Java applications. The resulting dataset comprises code snippets both before and after the application of refactorings, (i.e., Extract Method and Inline Method refactorings), and will be employed in the fine-tuning process of the selected pre-trained model.

Picture of dr.ir. V. Zaytsev (Vadim)

Arc Talent Career Blog

Programming Project Ideas: 22+ Top Side Projects for Software Engineers

best coding programming project ideas for software developers to add to a resume or portfolio

Coding projects help you grow as a software developer AND look great on a resume. Here are some great programming project ideas to consider.

Becoming a great software engineer is a lifelong journey. Landing that first job is just the first step. To get the most out of your qualifications, it’s essential to constantly hone and polish the critical technical skills needed to succeed in this highly competitive space.

It’s not often that any software engineer finds an abundance of free time to spend indulging themselves . However, there are moments when the pace of work may be slower and there is time for personal development.

When this is the case, there are many fun programming projects to choose from that can either push your knowledge and skills to greater heights or allow you to explore new, different technologies. The best of these projects will have both elements of exploration and learning.

Many people start their careers as software engineers with unrealistic expectations. It’s unusual for any junior software engineer to work with cutting-edge technologies or be involved in highly complicated projects. Often, the day-to-day tasks are menial and deal with legacy software and applications. This can lead to frustration and boredom. 

More importantly, if freshly minted software engineers are not constantly broadening their knowledge base and staying abreast of changing technologies, they risk falling behind their peers and limiting their career options.

One of the best ways to make your resume stand out from the crowd and increase your attractiveness to potential employers is to have completed several software engineering projects on the side. These programming side projects are especially valuable to junior software engineers and interns. 

Looking for programming project ideas? Our guide will offer creative suggestions and coding assignments that can help you apply theoretical knowledge to real-world scenarios

Looking to hire the best remote developers? Explore  HireAI to see how you can:

⚡️ Get instant candidate matches without searching ⚡️ Identify top applicants from our network of 300,000+ devs with no manual screening ⚡️ Hire 4x faster with vetted candidates (qualified and interview-ready)

Try HireAI and hire top developers now →

What Are Programming Side Projects?

These are any software development projects or software project ideas that are pursued on your own time for personal development or recreation.

The most effective side projects will show off your programming skills and make you more valuable to recruiters and employers looking for talented software engineers. For instance, Overcode can provide resources for projects, offering a wealth of knowledge and tools for software engineers.

A great option is to have whichever of the programming project ideas you choose be specific to the industry you are working in or align it with the sector you wish to break into.

Having a few side projects on your resume demonstrates to recruiters and hiring managers the critical ability to follow through on a task. It also shows a commitment to continuous learning and personal development. 

Let’s look at a few excellent programming project ideas that you can start today to develop your skills as a software engineer.

Read More : How to List Programming Languages on a Resume

Fun Coding Project Ideas

These programming projects for beginners are light but cover some novel ideas. Several of these software ideas will allow you to work with exciting APIs and will have you doing everything from logging sensor data to finding new backgrounds for your desktop. If you ever find yourself needing assistance or guidance with any of these projects, consider seeking programming assignment help to ensure a smooth learning experience. When working with third party APIs, it can be helpful to leverage third party API integration services that can smoothly handle the integration and ensure proper implementation.

Temperature Logger

A simple Raspberry Pi can be connected to an intelligent temperature sensor. The data can then be exported from your home or office to a database or an updated CSV file.

The data can then be manipulated or displayed in the manner you choose. There are options for reporting and tracking, depending on what you want to achieve with the temperature logger.

The suggested implementation for this side project is a Raspberry Pi, a temperature sensor, and a web app.

Daily Desktop Background

This is as simple as the description. It’s pretty easy to build a piece of software that searches for a new image and then applies it to your desktop. 

This can be refreshed every day or at an interval of your choosing. Images can then be pulled from a specific set or searched more widely on the internet.

The suggested implementation here is the appropriate scripting language for your OS and the Unsplash API.

Read More : 10 Hard and Soft Skills to Put On a Resume for Software Developer Jobs

Personal Development App

Here you can build an application that sends you a short video or interactive document each day on a subject that you find interesting or intriguing. It can be programmed to send you anything from a Wikipedia page to a YouTube video.

This can be accomplished with a simple web or mobile application.

Slack is a popular app used by teams across the world to communicate effectively with one another and share documents.

If you use it in your day-to-day at the office, a great idea is to build a slack bot to help you and your colleagues with some aspects of daily workflow that can be automated.

The bot can be configured to do anything from ordering coffee for a meeting to serving as a reminder for that next important presentation. 

Your imagination is the limiting factor. Building an engaging, innovative Slack bot is one of the best ways to show off your programming skills in new ways at the office.

The suggested implementation for a Slack Bot is to use the Slack API.

Read More : How to Format a Resume for Software Developer Jobs

New Music Suggestion Tool

Creating a piece of software that tracks the music and songs you are listening to and then generates suggestions is one of the best coding project ideas for software developers who love their music.

Luckily, the Spotify API has all the tools you need to harvest what you have previously listened to and then create a playlist with that information. 

It’s a fun way to learn more about the Spotify API and be exposed to new music you may not have had the chance to listen to without the automated recommendation of the new tool you have built.

The suggestion here is to build a wrapper for the Spotify API. The specifics of the recommendation engine are up to you and your personal preferences.

Pixel Art Generator

If you want to master a new programming language or deepen your understanding of a language you are already familiar with, a pixel art generator is one of the best computer science projects to help achieve that.

This tool can be built to sample an input image and then output pixel art using that data. Generating the pixel art using CSS is a good way to improve your front-end development skills.

Spoiler Blocker

There’s nothing worse than having to constantly avoid spoilers for your new favorite show or movie. Just steering clear of awkward conversations is often not enough, as it can be difficult to avoid accidentally seeing something that ruins your experience.

An extension to your browser that obscures all mentions of the show or movie you’re interested in seeing for the first time is an easy, fun way to sharpen your skills.

You can make this entertaining by programming the extension to replace all the references you want to be removed with something striking or funny. 

Read More : When Can You Stop Calling Yourself a “Junior” Software Developer?

Movie Showtime Tool

If you have a favorite cinema, building a tool that delivers information about new movies you want to see is one of the most valuable and fun software engineering project ideas you can have.

It’s also one of the easiest ways to learn more about machine learning, as you can use training data based on your history to teach the tool more about your specific preferences. You could even create a bespoke algorithm that considers trusted reviews and critics’ scores when making new movie suggestions.

The suggested implementation for a movie showtime tool is to build a web or mobile app incorporating notifications via email or text message.

level up your remote career as a software developer with Arc

Arc is a radically different remote job search platform where companies apply to you. We feature developers directly to tech companies and startups and help you land a remote job in 14 days. Sign up here .

Personal Programming Project Ideas

These ideas for software projects are centered around quality-of-life improvements that can be achieved with a bit of imagination and ingenuity. 

They have real-world applications and will allow you to learn, have fun, and use your skills to make some of the more mundane aspects of daily life more enjoyable.

Weather Notifier

We’ve all been caught unprepared for cold or wet weather.

Leaving our trusty umbrella at home can be a thing of the past if we have a tool that notifies us each day of the forecast for our area. 

Building a simple mobile app that harvests local weather data and then delivers it to us via a notification means that there’s no need to get caught out in the rain again. 

Read More : Software Developer vs Engineer vs Programmer (& More Related Titles)

Collection Manager

Many of us love to collect all sorts of items we find interesting, some valuable, others only so in a personal way. Over time, it can be a challenge to stay on top of everything we have added to our collections over the years.

It is quite easy to build a mobile tool or app that keeps track of everything in our collection. 

You can decide what aspects of the individual pieces should be noted. The collection manager can be configured to record the value of an object, the date it was acquired, the location where it is stored, and much more. For ensuring secure access to sensitive collection data, integrating an IAM (Identity and Access Management) solution is crucial. An IAM solution centralizes access controls, enabling configurable permissions so users only see appropriate information. Implementing robust identity and access controls via an IAM system provides an additional layer of security over precious collection data assets.

Tax Liability Forecaster

This is particularly relevant if you are a freelance software engineer.

Staying on top of your tax liabilities can be challenging when dealing with multiple clients, invoicing, and a demanding workload.

Building a simple web application that predicts how much tax you must pay at the end of your assessment period will give you a valuable tool and an exciting programming side project to add to your resume.

Read More : 8 Questions to Ask Recruiters Before Committing to the Dev Hiring Process

Email Newsletter Tool

Most of us are bombarded with a relentless avalanche of email newsletters every day. It can be hard to find the time to go through them all to find the information that is most relevant and useful.

They ruin our inboxes with unnecessary clutter and can be a pain to deal with repeatedly.

Unfortunately, it isn’t as easy as just unsubscribing to these newsletters, as they often contain specific information relevant to our careers or interests.

Scripts connected to a mail server can be used to build a tool that takes all the information in the newsletters received weekly and delivers the vital information to us as a summary.

This is a beautiful way to save time and add a unique coding side project to your resume.

Deal Finder

We all have wishlist items that we have our eyes on. When it comes to high-value purchases, it can often be a challenge to find the best deal available to us when purchasing what we want.

A web application with built-in mobile notifications to let us know when the product or service we want is available and at a competitive price is a valuable and interesting intermediate-level coding project.

A good example is a web scraper that interrogates the product page in question and then notifies us when it’s on sale or has been re-stocked.

Read More : How to Set Your Freelance Rate as a Software Developer

Expense Tracker

It’s often hard to track the small daily expenses that can significantly impact our financial health. A great way to take back control of your finances and build an interesting software development side project is to create an expense tracker specific to your needs.

It can be as complicated or as simple as you desire. 

There are options to track expenses over days, weeks, or months and to have it generate automated reports to keep you up to speed on your financial health.

If you want to build a full-blown, professional expense tracker, you may consider partnering with a software development agency . These specialized firms can handle building the expense tracker to your specifications, freeing you to focus on other aspects of your business or idea.

Restaurant Finder

Whether it’s zipping out for a quick meal when you’re too tired to cook or finding that perfect venue for a special occasion, a handy mobile app that finds and recommends new restaurants is one of the best software engineering project ideas — useful to use, fun to create, and a perfect programming project to highlight on a resume or developer cover letter !

You can decide what aspects of a restaurant the tool should consider when making a new recommendation. This can be anything from trusted reviews to its location. 

If you’re feeling particularly adventurous, then you can integrate the option to automate making a reservation and then have it added to your calendar.

Read More : How to Build a Software Engineer Portfolio

What’s for Lunch?

Software engineers are busy people who often do not have the space or inclination to spend their valuable time deciding where to get lunch for the day.

Using CLI, a web app, or a mobile app to make great lunch recommendations will free up your time and take the guesswork out of what to eat daily.

You can decide what the tool should consider when making a suggestion. It can be configured to assess your specific preferences, restaurant reviews, or simply how much time it will take to be delivered to the office.

You can also explore HireAI to skip the line and:

⚡️ Get instant candidate matches without searching ⚡️ Identify top applicants from our network of 250,000+ devs with no manual screening ⚡️ Hire 4x faster with vetted candidates (qualified and interview-ready)

Advanced Programming Projects Using AI

AI is becoming more prevalent across all areas of software engineering. Getting to grips with the skills and knowledge required to stay competitive in this space is vital to our continued success as software engineers. Exploring new technological horizons, such as developing AI software , can lead to innovative solutions that enhance daily life.

Luckily, it’s easier than ever to find a side project that incorporates elements of artificial intelligence. 

Spam Email Classification Tool

This is one of the more advanced programming projects, perfect for mid-level software engineers and data scientists. Building your own spam email classification tool can deepen your understanding of a programming language you are familiar with or help you master a new one.

Here you will build a tool that can decide whether an email is spam or not based on the content of the email alone.

Several data sets are available for you to test the effectiveness of your new tool. 

This is one of the best intermediate programming project ideas for any software engineer looking to explore the technologies that underpin artificial intelligence. 

Read More : Getting Your First Freelance Developer Gig: On Clients, Pricing & More

Unbeatable Tic-Tac-Toe

There is a well-defined strategy for this Tic-Tac-Toe that can be programmed into an engine that will produce at least a draw each time the game is played.

The suggested implementation here is for a simple CLI program and makes for a brilliant first side project for software engineers interested in artificial intelligence.

Specific Chatbots

Software engineers like you are working hard to develop chatbots that respond naturally and believably. This is incredibly difficult as most people quickly notice when the chatbot’s responses are not sophisticated enough to be believably human.

To narrow the scope of what the chatbot is expected to respond to, train it in a unique area in which you already have knowledge. 

This is an excellent software side project that incorporates artificial intelligence with your interests. 

They can require significant investments in terms of time and work. Keeping the scope narrow means that the task of creating a lifelike AI chatbot can be tackled in the limited spare time you have.

Chess Grandmaster

Chess is one of the most challenging games to master for any person. The best players in the world spend a lifetime studying the game and playing against strong opponents to sharpen their skills and improve their results.

The recommended implementation is to leverage a Universal Chess Interface compatible GUI with artificial intelligence to create the software to take on the challenge of a human opponent.

If you’re brand new to chess and artificial intelligence, then a simple way to get acquainted with the game is to concentrate on the movement and strategy of a single chess piece in your engine.

Read More : How to be Productive at Home as a Remote Developer

Games and Simulation-Based Software Project Ideas

Almost all software engineers share a fascination with game development and simulations. It can, however, be hard to gain experience in this field for those engineers wishing to pursue a career in this specialization. 

Having a few advanced programming projects on your resume will help considerably when applying for that perfect position that you’ve had your eye on.

These ideas are not overly complicated and will allow you to learn the basics of game development without taking on too much workload or study.

Interactive Fiction

If you don’t want to consider the graphical elements of game development, creating a text-based interactive game is one of the best avenues for software engineers wishing to learn the basics.

Using the CLI is the recommended implementation for this project that will undoubtedly get those creative juices flowing.

Read More : Here Are 43 of the Best Online Developer Communities to Join

Random Name Generator

This project combines game development and machine learning to produce software that creates unique names based on an algorithm.

The generator utilizes a supplied data set to train itself via machine learning to produce a unique, random name for your favorite new character or place.

You can add additional rules to the software to include specific phrases, details, or attributes to the output. This can be achieved using the CLI and a mobile or desktop application. When embarking on your programming projects, ensure their success by utilizing reliable mobile app testing services .

In this project, we will be harnessing the power of procedural generation. This artificial intelligence concept is becoming more prevalent as games increase in scope and complexity.

This can be implemented with a browser-based application. The software you will engineer will be able to create a new map based on a specific small input that has limited data. This advanced programming project touches on several technologies that are just beginning to emerge. 

Building an automated map maker will allow you to learn more about machine learning, artificial intelligence, and procedural generation. These are valuable skills you will need to transition to a career in game development.

Read More : 5 Ways to Stand Out & Get Noticed in Your Current Development Job

Final Thoughts

Being a successful software engineer means a commitment to lifelong learning and personal development. 

As important as software engineering education , qualifications, and certifications are, some of the most valuable and practical skills of software engineering can be self-taught by doing programming projects that are practical and technologically appropriate to your career.

Recruiters, hiring managers, and HR professionals are faced with the challenge of trying to differentiate between candidates with similar skills and experience.

You can stand out from the crowd if your resume demonstrates a history of continuous learning.

Finding new and exciting programming project ideas to work on in your free time is one of the best ways to show potential employers you have the drive and curiosity to succeed in a constantly evolving industry.

Incredibly, what you do and learn on these projects can also be of immense practical value to your work or personal life. 

Selecting any of the projects we have spoken about in this guide is a brilliant first step to that career change or promotion you’ve had your eye on.

research project for software engineering

The Arc team publishes insightful articles and thought leadership pieces related to software engineering careers and remote work. From helping entry-level developers land their first junior role to assisting remote workers struggling with working from home to guiding mid-level programmers as they seek a leadership position, Arc covers it all and more!

Further reading

research project for software engineering

Here Are 43 of the Best Online Developer Communities to Join in 2024

How to Move Into a More Senior Role as a Software Developer leader management or leadership position

Ready to Take On a Senior Role or Leadership Position as a Developer?

how to improve time management skills for remote workers and managing time effectively as a software developer

Time Management Skills for Developers: Best Tips, Tools, and Strategies

Do I Need a Software Engineering Degree for Software Development Jobs?

Software Engineer Degree: Pros, Cons & Alternatives

How to know when you can consider yourself a senior software developer or engineer

Here’s When You Can TRULY Call Yourself a “Senior” Software Developer

how to improve analytical skills for developers

Key Analytical Skills for Developers (& How to Continually Improve Them)

InterviewBit

Top 20+ Software Engineering Projects

Introduction, why is software engineering needed, software engineer projects for beginners, multi-object tracking and identification in panoramic view in real-time, a smart security surveillance system, e-learning platform, customer experience management, android local train ticketing system, android task monitoring , android women safety app , intermediate software engineer projects, let’s grow smartly , setting-up personal home cloud, daily route planner , e-parking challan, personality analysis, online election system , doctors on hand , software engineer projects projects for experts, a liar robot, batch advisory, analyzing sentiments of facebook users: a software system , detecting evil applications on online social networks, revenue recovery system, secured mail system, virtual class room, additional resources.

Modern-day technology has changed the world into a global village, the internet and computers are an important part of it. Computer Science Engineering, thus, has become a very popular field, with excellent scope. CSE or computer Science Engineering has appeared as a very sought-after educational course. This stream concerns those candidates who have the passion to generate something amazing using computer programs and their creative minds.

The IT Industry is a thriving sector. India has demonstrated itself as a leader in the IT sector with its professionals much popular around the world. The software industry in India has registered exceptional growth in the last few years. The market for computer science engineers has been substantial both in India and overseas. The scope of computer science engineering students’ careers is phenomenal and prospects exist both in IT and non-IT companies for 

Software Engineering is much needed owing to the following reasons:

Previous Post

Top 20 artificial intelligence projects with source code [2024], 15+ exciting c projects ideas with source code.

Nevon Projects

Software Project Ideas

Get a list of the latest software engineering project topics. This is a compiled list of innovative software project ideas waiting to be implemented. Browse through these new topics for software projects prepared and constantly updated by our team to provide new ideas to software engineering students & engineer for learning & improving your programming.

#TrendingSoftwareProjects

research project for software engineering

All Software Projects Ideas and Topics

  • AI Healthcare Bot System using Python
  • ShareBook App Android Book Sharing Application
  • Travel Together – A Travel Buddy Finder System
  • Travel and Tourism Website using Python
  • Android Grocery Management App
  • Android Local Geofence System
  • Digital Scrabble Word Dictionary Game Python
  • Automatic Pronunciation Mistake Detector
  • Chronic Obstructive Pulmonary Disease Prediction System
  • College Placement System Using Python
  • Medical Report Management & Distribution System on Blockchain
  • Biometric Student Attendance System App
  • Music and Shows Finder Flutter App
  • Timer Based Phone Silencer App
  • Face Recognition Attendance System for Employees using Python
  • Liver Cirrhosis Prediction System using Random Forest
  • Android Carpool Ride Sharing App
  • Staff Scheduling Android App
  • Android Smart Bus Pass App
  • Wheelchair Guidance & Assistance App
  • Multiple Disease Prediction System using Machine Learning
  • Online Auction System using Python
  • Online Voting System Project Python
  • Secure Persona Prediction and Data Leakage Prevention System using Python
  • Stroke Prediction System using Linear Regression
  • Toxic Comment Classification System using Deep Learning
  • Flutter Based Digital Classroom App for Android & iOS
  • Extracurricular Event Tracking System App
  • Flutter Based Blood Donation App
  • Organic Food Traceability System using Blockchain
  • Pharma Supply Chain System using Smart Contracts
  • School Security System using RFID
  • Contact Recognition App Using Fingerprint Sensor
  • Android Based Image Steganography
  • Android Voting System Using Face Recognition
  • Android TTS OCR Converter System for People with Visual Disability
  • Shared Office Finder System Using Flutter
  • Memory Card Game Flutter App
  • Flutter Based Bill Reminder App
  • Three-Level Password System Using Python
  • Skin Disease Detection System Using CNN
  • Signature Verification System Using CNN
  • Online Election System Using Python
  • Library Management System Using Python
  • Heart Failure Prediction System
  • Python Doctor Appointment Booking System
  • Yoga Poses Detection using OpenPose
  • Credit Card Fraud Detection System Python
  • Evidence Protection System Using Blockchain Technology
  • Blockchain Shipment Management Tracking System
  • Learning Disability Detector and Classifier System
  • Online Stock Photo Ecommerce Website
  • AI Mental Health Therapist Chatbot
  • Ecommerce Fake Product Reviews Monitor and Deletion System
  • File Transfer System using Elliptic Curve Cryptography
  • Smart Campus Surveillance and Guidance System
  • Criminal Investigation Tracker with Suspect Prediction
  • Distributed Dealership Network Analyzer and Sales Monitor
  • E Healthcare – Online Consultation And Medical Subscription
  • Automated College Timetable Generator
  • Intelligent Mobile Travel Guide Flutter App
  • Indoor Navigation System App using Flutter
  • Smart Time Table Generation Flutter App Using Genetic Algorithm
  • Identifying Fake Products Through A Barcode-Based Blockchain System
  • Recipe Recommendation from the Ingredients Flutter App
  • Flutter Virtual Watch Party App
  • Ambulance Booking System using Python
  • Chatbot Assistant System using Python
  • Child Vaccination Management System using Python
  • Dental Caries Detection System using Python
  • Movie Success Prediction System using Python
  • Online Complaint Registration & Management System using Python
  • Organ Donation System using Python
  • Speech Emotion Detection System using Python
  • Student Feedback Review System using Python
  • Use of Pose Estimation in Elderly People using Python
  • Real Estate Booking System using Smart Contracts
  • Trusted Crowdfunding Platform Using a Smart Contract
  • Android Job Portal System App
  • AI Chatbot App using Dialog Flow in Flutter
  • Body Pose Detection App using Google ML-Kit Flutter
  • Flutter Based Calories Tracker App
  • Flutter Based House Bidding Application
  • Flutter Medicine Tracker and Notification App
  • Flutter Payment Reminder App
  • Restaurant Employees Tip Calculator System App Flutter
  • Time series Anomaly Detector App using Azure Cognitive Services
  • YouTube Giveaway Manager App Using Flutter
  • Vehicle Number Plate Detection and Recognition Python
  • Green Screen Background Remover using OpenCV Python
  • Intelligent Video Surveillance Using Deep Learning System
  • Leaf Detection System using OpenCV Python
  • Music Genres Classification using KNN System
  • Traffic Sign Recognition System using CNN
  • Auto capture Selfie by Detecting Smile Python
  • Blockchain based Loan Management System with Smart Contracts
  • Blockchain Rental Property System with Smart Contracts
  • Personal Goal Tracking App using Flutter
  • Stay Safe Security App With Scream Alert
  • Android Hostel Management System App
  • Android Investment Tracker App
  • Anti-Money Laundering System using Blockchain
  • Blockchain-based Transaction and Settlement System
  • Blockchain based Cloud File Sharing System
  • Blockchain based Cross Border Payment System
  • Blockchain based Merchant Payment System
  • Organization Finance Tracking System using Blockchain
  • Blockchain based Personal Identity Security System
  • Face Recognition Attendance System using Python
  • Human Detector and Counter using Python
  • Pneumonia Detection using Chest X-Ray
  • Music Recommendation System by Facial Emotion
  • Parkinson’s Detector System using Python
  • Website Vulnerability Scanning System
  • Lost Item Tracker App
  • Periodic Bell & Timetable Reminder App
  • Flutter based SMS Scheduler App
  • Teacher Tracking System Flutter
  • Train Food Ordering App
  • Vehicle Maintenance and Mileage Tracker App
  • Event Registration System with QR Code
  • Flutter based Music Player App
  • Flutter based Online Auction App
  • Flutter Based Online Helpdesk System
  • Bone Fracture Detection using Python
  • Cryptocurrency price prediction using Machine Learning Python
  • Depression Detection System using Python
  • Car Lane Detection Using NumPy OpenCV Python
  • Sign Language Recognition Using Python
  • Signature verification System using Python
  • Blockchain Tender/Contract Management System in Python
  • Flutter based Interview Preparation App
  • Digital Fare Meter App for Drivers Based on Flutter
  • Driver Drowsiness Detection System Using Python
  • Flutter Based Barter Trading System App
  • Money Management App for Expense Planning Flutter
  • Predicting House Price Using Decision Tree
  • Blockchain based Disk Space Rental System
  • Blockchain Based Crowdfunding Platform
  • Blockchain Based Antiques Verification System
  • Elevator Saga: Fun Game Flutter App
  • Detecting Brain Tumors and Alzheimer’s Using Python
  • Hangman Game: Vocabulary Building Flutter App
  • Secure File Access System Android App
  • Electronics Ecommerce Website Python
  • Brain Tumor and Alzheimer’s Detection Flutter App
  • Android Phone Hardware Tester App
  • Text Translation App Using Google API
  • AI-Based Picture Translation App
  • Android File Finder and Sorting App
  • EV Charging Station Finder and Slot Booking Flutter
  • Mental Health Check app using NLP Flutter
  • Spy Camera Android App
  • Python Image Forgery Detection using MD5 OpenCV
  • Bank Beacon Android App
  • Android Heart Disease Prediction App
  • Android Geofencing App for COVID Quarantine
  • Online Nursery Plant Shopping Website Python
  • Knee Osteoarthritis Detection & Severity Prediction
  • Space Shooter Combat Game Python
  • Online PDF to Text Converter & Language Translator Python
  • Herb & Grocery Shopping Android App
  • Dementia Virtual Memory App
  • Android Messenger App
  • Barbershop Service Booking App
  • Fitness App With Workout Diet & Motivation
  • Three Level Image Password Authentication
  • Students Grievance Redressal Cell Python
  • Emergency Ambulance Booking App
  • Waste Food Management & Donation App
  • Doctor Appointment Booking & Live Chat App
  • Veterinary Appointment Scheduling App Flutter
  • Online Fuel Delivery Flutter App
  • Real Time Global Weather Monitoring App Flutter
  • Property Registration Management System using Blockchain
  • Patient Data Management System using Blockchain
  • Electronic Voting System using Blockchain
  • Loyalty Points Exchange System using Blockchain
  • NGO Management System using Blockchain
  • Online Fashion Stylist Website
  • Android Blood Donation & Blood Bank Finder
  • Online Driver Hiring Android App
  • Retail Store Inventory & POS Checkout App
  • Gym Trainer & Progress Tracker App
  • Accident Detection & Alert Android App
  • Android Personal Safety App
  • Android College Connect Chat App
  • Tour Recommender App Using Collaborative Filtering
  • Android Task Monitoring
  • Online Mobile Recharge Portal Project
  • Detecting E Banking Phishing Websites Using Associative Classification
  • Vehicle Tracking Using Driver Mobile Gps Tracking
  • Sentiment Analysis for Product Rating
  • Fingerprint Based ATM System
  • Image Encryption Using AES Algorithm
  • Image Encryption Using Triple DES
  • Extended AES with Custom Configurable Encryption
  • E Commerce Product Rating Based On Customer Review Mining
  • Image Steganography With 3 Way Encryption
  • Canteen Automation System
  • Engineering College Automation and Scheduling System
  • Fingerprint Voting System Project
  • Employee Hourly Attendance By Barcode Scan
  • Weather Forecasting Using Data Mining
  • User Web Access Records Mining For Business Intelligence
  • Railway Tracking and Arrival Time Prediction
  • Android Local Train Ticketing Project
  • Android Patient Tracker
  • Opinion Mining For Restaurant Reviews
  • Website Evaluation Using Opinion Mining
  • Opinion Mining For Comment Sentiment Analysis
  • Movie Success Prediction Using Data Mining
  • Android Customer Relationship Management System
  • Android Employee Tracker
  • Monitoring Suspicious Discussions On Online Forums Using Data Mining
  • Android – PC Chatting & Image Sharing System
  • Fake Product Review Monitoring And Removal For Genuine Online Product Reviews Using Opinion Mining
  • Web Data Mining To Detect Online Spread Of Terrorism
  • Opinion Mining For Social Networking Site
  • Biomedical Data Mining For Web Page Relevance Checking
  • Data Mining For Automated Personality Classification
  • Real Estate Search Based On Data Mining
  • Automated Payroll With GPS Tracking And Image Capture
  • Unique User Identification Across Multiple Social Networks
  • College Enquiry Chat Bot
  • Bikers Portal
  • Secure Electronic Fund Transfer Over Internet Using DES
  • Sentiment Based Movie Rating System
  • Advanced Reliable Real Estate Portal
  • Diagnostic Centre Client Coordination System
  • Improved Data Leakage Detection
  • Online Herbs Shopping Project
  • Sending a secure message over a network to a remote site
  • Online Diagnostic Lab Reporting System
  • Online Loan Application & Verification System
  • Multi Website Advertisement Handling System
  • Secure Data Transfer Over Internet Using Image Steganography
  • Airport Network Flight Scheduler
  • Image Encryption For Secure Internet Transfer
  • Public Photography Contest With Live Voting
  • Intelligent PC Location Tracking System
  • Secure Remote Communication Using DES Algorithm
  • Remote Java 2 Dotnet Communication Application
  • Internet Based Live Courier Tracking And Delivery System
  • Active Chat Monitoring and Suspicious Chat Detection over Internet
  • Credit Card Fraud Detection
  • Remote User Recognition And Access Provision
  • AI Multi Agent Shopping System
  • Wireless Indoor Positioning System
  • Web Content Trust Rating Prediction Using Evidence Theory
  • Topic Detection Using Keyword Clustering
  • An Adaptive Social Media Recommendation System
  • Tab Based Library Book Availability & Location Finder On Wifi
  • Web Mining For Suspicious Keyword Prominence
  • Web Agent For Learning Content Updating
  • PC Configuration Retrieval System on Online Server
  • Web Server Log Analysis System
  • Customer Behaviour Prediction Using Web Usage Mining
  • Web Server to Client communication for web usage data analysis
  • Network Based Stock Price System
  • Matrimonial Portal Project
  • On Demand Remote PC Monitoring system Through Internet
  • Online AI Shopping With M-Wallet System
  • Military Access Using Card Scanning With OTP
  • Secure ATM Using Card Scanning Plus OTP
  • Secure Lab Access Using Card Scanner Plus Face Recognition
  • Webpage Ranking Search Engine With Seo Suggester
  • Detect Irregular moving objects and tracking based on color and shape in real-time
  • Camera Motion Sensing Project
  • Collective Face Detection Project
  • College automation project
  • Online Election System Project
  • Automated Attendance System
  • Mobile Attendance System Project
  • WiFi Shopping Guide Project
  • Cursor Movement By Hand Gesture Project
  • Mobile Quiz Through WiFi Project
  • The Cibil System Project

This list is constantly updated every week with new software project ideas. So each time you visit this page you get a whole new variety of software ideas to be implemented. Software engineering project ideas must be constantly updated every year as per evolving technology. We are here to help you at this point, we update this page with innovative software based project ideas to be used by engineering students as their final year projects.

Need Help Selecting a Topic ?

Get Free Guidance & Support Call/Watsapp: +917777094786

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 project for 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

March 2024 newsletter.

  • 29 March 2024

research project for software engineering

The Festival of Hidden REF

  • 12 March 2024

HPC Birds of a Feather RSECon 2023

  • 22 February 2024
  • Software Engineering Tutorial
  • Software Development Life Cycle
  • Waterfall Model
  • Software Requirements
  • Software Measurement and Metrics
  • Software Design Process
  • System configuration management
  • Software Maintenance
  • Software Development Tutorial
  • Software Testing Tutorial
  • Product Management Tutorial
  • Project Management Tutorial
  • Agile Methodology
  • Selenium Basics

Top 15 Software Engineering Projects (2024)

  • Top 10 Software Engineer Skills to Learn in 2024
  • How to Stand Out as a Software Engineer in 2021
  • Top 10 DevOps Projects with Source Code [2024]
  • What are the most important topics in software engineering?
  • Top 10 Software Architecture Tools in 2024
  • 12 Best Full Stack Project Ideas in 2024
  • The Future of Software Engineering: Predictions and Trends to Watch
  • 10 Best Countries for Software Engineers in 2024
  • Top 10 Platform Engineering Tools You Should Consider in 2024
  • Top 10 Technology Trends in 2024
  • Top 10 Software Testing Trends To Follow in 2024
  • Top 10 Best Software Development Projects in 2023
  • Top 50 Software Development Project Ideas [Beginners]
  • Top 12 Software Development Languages [2024]
  • Best Software Development Tools [2024]
  • 20 Best Engineering Courses for Future & Jobs 2024
  • 12 Most Popular Types of Software Development [2023]
  • Top 5 Software Development Outsourcing Companies
  • 10 Best Trello Alternatives in 2024
  • Top 10 Projects For Beginners To Practice HTML and CSS Skills
  • Types of Software Testing
  • Working with csv files in Python
  • Algorithm to solve Rubik's Cube
  • Fast I/O for Competitive Programming
  • Top 10 Algorithms and Data Structures for Competitive Programming
  • 100 Days of Code - A Complete Guide For Beginners and Experienced
  • Top 50 Java Project Ideas For Beginners & Advanced
  • Difference Between Web 1.0, Web 2.0, and Web 3.0
  • System Design Interview Questions and Answers

Software Engineering has become the mainstream for IT Industry today. Every year more than 3 Lakh students land software engineering jobs as fresher and the demand for software engineers has been rapidly rising. 

Software Engineering Projects Ideas

With the increase in demand, the competition has been rising every year and it would require you to practice rigorously so that you can easily fit into IT Industry. To begin with this, you are required to analyze which domain (programming language & S.E. stream) to pick, and then only you’ll be able to build projects to gain expertise and confidence .

In this article, we will be sharing the best hand-picked software engineering projects from Beginner – Intermediate – Expert levels that will help you in sharpening your programming skills.

But, before we move ahead, let’s talk about the need for software engineering in today’s world. 

Looking to master software testing and automation? Enroll in the “ Complete Guide to Software Testing and Automation: Master Java, Selenium, and Cucumber ” course. Gain hands-on experience with Java, Selenium, and Cucumber to excel in real-world testing challenges.

Why is Software Engineering Required?

Today, every business (small or medium, or large) wants to keep itself updated. The demand for software engineering has grown 3x – 4x ever since (past 10 years stats) . Software Engineering & Software Development requires developers to keep digging for a better approach and they also help in organizing, managing, and delivering quality output within the timeline.

Besides this, some of the major companies/sectors that are actively hiring Computer Science Engineers are:

  • Technology – 37%
  • Fortune 500 – 21%
  • Telecommunication – 5%
  • Media – 5%
  • Internet – 5%

As of now, there are more than 1,02,000+ (India) jobs available for software engineers & 9,02,000+ (Worldwide) , and the figures are continuously growing every day. In this article, we’re going to talk about how we can achieve certain goals to become good software engineers along, and the ability to deliver high-quality post-service guidance/maintenance. You’ll get some of the best software engineering projects be it a beginner, intermediate or expert level.

Software Engineering Projects For Beginners

1. chess game.

It’s a well-designed game built to play in a very interactive way where pieces get moved from block to block by the system itself. This project is built to predict (human) moves and accordingly, it takes action. This app can be so satisfying and will make you feel like you’re playing in the real world. The best part is that you can even play with friends (remotely) and with the computer as well.

It would require you to set up a MySQL database so that user’s details can be stored (including name, score, ranking, etc.). You can also check out the article based on Chess Game for the best reference.

Key Features

  • The “Moves” section will keep track of all the records of the player’s moves and will proceed accordingly
  • This game will directly start with the main display and that will accelerate processing speed. 
  • A bare minimum system is required for this app – Windows XP or Windows 7

2. Social Networking

This is a beginner-level web-based social networking system that can be built in the software industry (small-scale) for any group, community, college, school, etc. The best part about this app is that it helps in connecting the targeted group and all the necessary details/announcements can be broadcasted seamlessly.

There will be 2 major modules in this project, i.e. Admin & Participants in which participants will be allowed to upload images, post feeds, follow or add people, etc. Besides this, all the feeds can be viewed by participants from the main section and they can even communicate with each other (just like Facebook Messenger) to establish a better connection.

  • This software engineer project can be helpful especially for students to keep track of everything like Placement details, Course Material, Lecture schedules, etc.
  • The admin will have access to remove any user or post.
  • The user will have multiple methods for signing up for their account.

3. Web Scraping

Web Scraping is a fun activity app that can be built for features like customer review analysis, price prediction, lead generation, data collection, etc. It is very useful to build projects by using Beautiful Soup (which is a free, open-source Python Library), and all the necessary data can be crawled back as per the preference.

Companies like Expedia, Amazon, Skyscanner, etc. are actively using this method to offer customers a door for analysis/comparison. This gives an opportunity for users to pick any item or submit a review on any platform (such as Amazon) as per their choice (fully transparent).

  • This tool can be used for performing sentimental analysis.
  • If you want to build any analytic system/app, then it is suggested to use Selenium & smtplib
  • Web scraping is a big tool for providing assistance in scaling up businesses on a mass level.

4. Calculator

One of the best software engineering projects is a simple or scientific calculator that can be used for educational organizations. This tool can be the best solution for solving complex mathematical calculations and it majorly focuses on numbers, arithmetic operations, etc. which are well-suitable for engineering students.

However, a simple calculator can also work well, but to generate powerful calculations, this tool can be the overall solution. Besides this, it’s a beginner-level software engineering project and you can easily find related apps over play/app store.

  • OS: Windows XP or 10
  • Processor: Pentium IV 
  • RAM: 512 MB Hard disk: 2 GB
  • Language: C Programming
  • The calculator will be simple to use & response time will be extremely fast
  • Multiplication
  • Subtraction
  • Square Root 
  • Inverse, etc.

5. To-do List

It’s a fancy way of maintaining records to carry out all your daily tasks. It’s a simple, web-based app that enables users to add, edit, delete, etc. to their list. Besides this, users will have the option to change font, text color, mark pointers, share on any other platform, etc. You may find similar apps on the play store/app store too.

If you want to start building this project, we recommend you check JavaScript Project on your To-do List and start working on it right away.

  • You can start building this project with minimal requirements. However, they can be scaled up on a higher level (depending on the changes you’re looking for).
  • There would be some basic items in this app – Title, Description, Priority, Checklist, etc.
  •  These software engineer projects are highly useful as it provides users to share their To-do lists on any platform.

Software Engineering Projects For Intermediate

6. daily reminder.

The Task reminder app is a useful project to keep track of every necessary task regularly. In this application, users will be allowed to view all of their tasks in the form of a list. You can even set custom reminders for any dedicated tasks along with the Alarm tone so that you never skip any daily/weekly/monthly task.

It’s a simple app that can save a lot of time and can be a useful resource for achieving your goals. You can start working on this project by carrying below-mentioned prerequisites:

  • Android Studio
  • Java or Kotlin
  • This task can be built using Android Studio (Java & XML), SQLite, etc.
  • Users can add, edit or remove any task along with the date & time
  • The user will also be allowed to put notifications on any of the certain tasks 

7. Weather Forecasting

This project is being divided into two modules, Data Gathering & Pre-processing, and Prediction Algorithm. This project would be based on prediction and that’s why data needs to be prepared in a structured way. For this, you can either be parsing or one-hot encoding. It’s best to implement Scikit-Learn (linear regression) model to train the datasets and once they’re trained you can provide inputs (temp, pressure, etc.)

This app is well-capable in predicting 6-7 days (up to) data sets and will fetch weather details on an hourly basis. It will also offer users to change location and measurements as per their choices. 

  • This project would require Linear Regression to predict the amount of Rainfall (in inches).
  • This project will take certain parameters to measure weather i.e. temperature, humidity, wind speed, etc.
  • Software requirement – Jupyter Notebook, Windows/Linux, Python 3, etc. 

8. Local Train Ticketing System

This a simple Java-based ticketing platform by which users can book tickets as per their choices for traveling in local trains. Users will have the option to choose the number of seats, class, and journey date, along with the source and destination.  

The payment system can also be included in this application so that users can add funds (via UPI, Netbanking, debit/credit cards, etc.), and likewise, they won’t be required to print their tickets while traveling. This will allow the user to download their tickets in pdf or other formats (just like a movie ticket), and with the same mode, they can also request to Cancel their tickets within 3 hours of the journey.

Key Features:

  • Booking Panel
  • With the help of this app, users can save a lot of time & users will no longer be required to stand in queues for hours.
The course on Full Stack Development with React & Node JS – Live  is the best choice if you want to become a full-stack web developer. Along with learning, this course also has some MCQ-based learning, and track-based learning methods, and at the end of the course, you’ll also get a course completion certificate which when added to your resume adds value to it. 

9. Patient Tracker

This is an Android-based application that aims to ensure maintain patient information along with the medical condition. In this project, the doctor would be able to fetch all the records of the patient every time he/she visits for a checkup. This will require Eclipse and SQL to build this project.

This system will work in two phases where the first would be for the patient to submit their record and the other one would be for the dedicated doctor who will fetch and check all the necessary details. This system will eliminate all the unnecessary paper works and will eventually reduce human interaction.

  • This project will be beneficial for patients to maintain their medical records and to participate actively to keep themselves aware.
  • Doctors can look into records by just applying a filter for the arrival date, disease, last visit, etc.
  • This project is efficient to deploy in small-mid segment hospitals/dispensaries. 

10. Online Fuel Delivery

The working module of this project is based on a food delivery system (app). You can use Kotlin or Flutter to build this project in which the user can order both Petrol and Diesel. Once the order is placed, users will be notified with their transaction details and delivery will be made at their location. 

However, you may also find apps like Yoshi, Fuelster, etc. are working on the same pattern. It is also one of the best ways of saving time, minimizing expenses, and providing service during emergencies.

  • The app will consist of 3 main modules i.e. Admin, User, and Driver
  • In this, users will also have the option to compare fuel stations (by distance, ratings, availability, etc.)
  • In this project, both user and the fuel station will have the option to modify or cancel the placed order.

Software Engineering Projects For Expert

11. exchanging loyalty points.

Nowadays most companies & banks are offering loyalty points on every purchase they make. But, the major drawback is that more than 60% of points get wasted due to unstable tracking of those points. To boost this, blockchain-based exchange of loyalty points will enable an easy exchange platform for their users.

With this project, a tokenized loyalty point system can be introduced so that perform 3 tasks seamlessly:

  • Track their loyalty points
  • To check no tampering has been done
  • To spend loyalty points on their desired choices
  • This software engineer project aims to provide a decentralized system which means there will be only one ownership i.e. USER
  • This project aims to provide advanced high security which can be achieved using Tomochain , which is a scalable blockchain network.
  • This project can reduce operational costs and will minimize the chances of errors.

12. Fingerprint Voting System

This project focuses on building a finger-print EVM (Electronic Voting Machine) that will lead to conducting successful elections. It’s a solid solution for any small-scale elections and can also be used within organizations for conducting polls during meetings.

Since, this project runs in electronic mode, the manpower, time, and transportation would be relieved if this can be planned to introduce on a bigger scale. It would also require Proteus Design Suite for ARM module operation which will alert when one candidate will try to vote multiple times.

  • This project would require – 1 Voting System, a Fingerprint module, and an ARM (Advanced RISC Machine) controller.
  • Paperless User Identification can be conducted after the introduction of fingerprint EVM which can save lots of time and resources.
  • In this project, both the candidates and the admin can view the results in real-time.

13. Railway Time Tracking & Prediction System

This app is intended to build to fetch details from one end and push it to the user’s end. By using this application, users can easily track their train along with its timing, running status, and expected time to reach (user’s desired) station. It’s a web-based application having two modules i.e. admin and user.

Applications like these use predictive methods and rail tracking applications can also be found nowadays on the play store and app store. The app will be designed to help local commuters and can also be used to use for tracking buses (after applying minor upgradation).

  • This software engineer project entails an admin system (module) that will fetch all the required details of the train including train number, timing, etc. and the same will be passed through the server which can be later tracked by the user.
  • Admin will have permission to add/remove information such as train arrival, expected arrival/departure, and so on.
  • Software Requirements: Windows – SQL – VS 2010

14. Suspicious Activity Tracker

This project will build an automated AI camera system to track any suspicious activity to prevent any unfortunate incidents in Banks, Malls, Airports, etc. The activity tracker will use schematics to work on the behavioral patterns and gestures of a person on the live feed.

If any such activity (fighting, pointing guns, etc.) occurs, an automated alarm will start ringing and nearby Police will get notified about the incident. This would require training cameras and deploying ML models, also customized functions can be added for auto-triggering the message/calls. 

  • Raspberry Pi 4
  • Speaker or Amplifier
  • This software engineer project would require an ML model to teach working on normal modules such as walking, talking, reading, etc. so that the camera can be trained for this project.
  • You can use TensorFlow, Lobe, or Edge Impulse to prepare this model and the method can be aligned with Raspberry Pi to convert the normal camera into a smart one.

15. Emotion-Based Music Player

The introduction of AER (Audio Emotion Recognition) and MIR (Music Information Retrieval) has made it possible to build systems by applying machine learning algorithms. This project entails working on automation to generate playlists for users.

Where the AER technology will evaluate the audio waves depending on the mood and emotions of the user, the MIR will follow a pattern to fetch the desired outputs based on the provided input.

  • The emotion modules included in this project could be sadness, joy-anger, joy-surprise, joy-excitement, joy, sad-anger, and anger.
  • The accuracy may vary between 80% -90% for detecting real-time images.
  • This software engineering project can revolve around three pillars i.e. Audio Feature Extraction Module, Emotion-Audio Recognition Module, and Emotion Extraction Module.

Why is Project-Based Learning Effective? 

It’s always said that practice is better than theory and that’s what coding is all about. The more you will practice, the more you’ll grab concepts. PBL or Project-based learning enables students to implement coding effectively through active participation, joining webinars, sharing thoughts, etc. College students can take a lot of benefits out of it in 5 major ways:

  • Critical Thinking
  • In-depth knowledge of any Live project

In other words, Project-based Learning can provide an opportunity, to build strong relationships, improve test results and create more projects that can provide benefits during placements.

Conclusion 

The objective was to provide a list of software engineer project ideas for all levels i.e. Beginner, Intermediate, and Advanced. Working on projects can be fun, and that’s how you’ll learn and grow in the IT industry. In this article, we have provided a segregated list of different levels of projects and any language can be chosen to start with the project. 

It’s time for you to start creating some cool apps and push them Live for general usage. However, if you wish to check out more apps, you can browse the Internet to find out the resources that might be helpful during your software engineering journey. 

What are the different types of software projects?

There are majorly two classifications of software – Application Software and System Software. Working on a Software Engineering project requires an individual to use the right tools & technology (such as Python, Java, etc.). Some of the major kinds of Software Engineering projects are: Front-end Development Back-end Development Desktop GUI Application Full-stack Development Mobile App Development Database Development Web Development DevOps, etc.

Which project is best for software engineering?

Software engineering is a vast category & caters to many segments, they are responsible for creating games apps, web-based apps, etc. This can be achieved using different programming languages, frameworks, etc. Some of the best software engineering projects include: Chess Game Calculator Fuel Tracker Ticket System Web Scraping, etc.

Which software engineering projects are best for college students?

College students are required to work with beginner’s level engineering projects which require less expertise, some of them are: Health Management System Website Designing CRM for School/College Campus Face Detection Battery Saver

Please Login to comment...

Similar reads.

author

  • Software Engineering

advertisewithusBannerImg

Improve your Coding Skills with Practice

 alt=

What kind of Experience do you want to share?

DEV Community

DEV Community

Qaiser Abbas

Posted on Mar 19, 2021

Final Year Project Ideas for Software Engineering

First thing first.

When it comes to software development activities, it is necessary for those who wish to become software engineers to work on their projects. Developing real-world projects is the best way to hone your skills and use your theoretical knowledge into practical knowledge.

You will need to familiarize yourself with new tools and technologies while working on a computer science project. The more you learn about edge development tools, environments, libraries, the more will be your test rating for your projects. The more you experiment with ideas for different computer science projects, the more you will find out.

The ideas for the Technical Science project include the design and construction of various products and solutions designed for the application. So, if you would like to know about a few ideas for the Computer Science project, this article is what you need!

What is the purpose of the final year project?

The final year of engineering consists of two semesters in which students are asked to prepare a module that reflects their learning across all their academics. This year is very important as skills are tested with judges based on performance. Students are starting to apply to various companies this year and it is important that they showcase their talent through the project being implemented. Companies test students based on this project so, in the last year collecting projects becomes an important task.

How do I choose a final year project title?

Students are often confused when choosing a final year project, so they may end up choosing the most common or the most boring. Last-year students are encouraged to choose their projects carefully, as this will be reflected in their job search profile. Let's see how students can find ideas in choosing projects.

Understand which programming language helps you, this will make your project easier. Look for ideas, something you feel can be easily done using technology. Focus on the project at hand rather than looking at someone else. At this stage, students are distracted from the ultimate block of their mind, make sure you do your project with full focus. See the internet for ideas. You can take and work on recent projects, a few of which are listed below. Write down your ideas, and check out a few. This will help you to understand your ability.

This list of computer science and software final year project ideas for students and is suitable for beginners, and those just starting out with Python or Data Science in general. These computer science project ideas will do everything you need to be successful in your career as a software engineer.

so let's start

1- Online-Assessment proctoring 

Description:

This project will focus on the need to develop a web based application that can monitor the activities of students during an online assessment. Various modalities of data would be explored to find out the best one that helps to achieve the most accurate results. Video data from webcam as well as the screenshots after a fixed interval of time in milliseconds would be analysed to track the Eye Gaze of the user for an efficient suspicion detection. Also the lips would be monitored for talking detection. The application would keep record of all the suspicious activities during the course of online assessment for each student in a database.

Application Area: Computer Vision/Video analysis Skill Required: Good Programming skills

2- Scalable Automated Assessment System for Programming Assignments 

There is a need for final year students to incorporate cheaper scalable solution that can support the automated assessment of hundreds of students. For this purpose we require smart algorithms and concurrent programming.

3- Game based learning 

Unified Modelling Language (UML) has become the standard language for the design and analysis of object-oriented software concepts. Number of tools are available that support design with UML, But they only provide the facility to draw UML diagrams and generate code from the UML model. So far no tool provides the environment to learn different concepts of UML. Exploration games are also introduced to guide the software developers to choose the best design for given requirements. But they are not provided the step by step learning of different UML diagrams. The aim of this project is to develop the concepts of UML by providing the learning environment. We are going to develop an educational application called “UML guide for beginners”. The application will make the developer learn the basics and cores of Unified Modelling Language. To maintain the interest of user/developer we will be using gamification approach (use of game elements for educational purpose). This gamified experience will have perpetual impact on the user/developer. In this way we believe that the modelling deficiencies will be raised above and there shall be no need of reworking.

Application Area: Game Development Skill Required: Good Programming skills

4- Shopping Site 

The app could be similar to OLX or Daraz but the extra feature could be video calling. To create a mobile application which will aid in the selling and buying of items online. The main aim of the application is to build is to try and reduce the number of items being returned to help increase business revenue. By integrating videocall into buying and purchasing allows the customer to see the product before coming into physical contact with the product. This will remove any doubt when buying as the customer is 100% sure that the product is what they intend it to be and of satisfactory quality.

Application Area: Web Development Skill Required: Good programming skills and Database

5- e-Learning platform 

In this project, you will build a sharable e-learning platform for online learning. This e-learning platform powered by cloud computing would allow the independent Learning Management Systems (LMS) embedded in various e-Learning standards to share their learning objects, modules, and content. Basically, cloud computing will encourage the sharing of a wide range of learning objects, allowing learners to access them online easily. The project has a three-layer architecture to facilitate sharing learning modules, reusing them, and interoperability among different learning content efficiently. The middle layer of the infrastructure contains an indexing module and a metadata transformation module to encourage the exchange of metadata among acknowledged e-Learning standards.

6- Android task monitoring 

This project is exclusively designed to simplify the tracking and monitoring of day-to-day activities of the busy modern life. We are so busy in our daily lives right now that it becomes impossible to keep track of our daily events, meetings, and appointments. To address this issue, this project focuses on developing a Weekly Task Alerting System for Android devices that can alert users of the tasks/appointments that are scheduled for each day in a week. The project is primarily a reminder app powered by an AI chatbot that reminds users of all the tasks that are due daily. Users can use this application to set goals and achieve them, thereby increasing productivity and simplifying their lives.

Application Area: Android Development Skill Required: Good programming skills

7- A premium quality freelance marketplace

A premium quality freelance marketplace made specifically for any country like Pakistani freelancers, that hires only a certain set of experts based on a recruitment process (involves live interview, some assessments, etc). The platform services favours freelancers since they the platform service percentage cut would be anywhere between 5-10% (half of what it is currently), better financial rewards since only a quality set is being recruited. On the other hand, buyers would also benefit since they get the top-notch talent in a marketplace that's not very flooded and saturated like the currently available ones.

Application Area: Web Development Skill Required: Good Programming skills

8- Smart health in IOT using BAN 

the concept of m-health has been the concept of m-health has been introduced which give understanding of matching the m- health and Internet of things with respect to their functionalities in the advance applications of fourth generation. The diabetes is a well- known disease because of its chronic long term effects in both economic and social aspects. In this paper we address the IoT by opto-physiological accessing techniques for measuring the glucose level and discuss the diabetes management. We are aiming towards the connectivity and management of heterogeneous devices from perspective of healthcare in mobile network. This technology makes able the route of communication between diabetic patient and the hospital or clinicia introduced which give understanding of matching the m-health and Internet of things with respect to their functionalities in the advance applications of fourth generation. We are aiming towards the connectivity and management of heterogeneous devices from the perspective of healthcare in mobile network. This technology makes able the route of communication between patient and hospital

Application Area: Computer Vision/Video analysis Skill Required: SE, networking, wireless network connectivity

9- Learn Together 

This idea focuses on developing an application in which short animated videos will be made for teaching children the basic moral of life. e.g. to start eating with BISMILLAH. There will also be an assessment module.

Application Area: Android Development, Computer Graphics Skill Required: Good Programming Skills, Graphic Design

10- Lets Grow Smartly 

This idea focuses on developing an application in which child specialists and nutritionists are added on a single platform. Parents from all around the world contact them and get guidance from them. Further, there will be a community garage where all parents can share their innovative ideas that they have practiced with their children or can ask general questions. Parents can also share videos of their children doing some innovative work.

Application Area: Web Development Skill Required: Good Programming Skills, Database

11- Visual Analysis of Author Impacts and Bibliometric Data 

This study is about the visual analysis of author impact and other bibliometric data such as an author’s publication history. It utilizes Publish or Perish as a data source, which is a search tool to find this bibliometric data. Bibliometric data is a concept within Bibliometrics with which to find and define notable publications, to draw a number of different conclusions, such as how much impact an author has had in a given field. To do this we use information visualization techniques. Information Visualization is a field of science about increasing insight and understanding of raw data. It does this by researching on details of human cognition and perception and how data itself is modelled, and by categorizing and developing new ways to encode and interact with data visually.

Application Area: Artificial Intelligence Skill Required: Knowledge of Artificial Intelligence, SE & Database

12- A Roadmap for Usability and User Experience Measurement During Early Phases of Web Applications Development 

Web usability and User Experience (UX) play a vital role in the success and failure of web applications. However, the usability and UX measurement during the software development life cycle provide many challenges. The current usability and user experience evaluation and measurement methods and the defined measures as well as their applicability during the software development life cycle.

Application Area: Web Development Skill Required: SE, Project Management

13- Gamification for Job training Challenges 

The recruitment, engagement, and training of the employees are among the core and critical roles for running an organization successfully. Gamification has been proven to be a promising tool that offers many innovative solutions for various domains. The traditional recruitment process includes job advertisement, resume submission, test conduction, and interview conduction. These conventional methods of recruitment have helped to predict job performance to some extent but have proven to be outdated, tedious, and time-consuming. Therefore, A gamified job training or employee engagement application should be developed to help the organizations.

14- Android Women Safety App 

Women’s safety is a big concern which has been the most important topic till date. Women safety matters a lot whether at home, outside the home or working place. Although the government is taking necessary measures for their safety, still, there are free safety apps for women that can help them to stay safe. Most of the females these days carry their smartphone with them, so it is necessary to have at least one the personal safety apps installed. Such a security app for ladies will definitely facilitate in a way or the opposite. This is user-friendly application that can be accessed by anyone who has installed it in their smart phones. Our intention is to provide you with fastest and simplest way to contact your nearest help. In this system user needs to feed three contact numbers, in case of emergency on moving the phone up and down thrice, the system sends SMS and calls on one of the numbers feeded into the system with the location. The phone starts vibrating, and siren starts ringing. This features for both everyday safety and real emergencies, making it an ultimate tool for all.

Application Area: Web/Android Development Skill Required: Good programming skills and Database

15- Daily Route Planner 

Many people own small business, where they drive car from one point to many. For drivers of any kind where they are about to deliver any parcels or to use a direction, they can use this daily route planner where they can base their decision on what they should follow. This makes road trip easier and faster. This route optimization application will navigate your entire route in stop by stop sequence, from start to end. With this route optimizer application, travelling time can be saved and many places can be visited on the planned day. This android application can plan route for a road trip including all stops and make the trip easier and smoother. It can help with roundtrips which will last more than a day. Also, it will help any person to analyses in decision making with how many places he/she can visit in total with multiple stops within a time frame.

Application Area: Web/Android Development Skill Required: Good Programming skills

16- e-Parking Challan 

The main idea behind this project is to develop an app that can be used by the traffic police in case of wrong parking. Most of the times the car owners park their cars at wrong places and disappear for quite a long time. Whenever, a car is wrongly parked, the police instead of waiting for the owner, can take an image of the car and its license plate from their mobile phones. They will post the pictures into a central database from where the car owner will be fined and get an auto generated SMS for the details of its fine. This app would also provide to make available the violation history of the violator with one click. The challan can then be paid through e-payment or can be added into the annual tax of the car.

Application Area: Android Development Skill Required: Good programming skills, Database, Computer Graphics

17- Celebrity Profiling Corpus and techniques  

Celebrities are among the most prolific users of social media, promoting their personas and rallying followers. This activity is closely tied to genuine writing samples, rendering them worthy research subjects in many respects, not least author profiling. The Celebrity Profiling task is to predict different traits of a celebrity from their social media communication. The traits are the degree of fame, occupation, age, and gender. The social media communication is given as the teaser messages from past tweets. The goal is to develop a piece of software which predicts celebrity traits from the twitter profiles. And for this purpose corpus will be generated by collecting tweets from individual profiles.

Application Area: Web/Android Development Skill Required: Natural Language processing, Machine learning, Data science

18- Online Election System 

Online Election System would have Candidate registration, document verification, auto-generated User ID and pass for candidate and Voters. Admin Login which will be handled by Election Commission .Candidate Login which will be handled By Candidate, Voters will get Unique ID and Password, Using which they can vote for a Candidate only once per Election

Application Area: Web Development. Skill Required: Good Programming skills, Data Base.

19- Doctors on Hand 

Main idea of this project is to make a hand held application through which patient do not further need to go doctor to doctor to find who is expert and can treat your disease. This application will find itself a most suitable/expert and nearest doctor according to your disease.

Application Area: Web Development. Skill Required: Natural Language Processing

20- A Liar Robot  

Robots always tell us for what they are programmed/ they always tell us the truth. But the idea of this project is to make an intelligent robot which can tells a lie as human do, so mimicking pure human behaviour.

Application Area: Intelligent Machines and Robotics Skill Required: Strong Programming skills with hardware level knowledge/ interested in learning, good in assembly language.

21- Batch Advisory 

This will be an online portal to help batch advisors. With this portal batch advisor will be able to decide if a student is capable of selecting the course he wants to opt for. This portal will minimize the time and workload spent in looking students schedule, class, clashes, prerequisite, ability to pick a course.

Application Area: Web development. Skill Required: Good Programming skills, Database.

22- Sentiment Analysis of Facebook Users: A Software System 

Social media applications extremely reflect upon people sentiments. An understanding of this trend will potentially assist to identify the harmful factors that need to be eliminated as well as suggestion system can be proposed. Our emphasis will be to build an application for fetching data of Facebook by using Graph API, analyse the trend of data, and later offer a complete system that will be built based on the theory of Statistics, AI and Human-Computer Interaction.

Application Area: Android Application Development Skill Required: Skilled in Java/Android and Databases. Willing to learn new API (e.g. Graph API). Willing to explore research literature. Excellent English writing skills.

23- Speech Therapy for Speech Challenged Children of Pakistan 

Children who are born with serious hearing disorders don’t develop speech abilities, even though their speech related physiological aspects are healthy. As a result they face a big challenge in the long run as far as their communication skills are concerned. Many opportunities available for ordinary members of society become out of reach for them. When such children are given hearing aids they face a very interesting problem. Since they had not heard and processed speech so they don’t know how to speak. They need specialized training to learn to speak. It is a very frustrating process; each word has be repeated thousands of time. This training is imparted by trained speech therapists. The job of a speech therapist is very challenging and as such there is a high rate of turnover in this field. Moreover in Pakistan the number of properly trained speech therapists is far less than what is needed. As a result a large number of children are unable to receive the professional training that they need to be able to speak properly. With the decline in cost of computing hardware it is now possible for the less fortunate ones to afford basic hardware, the problem is software. Almost all of speech therapy related software is proprietary and quite expensive, especially for those living in underdeveloped countries. Moreover language is also a problem. Majority of the proprietary speech therapy software is meant to teach English, which is not our mother tongue. This project is intended to fill this gap.

Application Area: Software Engineering Skill Required: Good Programming skills

24- Detection of Malicious Applications on OSN 

Online social networks (OSN) have grown a largest platform for interaction and entertainment such as games. A lot of applications are developed for the OSN; however, the real intentions of the application may vary from developer to developer. Some application may have malicious intentions for which user may not be aware. Machine learning can algorithms can be used to detect malicious applications offered to OSN users.

Application Area: Artificial Intelligence, Machine Learning Skill Required: Strong programming concepts Excellent command of Java / Python Good concepts of statistics and linear algebra (Optional) Eager to learn new material by self-study

25- Facts finding and monitoring of persons on social networks 

Social networks on net are very useful and becoming more & more popular among young generation. However these are now the main cause of Cibber crimes. We are going to develop an application which can guess actual info. of newly added unknown person based on keywords used during messaging. All conversation will silently transfer to guardian through email and will immediate alert in case of any threat.

26- Software Quality Assurance 

This final year project explores the dimensions of software testing, and the development of such automated tool. The students will be dealing with the generation and execution of test data to evaluate the correctness of a program. There are some quite famous techniques present in the literature and the students will be developing some of them. Mainly the project explores black box and white box testing and highlights the errors that can go unnoticed by the programmers. Some common errors/warnings include: “memory leaks”, “dangling references”, “infinite loops”, “fall through cases in switches”, “out of bound”, “unreachable code”, “ignored return values”, and “unused variables and functions”.

Application Area: Software Engineering Skill Required: software engineering, algorithms, good programming and analytical skills

27- Virtual Class Room 

Virtual reality is and will be at its boom in coming years. The proposal is to build a proof of concept that could virtualize a class room environment. Utilizing capabilities of Kinect and HTC VIVE or any other VR platform. Student from any location could connect to the class and feel like in a class room environment and view teacher delivering a lecture in front of them.

Application Area: Web / Mobile Application Skill Required: Good Programming skills

Conclusion:

We hope that these software development project ideas inspired you to start working on software projects to hone your skills! And also now you have sound knowledge about FYP ideas to be implemented. So if you like these findings please don't forget to comment on your favourite project and also share it with your friends. This article is from Codeindark

Top comments (2)

pic

Templates let you quickly answer FAQs or store snippets for re-use.

arunprakash142 profile image

  • Joined Mar 16, 2022

Wow, I like the way you describe the unique content. The points you raise are valid and reasonable. If any of the final year students are looking for the software engineering projects

niaz_raza5 profile image

  • Joined Dec 3, 2022

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink .

Hide child comments as well

For further actions, you may consider blocking this person and/or reporting abuse

bhumit070 profile image

Exploring 40 Free APIs for Your Next Programming Project.

Bhoomit Ganatra - Mar 2

medaminefh profile image

What happens when you enter a URL in your browser?

Mohamed Amine Fh - Feb 9

drupaladmin profile image

Migrating to ClickHouse: Releem's Journey

Roman Agabekov - Feb 27

ayoub_alouane profile image

From Disconnected Chaos to Unified Systems: The Evolution of Enterprise Integration

Ayoub Alouane - Feb 25

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Software engineering research projects

Related links

Center for Integrative Neuroscience: Virtual Reality and Augmented Reality Core

  • PI: Eelke Folmer
  • September 2017 - May 2022

Optimizing Deep Learning Training through Modeling and Scheduling Support

  • PI: Feng Yan
  • June 2018 - May 2020

Deep learning models trained on large amounts of data using lots of computing resources have recently achieved state-of-the-art training performance on important yet challenging artificial intelligence tasks. The success of deep learning has attracted significant research interest from hardware and software communities to improve training speed and efficiency. Despite the great efforts and rapid progress made, one important bridge to connect software and hardware support with deep learning domain knowledge is still missing: efficient configuration exploration and runtime scheduling. Both the quality of deep learning models and the training time are very sensitive to many adjustable parameters that are set before and during the training process, including the hyperparameter configurations (such as learning rate, momentum, number and size of hidden layers) and system configurations (such as thread parallelism, model parallelism, and data parallelism). Efficient exploration of hyperparameter configurations and judicious selection of system configurations is of great importance to find high-quality models with affordable time and cost. This is however a challenging problem due to a huge search space, expensive training runtime, sparsity of good configurations, and scarcity of time and resources.

The objective of this research work is to systematically study the unique properties of deep learning systems and workloads, and establish new modeling and scheduling methodologies for improving deep learning training. The PI aims to improve the efficiency of discovering high performing models through a dynamic scheduling methodology driven by a novel hyperparameter configuration classification approach. The PI aims at developing an accuracy- and efficiency-aware hybrid scheduling methodology that makes judicious scheduling decisions based on a global view of both the time dimension (accuracy potential) and spatial dimension (efficiency potential) information. This research work integrates techniques in workload characterization, performance modeling, resource management, and scheduling to dramatically speedup the training process while significantly reducing the cost in time and resources. More broadly, this project will gain foundational knowledge about the interaction between software-hardware support and deep learning domain knowledge. This knowledge can help design next generation deep learning systems and frameworks, making deep learning training handy for researchers and practitioners with limited system and machine learning domain expertise. This research will help enhance curriculum and provide research topics for both undergraduate and graduate students, especially students from underrepresented groups.

The Solar Energy-Water-Environment Nexus in Nevada

  • Co-PIs: Sergiu Dascalu, Fred Harris
  • $20,000,000 + $4,000,000 state match
  • August 2013 -  Nov 2018

In this five-year project, Nevada Experimental Program to Stimulate Competitive Research (NV-EPSCoR) addresses critical practical problems of relevance to large-scale solar installations in arid desert lands. The project combines research on solar thermal energy generation with the understanding of eco-hydrological impacts of solar installation in desert regions to advance the economic and eco-friendly viability of solar electricity generation. This combination distinguishes this project from several other existing solar energy projects, thus making it a unique model study of relevance to Nevada and other solar installations in the US and around the world. The major participating institutions in this project are: the University of Nevada, Reno, the University of Nevada, Las Vegas, and the University of Nevada Desert Research Institute. Faculty and students from the College of Southern Nevada, Truckee Meadows Community College, and Nevada State College will also be engaged in this project.

Intellectual merit

Despite plentiful sunlight and cloud-free days which are conducive for solar energy collection, arid regions experience frequent dust storms and receive little or no rain. Dust accumulated on solar panels absorb sunlight and decrease the efficiency of solar cells; water scarcity increases the cost of meeting the cooling needs of solar thermal collectors. This project seeks to develop engineering/technological solutions to repel dust and minimize water usage in large solar installations. In addition, it examines the desert ecosystem responses and provides science-based information for designing effective ways to manage and mitigate environmental impacts associated with large-scale solar installations. The award establishes a research facility, called the Nevada Environment, Water, and Solar Testing and Research Facility (NEW-STAR) during this project. Enhancements to the existing cyberinfrastructure capabilities are effected through the creation of the Nevada Research Data Center (NRDC) for data management and communication. These new facilities promote collaboration among teams of interdisciplinary scientists and engineers on solar-energy-water-environment nexus research and education theme.

Broader Impacts

This project has the potential to develop less costly and thus more competitive solar electricity generation techniques aimed at minimizing both water usage and environmental degradation. The technological solutions to be developed are applicable to other solar energy installations nationally and globally. Interactions among scientists and collaboration at regional, national, and international levels as well as partnerships with energy industry and environmental agencies in Nevada are expected to promote economic development in the state. The project involves 41 faculty, 24 technicians, 43 graduate students, and 38 undergraduate students as participants. The project offers the following programs aimed at pre-college and undergraduate students with a focus to attract underrepresented minority groups, K-12 teachers, and the general public:

  • Pre-college bridging programs to assist K-12 students to develop academic skills and career pathways
  • Undergraduate research opportunity programs (UROP) to provide research experience at the solar energy-water-environment nexus
  • Undergraduate and graduate hands-on training (HOT) to facilitate transition from student to professional; activities include industry internships and laboratory experiences in solar energy technology, and proposal writing workshops
  • Teacher professional development programs that engage K-12 teachers in research, field work, and working with graduate students
  • Programs to educate K-12 students on project related themes and inform their families of opportunities for Science, Technology, Engineering, and Mathematics (STEM) careers
  • Online learning laboratories, which provide wireless access to cyber learning materials and enhance public understanding of solar energy and related impacts on water and environment.

Understanding Gender Differences in Visual/Vestibular Conflict during Virtual Locomotion

  • Google Research
  • PI: Eelke Folmer Co-PI: Paul MacNeilage and Lars Strother
  • July 2018 - June 2019

Scientific software engineer in a project on modelling water and food security

Are you interested in better understanding the impact of climate change on water availability and food security? Do you like working with complex numerical models? And are you familiar with scientific coding, version control and research support? The Earth Systems and Global Change Group is looking for a scientific software engineer(2 years)  to work with us in a project on the High Mountains of Asia and their link to the food producing regions that receive water from those mountains. This position is part of the ERC project 3POLE2SEA. The overall goal of the 3POLE2SEA project is to increase the understanding of the links between the water stored in the High Mountains of Asia and the water- and food security of the 1.9 billion people living in the areas downstream of those mountains, now and in the future, and use this understanding to support adaptation design. In close collaboration with a team of 4 researchers, you will develop tools and methods to quantify those links. The software engineer we are looking for is expected to contribute to the development and coding of an integrated cryosphere-crop-hydrology model that will be used in this project. The development should focus on improving the quality, documentation and version control of the model.  You will support the other researchers in the project with setting up and running their simulations and data management. If you have a strong background in scientific programming, academic research, and an interest in climate change, hydrology and food security, you have the right skill set to join our team. You will have the opportunity to work in a high quality and inspiring team, together with other software engineers, research staff, PhDs, postdoctoral researchers, and students. Your responsibilities:

  • develop a base model code for the group by merging different code versions and set up workflows for version control in Github;
  • support and train other researchers in the project to convert conceptual model developments in the practical implementations of their own branch;
  • develop robust software solutions to challenging, and rapidly evolving research problems related to water and climate systems;
  • establish a set of applicable best practices (e.g., version control, modern shared development environment , and a documentation level appropriate for each project to enable long-term maintainability and sustainability of the software and provenance of results;
  • port, debug, tune and potentially parallelize existing research code to meet criteria set by the research needs;
  • develop an understanding of hydrology and crops sufficient to converse with world-class researchers. Be communicative and be able to bring together software engineering and science demands;
  • maintain and expand knowledge of current and future software development tools and techniques, programming languages, and computing hardware, relevant to the science. 

Your qualities

You are / You have;

  • a MSc degree in computer science, engineering, natural sciences, hydrology or related computation field is required and preferably a minimum of 4 years related work experience (e.g., industry experience, open-source software development, etc.);
  • strong programming skills, particularly in languages used in our hydrology applications (e.g., C, R, Python);
  • Readable coding style; 
  • Creating comprehensive and well-written documentation;
  • Using version control systems (Git);
  • Software testing principles;
  • FAIR software/data management;
  • experience with Linux and HPC clusters;
  • experience with parallel programming architectures (MPI and OpenMP), both distributed and threaded/shared memory;
  • experience with large data-structures and NetCDF data format;
  • ability to learn new concepts and technologies beyond the area of core knowledge. 
  • background in or understanding of hydrology concepts; 
  • experience working in an academic research environment. 

We offer you

Wageningen University & Research offers excellent terms of employment . A few highlights from our Collective Labour Agreement include:

  • sabbatical leave, study leave, and partially paid parental leave;
  • working hours that can be discussed and arranged so that they allow for the best possible work-life balance;
  • the option to accrue additional compensation / holiday hours by working more,  per week;
  • there is a strong focus on vitality and you can make use of the sports facilities available on campus for a small fee;
  • a fixed December bonus of 8.3%;
  • excellent pension scheme.

Do you want more information?

For more information about this position, please contact please contact dr. Hester Biemans (PI 3POLE2SEA project), telephone +31 317 486195 or by e-mail [email protected] , or Dr. Ronald Hutjes by e-mail [email protected] For more information about the procedure, please contact Noorien Abbas, Corporate Recruiter, [email protected] Do you want to apply? You can apply directly using the apply button on the vacancy page on our website which will allow us to process your personal information with your approval. This vacancy will be listed up to and including 27 May 2024. We hope to schedule the first job interviews soon after the closing date. Procedure As part of our selection process, an assessment may be incorporated within the procedure Equal opportunities Wageningen University & Research (WUR) employs a large number of people with very different backgrounds and qualities, who inspire and motivate each other. We want every talent to feel at home in our organisation and be offered the same career opportunities. We therefore especially welcome applications from people who are underrepresented at WUR. A good example of how WUR deals with inclusiveness can be read on the page working at WUR with a functional impairment .

research project for software engineering

Help | Advanced Search

Computer Science > Software Engineering

Title: enhancing legal compliance and regulation analysis with large language models.

Abstract: This research explores the application of Large Language Models (LLMs) for automating the extraction of requirement-related legal content in the food safety domain and checking legal compliance of regulatory artifacts. With Industry 4.0 revolutionizing the food industry and with the General Data Protection Regulation (GDPR) reshaping privacy policies and data processing agreements, there is a growing gap between regulatory analysis and recent technological advancements. This study aims to bridge this gap by leveraging LLMs, namely BERT and GPT models, to accurately classify legal provisions and automate compliance checks. Our findings demonstrate promising results, indicating LLMs' significant potential to enhance legal compliance and regulatory analysis efficiency, notably by reducing manual workload and improving accuracy within reasonable time and financial constraints.

Submission history

Access paper:.

  • HTML (experimental)
  • Other Formats

References & Citations

  • Google Scholar
  • Semantic Scholar

BibTeX formatted citation

BibSonomy logo

Bibliographic and Citation Tools

Code, data and media associated with this article, recommenders and search tools.

  • Institution

arXivLabs: experimental projects with community collaborators

arXivLabs is a framework that allows collaborators to develop and share new arXiv features directly on our website.

Both individuals and organizations that work with arXivLabs have embraced and accepted our values of openness, community, excellence, and user data privacy. arXiv is committed to these values and only works with partners that adhere to them.

Have an idea for a project that will add value for arXiv's community? Learn more about arXivLabs .

IMAGES

  1. Top 11 simple software engineering project ideas mới nhất năm 2023

    research project for software engineering

  2. (PDF) Software Engineering Research Strategy: Combining Experimental

    research project for software engineering

  3. (PDF) Creating A Research Space In Software Engineering: Structure For

    research project for software engineering

  4. (PDF) A review of software engineering research from a design science

    research project for software engineering

  5. Software Engineering for Machine Learning Applications

    research project for software engineering

  6. Software Engineering Framework: A Detailed Guide

    research project for software engineering

VIDEO

  1. Software Engineer Reacts To Developer Projects & Portfolios

  2. Java Project

  3. #2 Software Project

  4. Sustainability in Software Engineering

  5. Mamura Project Software Engineering_Kelompok 6

  6. SOFTWARE ENGINEERING IMPORTANT QUESTIONS // BTECH

COMMENTS

  1. Top 10 Software Engineer Research Topics for 2024

    Top 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 ...

  2. 21 Inspiring Software Engineering Projects Explored

    This is a software engineering project where you can put your machine learning skills to use, and you can use this Kaggle dataset as the training data for your machine learning model. The idea is to use the information available in the dataset to identify suspicious activity in ATM card transactions.

  3. 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 ...

  4. software-engineering-research · GitHub Topics · GitHub

    To associate your repository with the software-engineering-research topic, visit your repo's landing page and select "manage topics." GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over 420 million projects.

  5. Research Software Engineering

    In today's competitive research environment, high-quality software is critical for successful academic programs. Princeton's Research Software Engineering Group is helping to redefine the collaborative possibilities between software engineers and traditional research groups, in order to maximize each project's success.

  6. Selected Research Software Engineering Projects

    Software forms the backbone of much current research in a variety of scientific and engineering domains. The breadth and sophistication of software skills required for modern research software projects is increasing at an unprecedented pace.

  7. (PDF) Guidelines for Conducting Software Engineering Research

    Guidelines for Conducting Software Engineering Research. August 2020. DOI: 10.1007/978-3-030-32489-6_2. In book: Contemporary Empirical Methods in Software Engineering (pp.27-62) Authors: Klaas ...

  8. Research software engineering

    Research software engineering is the use of software engineering practices 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, when it was needed to ...

  9. 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 ...

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

    Research software engineering combines professional software engineering expertise with an intimate understanding of research. The focus is on delivering best practices through the application of ...

  11. 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.

  12. Topics and Proposals

    A typical research project in software engineering involves an implementation of a software system at least up to a fully functioning prototype, performing a feasibility study and/or a user study. A typical software evolution project covers development of a software system that analyses or transforms another software system.

  13. Programming Project Ideas: 22+ Top Side Projects for Software Engineers

    Random Name Generator. This project combines game development and machine learning to produce software that creates unique names based on an algorithm. The generator utilizes a supplied data set to train itself via machine learning to produce a unique, random name for your favorite new character or place.

  14. Top 20+ Software Engineering Projects (2024 Updated)

    CSE or Computer engineering is a field of engineering that is centered around computer software development and research. Computer engineering is a very crucial field of engineering. Computer engineering projects related to electrical projects with a computer. Computer engineering-based projects have multiple applications in our day-to-day life.

  15. Top 550+ Software Engineering Projects

    List of latest software engineering project topics for 2021 with source code project ideas for IT, Computers for final year diploma & degree students. ... Started in 2012 NevonProjects an initiative by NevonSolutions Pvt. Ltd grows exponentially through its research in technology. NevonProjects works towards development of research based ...

  16. Home

    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 ...

  17. Top 15 Software Engineering Projects (2024)

    Software engineering is a vast category & caters to many segments, they are responsible for creating games apps, web-based apps, etc. This can be achieved using different programming languages, frameworks, etc. Some of the best software engineering projects include: Chess Game. Calculator.

  18. Undergraduate research in software engineering. An experience and

    Table 1: Undergraduate research projects completed between 2015 and 2022. 3.2 The undergraduate research process. With some minor variations along the last years, the whole pro cess for ...

  19. Final Year Project Ideas for Software Engineering

    1- Online-Assessment proctoring. Description: This project will focus on the need to develop a web based application that can monitor the activities of students during an online assessment. Various modalities of data would be explored to find out the best one that helps to achieve the most accurate results.

  20. Software engineering research projects

    August 2013 - Nov 2018. In this five-year project, Nevada Experimental Program to Stimulate Competitive Research (NV-EPSCoR) addresses critical practical problems of relevance to large-scale solar installations in arid desert lands. The project combines research on solar thermal energy generation with the understanding of eco-hydrological ...

  21. Trending Topics in Software Engineering

    Software Engineering (SE) is evolving to make the best out of the constantly changing technological trends, ranging from development to deployment to management and decommissioning of software systems. In this new column Trending Topics in Software Engineering, we aim at providing insights, reports, and outlooks on how researchers and ...

  22. Software Engineering research ideas / topics

    Best Research area in software engineering. Data mining semantic-web-mining. Distributed computing. Database. Distributed system. Data warehousing. Green computing. GUI-graphical-user-interface ...

  23. How To Make Your Software Engineer Portfolio Stand Out

    Projects. Your software engineering portfolio should feature your projects prominently showcasing your skills and expertise. These projects are tangible evidence of your abilities and can vary based on the industry or role you're targeting. For instance, you might include web development projects, mobile applications, or machine learning ...

  24. Who's actually being Studied? A Call for Population Analysis in

    Population analysis is crucial for ensuring that empirical software engineering (ESE) research is representative and its findings are valid. Yet, there is a persistent gap between sampling processes and the holistic examination of populations, which this position paper addresses. We explore the challenges ranging from analysing populations of individual software engineers to organizations and ...

  25. Scientific software engineer in a project on modelling water and food

    And are you familiar with scientific coding, version control and research support? The Earth Systems and Global Change Group is looking for a scientific software engineer(2 years) to work with us in a project on the High Mountains of Asia and their link to the food producing regions that receive water from those mountains. This position is part ...

  26. (PDF) Real-World Software Projects for Computer Science and Engineering

    PDF | On Feb 16, 2021, Varun Gupta and others published Real-World Software Projects for Computer Science and Engineering Students | Find, read and cite all the research you need on ResearchGate

  27. [2404.17522] Enhancing Legal Compliance and Regulation Analysis with

    This research explores the application of Large Language Models (LLMs) for automating the extraction of requirement-related legal content in the food safety domain and checking legal compliance of regulatory artifacts. With Industry 4.0 revolutionizing the food industry and with the General Data Protection Regulation (GDPR) reshaping privacy policies and data processing agreements, there is a ...

  28. 10 Best Project Management Software For Engineers For 2024

    Project management software for engineers is a category of tools designed to help manage engineering projects through organization and collaboration. These tools can be beneficial to various types of engineers, including civil, mechanical, and electrical, by streamlining project workflows and improving team coordination.