Despite the software engineering discipline’s prolific advancements in software product development, the field is yet to attain the desired maturity when it comes to the documentation of processes, methods, and models. The use of scientific research methods in measuring and documenting software processes, products, and services being developed is gradually gaining the attention of researchers, academia, and practitioners. However, there are challenges to contributing effectively in this area, because of the shorter life cycles of software process models, diverging software engineering methods adopted in managing software development, dynamic business and organizational requirements, and the ever-increasing aspirations of users. These challenges are multidisciplinary; thus, software engineering research needs a holistic approach to documenting experiences in order to support researchers, academia, and practitioners in the effective development of user-centered software products and services.
This book deals with issues related to the application of research methods in software engineering and validating the delivery of software engineering process models. It provides a comprehensive approach to validating various metrics and measurements that can be used to understand software behavior during the development life cycle. The author helps the reader appreciate the rationale behind the use of scientific research methods in software engineering. The strength of the book lies in the appreciation of empirical software engineering methods. A few of the book’s strengths are: its explanation of the research methods through modeling processes in unified modeling language (UML), the validation of models through hypotheses, the use of quantitative methods available through SPSS software, and the presentation of the examples through an incremental approach. Some of the noteworthy examples include an analysis of procedures to estimate effect sizes using statistical significance methods; acceptance tests using descriptive statistics, and nonparametric and parametric analysis; acceptance of test procedures using assumption testing, descriptive analysis, and hypothesis testing; measuring the effect on internal quality indicators through experiment submissions using descriptive statistics; and determining the effects on unit tests and meta-analysis through models.
The organization of the book provides the reader with an opportunity to validate the delivery of various programming methods used in software engineering processes. Drawing strengths from the enriched concepts of metrics-based measurements and evaluations professed and practiced by Victor Basili and his group through goal-question-metrics (GQM) methods and international function point user groups (IFPUG), extreme programming, and agile methods, the book showcases the validating principles through descriptive and parametric methods normally used for quantification.
The book provides a foundation for applying research methods to the software engineering discipline. However, including some chapters to cover approaches for the sampling plan and fitness exercises for the appropriateness of test-first, test-last, and other model-driven methods could have enriched the content. The examples explained through SPSS provide an environment that enables the reader to apply the software to research methods, but the book lacks clarity in explaining the justification of using a particular method from the SPSS library.
I recommend the book to research scholars who plan to conduct multidisciplinary research in software engineering. It will supplement books on empirical software engineering, providing a holistic view of the principles of validation through research methods. It will also be helpful to students who have an interest in research methods, and organizations engaged in software development, software audits, or consulting services in this sector.