Generally speaking, software engineering researchers seek better ways to develop and evaluate software. Development includes all the synthetic activities that involve creating and modifying the software, including the code, design documents, documentation, etc. Evaluation includes all the analytic activities associated with predicting, determining, and estimating properties of the software systems, including both functionality and extra-functional properties such as performance or reliability.
Software engineering research answers questions about methods of development or analysis, about details of designing or evaluating a particular instance, about generalizations over whole classes of systems or techniques, or about exploratory issues concerning existence or feasibility. The table below lists the types of research questions that are asked by software engineering research papers and provides specific question templates.
|Type of question||Examples|
|Method or means of development||How can we do/create/modify/evolve (or automate doing) X?
What is a better way to do/create/modify/evolve X?
|Method for analysis or evaluation||How can I evaluate the quality/correctness of X?
How do I choose between X and Y?
|Design, evaluation, or analysis of a particular instance||How good is Y? What is property X of artifact/method Y?
What is a (better) design, implementation, maintenance, or adaptation for application X?
How does X compare to Y?
What is the current state of X / practice of Y?
|Generalization or characterization||Given X, what will Y (necessarily) be?
What, exactly, do we mean by X? What are its important characteristics?
What is a good formal/empirical model for X?
What are the varieties of X, how are they related?
|Feasibility study or exploration||Does X even exist, and if so what is it like?
Is it possible to accomplish X at all?
Acting on behalf of prospective readers, the program committee looks for a clear statement of the specific problem you solved—the question about software development you answered—and an explanation of how the answer will help solve an important software engineering problem. You’ll devote most of your paper to describing your result, but you should begin by explaining what question you’re answering and why the answer matters.
If the program committee has trouble figuring out whether you developed a new evaluation technique and demonstrated it on an example, or applied a technique you reported last year to a new real-world example, or evaluated the use of a well-established evaluation technique, you have not been clear.