Welcome to software engineering research field!
You possibly have been developing software for years and have just realized that you love it but you want to do something more than just finishing trivial tasks using conventional methods and tools.
Now you want to improve the way you do your challenging tasks so that you can complete them with less time and cost. You want to create innovative methods and tools to help other people systematically develop higher quality software faster. If this is true then software engineering research is waiting for you.
- this Roger S. Pressman and Bruce R. Maxim (2014). Software Engineering – A Practitioner’s Approach. 8th Edition. McGraw-Hill book or
- this Ian Sommerville (2016). Software Engineering. 10th Edition. Pearson book or
- this Vaclav Rajlich (2012). Software Engineering: The Current Practice. Chapman and Hall/CRC book first.
An important note is that these books provide you a general view, a big picture of software engineering. These books do NOT provide you every detail about all the mentioned topics. Instead they provide a great summary about the key problems in software engineering and most of the popular solutions to those problems.
In other words, these books provide a background for you so that you could begin to do software engineering research.
After reading these books you can also review all the topics on this website for detailed information of each topic these books talk about.
After that please read this William M.K. Trochim (2006). Research Methods Knowledge Base book to get familiar with research terminologies, types and methods.
In order to begin to do a software engineering research you will need to get the idea of what may be investigated, how to conduct the investigation, what will be produced and how to ensure that what you have found is correct and useful.
It means that you should clarify
- what is your research subject (Is it a laboratory experiment or a real world project?) and what is your unit of analysis (Is it a requirement process or a design process or a testing process or a group of people or a software project?),
- what is your research result (is it a model or a method or a technique or a tool or a notation or an answer or an judgment?)
- what you will do to your research subject and how you can obtain your research result (How do you collect and analyze the data? How do you formalize or model or present the problem? How do you formalize or model or present your solution?),
- which method is used to validated your research result (is it a mathematical proof or a controlled experiment or a case study?)
Please read the following papers to get knowledge about research subjects, research results, data collection and analysis, and research validation.
- Robert L. Glass et al. (2004). An Analysis of Research in Computing Disciplines
- Salvatore T. March and Gerald F. Smith (1995). Design and Natural Science Research on Information Technology
- Alan R. Hevner et al. (2004). Design Science in Information Systems Research
- Shirley Gregor (2006). The Nature Of Theory In Information Systems
- Shirley Gregor and David Jones (2007). The Anatomy of a Design Theory
- Ken Peffers et al. (2007). A Design Science Research Methodology for Information Systems Research
- Maung K. Sein et al. (2011). Action Design Research
- Juhani Iivari (2015). Distinguishing and Contrasting Two Strategies for Design Science Research
- Shirley Gregor and Alan R. Hevner (2013). Positioning and Presenting Design Science Research for Maximum Impact
- Vijay K. Vaishnavi and William Kuechler, Jr. (2015). Design Science Research Methods and Patterns
- Daniel M. Berry (1992). Academic Legitimacy of the Software Engineering Discipline.
- Robert L. Glass et al. (2002). Research in Software Engineering: An Analysis of the Literature
- Alfonso Fuggetta and Elisabetta Di Nitto (2014). Software Processes
- (2002). What Makes Good Research in Software Engineering?
- (2003). Writing Good Software Engineering Research Papers: Minitutorial
- Barbara Kitchenham (1995). Case Studies for Method and Tool Evaluation
- Marvin V. Zelkowitz and Dolores Wallace (1997). Experimental Validation in Software Engineering
- Barbara Kitchenham et al. (2002). Preliminary Guidelines for Empirical Research in Software Engineering
- Bent Flyvbjerg (2006). Five Misunderstandings About Case-Study Research
- Dag I K Sjøberg et al. (2007). The Future of Empirical Methods in Software Engineering Research
- Barbara Kitchenham and Stuart Charters (2007). Guidelines for Performing Systematic Literature Reviews in Software Engineering
- Steve Easterbrook et al. (2008). Selecting Empirical Methods for Software Engineering Research
- Dag I. K. Sjøberg et al. (2008). Building Theories in Software Engineering
- Claes Wohlin et al. (2012). Experimentation in Software Engineering
- Per Runeson (2012). Case Study Research in Software Engineering: Guidelines and Examples
- Identify an appropriate problem. This is the most difficult task.
- Identify research questions.
- Build your background knowledge related to the problem and research questions.
- Check the literature for existing solutions.
- Conduct the study (propose your solution to answer the research question or solve the problem).
- Document your solution.
- Soberly and critically evaluate the effectiveness (i.e. the cost, the time, etc.) of your solution by comparing it with the existing solutions using benchmark inputs or prove the correctness of your solution using mathematical modeling and logical reasoning.
If you cannot identify a problem for your research then you can visit some of below sites to look for your concrete interested research topics. Then select papers that you are most interested in and read them. Hopefully, you can identify some keywords that you are interested in (for example software architecture, microservice architecture or multi-tenancy architecture) based on analyzing these papers.
- Microsoft Research https://www.microsoft.com/en-us/research/research-area/programming-languages-software-engineering/publications/
- Google Research https://ai.google/research/pubs/
- Facebook Research https://research.fb.com/publications/
- Frederick P. Brooks, Jr. http://www.cs.unc.edu/~brooks/
- Barry Boehm http://sunset.usc.edu/Research_Group/barry.html
- Martin Fowler http://martinfowler.com/aboutMe.html
- Steve McConnell http://www.stevemcconnell.com/art.htm
- Eduardo B. Fernandez: http://faculty.eng.fau.edu/fernande/
- John Murphy’s: http://www.csi.ucd.ie/Staff/jmurphy/default.htm
- Robert M. Keller: http://www.cs.hmc.edu/~keller/additional_info.html
- Amnon H. Eden http://www.eden-study.org/publications.html
- Mary Shaw http://spoke.compose.cs.cmu.edu/shaweb/p/pubs.htm
- Bjarne Stroustrup http://www.stroustrup.com/papers.html
- Tony Hoare http://www.cs.ox.ac.uk/people/publications/date/Tony.Hoare.html
- Tao Xie http://web.engr.illinois.edu/~taoxie/publications.htm
- Philippe Kruchten http://philippe.kruchten.com/
- Martin Monperrus http://www.monperrus.net/martin/publications
- Nancy A. Lynch http://groups.csail.mit.edu/tds/lynch-pubs.html
- PLoP http://www.hillside.net/plop/2016/index.php?nav=program
Then conduct a systematic mapping study by:
- Selecting primary studies related to the keywords.
- Use below websites for searching for related works:
- Rigorously defining a classification framework,
- Applying the classification framework to the primary studies,
- Synthesizing the obtained data to produce an overview of the state of the art (which problems were solved, which problems are still unsolved)
Hopefully, at this point you can spot an unsolved problem that you are interested in.
Hope that you will have found a research problem, solved it, finished documenting and evaluating your solution. Then you will need to write your paper. Your paper must
- Clearly articulate the topic of research,
- Summarize the critical issues and current approaches used in the field,
- Describe the proposed research concept, the intended methodology, the evaluation strategy, and results to date, and
- Identify the contributions of the proposed work.
You can use below links to check grammar for your paper if you are not a native English speaker:
You can use this “Office2007_BibWord” tool to manage your paper related work if you will be writing your paper using MS Word 2007 or MS Word 2010.
After that you will want to choose a conference and/or a publisher to publish your paper. Please use below links for this purpose.
- International Conference on Software Engineering (ICSE) http://icse-conferences.org/
- Automated Software Engineering http://www.ase-conferences.org/
- ACM Special Interest Group on Software Engineering (SIGSOFT) http://www.sigsoft.org/events.html
- WikiCFP http://www.wikicfp.com/cfp/
- Computer Science Conference Rankings http://www.conferenceranks.com/
- Conference Rankings http://portal.core.edu.au/conf-ranks/
- ISI Journal Search http://ip-science.thomsonreuters.com/mjl/