PREFACE

karmany eva dhikaras te; ma phalesu kadachana; ma karmaphalahetur bhur; ma te sango stv akarmani.

Your right is to work only; but never to the fruits thereof; may you not be motivated by the fruits of actions; nor let your attachment to be towards inaction.

—Bhagavad Gita

We have been witnessing stellar growth of the global software industry for three decades. As this century progresses the industry is engaged in fixing defects and enhancing and adding new features to the existing software applications. In fact, more resources are spent on software maintenance than on actual software development. The imbalance between software development and maintenance is opening up new business opportunities for software off-shoring companies. It is also generating much research interest to develop methods and tools for improving software evolution and maintenance (SEAM).

Twenty-five years ago, the software industry was a much smaller one, and the academia used to offer a single, comprehensive course entitled Software Engineering to educate undergraduate students in the nuts and bolts of software development and maintenance. Although software maintenance has been a part of the classical software engineering literature for decades, the subject has not been widely incorporated into the mainstream undergraduate curriculum. A few universities have started offering an option in software engineering comprising four specialized courses, namely, Requirements Specification, Software Design, Software Testing and Quality Assurance, and Software Evolution and Maintenance. In addition, some universities have introduced full undergraduate and graduate degree programs in software engineering.

Our survey of the subject of software evolution and maintenance reveals that a large body of work exists in disparate form, including research papers, technical reports, and reports of working groups. Moreover, there are many excellent books focusing on specific aspects of a course in software maintenance and evolution. However, there is no single book that presents the materials in a comprehensive manner. Absence of a comprehensive textbook explaining most of the aspects of software evolution and maintenance creates several problems for instructors and students alike. For example, an instructor needs to refer to many sources to prepare lecture materials. Consequently, it takes much time on the part of the instructor, and students do not have access to all those sources. Our goal is to introduce the students and the instructors to a set of well-rounded educational materials covering the fundamental developments in software evolution and common maintenance practices in the industry. We intend to provide students a single, comprehensive textbook covering most of the topics in evolution and maintenance with much detail so that it is very easy to get a handle on SEAM without reading a number of books and articles in this subject. We have not tried to specifically address their research challenges. Instead, we have presented the evolution theory and practice as a broad stepping stone which will enable the students and practitioners to understand and develop maintenance practices for complex software system.

We decided to write this book based on our teaching, research, and industrial experiences in software maintenance. For the past 20 years, Sagar has been teaching software engineering, including software testing and maintenance on a regular basis; Piyu managed software quality assurance teams in industry for the maintenance of routers, switches, wireless data networks, storage networks, and intrusion prevention appliances. Our combined experience has helped us in selecting and structuring the contents of this book to make it suitable as a text.

WHO SHOULD READ THIS BOOK?

We have written this book to introduce students, researchers, and software professionals to the fundamental developments in evolution models and common maintenance practices for software. Undergraduate students in software engineering, computer science, and computer engineering will be introduced to the subject matter in a step-by-step manner. Practitioners too will benefit from the structured presentation and comprehensive nature of the materials. Graduate students can use it as a reference. After reading the whole book, the reader will have gained a thorough understanding of the following topics:

  • Laws of software evolution and the means to control them
  • Evolution and maintenance models, including maintenance of commercial off-the-shelf systems
  • Reengineering techniques and processes for migration of legacy information systems
  • Impact analysis and change propagation techniques
  • Program comprehension and refactoring
  • Reuse and domain engineering models

Each chapter gives a clear understanding of a particular topic in software evolution by discussing the main ideas with examples. It starts by explaining the basic concepts about the topic, thereby ensuring a common base of understanding; next, it expands the presentation by drilling the important aspects deeper.

HOW SHOULD THIS BOOK BE READ?

This book consists of several independent topics in SEAM glued together. Chapters 1, 2, and 3 provide basic understanding of the subject matters. Therefore, the first three chapters must be read in order. Next, depending upon the interest of the reader, one can choose any chapter to study without any difficulty. However, we recommend the reader to study Chapters 4 and 5 together in that order. This is because Chapter 4 (“Reengineering”) introduces basic concepts of reengineering, reverse engineering, and data reverse engineering, whereas Chapter 5 (“Legacy Information Systems”) discusses the migration of a system after it is reengineered. Therefore, in our opinion, the ordering will facilitate easier understanding of the materials, especially for those who are new to software evolution.

Notes for instructors

The book can be used as a text in an introductory course in SEAM. It is desirable to cover all the chapters in an introductory course in SEAM. When used as a recommended text in a software engineering course, the following selected portions can help students imbibe the essential concepts in software evolution and maintenance:

  • Chapter 1: All the sections
  • Chapter 2: Sections 2.1 and 2.3
  • Chapter 3: Sections 3.1, 3.2, 3.3, 3.4, 3.5 and 3.8
  • Chapter 4: Sections 4.1 and 4.2
  • Chapter 5: Sections 5.1 and 5.2
  • Chapter 6: All the sections
  • Chapter 7: Sections 7.1 and 7.2
  • Chapter 8: Sections 8.1 and 8.2
  • Chapter 9: Section 9.1

Supplementary materials for instructors are available at: http://ece.uwaterloo.ca/∼snaik/mybook2.html

ACKNOWLEDGMENTS

While preparing this book, we received invaluable support of different kinds from many people, including researchers, the publisher, our family members, our friends, and our colleagues. First, we thank all the researchers who have been shaping this field ever since programs were started to be written. Without their published work, this book would not have seen the light of the day. Second, we thank our editors, namely, George Telecki, Michael Christian, and Whitney A. Lesch, who gave us much professional guidance and patiently answered our various questions. The first author, Piyu Tripathy, would like to thank his former colleagues at Cisco Systems, Airvana Inc., NEC Laboratories America Inc., and present colleagues at Knowledge Trust.

Finally, the supports of our parents, parents-in-law, and spouses deserve a special mention. I, Piyu Tripathy, thank my dear wife Leena, who has taken many household and family duties off my hands to give me time that I needed to write this book; I would like to thank my newly arrived daughter Inu for asking me inquisitive questions about this book, which helped me in writing this preface.

I, Sagar Naik, thank my loving wife Alaka for her invaluable support. I also thank my charming daughters, Monisha and Sameeksha, and exciting son, Siddharth, for their understanding while I was writing this book. Finally, I heartily acknowledge all the support that my elder brother Gajapati extended to me. We are very pleased that now we have more time for our families.

PRIYADARSHI (PIYU) TRIPATHY

Knowledge Trust
Bhubaneswar, India

KSHIRASAGAR (SAGAR) NAIK

University of Waterloo
Waterloo, Canada

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset