software engineering Recently Published Documents

Total documents.

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

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

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

Opportunities and Challenges in Code Search Tools

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

Psychometrics in Behavioral Software Engineering: A Methodological Introduction with Guidelines

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

Towards an Anatomy of Software Craftsmanship

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

On the Reproducibility and Replicability of Deep Learning in Software Engineering

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

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

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

Software—A New Open Access Journal on Software Engineering

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

Improving bioinformatics software quality through incorporation of software engineering practices

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

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

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

Aligning Software Engineering and Artificial Intelligence With Transdisciplinary

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

Export Citation Format

Share document.

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 Research Questions

Reviewed by Greg Wilson / 2022-08-30 Keywords: Research Topics

Cross-posted from The Third Bit :

I have been collecting random software engineering research ideas from friends and colleagues for more than a decade. These are the questions I’ve been asked since I started taking notes ten years ago. I apologize for not keeping track of who wanted to know, but if you’re working on any of these, please get in touch and I’ll try to track them down.

Does putting documentation in code (e.g., Python’s docstrings) actually work better than keeping the documentation in separate files, and if so, by what measure(s)?

Do doctest -style tests (i.e., tests embedded directly in the code being tested) have any impact long-term usability or maintainability compared to putting tests in separate files?

Which tasks do developers collaborate on most often and which do they do solo most often? (If I’m reading my handwriting correctly, the questioner hypothesized that programmers routinely do bug triage in groups, but usually write new code alone, with other tasks falling in between.)

Are slideshows written using HTML- or Markdown-based tools more text-intensive than those written in PowerPoint? In particular, are slides written in formats that version control understands (text) less likely to use diagrams than slides written with GUI tools?

A lot of code metrics have been developed over the years; are there any for measuring/ranking the difficulty of getting software installed and configured?

How does the percentage of effort devoted to tooling and deployment change as a project grows and/or ages? And how has it changed as we’ve moved from desktop applications to cloud-based applications? (Note: coming back to full-time coding after a decade away, my impression is that we’ve gone from packaging or building an installer taking 10% of effort to cloud deployment infrastructure being 25-30% of effort, but that’s just one data point.)

Has anyone developed a graphical notation for software development processes like this one for game play ?

How do open source projects actually track and manage requirements or user needs? Do they use issues, is it done through discussion threads on email or chat, do people write wiki pages or PEPs , etc.?

Has anyone ever done a quantitative survey of programming books aimed at professionals (i.e., not textbooks) to find out what people in industry care enough to write about or think others care about?

Has anyone ever done a quantitative survey of the data structures used in undergraduate textbooks for courses that aren’t about data structures? I.e., do we know what data structures students are shown in their “other” courses?

Has anyone ever compared a list of things empirical software engineering research has “proven” (ranked by confidence) versus a list of things programmers believe (similarly ranked)?

Has anyone ever done a quantitative survey of how many claims in the top 100 software development books are backed by citations, and of those, how many are still considered valid?

Are there any metrics for code fitness that take process and team into account? (I actually have the source for this one.)

Which of the techniques catalogued in The Discussion Book are programmers familiar with? Which ones do they use informally (i.e., without explicit tool support), and how do they operationalize them?

Is there a graphical notation like UML to show the problems you’re designing around or the special cases you’ve had to take into account rather than the finished solution to the problem (other than complete UML diagrams of the solutions you didn’t implement)?

Ditto for architectural evolution over time: is there an explicit notation for “here’s how the system has changed”, and if so, can it show multiple changes in a single diagram or is it just stepwise?

  • Pick an application (e.g., Twitter).
  • Build a work-alike that is deliberately malicious in some way (e.g., designed to radicalize its users).
  • Have people selected at random use both and then guess which is which.

Has anyone ever summarized the topics covered by ACM Doctoral Dissertation Award winners to see what computer science is actually about? (A subject is defined by what it gives awards for…)

Has anyone ever surveyed developers to find out what the most boring part of their job is?

Is there data anywhere on speakers’ fees at tech conferences broken down by by age, subject, gender, and geography?

Are programmers with greenery or mini-gardens in the office happier and/or more productive than programmers with foosball tables? What about programmers working from home: does the presence of greenery and/or pets make a difference?

How much do software engineering managers know about organizational behavior and/or social psychology? What mistruths and urban myths do they believe?

