We are in the modern digital era. Over the last few years, the software development life cycle of digital projects has undergone rapid changes. Most of today’s organizations follow the DevOps methodology over traditional waterfall or iterative software development in their digital transformation projects.
We rarely get to see books that serve as a practical guide for the ever-changing needs of the software development community, especially those focusing on legacy modernization and digital transformation projects. This gem of a book nicely blends software development life cycle fundamentals with modern topics such as cyber security, virtual project teams, mobility, big data and analytics, and cloud computing.
In this book, the author makes a start by introducing the basic concepts and types of software projects--development, testing, and production. After this, the book is divided into three parts, and the reader is ready to take a learning journey into software requirements, development, and implementation.
The first part of the book is primarily focused on the planning phase of software development. The importance of business users in capturing the business requirements is stressed and joint application development (JAD) techniques are detailed. The next chapter debates the software “build versus buy” options and provides the different parameters that will help teams make the right decision. The rest of the chapters in Part 1 detail the request for proposal (RFP) and request for information (RFI) aspects and the process to finalize the vendor who can develop and implement the software project. Useful practical tools such as detailed response questionnaires and templates are provided along with a sample budgeting template to quantify the costing components and to arrive at the project budget numbers.
The second part discusses the technical aspects of the software project. Fundamental software engineering concepts such as data flow diagrams, data dictionary, entity relationship diagrams, and databases and modeling are described in detail. Since many organizations are focused on legacy modernization, the author has dedicated a chapter to various types of legacy systems and provided the step-by-step legacy systems migration methodology. The book takes a big turn from here on, and the rest of the chapters are crafted to be relevant for the modern software community. The author continues his discussion with chapters on digital transformation, data warehouses, big data, and analytics. A key section to highlight, in the chapter on data analytics and data warehouses, is the ten phases of the software decision support systems life cycle.
The final part of the book is on project implementation. Similar to the previous two parts, the initial chapter details the project management concepts around scope management, team dynamics, technical planning, and communication. Taking another big leap, the author has written two nice chapters on virtual teams and cyber security with respect to the software development life cycle. The remaining chapters focus on the project going live and subsequent activities such as training and administration.
The author has also provided three different case study assignments for readers to test their learning and understanding from the book.
This well-written book will serve as an apt resource for the software development community, especially those working in legacy modernization and digital transformation projects. Many relevant software development topics are discussed in detail and practical tools in the form of templates and checklists are provided.