Microelectronics
presented. Network implementation is presented in Chapter 8. It includes the layer model, important data structures, network devices and protocols, such as APR, IP, UDP and TCP. In Chapter 9, the module’s implementation and debugging are presented. The system description is based on LINUX kemel version 1.2. Also, the book contains four appendices: system calls, kernel-related commands, the Proc file system and the boot process. The appendices provide information on some specialized topics that are not often used by system programmers, but are very good to know. Nearly all of system calls and library routines provided by LINUX operating system are discussed, and numerous examples have been provided. This book is interrded for LINUX system programmers and system administrators. It is suitable for graduate clourses in operating systems and networks. It is very important that the book allows the novice to get a foothold in LINUX system programming. Finely, the book wil1 be of considerable help for those working in UNIX system programming. A modest background is required to understand the material in this book, but it is expected that readers are fluent in C programming. 1 can strongly recommend reading this book. Pro& Dr. Slobodanka DjordjeviC-Kajan
Fundamentals of Database Systems Ramez Elmasri ad Shamkarnt B. Navathe, Addison-Wesley, UK, 1994, 873pp., ISBN: 0-80.531748-1, L48.95 Database and database technology are having a major impact on the growing use of computers and wil1 play a critical role in almost all areas where computers are used, including business, engineering, medicine, law, education and library science. Themfore, todays database is a fündamental technology in the computer world.
Journal, Vol. 28, No. 5
There are many books about databases and database technology, but only some of them cover al1 the most important aspects of databases. This book is one such case and therefore it is of interest to readers who work with databases. The unique value of the book lies in consistent integration of forma1 and informal methods. The book is divided into six parts containing 25 chapters. Part 1 (chapters 1-5) introduces basic concepts of database systems and data modeling, including conceptual modeling using the ER model. Part 11 (chapters 6-9) is dedicated to relational data models, including relational algecalculus, bra, relational languages (SQL2, QUEL, QBE), relational schema design (starting from ER model) and relational database management systems. Part 111(chapters 10, 11) is focused on conventional data models and systems, including network and hierarchical data models. This part contains an overview of concepts and describes how to convert the ER model into network and hierarchical schema. Part IV (chapters 12-14) shows the database design process. Part V (chapters 15-20) presents the system implementation techniques including the structure of DBMS catalog, the techniques used by DBMS in query processing, query optimization, transaction processing, concurrency control, recovery, and database security and authorization. Part VI (chapters 21-25) is dedicated to advanced data models and emergency trends in databases. This part includes the EER model, 00 databases, distributed databases, client-server architecture and deductive databases. The emergency database technologies include active, temporal, spatial, scientific and multimedia databases, and the emergency database applications include engineering design and manufacturing, office and decision support systems and biological applications. Also, the book contains three appendices. Appendix A shows a number of different diagrammatic notations for representing ER and EER model concepts. Appendix B presents the most important disk parameters. Appendix C briefly
603
Book Reviews
compares ER, relational, network, hierarchical and object-oriented models described in this book and the database systems based on those models. The book is intended primarily for computer science students who are interested in designing, using and implementing database and database systems. The book can also be used as a reference and self-study guide for experienced scientists who wish to strengthen their understanding of database systems and data mode&. The text is suitable for courses “Introduction in Database Systems” (chapters 1-12) and “Database Design and Implementation Techniques” (remaining chapters). Most of the concepts in the text are illustrated by several examples. The examples constitute a continuous case study of one application, for which databases are designed in different models. Each chapter includes an extensive set of exercises, both to test the basic concepts of the chapter and in many cases to extend these materials. Several supplements are available for the book. These include an instructor’s guide with solutions to the majority of the exercises in the book, as wel1 as a discussion of possible approaches to reading the material in each chapter. The figures from every chapter are available by anonymous& from the site bc.aw.com under the directory bc/elmasri. Finally, 1 can strongly recommend having this for your personal use and reading this book. PYoJ: Dv. Slobodanka Djordjevi~-Kajan
Software Engineering lan Sommewille, Addison- Wesley, 742pp., ISBN: 0-201-42765-6
UK,
1996,
1 have used this book in undergraduate and graduate courses since 1986 when the second edition was published. After ten years of using it, 1 can say that the book is the Bible for all who are interested in Software Engineering. As one of
604
the students of mine says: “In this book, 1 can find answers or references to answers for al1 my dilemmas in. software engineering”. The new edition of this book covers the entire software production process. It both includes al1 activities to make software development and maintenance less labor intensive and enables the development of higher quality software products. The book provides a set of methods and tools for software engineering that integrate succes&1 informal approaches with,available theoretical results. The basic objectives of this book are to “provide software engineers with an awareness of broader system engineering concepts” (p. 33). In that way, readers wil1 be able to produce “highquahty software with finite amount of resources and to a predicted schedule” (p. 6). Starting with definitions of software products and software processes, and with some of their high-leve1 quality characteristics, the author carefully leads readers through the entire software process. The book presents the conventional or waterfall life cycle model and some alternative models, such as prototyping, evolutionary development and Boehm’s spiral model. It is a good starting point in understanding the terminology used in software engineering. The models presented here are aimed at the production of a systematic and predictable process. In the next chapters, the author introduces readers to: computer based engineering, project management, requirements engineering, software design (architectural, object-oriented, fùnction-oriented, real-time and user interface), development of dependable systems (“systems which have critical non-functional requirements for reliability, safety or security”, p. 347), verifìcation and validation, computer-aided software engineering (CASE), managing people, software tost estimation, quality management, process improvement, software maintenance, configuration management and software reengineering. To summarize, the book provides a wide range of software engineering models, methods, tech-