Has anyone ever compared how long it takes to reach a workable level of understanding of a software system with and without UML diagrams or other graphical notations? More generally, is there any correlation between the amount or quality of different kinds of developer-oriented documentation and time-to-understanding, and if so, which kinds of documentation fare best?

Is it possible to trace the genealogy of the slide decks used in undergrad software engineering classes (i.e., figure out who is adapting lessons originally written by whom)? If so, how does the material change over time?

How do people physically organize coding lessons when using static site generators? For example, do they keep example programs in the same directory or subdirectory as the slides, or keep the slides in one place and the examples in another? And how do they handle incremental evolution of examples, where the first lesson builds a simple version of X, the next lesson changes some parts but leaves others alone, etc.?

Has anyone ever applied security analysis techniques to emerging models of peer review to (for example) anticipate ways in which different kinds of open review might be gamed?

Has anyone ever written a compare-and-contrast feature analysis of tools for building documentation and tutorials? For example, how do Sphinx , Jekyll , and roxygen stack up?

Käfer et al’s paper comparing text and video tutorials for learning new software tools was interesting: has anyone done a follow-up?

Bjarnason et al’s paper on retrospectives was interesting: has anyone looked in more detail at what developers discuss in retrospectives and (crucially) what impact that has?

Has anyone studied adoption over time of changes (read: fixes) to Git’s interface? For example, how widely is git switch actually now being used? And how do adopters find out about it?

Same questions for adoption of new CSS features.

Is ther any correlation between the length of a project’s README file and how widely that software is used? If so, which drives which: does a more detailed README drive adoption or does adoption spur development of a more detailed README ?

Do any programming languages use one syntax for assigning an initial value to a variable and another syntax for updating that value, and if so, does distinguishing the two cases help? (Note: I think the person asking this question initially assumed that Python’s new := operator could only be used to assign an initial value.)

How, when, and why do people move from one open source project to another? For example, do they tend to move from a project to one of its dependencies or one of the projects that depends on it? And do they tend to keep the same role in the new project or use the switch as an opportunity to change roles?

How often do developers do performance profiling, what do they measure, and how do they measure it?

Has anyone ever created some like Sajaniemi’s roles of variables for refactoring steps or test cases? (Note: the person asking the question is a self-taught programmer who found Gamma et al’s book a bit intimidating, and is looking for beginner-level patterns.)

Has anyone defined a set of design patterns for the roles that columns play in dataframes during a data analysis?

(How) does team size affect the proportion of time spent on planning and the accuracy of plans?

Is there any way to detect altruism in software teams (i.e., how much time developer A spends helping developer B even though B’s problem isn’t officially A’s concern)? If so, is there any correlation between altruism and (for example) staff turnover or the long-term maintainability of the code base?

Is there any correlation between the quality of the error messages in a software system and the quality of the community? (Note: by “quality of the community”, I believe the questioner meant things like “welcoming to newcomers” and “actually enforces its code of conduct”.)

If you collect data from a dozen projects and guess which ones think they’re doing agile and which aren’t, is there anything more than a weak correlation to what process team members tell you they think they’re following? I.e., are different development methodologies distinct rhetorically but not practically?

What are students taught about debugging after their introductory courses? How much of what they’re explicitly taught is domain-specific (e.g., “how to debug a graphics pipeline”)?

Can we assess students’ proficiency with tools by watching screencasts of their work? And can we do it efficiently enough to make it a feasible way to grade how they code (as well as the code they write)?

A lot of people have built computational notebooks based on text formats (like Markdown) or that run in the browser. Has anyone built a computational notebook starting with Microsoft Word or OpenOffice, i.e., embedded runnable code chunks and their output in a rich document?

When people write essay-length explanations about error handling or database internals , how do they decide what’s worth explaining? Is it “I struggled to figure this out and want to save you the pain” or “I’m trying to build my reputation as an expert in this field” or something else?

Has anyone done a study that plots when people get funded on a loose timeline of “building a startup” broken out by founders’ characteristics? I.e., if 0 is “I have an idea” and 100 is fully functioning company, where do most black/brown founders get funded vs. other poc founders vs. white founders?

Has anyone analyzed videos of coding clubs for children or teens to see if girls are treated differently than boys by instructors and by their peers?

How does the distribution of language constructs actually used in large programs vary by language? For example, if we plot percentage of programs that use feature X in a language, ordered by decreasing frequency, how do the curves for different languages compare?

