Software Engineering

At Google, we pride ourselves on our ability to develop and launch new products and features at a very fast pace. This is made possible in part by our world-class engineers, but our approach to software development enables us to balance speed and quality, and is integral to our success. Our obsession for speed and scale is evident in our developer infrastructure and tools. Developers across the world continually write, build, test and release code in multiple programming languages like C++, Java, Python, Javascript and others, and the Engineering Tools team, for example, is challenged to keep this development ecosystem running smoothly. Our engineers leverage these tools and infrastructure to produce clean code and keep software development running at an ever-increasing scale. In our publications, we share associated technical challenges and lessons learned along the way.

Recent Publications

Some of our teams.

Africa team

Climate and sustainability

Software engineering and programming languages

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

Careers

Society of Research Software Engineering

Society of Research Software Engineering

RSECon is returning to Newcastle in September 2024

A professional society for Research Software Engineering - accepting members now

Are you a Research Software Engineer?

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

Join the Society of Research Software Engineering

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

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

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

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

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

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

Announcements

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

Past Events

software engineering research

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

RSE Fellows

Background on the 2016 and 2018 EPSRC RSE Fellows.

Regional Groups

All of the regional groups and meetups for RSE activities.

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

Communication

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

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

Vacancies

Current RSE job openings

Current RSE job opportunities around the world.

RSE Journeys

RSE Journeys

Examples of rse careers.

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

Hiring

Resources for hiring RSEs

Help with writing job descriptions and adverts to attract RSEs.

Latest News

Society agm 2023 report, an update on the selection of programme chairs for future rse conferences, march 2024 newsletter.

  • 29 March 2024

Research in Software Engineering (RiSE)

Research in Software Engineering graphic

Our mission is to make everyone a programmer and maximize the productivity of every programmer. This will democratize computing to empower every person and every organization to achieve more. We achieve our vision through open-ended fundamental research in programming languages, software engineering, and automated reasoning. We strongly believe in pushing our research to its logical extreme to positively impact people’s lives.

Foundations

Logical formalisms and theorem proving

Lean , Symbolic Automata , Z3  

Programming languages/models

Bosque (opens in new tab) , Catala (opens in new tab) , F* (opens in new tab) , Koka (opens in new tab) , TLA+ (opens in new tab)

Azure Durable Functions , Netherite , Orleans

High assurance/performance cloud

Correctness

Network Verification , Project Everest , Torch

AI and Big Data

AI at Scale , CHET , Parade

Program analysis tools

Corral , Angelic Verification , Verisol

Program understanding/debugging

MSAGL , Time travel debugging

AI-assisted software development

Future of Program Merge , Trusted AI-assisted Programming

Education and the end-user

CS Education

BBC micro:bit , Microsoft MakeCode

End-user embedded systems

Jacdac , MakeAccessible

  • Follow on Twitter
  • Like on Facebook
  • Follow on LinkedIn
  • Subscribe on Youtube
  • Follow on Instagram
  • Subscribe to our RSS feed

Share this page:

  • Share on Twitter
  • Share on Facebook
  • Share on LinkedIn
  • Share on Reddit

Software Engineering’s Top Topics, Trends, and Researchers

Ieee account.

  • Change Username/Password
  • Update Address

Purchase Details

  • Payment Options
  • Order History
  • View Purchased Documents

Profile Information

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

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

  • Publications
  • News and Events
  • Education and Outreach

Software Engineering Institute

Cite this post.

AMS Citation

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

APA Citation

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

Chicago Citation

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

IEEE Citation

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

BibTeX Code

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

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

Headshot of Anita Carleton.

Anita Carleton

July 12, 2021, published in.

Software Engineering Research and Development

This post has been shared 10 times.

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

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

Software Engineering as Strategic Advantage

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

Goals of This Work

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

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

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

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

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

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

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

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

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

A Guiding Vision of the Future of Software Engineering

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

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

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

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

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

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

Research Focus Areas

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

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

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

Help Shape Our National Software Research Agenda

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

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

Headshot of Anita Carleton.

Author Page

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

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

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

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.

software engineering research

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

software engineering research

Learn to code to boost your research career

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

Software tools identify forgotten genes

Software tools identify forgotten genes

Technology Feature 24 MAY 24

Guidelines for academics aim to lessen ethical pitfalls in generative-AI use

Guidelines for academics aim to lessen ethical pitfalls in generative-AI use

Nature Index 22 MAY 24

Internet use and teen mental health: it’s about more than just screen time

Correspondence 21 MAY 24

AI’s keen diagnostic eye

AI’s keen diagnostic eye

Outlook 18 APR 24

So … you’ve been hacked

So … you’ve been hacked

Technology Feature 19 MAR 24

No installation required: how WebAssembly is changing scientific computing

No installation required: how WebAssembly is changing scientific computing

Technology Feature 11 MAR 24

How researchers in remote regions handle the isolation

How researchers in remote regions handle the isolation

Career Feature 24 MAY 24

What steps to take when funding starts to run out

What steps to take when funding starts to run out

Brazil’s plummeting graduate enrolments hint at declining interest in academic science careers

Brazil’s plummeting graduate enrolments hint at declining interest in academic science careers

Career News 21 MAY 24

