Software development can sometimes be a complicated process [1]. The philosophy of establishing standards and processes for software development is based on reducing the complexity involved in developing software systems [2]. Acquiring dexterity in developing software systems involves not only appropriate programming skills, but also the use of procedures in analyzing the needs that the software is required to fulfill. The author makes an attempt to address all of the required methods and techniques in developing software systems.
The book starts with the essential topics of the software development life cycle, and proceeds to the description of good design principles. The essential details of these topics, such as real examples, case studies, and so on, are not provided. For example, the author describes the waterfall model, but does not provide clear explanations of its advantages and disadvantages. Every software life cycle model could be best suited for certain types of software development projects; I think the reader needs to learn about these situations.
The author outlines the required design principles required to build a software product. Like many others, this book provides some explanations of both structured design and object-oriented design. Here again, the author should have provided more detailed explanations.
The book concludes with information on the implementation of a software product. While describing implementation techniques, the author outlines design patterns, code construction, software testing, and debugging. This part of the book is slightly better than the others since the author provides good examples.
Overall, this book lists some of the key techniques and methods used in software development. This makes it suitable for a beginner in software engineering. The intended readers are undergraduate students enrolled in an introductory course in software engineering, but other books [1,2] may be better choices.