Is it possible to calculate something like a Gini coefficient to see how effectively scientists use computing? If so, is inequality static, decreasing, or increasing? (Note: the questioner felt strongly that the most proficient scientists are getting better at programming but the vast majority haven’t budged in the last three decades, so the gap between “median” and “best” is actually widening.)

If you train a Markov text generator on your software’s documentation, generate some fake man pages, and give users a mix of real and fake pages, can they tell which are which?

How does the number of (active) Slack channels in an organization grow as a function of time or of the number of employees?

How well are software engineering researchers able to summarize each other’s work based solely on the abstracts of their research papers, and how does that compare to researchers in other domains?

Second-line tech support staff often spend a lot of time explaining how things work in general so that they can solve a specific problem. How do they tell how much detail they need to go into?

Is there a notation like CSS selectors for selecting parts of a program to display in tutorials? (Note: I’ve used several systems that relied on specially-formatted comments to slice sections out of programs for display; the questioner was using one of these for the first time and wondering if there was something simpler, more robust, or more general.)

How does the order in which people write code differ from the order in which they explain code in a tutorial and why?

Has anyone built a computational notebook that presents a two-column display with the code on the left and commentary on the right? If so, how does that change what people do or how they do it?

Is it possible to extract entity-relationship diagrams from programs that use Pandas or the tidyverse to show how dataframes are being combined (e.g., to infer foreign key relationships)?

What percentage of time to developers spend debugging and how does that vary by the kind of code they’re working on?

At what point is it more economical to throw away a module and write a replacement instead of refactoring or extending the module to meet new needs?

Are SQL statements written in execution order easier for novices to understand or less likely to be buggy than ones written in standard order? (Note: the questioner was learning SQL after learning to manipulate dataframes with the tidyverse, and found the out-of-order execution of SQL confusing after the in-order execution of tidyverse pipelines.)

What error recovery techniques are used in what languages and applications how often?

What labels do people define for GitHub issues and pull requests, and do they take those labels with them to new projects or re-think each project?

  • Creating a set of scenarios, each with multiple-choice options.
  • Having an ethics expert determine the best answer for each.
  • Then have students and professionals answer the same questions.
  • Analyzed the results to see how well each group matches the experts’ opinions and whether practitioners are any better than students.

Has anyone ever studied students from the first year to the final year of their program to see what tools they actually start using when. In particular, when (if ever) do they start to use more advanced features of their IDE (e.g., “rename variable in scope”)?

  • Underrepresented groups often develop “whisper networks” to share essential knowledge (e.g., a young woman joining a company might be taken aside for an off-the-record chat by an older colleague and cautioned about the behavior of certain senior male colleagues). How have these networks changed during the COVID-19 lockdown?

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

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

Why science needs more research software engineers

  • Chris Woolston 0

Chris Woolston is a freelance writer in Billings, Montana.

You can also search for this author in PubMed   Google Scholar

Paul Richmond poses for a portrait in his garden

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

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

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

What do RSEs do?

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

What sorts of projects do they work on?

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

Close up of multi-coloured code on a computer screen

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

Why do so many universities support their own RSE groups?

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

What else do RSEs do?

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

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

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

Who should consider a career as an RSE?

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

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

What’s your advice for RSE hopefuls?

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

research questions on software engineering

NatureTech hub

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

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

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

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

Related Articles

research questions on software engineering

Learn to code to boost your research career

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

Divisive Sun-dimming study at Harvard cancelled: what’s next?

Divisive Sun-dimming study at Harvard cancelled: what’s next?

News Explainer 27 MAR 24

How AI is improving climate forecasts

How AI is improving climate forecasts

News Feature 26 MAR 24

China’s medical-device industry gets a makeover

China’s medical-device industry gets a makeover

Spotlight 20 MAR 24

So … you’ve been hacked

So … you’ve been hacked

Technology Feature 19 MAR 24

No installation required: how WebAssembly is changing scientific computing

No installation required: how WebAssembly is changing scientific computing

Technology Feature 11 MAR 24

AI-generated images and video are here: how could they shape research?

AI-generated images and video are here: how could they shape research?

News Explainer 07 MAR 24

Maple-scented cacti and pom-pom cats: how pranking at work can lift lab spirits