Sir Run Run Shaw Hospital, School of Medicine, Zhejiang University, Warmly Welcomes Talents Abroad

“Qiushi” Distinguished Scholar, Zhejiang University, including Professor and Physician

No. 3, Qingchun East Road, Hangzhou, Zhejiang (CN)

Sir Run Run Shaw Hospital Affiliated with Zhejiang University School of Medicine

software engineering research

Associate Editor, Nature Briefing

Associate Editor, Nature Briefing Permanent, full time Location: London, UK Closing date: 10th June 2024   Nature, the world’s most authoritative s...

London (Central), London (Greater) (GB)

Springer Nature Ltd

software engineering research

Professor, Division Director, Translational and Clinical Pharmacology

Cincinnati Children’s seeks a director of the Division of Translational and Clinical Pharmacology.

Cincinnati, Ohio

Cincinnati Children's Hospital & Medical Center

software engineering research

Data Analyst for Gene Regulation as an Academic Functional Specialist

The Rheinische Friedrich-Wilhelms-Universität Bonn is an international research university with a broad spectrum of subjects. With 200 years of his...

53113, Bonn (DE)

Rheinische Friedrich-Wilhelms-Universität

software engineering research

Recruitment of Global Talent at the Institute of Zoology, Chinese Academy of Sciences (IOZ, CAS)

The Institute of Zoology (IOZ), Chinese Academy of Sciences (CAS), is seeking global talents around the world.

Beijing, China

Institute of Zoology, Chinese Academy of Sciences (IOZ, CAS)

software engineering research

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

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

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

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

1. Artificial Intelligence and Software Engineering

Intersections between AI and SE

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

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

Knowledge-based Software Engineering

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

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

2. Natural Language Processing

Multimodality

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

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

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

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

3. Applications of Data Mining in Software Engineering

Mining Software Engineering Data

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

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

Clustering and Text Mining

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

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

4. Data Modeling

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

5. Verification and Validation

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

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

6. Software Project Management

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

7. Software Quality

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

8. Ontology

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

9. Software Models

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

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

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

SDLC

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

Why is Software Engineering Required?

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

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

2. Scalability

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

3. Large Software

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

4. Dynamic Nature

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

5. Better Quality Management

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

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

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

Frequently Asked Questions (FAQs)

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

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

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

Profile

Eshaan Pandey

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

Avail your free 1:1 mentorship session.

Something went wrong

Upcoming Programming Batches & Dates

Course advisor icon

Is There a Future for Software Engineers? The Impact of AI [2024]

Let's investigate how AI can shape software development, which skills will be relevant in the nearest future, and how to approach all those changes.

A QUICK SUMMARY – FOR THE BUSY ONES

TABLE OF CONTENTS

Introduction

The age of artificial intelligence ( AI ) is upon us, and many software developers fear that they won’t be able to stay relevant.

It would be easy to dismiss their concern about the future of their profession as yet another example of the Luddite fallacy, the simple observation that new technology doesn’t destroy jobs because it only changes the composition of jobs in the economy, but there are many indicators that paint the future of software developers in much darker colors.

Growing worries

According to a team of researchers at the US Department of Energy’s Oak Ridge National Laboratory, there’s a high chance that AI will replace software developers as early as 2040 .

“Programming trends suggest that software development will undergo a radical change in the future: the combination of machine learning, artificial intelligence, natural language processing, and code generation technologies will improve in such a way that machines, instead of humans, will write most of their own code by 2040,” state the researchers .

Software developers are understandably worried. In fact, nearly 30 percent of the 550 software developers surveyed by Evans Data Corporation, a California-based market research firm that specializes in software development, believe that their development efforts will be replaced by artificial intelligence in the foreseeable future.

According to Janel Garvin, CEO of Evans Data, the fear of obsolescence due to AI, “was also more threatening than becoming old without a pension, being stifled at work by bad management, or by seeing their skills and tools become irrelevant.”

How AI changed the software development world

AI has significantly impacted the software development landscape in recent years, bringing about several notable changes and advancements. Here are some ways in which AI has influenced software development:

Automation and productivity

AI has enabled automation of various software development tasks, boosting productivity and efficiency. For example, AI-powered tools can automatically generate code snippets, perform code refactoring, and assist in bug detection and fixing. This automation helps developers save time and focus on more complex and critical aspects of software development.

Testing and quality assurance

AI has improved the testing and quality assurance processes. AI-based testing tools can analyze code, identify potential vulnerabilities, and automatically generate test cases. Machine learning techniques are employed to learn from past test results and predict areas of code that are more likely to contain bugs. This helps developers identify and fix issues early in the development cycle, leading to higher-quality software.

Natural language processing (NLP)

NLP, a subfield of AI, has made significant strides in understanding and processing human language. NLP technologies have influenced software development through the development of chatbots, virtual assistants, and voice-activated interfaces. These applications allow users to interact with software systems using natural language, enhancing user experiences and opening up new avenues for software development.

Intelligent recommendations and personalization

AI algorithms can analyze vast amounts of data to make intelligent recommendations and personalize software experiences. For example, AI-powered recommendation systems are used in e-commerce applications to suggest products based on user preferences and browsing history. Similarly, AI can personalize user interfaces, content, and features based on individual user behavior and patterns.

Data-driven decision-making