Maple-scented cacti and pom-pom cats: how pranking at work can lift lab spirits

Career Feature 27 MAR 24

Nature is committed to diversifying its journalistic sources

Nature is committed to diversifying its journalistic sources

Editorial 27 MAR 24

The beauty of what science can do when urgently needed

The beauty of what science can do when urgently needed

Career Q&A 26 MAR 24

Professor of Experimental Parasitology (Leishmania)

To develop an innovative and internationally competitive research program, to contribute to educational activities and to provide expert advice.

Belgium (BE)

Institute of Tropical Medicine

research questions on software engineering

PhD Candidate (m/f/d)

We search the candidate for the subproject "P2: targeting cardiac macrophages" as part of the DFG-funded Research Training Group "GRK 2989: Targeti...

Dortmund, Nordrhein-Westfalen (DE)

Leibniz-Institut für Analytische Wissenschaften – ISAS – e.V.

research questions on software engineering

At our location in Dortmund we invite applications for a DFG-funded project. This project will aim to structurally and spatially resolve the altere...

research questions on software engineering

Postdoctoral Fellow

We are seeking a highly motivated PhD and/or MD graduate to work in the Cardiovascular research lab in the Tulane University Department of Medicine.

New Orleans, Louisiana

School of Medicine Tulane University

research questions on software engineering

Posdoctoral Fellow Positions in Epidemiology & Multi-Omics Division of Network Medicine BWH and HMS

Channing Division of Network Medicine, Brigham and Women’s Hospital, and Harvard Medical School are seeking applicants for 3 postdoctoral positions.

Boston, Massachusetts

Brigham and Women's Hospital (BWH)

research questions on software engineering

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

Quick links

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

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

Book cover

International Conference on Product-Focused Software Process Improvement

PROFES 2009: Product-Focused Software Process Improvement pp 441–442 Cite as

Tutorial: Case Studies in Software Engineering

  • Per Runeson 10 &
  • Martin Höst 10  
  • Conference paper

3050 Accesses

2 Citations

Part of the book series: Lecture Notes in Business Information Processing ((LNBIP,volume 32))

This document presents a tutorial on case study research methodology in software engineering, held at the 10th International Conference on Product Focused Software Development and Process Improvement (Profes).

  • research methodology

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

Buying options

  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Yin, R.K.: Case Study Research, 3rd edn. Sage Publications, Thousand Oaks (2003)

Google Scholar  

Runeson, P., Höst, M.: Guidelines for Conducting and Reporting Case Study Research in Software Engineering. Empirical Software Engineering 14(2), 131–164 (2009)

Article   Google Scholar  

Download references

Author information

Authors and affiliations.

Lund University, Sweden

Per Runeson & Martin Höst

You can also search for this author in PubMed   Google Scholar

Editor information

Editors and affiliations.

Fraunhofer IIESE, Fraunhoferplatz 1, 67663, Kaiserslautern, Germany

Frank Bomarius

Department of Information Processing Science, University of Oulu, P.O.Box 3000, 90014, Finland

Markku Oivo

VTT Technical Research Centre of Finland, Tietotie 3, 02150, Espoo, Finland

Päivi Jaring

Department of Computer Science, University of Helsinki, P.O.Box 68, 00014, Helsinki, Finland

Pekka Abrahamsson

Rights and permissions

Reprints and permissions

Copyright information

© 2009 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper.

Runeson, P., Höst, M. (2009). Tutorial: Case Studies in Software Engineering. In: Bomarius, F., Oivo, M., Jaring, P., Abrahamsson, P. (eds) Product-Focused Software Process Improvement. PROFES 2009. Lecture Notes in Business Information Processing, vol 32. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-02152-7_36

Download citation

DOI : https://doi.org/10.1007/978-3-642-02152-7_36

Publisher Name : Springer, Berlin, Heidelberg

Print ISBN : 978-3-642-02151-0

Online ISBN : 978-3-642-02152-7

eBook Packages : Computer Science Computer Science (R0)

Share this paper

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

  • Publish with us

Policies and ethics

  • Find a journal
  • Track your research

Argonne National Laboratory

Choosing research software engineering as a career path.

research questions on software engineering

How does research software engineering differ from traditional software engineering? What does an RSE do beside develop and write code? How does one prepare for this field since few institutions offer it as a career path? What are the opportunities for someone interested in pursuing this as a profession?

These questions and more are addressed in a new document ​ “ Research Software Engineers: Creating a Career Path – and a Career,” published by the U.S. Research Software Engineer ( US-RSE ) Association in collaboration with IEEE Computer Society. Central to the document is input from four community experts in the United States and the U.K. – including Rinku Gupta, a senior research software specialist in the Mathematics and Computer Science division at Argonne National Laboratory.

Gupta has 20 years of experience creating research software on high-performance computing platforms. Her enthusiasm for her career as an RSE is clear. ​ “ Being an RSE has given me the opportunity to work on meaningful projects, collaborate with brilliant researchers, and constantly challenge myself to grow and learn,” Gupta says.

In the article, Gupta and her colleagues highlight three ways to build a career as an RSE : prepare, practice and engage. The RSE needs to prepare solid software development skills; but also needed is the ability to work both independently and as part of a team. Honing those skills requires practice – for example by contributing to through open-source projects. And the article lists numerous ways to engage with the RSE community, for example by attending RSE workshops.

Increasingly, researchers are recognizing the value that RSEs bring to a project. RSE groups are becoming common at universities; research labs are supporting RSE roles; and RSEs are participating in diverse projects, from physics to the social sciences. As these trends escalate, the experts agree that the number of RSE job opportunities will increase.

“ This recognition and acceptance of the RSE career track can open up new doors and opportunities for the entire RSE community,” says Gupta.

Click here to read ​ “ Research Software Engineers: Creating a Career Path—and a Career”

  • COP Climate Change
  • Coronavirus (COVID-19)
  • Cancer Research
  • Diseases & Conditions
  • Mental Health
  • Women’s Health
  • Circular Economy
  • Sustainable Development
  • Agriculture
  • Research & Innovation
  • Digital Transformation
  • Publications
  • Academic Articles
  • Health & Social Care
  • Environment
  • HR & Training
  • Health Research
  • North America Analysis
  • Asia Analysis
  • Our Audience
  • Marketing Information Pack
  • Prestige Contributors
  • Testimonials

Adjacent Open Access

  • North America

Do research software engineers have research methods?

research questions on software engineering

Dr Joanna Leng, School of Computing, University of Leeds, Dr Phillip Brooker, School of Sociology, University of Liverpool and Emeritus Prof Wes Sharrock, School of Sociology, University of Manchester, all from the UK, ponder if Research Software Engineers have research methods, plus why today, we have increasingly more types of academic research institutions and organisations

It should be evident that Research Software Engineers (RSE) have research methods: it is in the name, and we have two previous case study articles that highlight how research and Software Engineering (SE) methods and skills are combined. We have to ask this because the practices of RSEs are assumed rather than investigated. The answer depends on our ideology and the established ideology of what counts as research.

Why identifying RSE research methods is important?

In the last decade, there has been a considerable effort to encourage better SE practices, but with little attention to research methods. While research focuses on a hypothesis or research question, agile, a common SE project management choice for RSE projects does not. Agile methods normally feature a feedback loop to the customer or user base, but research has a feedback loop to the research question, especially in early innovation projects.

  • Clearer identification of what RSE is and what software development forms are appropriate to the research environment (i.e., identifying and sharing research practices to refine them and thus improve consistency across research software).
  • Emphasise this work as a serious research practice, encouraging collaboration, further legitimising the outputs of the RSE, encouraging RSE to reflect on and innovate their practices (if they are given time), and enabling the formation of new computational sub-disciplines.
  • Improving the organisation and management practices of RSE and their managers, thereby improving the performance of research organisations.

Some RSEs in national research facilities or universities are contractually or through governance limited in their research activities, e.g., applying for funding or leading research. Making changes to benefit one part of the RSE community may harm another; it is an ecosystem, so care needs to be taken by consulting beforehand and monitoring for harm afterwards.

Research is an ideology, a paradigm

Using computers for research is called the third leg of science, complementing theory and experimentation, which are paradigmatic commitments that govern how scientific disciplines produce knowledge. The ever-wider use of computers to progress disciplinary research is a recent event; theory and experimentation are older and more established research paradigms. It will take many years for an updated consensus across projects, departments and establishments to form a new research paradigm fully.

New academic research organisational structures, institutes and organisations