With the increasing availability of data, AI techniques, such as machine learning, have enabled developers to make data-driven decisions in software development. Machine learning algorithms can analyze large datasets, extract patterns, and make predictions. This helps developers in various areas, such as predicting user behavior, optimizing performance, and improving security.

Code generation and optimization

AI can generate code based on existing patterns and examples. This includes auto-complete suggestions in integrated development environments (IDEs) and AI-generated code snippets for specific tasks. AI can also optimize code by identifying redundant or inefficient parts and suggesting improvements.

DevOps and continuous integration

AI has contributed to the evolution of DevOps practices and continuous integration/continuous delivery (CI/CD) pipelines. AI techniques can analyze code changes, test results, and production metrics to provide insights on performance, quality, and potential issues. This helps streamline the software development lifecycle, improve deployment processes, and enhance overall software quality.

It's important to note that while AI brings advancements and automation to software development, it does not replace the need for skilled human software engineers. Human expertise is still essential for designing robust systems, ensuring ethical considerations, and understanding the broader context of software development projects.

Tools to replace software developers?

There are several AI tools and frameworks that are commonly used in software development to facilitate work and enable the development of AI-driven applications. Here are some of the most popular ones:

  • TensorFlow: TensorFlow is an open-source library developed by Google that is widely used for building and training deep learning models. It provides a flexible and comprehensive ecosystem for developing various AI applications and supports a wide range of platforms and devices.
  • PyTorch: PyTorch is another popular open-source deep learning framework known for its dynamic computational graph, which makes it easier to debug and experiment with models. It has gained popularity for its simplicity and is commonly used for research and rapid prototyping of AI models.
  • scikit-learn: scikit-learn is a machine learning library for Python that provides a range of algorithms and tools for tasks such as classification, regression, clustering, and dimensionality reduction. It offers a simple and consistent API and is widely used for traditional machine learning tasks.
  • Keras: Keras is a high-level neural networks API that runs on top of TensorFlow or other backend engines. It offers a user-friendly interface for building and training neural networks, making it popular among beginners and researchers. Keras provides an abstraction layer that simplifies the process of creating and experimenting with neural networks.
  • OpenAI Gym: OpenAI Gym is a popular toolkit for developing and comparing reinforcement learning algorithms. It provides a collection of environments and tools for training and evaluating reinforcement learning agents. OpenAI Gym is widely used for research and experimentation in the field of reinforcement learning.
  • Jupyter Notebooks: Jupyter Notebooks are interactive web-based environments that allow developers to create and share documents containing live code, visualizations, and explanatory text. They are widely used in the AI community for data exploration, prototyping, and sharing research findings.
  • Natural Language Toolkit (NLTK): NLTK is a Python library that provides tools and resources for working with human language data. It offers various functionalities for tasks such as tokenization, stemming, part-of-speech tagging, and sentiment analysis. NLTK is commonly used in NLP-related projects.
  • Apache Spark: Apache Spark is a distributed computing framework that provides a unified analytics engine for big data processing. It offers efficient data processing capabilities and supports machine learning and graph processing algorithms. Spark is commonly used for large-scale data analysis and AI applications that require handling massive datasets.
  • GitHub Copilot: GitHub Copilot is an AI-powered code completion tool developed by GitHub in collaboration with OpenAI. It uses machine learning models trained on a vast amount of code from open-source repositories to suggest code snippets and completions as developers write. Copilot aims to assist developers in writing code faster and more efficiently by providing context-aware suggestions directly within their coding environment.
  • Microsoft Azure Cognitive Services: Microsoft Azure offers a suite of AI services known as Cognitive Services. These services provide pre-trained AI models and APIs that developers can use to add various AI capabilities to their applications. Some examples include computer vision, natural language processing, speech recognition, and sentiment analysis. Azure Cognitive Services simplify the integration of AI capabilities into software development projects.
  • IBM Watson: IBM Watson is a comprehensive AI platform that offers a range of services and tools for building AI-powered applications. It provides capabilities for natural language understanding, visual recognition, speech-to-text, text-to-speech, and more. IBM Watson offers pre-trained models and APIs that enable developers to leverage AI functionality without building models from scratch.
  • Amazon SageMaker: Amazon SageMaker is a fully managed service by Amazon Web Services (AWS) designed to simplify the development and deployment of machine learning models. It provides a complete set of tools for building, training, and deploying models at scale. SageMaker offers a wide range of algorithms, supports popular frameworks like TensorFlow and PyTorch, and includes capabilities for data preprocessing, model optimization, and model hosting.
  • Google Cloud AI Platform: Google Cloud AI Platform is a set of cloud-based tools and services offered by Google Cloud for developing, training, and deploying machine learning models. It provides infrastructure, libraries, and frameworks to streamline the development process. Google Cloud AI Platform supports TensorFlow, PyTorch, and other popular frameworks, and offers features for distributed training, hyperparameter tuning, and model serving.

Bridging the skill gap

To successfully bridge the skill gap that exists within the software development industry, software developers themselves must realize that their skill sets will have to change .

According to a report from job search site Indeed, the three most in-demand AI jobs on the market are data scientist, software engineer, and machine learning engineer. The demand for these and other AI-related roles has more than doubled over the past three years, and it’s expected to keep growing at a similar pace.