The current research paradigm is rapidly evolving unevenly across the disciplines. Within each discipline, candidate computer-based ideologies are tested and refined until consensus exists. Generally, the established members of the community promote the established paradigm, which they have benefited from, while the younger members advocate for change.

In the last article, we looked at the paradigm shift of research software delivery, but in this article, we argue that a paradigm shift is needed in academic research institutions’ structures and administration, funding bodies, government policy, ethics and law. There is a trend for new academic research structures and organisations, e.g., Collaborative Computing Projects (CPPs) and the Turing Institute.

Separation of some specialist RSEs into national research facilities and centralised teams has been another type of new academic structure, allowing research computing the flexibility to develop outside the established research paradigm. This is the basis of the argument for centralised RSE teams, where it has flexibility but misses academic/research governance, e.g., EDI (Equality, Diversity and Inclusivity). It assumes introducing computers to research generally has uniform consequences and requires a standard process, or it has to be selective, which is tricky and does not scale. It is a work-around to manage the limitations of the established research paradigm.

Separating all RSEs means they can only influence new paradigms and ideologies as outsiders distanced from those who represent established paradigms, which slows down adoption. Not allowing senior RSEs into academic decision-making means their ideologies are not represented in new sub-disciplines, disciplines, or cross-disciplinary institutes. Allowing mixing and people to move careers and roles encourages a dialogue that will increase the pace of adoption.

Government, research councils and experts in computational science think there is not enough software or hardware for a healthy national research environment. This has led to various sociological tools being used to promote using computer technologies in research. EPSRC has led UK research councils in making funding open to all employees with technical skills at a research institution, requiring the naming of all on a funding application, and have a research culture theme that should promote recognition of the RSE and mixing with faculty.

Unforeseen consequences

There can be unexpected problems when different parts of organisations or systems change at different rates, especially when disparities are between new technologies and established organisational ways. Two Well-known examples demonstrate this.

Firstly, the Horizon accountancy software provided new functionality to the Post Office. Still, senior management and their investigation team did not understand the technology and used an established ideology without understanding the developmental problems of new systems.

Secondly, new forensic tests can provide new evidence that could overturn a conviction. Still, the appeal system is slow as it uses an ideology established when new forensic tests were not so common. As universities represent many disciplines that interact with many professional bodies and societal systems, there will likely be many more possible conflicts between emerging and established paradigms there.

The RSE is, therefore, in a ‘Catch 22’ situation. They do not do research because they are part of an emerging paradigm, and research is defined by the established paradigm that they are distanced from and have little influence on.

research questions on software engineering

More About Stakeholder

The School of Computing - University of Leeds

Dr Joanna Leng discusses her role at the School of Computing at the University of Leeds, with a focus on Research Computing and Imaging.

Contributor Profile

research questions on software engineering

Joanna Leng

Leave a reply cancel reply.

Save my name, email, and website in this browser for the next time I comment.

License: CC BY 4.0

This work is licensed under Creative Commons Attribution 4.0 International .

What does this mean?

Share - Copy and redistribute the material in any medium or format for any purpose, even commercially.

Adapt - Remix, transform, and build upon the material for any purpose, even commercially.

The licensor cannot revoke these freedoms as long as you follow the license terms.

Feature Articles

Scientists are experimenting Genetic research and Biotech science Human Biology and pharmaceutical technology on laboratory background. Medical science and biotechnology.

Leveraging digital innovations in healthcare for organisational success

research questions on software engineering

A call to boldly support the hydrogen sector

Compliance rules Businesswoman working digital tablet Document Management System (DMS),Virtual online documentation database and process automation to efficiently manage files

Transforming local governance: Granicus’ journey as architects of digital evolution

Two iphones on grey background

Mitigating the risk of council technology investments

Latest publication.

OAG41

Open Access Government January 2024

Latest ebook.

Online intervention for people with dementia and caregivers

Online intervention for people with dementia and caregivers

  • Terms & Conditions
  • Privacy Policy
  • GDPR Privacy Policy
  • Marketing Info Pack
  • Fee Schedule
  • Research and Innovation
  • Impact and Outreach
  • Student Success
  • Honors and Awards
  • Alumni and Friends

A Record-Breaking Day of Giving for the College of Natural Resources

research questions on software engineering

Wolfpack supporters around the world showed their commitment to helping us build a more sustainable future by donating a record number of gifts to the College of Natural Resources on NC State’s sixth annual Day of Giving on Wednesday, March 20.

The college received 1,046 gifts for a preliminary total of $2,290,063. These funds, which surpass the total of $1,043,104 from the 949 gifts raised last year, will support student scholarships, faculty research, facility improvements and much more.

In addition, the college won approximately $6,500 in bonus funds — which come from unrestricted university enhancement funds — by winning a number of social media and leaderboard challenges, including the “Most Gifts From 5-6 a.m. Challenge” and the “Why I Give Challenge.”

Donor support also allowed the college to meet its challenge match for the CNR Enhancement Fund when alumnus Lynn Davidson ’79 donated an additional $2,500 to the fund when it received 250 gifts. The fund provides student scholarships, supports research and professional development, and more.

The college also raised nearly $150,000 for the Slocum Camp Hill Forest Enhancement Campaign, which was launched in 2023 to support facility upgrades and renovations. The camp provides hands-on learning experiences for forestry and fisheries, wildlife and conservation biology students.

Other highlights from the day include:

  • Sandy Kelly created an estate gift to grow the Dr. Myron Kelly Scholarship. Established in 2004, the scholarship supports undergraduate students in the Sustainable Materials and Technology program. It is named for Myron Kelly, a former professor in the Department of Forest Biomaterials at NC State.
  • Terry and Vicki Shockley increased their estate gift to the Terry Shockley Scholarship . In 2019, the couple established the fund to provide need-based support to undergraduate students enrolled in the College of Natural Resources. Preference is given to students who are in the NC State Reserve Officer Training Corps (ROTC) programs and veterans who are not already receiving scholarship or funding support.
  • Hal and Jodie Lawton established the Dr. Hasan Jameel Distinguished Professorship. It is named for Hasan Jameel, a professor in the Department of Forest Biomaterials at NC State. A member of the faculty since 1987, Jameel has received numerous honors recognizing his teaching, mentoring and scholarship. 

Since its inception in 2019, NC State’s Day of Giving has raised more than $5 million for the college. To see more details about the results and the breakdown of individual funds, visit the  Day of Giving website .

  • Day of Giving
  • philanthropy

More From College of Natural Resources News

research questions on software engineering

Sassorossi Family Establishes Scholarship for Paper Science Majors

Vinicius poses in front of mountain landscape

5 Questions with Geospatial Software Engineer Vinicius Perin

Tom and Priscilla Terry standing with Dean Myron Floyd.

NC State Couple Donates Land for Natural Resources Education

VIDEO

  1. SOFTWARE ENGINEERING Important Questions aktu [✓UNIT-4] #aktusoftwareengineering

  2. software Engineering important questions for exam || B.C.A 4th sem ccsu. ||

  3. Software Engineering MCQ for competitive exams in Hindi

  4. Software Engineering Unit 04 Important Questions

  5. NIELIT SOFTWARE ENGINEERING SOLVED PREVIOUS YEAR QUESTION PART -2. BY STUDY TABLE

  6. User Interface Design Software Engineering Important Questions Rgpv Offline Exam True Engineer