The skills that software developers need to be proficient on AI projects include math, algebra, calculus, statistics, big data, data mining, data science, machine learning, MLOps , cognitive computing, text analytics, natural language processing, R, Hadoop, Spark, and many others.

Crucial skills for software developers in the age of AI

In the age of AI, developers can enhance their skills to stay relevant and take advantage of the opportunities presented by AI. Here are some crucial skills for developers in the AI era:

Machine Learning (ML) and Data Science

Understanding the principles and techniques of machine learning is essential. Developers should learn about different ML algorithms, data preprocessing, feature engineering, model evaluation, and deployment. Additionally, gaining knowledge in data science, including data visualization, exploratory data analysis, and statistical analysis, can provide a solid foundation for working with AI systems.

Neural Networks and Deep Learning

Deep learning has revolutionized AI and is widely used in various applications. Developers should familiarize themselves with neural networks, including convolutional neural networks (CNNs) for image processing and recurrent neural networks (RNNs) for sequence data. Learning frameworks like TensorFlow and PyTorch can be valuable in building and training deep learning models.

Natural Language Processing (NLP)

NLP focuses on understanding and processing human language. Developers can learn about techniques such as text preprocessing, sentiment analysis, named entity recognition, and language generation. Knowledge of libraries like NLTK, spaCy, and transformers can be beneficial in working with NLP tasks.

Data engineering and data management

Working with AI often involves handling large datasets. Developers should learn about data engineering techniques, data preprocessing, and data cleaning to ensure data quality. Additionally, understanding databases, distributed computing frameworks like Apache Hadoop and Apache Spark, and cloud-based data services can be valuable in managing and processing data for AI applications.

Software development practices and tools

While AI skills are crucial, developers should not overlook core software development practices. Strong programming skills, software design principles, and knowledge of popular programming languages like Python, Java, or C++ are still essential. Additionally, familiarity with version control systems (e.g., Git), collaborative development tools, and software testing methodologies is important.

Ethical and responsible AI

As AI becomes increasingly integrated into society, ethical considerations are vital. Developers should understand the ethical implications of AI, such as fairness, transparency, privacy, and bias. They should strive to develop AI systems that adhere to ethical guidelines and mitigate potential risks.

Domain knowledge and problem-solving

AI is applied in various domains, such as healthcare, finance, robotics, and autonomous systems. Developers should acquire domain-specific knowledge to understand the challenges, requirements, and constraints of specific industries. Strong problem-solving skills, critical thinking, and the ability to break down complex problems into manageable components are crucial in designing effective AI solutions.

Technical debt management

Developers need to know how to cope with various types of a growing technical debt . Managing technical debt is essential for ensuring that the software can grow and evolve without significant rework. Software engineers must balance the immediate benefits of quick fixes against the long-term impacts on productivity.

Skills needed are, for example, technical debt prioritization , technical debt metrics , coping with technical debt taking business goals into account.

Lifelong learning and adaptability

The field of AI is evolving rapidly, so developers must embrace lifelong learning. They should stay updated with the latest research, techniques, and advancements in AI. Keeping up with online courses, attending conferences, participating in AI communities, and exploring open-source projects can help developers stay ahead in this dynamic field.

By acquiring these skills, developers can position themselves to leverage the power of AI and contribute effectively to the development of AI-driven solutions across various industries.

Clearly, it would be virtually impossible for most software developers to master each and every AI-related skill, especially considering the breakneck speed at which the field of AI is moving forward. That’s why software developers who want to stay relevant in the age of AI should see themselves as expert-generalists and treat learning new skills as an ongoing process.