COMMENTS

  1. 577 questions with answers in SOFTWARE ENGINEERING

    Jun 29, 2023. Answer. You are correct that the design of a software system is an important aspect of software engineering. The design model is a blueprint for the implementation of the software ...

  2. PDF Writing Good Software Engineering Research Papers

    Software engineering research answers questions about methods of development or analysis, about details of designing or evaluating a particular instance, about gener-alizations over whole classes of systems or techniques, or about exploratory issues concerning existence or feasibil-ity. Table 1 lists the types of research questions that are

  3. CASE STUDY RESEARCH IN SOFTWARE ENGINEERING

    This book will help both experienced and novice case study researchers improve their research methodology. The authors provide comprehensive examples of case study research they, and others, have conducted. They also critique the examples. This is very useful for researchers wanting to undertake case study research and will help them to avoid ...

  4. software engineering Latest Research Papers

    Find the latest published documents for software engineering, Related hot topics, top authors, the most cited documents, and related journals ... where only 10.2% of the studies investigate any research question to show that their models can address at least one issue of replicability and/or reproducibility. More than 62.6% of the studies do ...

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

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

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

    1. Introduction. Software drives or affects every device we use for any area of our lives. Developing software products is a complex and resource-intensive process that requires competent software professionals (Casale et al., 2016).However, the software industry faces an increasing demand for, and a significant shortage of skilled software professionals (Calazans et al., 2017, Gimenes et al ...

  7. PDF What Makes Good Research in Software Engineering?

    Software engineering research includes, but is not limited to, experimental research. Further, it resembles in some respects research in human-computer interaction. ... Research questions may be about methods for developing software, about methods for analyzing software, about the design, evaluation, or implementation of specific sys-

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

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

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

  10. PDF Questions for Data Scientists in Software Engineering: A Replication

    and the five years gap in between. Our results show that software engineering questions for data scientists in the software-defined enterprise are largely similar to the software company, albeit with exceptions. We hope that the software engineering research com-munity builds on the new list of questions to create a useful body of knowledge ...

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

    Software engineering is a socio-technical endeavor, and while many of our contributions focus on technical aspects, human stakeholders such as software developers are directly affected by and can benefit from our research and tool innovations. In this paper, we question how much of our research addresses human and social issues, and explore how much we study human and social aspects in our ...

  12. Software Engineering Research Questions

    Software Engineering Research Questions. Reviewed by Greg Wilson / 2022-08-30 Keywords: Research Topics. Cross-posted from The Third Bit: I have been collecting random software engineering research ideas from friends and colleagues for more than a decade. These are the questions I've been asked since I started taking notes ten years ago.

  13. PDF Analyze This! 145 Questions for Data Scientists in Software Engineering

    Our catalog of 145 questions is relevant for research, industry prac-tice, and software engineering education (Section 5). For research-ers, the descriptive questions outline opportunities to collaborate with industry and influence their software development processes, practices, and tools. For those in industry, the list of questions iden-

  14. A study into the practice of reporting software engineering experiments

    These theories mainly were used for two reasons: to justify research questions and hypotheses as a part of the experimental design and to provide additional explanations of the results. ... Writing good software engineering research papers: Minitutorial. In: Proceedings of the 25th international conference on software engineering, ICSE '03.

  15. Why science needs more research software engineers

    Paul Richmond is a research software engineer in the United Kingdom. Credit: Shelley Richmond. In March 2012, a group of like-minded software developers gathered at the University of Oxford, UK ...

  16. Research Software Engineering

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

  17. Top 10 Software Engineer Research Topics for 2024

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

  18. 10 Software Engineer Interview Questions + Example Answers

    2. Describe a problem you've encountered in software development and how you solved it. This question is all about problem-solving. Interviewers love to ask questions like this because it gives them insight into the methodology you use to solve problems and the ways you may collaborate with your team.

  19. PDF Tutorial: Case Studies in Software Engineering

    The area of software engineering involves development, operation, and of software and related artifacts. Research on software engineering is to a aimed at investigating how this development, operation, and maintenance ducted by software engineers and other stakeholders under different conditions. means that the activities are carried out by ...

  20. Choosing research software engineering as a career path

    These questions and more are addressed in a new document " Research Software Engineers: Creating a Career Path - and a Career," published by the U.S. Research Software Engineer (US-RSE) Association in collaboration with IEEE Computer Society. Central to the document is input from four community experts in the United States and the U.K ...

  21. Do research software engineers have research methods?

    It should be evident that Research Software Engineers (RSE) have research methods: it is in the name, and we have two previous case study articles that highlight how research and Software Engineering (SE) methods and skills are combined. We have to ask this because the practices of RSEs are assumed rather than investigated.

  22. Analyze This! 145 Questions for Data Scientists in Software Engineering

    Our catalog of 145 questions is relevant for research, industry prac-tice, and software engineering education (Section 5). For research-ers, the descriptive questions outline opportunities to collaborate with industry and influence their software development processes, practices, and tools. For those in industry, the list of questions iden-

  23. 20 Software Engineering Interview Questions (+ Answers)

    The following are some of the general technical software developer interview questions that you can expect to encounter in a software engineering interview. Become a Software Engineer. Land a Job or Your Money Back. Code in the industry's most widely used programming languages.

  24. A Record-Breaking Day of Giving for the College of Natural Resources

    The college received 1,046 gifts for a preliminary total of $2,290,063 in support of student scholarships, faculty research, facility improvements and much more. ... 5 Questions with Geospatial Software Engineer Vinicius Perin. NC State Couple Donates Land for Natural Resources Education. College of Natural Resources Home. 2820 Faucette Dr.