Having a breadth of knowledge makes it far easier to acquire deep expertise in one particular area based on the current market demand. “[Those who will be successful will be the developers that have the best understanding [of] the essential complexity of their domains: which data are important [and] the impact of uncertainty on decision making, etc.,” says Todd Schiller , head of engineering at MOKA, a disruptive technologies advisory firm.

Software developers won’t have to know the intricate details of the latest machine learning algorithms or possess excellent command of the trendiest programming language to work on AI projects , but not being able to navigate the AI landscape and learn new skills at the speed of business won’t be equally optional.

Will software engineers be still needed in the future?

While artificial intelligence (AI) has the potential to automate certain tasks and impact various industries, it is unlikely that software engineers will be entirely replaced by AI in the foreseeable future. Here's why:

Complex problem-solving

Software engineering involves solving complex problems, designing algorithms, and developing intricate software systems. While AI can assist in automating certain repetitive tasks and optimizing processes, it still requires human expertise to conceptualize, architect, and design complex software solutions that meet specific requirements.

Creativity and innovation

Software engineering often involves creativity and innovation, such as designing user interfaces, creating unique user experiences, and developing novel algorithms. While AI can generate solutions based on existing patterns and data, it currently lacks the ability to match human creativity and intuition.

Ethical considerations

Software engineers are responsible for ensuring that the software they develop adheres to ethical standards, respects privacy, and mitigates biases. These ethical considerations require human judgment and decision-making, as AI systems can inadvertently perpetuate biases or act in ways that are not aligned with human values. Software engineers play a crucial role in ensuring ethical practices are followed throughout the software development process.

Adaptability and context understanding

Software engineers possess contextual understanding and the ability to adapt to changing requirements. They work closely with stakeholders to gather requirements, understand business needs, and create software solutions that align with specific contexts. While AI can assist in data analysis and pattern recognition, human software engineers are better equipped to understand complex contexts, make informed decisions, and adapt software systems accordingly.

Collaboration and communication

Software engineering often involves collaboration with cross-functional teams, clients, and end-users. Effective communication, teamwork, and understanding the needs of various stakeholders are essential for successful software development. Human software engineers bring interpersonal skills and domain expertise that are vital for these collaborative efforts.

While AI will continue to impact the field of software engineering, it is more likely to augment the work of software engineers rather than replace them entirely. AI can assist in automating repetitive tasks, optimizing code, and aiding in specific aspects of software development. However, the skills and expertise of software engineers will remain crucial for designing complex systems, ensuring quality, addressing ethical considerations, and driving innovation in the field.

What's coming up

While some software developers have resigned to their fate, most want to know how exactly AI will change software development so they can start acquiring relevant new skills as soon as possible.

“A large portion of programmers of tomorrow do not maintain complex software repositories, write intricate programs, or analyze their running times,” believes Andrej Karpathy , a former research scientist at OpenAI who now serves as Director of AI at Tesla. “They collect, clean, manipulate, label, analyze and visualize data that feeds neural networks.”

Karpathy has proposed a new software development process for the age of AI, called Software 2.0 , and its key components include problem and goal definition, data collection, data preparation, model learning, model deployment and integration, and model management. Software developers of the future will source and compose large data sets to train applications to be smart, instead of hard-coding the desired capabilities.

Solutions such as DeepCoder , which was built by Microsoft and academics at the University of Cambridge, already allow us to see a glimpse of the future of software development. DeepCoder can create a new application by predicting which properties the application must have to generate some desired outputs from inputs.

While Microsoft’s solution is highly experimental, Ubisoft’s Commit Assistant AI , which was developed in partnership with a Concordia University researcher, has already been used on the Rainbow Six and Assassin’s Creed games, two major Ubisoft franchises. Commit Assistant AI automatically identifies coding defects as programmers write them, saving developers about 20 percent of their time.

“It touches all software developers. I believe that in the future we will be deploying more and more AI technologies to reduce the maintenance burden in software industries,” says Concordia University researcher Wahab Hamou-Lhadj.

Artificial intelligence will radically reshape software development and force software developers to acquire new skills in order to stay relevant. Those who will adapt most successfully to the coming era will get to enjoy an abundance of work opportunities, but the process will require a different mindset than many software developers have today.

Frequently Asked Questions

Our promise

Every year, Brainhub helps 750,000+ founders, leaders and software engineers make smart tech decisions. We earn that trust by openly sharing our insights based on practical software engineering experience.

software engineering research

Full-stack software developer with 17 years of professional experience.

software engineering research

Software development enthusiast with 8 years of professional experience in this industry.

Popular this month

Get smarter in engineering and leadership in less than 60 seconds.

Join 300+ founders and engineering leaders, and get a weekly newsletter that takes our CEO 5-6 hours to prepare.

previous article in this collection

It's the first one.

next article in this collection

It's the last one.

Image of ess-logo

  • R&D 100 Awards
  • Congressional Reports
  • DOE Global Energy Storage Database
  • ES Safety Collaborative
  • Calendar of Events
  • Conference Archive
  • Sandia National Laboratories Conference Proceedings
  • Sandia National Laboratories Journal Articles and Books
  • Sandia National Laboratories Patents and Applications
  • Sandia National Laboratories Publications
  • Pacific Northwest National Laboratory (PNNL) Journal Articles and Books
  • Pacific Northwest National Laboratory (PNNL) Patents and Applications
  • Pacific Northwest National Laboratory (PNNL) Publications
  • Oak Ridge National Laboratory (ORNL) Journal Articles and Books
  • Oak Ridge National Laboratory (ORNL) Patents and Applications
  • Oak Ridge National Laboratory (ORNL) Publications
  • Argonne National Laboratory
  • DOE/EPRI 2013 Electricity Storage Handbook in Collaboration with NRECA
  • Test Facilities
  • Power Electronics
  • Electrical Energy Storage Demonstration Projects (EESDP) Journal
  • Other Projects
  • Integration Studies
  • Policy and Markets
  • Environmental Studies
  • Flow Batteries
  • Compressed Air Energy Storage (CAES)
  • Partnerships and Collaborations

Sandia National Laboratories’ Atri Bera Awarded Outstanding Young Engineer

Dr. Atri Bera was recently honored with the Outstanding Young Engineer Award by the IEEE Albuquerque Section, recognizing his significant contributions in developing “software tools to assess the reliability and stability risks associated with high penetrations of renewable generation.” His research and tool development work has been pivotal in addressing critical challenges as the power grid transitions to incorporate a higher proportion of variable renewable energy sources.

Dr. Bera’s work as a Senior R&D Engineer at Sandia National Laboratories has notably advanced the understanding of potential reliability and stability risks posed by renewable energy integration and demonstrated how energy storage solutions can be strategically utilized to mitigate these issues. Furthermore, his research into energy storage valuation has been instrumental in reducing barriers to its broad adoption, making it easier for industry stakeholders to assess the financial benefits.

Additionally, Dr. Bera has been at the forefront of developing innovative software tools that enhance energy storage valuation and improve grid planning, thereby supporting a more resilient and efficient energy infrastructure. This award highlights Dr. Bera’s impactful work and his commitment to advancing renewable energy integration and enhancing grid reliability and stability using energy storage.

Dr. Bera earned his bachelor’s from National Institute of Technology Durgapur in India and his Ph.D. from Michigan State University, both in electrical engineering. He has authored numerous journal articles, book chapters, and reports focused on improving grid performance amidst the large-scale integration of renewable energy through the utilization of energy storage systems. He is actively engaged in a range of IEEE activities, including participation in working groups and task forces, serving in editorial roles, and organizing panels and sessions to share ongoing research in his field.

software engineering research

Software Engineering Research, Management and Applications

  • © 2022
  • Roger Lee 0

ACIS Headquarters, Mount Pleasant, USA

You can also search for this editor in PubMed   Google Scholar

  • Presents recent research in Software Engineering, Management, and Applications
  • Is edited outcome of the 20th IEEE/ACIS SERA 2021 conference held May 25-27, 2022, Las Vegas, USA
  • Written by experts in the field

Part of the book series: Studies in Computational Intelligence (SCI, volume 1053)

Included in the following conference series:

  • SERA: International Conference on Software Engineering Research and Applications

Conference proceedings info: SERA 2022.

2987 Accesses

5 Citations

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

Access this book

  • Available as EPUB and 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
  • Durable hardcover edition

Tax calculation will be finalised at checkout

Other ways to access

Licence this eBook for your library

Institutional subscriptions

About this book

This edited book presents scientific results of the 20th IEEE/ACIS International Conference on Software Engineering Research, Management, and Applications (SERA2022) held on May 25, 2022, in Las Vegas, USA. The aim of this conference was to bring together researchers and scientists, businessmen and entrepreneurs, teachers, engineers, computer users and students to discuss the numerous fields of computer science and to share their experiences and exchange new ideas and information in a meaningful way. Research results about all aspects (theory, applications and tools) of computer and information science and to discuss the practical challenges encountered along the way and the solutions adopted to solve them.

The conference organizers selected the best papers from those papers accepted for presentation at the conference.  The papers were chosen based on review scores submitted by members of the program committee and underwent further rigorous rounds of review.From this second round of review, 12 of the conference’s most promising papers are then published in this Springer (SCI) book and not the conference proceedings. We impatiently await the important contributions that we know these authors will bring to the field of computer and information science.

Similar content being viewed by others

software engineering research

Practical relevance of software engineering research: synthesizing the community’s voice

software engineering research

The Design Science Paradigm as a Frame for Empirical Software Engineering

software engineering research

How software engineering research aligns with design science: a review

  • Computational Intelligence
  • Software Engineering
  • Software Management

Table of contents (12 chapters)

Front matter, examining the factors that influence customers’ intention to use smartwatches in malaysia using utaut2 model.

  • Norazryana Mat Dawi, Ha Jin Hwang, Ahmad Jusoh, Haeng Kon Kim

Generating Adversarial Robust Defensive CAPTCHA (GARD-CAPTCHA) in Convolutional Neural Networks

  • Pu Tian, Weixian Liao, Turhan Kimbrough, Erik Blasch, Wei Yu

A Deep Learning Approach for Lantana Camara Weed Detection and Localization in the Natural Environment

  • Wie Kiang Hi, Santoso Wibowo

Modeling Concretizations in Software Design

  • Alexey Tazin, Shan Lu, Yanji Chen, Mieczyslaw M. Kokar, Jeff Smith

A Practical Style Guide and Templates Repository for Writing Effective Use Cases

  • Bingyang Wei, Lin Deng, Yi Wang

Label Correction of Sound Data with Label Noise Using Self Organizing Map

  • Pildong Hwang, Yanggon Kim

Evaluation Method of Enterprise Cybersecurity

  • Meng Zhang, Yue Zhou, Che Li, Shuang Li, Jianhua Wu, Chao Yan

A Multi-model Multi-task Learning System for Hurricane Genesis Prediction

  • Martin Pineda, Qianlong Wang, Weixian Liao, Michael McGuire, Wei Yu

Development of Autonomous Driving Adaptive Simulation System Using Deep Learning Process Model

  • Symphorien Karl Yoki Donzia, Haeng-Kon Kim

An OCL Implementation for Model-Driven Engineering of C++

  • R. Maschotta, N. Silatsa, T. Jungebloud, M. Hammer, A. Zimmermann

Improving Students’ Readiness Toward the Labor Market Through Customized Learning

  • Majed Almotairi, Hamdan Ziyad Alabsi, Yahya Alqahtani, Mohammed Abdulkareem Alyami, Majed M. Aljazaeri, Yeong-Tae Song

Assessing Software Fault Risk with Machine Learning

  • Naveen Ashish, Greg Barish, Steven Minton

Back Matter

Editors and affiliations, bibliographic information.

Book Title : Software Engineering Research, Management and Applications

Editors : Roger Lee

Series Title : Studies in Computational Intelligence

DOI : https://doi.org/10.1007/978-3-031-09145-2

Publisher : Springer Cham

eBook Packages : Intelligent Technologies and Robotics , Intelligent Technologies and Robotics (R0)

Copyright Information : The Editor(s) (if applicable) and The Author(s), under exclusive license to Springer Nature Switzerland AG 2022

Hardcover ISBN : 978-3-031-09144-5 Published: 22 September 2022

Softcover ISBN : 978-3-031-09147-6 Published: 22 September 2023

eBook ISBN : 978-3-031-09145-2 Published: 21 September 2022

Series ISSN : 1860-949X

Series E-ISSN : 1860-9503

Edition Number : 1

Number of Pages : XIII, 204

Number of Illustrations : 20 b/w illustrations, 54 illustrations in colour

Topics : Computational Intelligence , Software Engineering/Programming and Operating Systems , Artificial Intelligence

  • Publish with us

Policies and ethics

  • Find a journal
  • Track your research

Civil | Construction | Nuclear

software engineering research

Building Upon Our Excellent Engineering Education

New construction engineering bachelor’s degree prepares students for a career in high-demand.

Since 2022, our bachelor’s degree in Construction Engineering has been the only ABET-accredited program in Utah . Designed meet industry trends, our program encompasses environmental sustainability and software adoption to prepare the next generation of construction engineers, who currently in very high demand on today’s job market.

While most colleges include Construction Engineering under the Civil and Environmental umbrella, our autonomous Construction BS puts a more focused effort in training these essential engineers in the rapidly growing and increasingly technologically complex field.

Construction Engineering at the University of Utah prepares students to enter this exciting field. Students take courses in both civil engineering fundamentals—such as construction technology, scheduling, estimating, structural principles, site analysis, computer-assisted design, green building, and materials—and instruction in construction engineering courses, such as those related to contracting, project management, project scheduling, cost estimating, and laws and regulations.

Some courses provided include:

software engineering research

Green Building (Façade I)

One of the most important upcoming challenges for construction is the design and construction of sustainable buildings.

Cost Estimating and Proposal Writing

Concentrates on pricing the different elements of a structure based on the use of resources.

Principals of Construction Engineering

Learn about the preconstruction and execution of various construction projects.

software engineering research

Horizontal and Vertical Construction

Provides students with a comprehensive understanding of the principles, methods, and practices involved in planning and constructing buildings, bridges, roads, etc.

As we continue to commit resources into this unique degree, we look forward to equipping graduates with the knowledge, skills, and practical experience needed to enter the workforce as competent and innovative construction engineers, ready to build our future.

Meet the professor:

software engineering research

Dr. Christian Brockmann

Dr. Brockmann joined the U in 2022 in part to spearhead the Construction Engineering degree, and there couldn’t have been a better fit. With an extensive background in both academia and industry, Dr. Brockmann has left an indelible mark on the field of Construction Engineering and will, in the years to come, be an integral part of the program’s success.

More news from our department:

software engineering research

PhD Student Proposes Vision for the Future of Engineering in Utah

Mina Golazad, Construction Engineering PhD student, has been awarded second place in the ASCE Utah Younger Member Forum Scholarship program for her vision of engineering in the future state. Mina’s response to the prompt, “Be Future Ready,” garnered recognition from the ASCE Utah Younger Member Forum. This year’s prompt challenged participants to envision the challenges […]

software engineering research

$1M DOE Grant for Advanced Nuclear Energy Research

Dr. Peter Zhu’s team Plays Key Role in Securing $1M DOE Grant for Advanced Nuclear Energy Research We are thrilled to announce that Dr. Peter Zhu, Assistant Professor of Civil and Environmental Engineering, and his lab have been collaborating with a team at the University of Illinois on a proposal that has just been awarded […]

software engineering research

Research at the U is Building Better Utah Infrastructure

Dr. Pedro Romero Honored with Friend of Industry Award at the 2024 Utah Asphalt Conference The Utah Asphalt Paving Association—the driving force behind our road infrastructure—recently hosted the 2024 Utah Asphalt Conference from February 27 to 28. Recognized as the premier asphalt-related event in the state, the conference brought together the industry’s best minds, including […]

software engineering research

Dr. Cathy Liu Earns Prestigious Educator Award

CvEEN Professor Earns 2023 Outstanding Educator Award The Institute of Transportation Engineers (ITE) is a global organization dedicated to improving transportation systems and creating smarter, more livable communities. Within this vast network, the Mountain District ITE represents the U.S.’s mountain states and recognizes outstanding educators in the field. Dr. Cathy Liu has been honored with […]

Related Posts

PCoE recently underwent the Accreditation Board for Engineering and Technology’s 18-month accreditation process. With the…

Engineering Students Spend a Day with Dunn Associates, Inc. Hands-on experience is key to shaping…

The upcoming University of Utah’s annual Engineering Day is designed to leave local high school…

IMAGES

  1. What is software engineering?

    software engineering research

  2. Research Software Engineering at Harvard University

    software engineering research

  3. Software Engineering Research for Machine Learning

    software engineering research

  4. General knowledge questions on Software Engineering

    software engineering research

  5. Why Study Software Engineering

    software engineering research

  6. Principles of Software Engineering

    software engineering research

VIDEO

  1. Navigating Our AI-augmented Future (P1): Assuring the Future of Software and AI Engineering

  2. Ethics in Software Engineering: An Unspoken Rule

  3. WT23/24 Business Process Engineering Lecture 04 BMI

  4. ST23 Software Engineering Lab Lecture 02 Software Development and Git

  5. WT23/24 Programming and Modelling Exercise 11 REST Demo

  6. WT23/24 Programming and Modelling Exercise 06 Fulib & SceneBuilder

COMMENTS

  1. Software Engineering

    Learn how Google develops and launches new products and features at a fast pace with world-class engineers and tools. Explore publications, teams and opportunities in software engineering research areas.

  2. Research software engineering

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

  3. Home

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

  4. Research in Software Engineering (RiSE)

    Research in Software Engineering (RiSE) Our mission is to make everyone a programmer and maximize the productivity of every programmer. This will democratize computing to empower every person and every organization to achieve more. We achieve our vision through open-ended fundamental research in programming languages, software engineering, and ...

  5. PDF A National Agenda for Software Engineering Research & Development

    4 Envisioning the Future of Software Engineering 19 4.1e Scenarios Futur 19 4.2 Vision for the Future of Software Engineering 23 5 Research Focus Areas 25 5.1 anced Development Paradigms Adv 25 5.2 anced Architectural Paradigms Adv 26 5.3 Research Roadmap 26 5.4 AI-Augmented Software Development Research Focus Area 27

  6. Journal of Software: Evolution and Process

    Journal of Software: Evolution and Process is a computer science and software engineering journal that enables the software community to communicate new ideas for developing, managing and improving software, systems and services. We publish original research, empirical studies, surveys and more covering topics including software testing, continuous improvement of software processes and ...

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

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

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

    Research software engineering is poised to revolutionize how the scientific community can democratize not just the data, but also the technical infrastructure and mechanism for interacting with it ...

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

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

  10. Home

    Empirical Software Engineering serves as a vital forum for applied software engineering research with a strong empirical focus. A platform for empirical results relevant to both researchers and practitioners. Features industrial experience reports detailing the application of software technologies. Addresses the gap between research and practice.

  11. Guidelines for Conducting Software Engineering Research

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

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

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

  14. The who, what, how of software engineering research: a socio-technical

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

  15. software engineering Latest Research Papers

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

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

  17. Research Software Engineering

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

  18. Top 10 Software Engineer Research Topics for 2024

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

  19. Is There a Future for Software Engineers? The Impact of AI [2024]

    In fact, nearly 30 percent of the 550 software developers surveyed by Evans Data Corporation, a California-based market research firm that specializes in software development, believe that their development efforts will be replaced by artificial intelligence in the foreseeable future. According to Janel Garvin, CEO of Evans Data, the fear of ...

  20. IET Software

    IET Software. JOURNAL METRICS >. 1751-8814. IET Software is a Gold Open Access journal that publishes original research on all aspects of the software lifecycle, including design, development, implementation and maintenance.

  21. Research Software Engineer Jobs, Employment

    Software Engineer / Research Scientist. Parsons. Aberdeen, MD. $96,400 - $168,700 a year. Full-time. S in computer sciences and 2-5 years of professional experience in software development. Experience in working with and administering Linux systems, and using…. Posted 30+ days ago ·.

  22. Requirements Engineering for Research Software: A Vision

    Modern science is relying on software more than ever. The behavior and outcomes of this software shape the scientific and public discourse on important topics like climate change, economic growth, or the spread of infections. Most researchers creating software for scientific purposes are not trained in Software Engineering. As a consequence, research software is often developed ad hoc without ...

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

  24. Interpretable Software Maintenance and Support Effort Prediction Using

    Indirectly predicting the maintenance effort of open-source software: Research Articles. ... Proceedings of the 2024 IEEE/ACM 46th International Conference on Software Engineering: Companion Proceedings. April 2024. 531 pages. ISBN: 9798400705021. DOI: 10.1145/3639478. Co-chairs: Ana Paiva, Rui Abreu, Program Co-chairs:

  25. Software Engineer in Madrid, Spain

    Apply for Software Engineer job with Thermo Fisher Scientific in Madrid, Spain. Research & Development jobs at Thermo Fisher Scientific.

  26. Sandia National Laboratories' Atri Bera Awarded Outstanding Young Engineer

    Dr. Atri Bera was recently honored with the Outstanding Young Engineer Award by the IEEE Albuquerque Section, recognizing his significant contributions in developing "software tools to assess the reliability and stability risks associated with high penetrations of renewable generation." His research and tool development work has been pivotal in addressing critical challenges as the power […]

  27. Software Engineering Research, Management and Applications

    About this book. This edited book presents scientific results of the 20th IEEE/ACIS International Conference on Software Engineering Research, Management, and Applications (SERA2022) held on May 25, 2022, in Las Vegas, USA. The aim of this conference was to bring together researchers and scientists, businessmen and entrepreneurs, teachers ...

  28. Building Upon Our Excellent Engineering Education

    New Construction Engineering bachelor's degree prepares students for a career in high-demand Since 2022, our bachelor's degree in Construction Engineering has been the only ABET-accredited program in Utah. Designed meet industry trends, our program encompasses environmental sustainability and software adoption to prepare the next generation of construction engineers, who currently in very ...