skip to main content
Skip header Section
Software engineering (4th ed.)January 1993
Publisher:
  • Addison-Wesley Longman Publishing Co., Inc.
  • 75 Arlington Street, Suite 300 Boston, MA
  • United States
ISBN:978-0-201-56529-4
Published:02 January 1993
Pages:
649
Skip Bibliometrics Section
Bibliometrics
Abstract

No abstract available.

Cited By

  1. ACM
    Bowen J and Reeves S Developing usability studies via formal models of UIs Proceedings of the 2nd ACM SIGCHI symposium on Engineering interactive computing systems, (175-180)
  2. Unluturk M, Kurtel K and Atay C Host frame user interface and its architecture Proceedings of the 14th WSEAS international conference on Computers: part of the 14th WSEAS CSCC multiconference - Volume I, (95-102)
  3. Leite J, Yu Y, Liu L, Yu E and Mylopoulos J Quality-based software reuse Proceedings of the 17th international conference on Advanced Information Systems Engineering, (535-550)
  4. Dalli A, Xia Y and Wilks Y FASIL email summarisation system Proceedings of the 20th international conference on Computational Linguistics, (994-es)
  5. Barber K, Graser T, Holt J and Baker G (2003). Arcade, Requirements Engineering, 8:4, (222-235), Online publication date: 1-Nov-2003.
  6. ACM
    Sagheb-Tehrani M and Ghazarian A (2002). Software development process, ACM SIGSOFT Software Engineering Notes, 27:2, (58-62), Online publication date: 1-Mar-2002.
  7. Rosson M and Carroll J Scenario-based design The human-computer interaction handbook, (1032-1050)
  8. Girard J, Koschke R and Schied G (1999). A Metric-Based Approach to Detect Abstract Data Types and State Encapsulations, Automated Software Engineering, 6:4, (357-386), Online publication date: 1-Oct-1999.
  9. Sahraoui H, Lounis H, Melo W and Mili H (1999). A Concept Formation Based Approach to Object Identification in Procedural Code, Automated Software Engineering, 6:4, (387-410), Online publication date: 1-Oct-1999.
  10. Ciancarini P and Mascolo C (2018). Using formal methods for teaching software engineering, Annals of Software Engineering, 6:1-4, (433-453), Online publication date: 1-Apr-1999.
  11. ACM
    Wang Y, King G, Patel D, Court I, Staples G, Ross M and Patel S (1998). On built-in tests and reuse in object-oriented programming, ACM SIGSOFT Software Engineering Notes, 23:4, (60-64), Online publication date: 1-Jul-1998.
  12. Tockey S (1997). A Missing Link in Software Engineering, IEEE Software, 14:6, (31-36), Online publication date: 1-Nov-1997.
  13. Budgen D and Brereton P Encapsulating Empirical Practices within the Software Engineering Curriculum Proceedings of the 10th Conference on Software Engineering Education and Training
  14. ACM
    Kelley Sobel A Experience integrating a formal method into a software engineering course Proceedings of the twenty-seventh SIGCSE technical symposium on Computer science education, (271-274)
  15. ACM
    Kelley Sobel A (1996). Experience integrating a formal method into a software engineering course, ACM SIGCSE Bulletin, 28:1, (271-274), Online publication date: 1-Mar-1996.
  16. Bellotti V, Blandford A, Duke D, MacLean A, May J and Nigay L (2018). Interpersonal access control in computer-mediated communications, Human-Computer Interaction, 11:4, (357-432), Online publication date: 1-Dec-1996.
  17. Abreu F and Melo W Evaluating the Impact of Object-Oriented Design on Software Quality Proceedings of the 3rd International Symposium on Software Metrics: From Measurement to Empirical Results
  18. Ho-Stuart C and Thomas R Laboratory practice with software quality assurance Proceedings of the 1996 International Conference on Software Engineering: Education and Practice (SE:EP '96)
  19. ACM
    Poole B and Meyer T (1996). Implementing a set of guidelines for CS majors in the production of program code, ACM SIGCSE Bulletin, 28:2, (43-48), Online publication date: 1-Jun-1996.
  20. Chang E A Software Engineering Subject on System Description Techniques Proceedings of the 1996 International Conference on Software Engineering: Education and Practice (SE:EP '96)
  21. Allen R, Grant D and Smith R Using Ada as the First Programming Language Proceedings of the 1996 International Conference on Software Engineering: Education and Practice (SE:EP '96)
  22. Keen C Treatment of Metaphors in Software Engineering Education Proceedings of the 1996 International Conference on Software Engineering: Education and Practice (SE:EP '96)
  23. ACM
    Mooney J Portability and reusability Proceedings of the 1995 ACM 23rd annual conference on Computer science, (150-156)
  24. Zweben S, Edwards S, Weide B and Hollingsworth J (1995). The Effects of Layering and Encapsulation on Software Development Cost and Quality, IEEE Transactions on Software Engineering, 21:3, (200-208), Online publication date: 1-Mar-1995.
  25. ACM
    Scott T, Tichenor L, Bisland R and Cross J Team dynamics in student programming projects Proceedings of the twenty-fifth SIGCSE symposium on Computer science education, (111-115)
  26. ACM
    Scott T, Tichenor L, Bisland R and Cross J (1994). Team dynamics in student programming projects, ACM SIGCSE Bulletin, 26:1, (111-115), Online publication date: 12-Mar-1994.
  27. ACM
    Perlman G (1994). Book review: Human-Computer Interaction, by Jenny Preece, Yvonne Rogers, Helen Sharp, David Benyon, Simon Holland, and Tom Carey (Addison-Wesley, 1994), ACM SIGCHI Bulletin, 26:4, (82-85), Online publication date: 1-Oct-1994.
  28. ACM
    Bowers J and Pycock J Talking through design Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, (299-305)
  29. ACM
    Fraser M, Kumar K and Vaishnavi V (1994). Strategies for incorporating formal specifications in software development, Communications of the ACM, 37:10, (74-86), Online publication date: 1-Oct-1994.
  30. Kazman R, Bass L, Webb M and Abowd G SAAM Proceedings of the 16th international conference on Software engineering, (81-90)
  31. ACM
    McBeath D and Keezer W Simulation in support of software development Proceedings of the 25th conference on Winter simulation, (1143-1151)
Contributors
  • University of St Andrews

Recommendations

Pavol Navrat

Sommerville is an active researcher, educator, and organizer in the field of software engineering. This book consists of a preface, 31 chapters, an appendix, and indexes. It is structured in five parts. After two introductory chapters covering human factors in software engineering, the first part is devoted to software specification. It includes chapters on software requirements definition, system modeling, requirements specification, software prototyping, formal specification, algebraic specification, and model-based specification. All the notions are introduced and explained lucidly. The difference between prototyping and exploratory programming is discussed. Z schemas are introduced for model-based specification. The second part covers software design. The author includes chapters on object-oriented design, function-oriented design, real-time systems design, and user interface design. Sommerville considers the two principal design strategies, namely functional and object-oriented design, to be complementary rather then opposed. Each may be applicable at different stages in the design process. Programming techniques and tools are discussed in Part<__?__Pub Fmt hardspace>3. Chapters on programming for reliability, software reuse, computer-aided software engineering, and software development environments show that the author concentrates on some advanced programming issues, and of course tool support for the software development process. On the other hand, programming itself is not covered; this omission is common in software engineering textbooks and monographs. Part 4 is devoted to software validation. The author has chosen verification and validation, software reliability, software safety, defect testing, testing and debugging tools, and static verification as the main topics here. The last part covers software management. It includes chapters on project planning and scheduling, software cost estimation, software maintenance, configuration management, documentation, and software quality assurance. A typical book on software engineering covers a broad range of topics. As a consequence (to keep the size reasonable), it is not deep. The essence of almost all important notions, methods, techniques, and so on is introduced. Usually, as the authors give their assessments of the methods, they evaluate the important trends in the field. Rather than describing the basic methods in sufficient depth to serve as a genuine source, they give only a sketchy introduction, and the stress is on their properties. When such a book is used as a textbook, this approach may cause difficulty for the student. In contrast to the case of software engineering, a typical book on any well-established field of engineering, such as electrical engineering, covers basic methods of the field in enough depth to serve as a source of knowledge and a reference for both students and practitioners. The stress in such books is on practical knowledge. The meta-level knowledge, which includes evaluation of methods, is implicit: the inclusion of a method in the book is the indication of its importance. The situation in software engineering books clearly has its roots in the immaturity of the field, especially when compared to more traditional fields of engineering. The ongoing discussion of the differences and boundaries between computer science and software engineering proves that even these fundamental questions are not yet clarified, or that the proposed answers are not yet universally accepted. What can we realistically expect from a book introducing a complex field of engineering that is still in its infancy__?__ Sommerville's book is an encouraging attempt. While it obviously cannot overcome the difficulties inherent in the present state of the art, it does what can be done in an outstanding way. The book is broad rather than deep. As long as we do not have one or two standard, universally appli<__?__Pub Fmt hyphen-point>cable specification, design, implementation, and maintenance methods, this approach seems inevitable. The author has done his best to minimize its shortcomings. He covers almost all the important issues, not restricting his scope to management or to systems analysis and design, as several other books do. His deep insight into the matter is presented in a condensed form and in a readable way. The form of the book is another of its good points. Each part starts with a short statement summarizing its objectives and a list of chapters. Similarly, each chapter starts by stating its objectives and contents. At the end of each chapter, the key points are summarized, further reading is indicated, and exercises are provided. The author and subject indexes are adequate. The list of references is comprehensive. The book is aimed at both students and practitioners of software engineering. For both, it is an excellent source of knowledge. Practitioners will find relevant chapters to update their knowledge or to get a clear explanation of particular topics. Despite being too long for most one-semester courses, the book can be used as a textbook for either an introductory course or some advanced courses, such as Requirements Engineering, Reliable Systems, and Project Management. The book has benefitted from gradual improvements in newer versions. Among the changes from the third edition<__?__Pub Fmt hardspace>[<__?__Pub Caret1>1], the inclusion of new chapters on real-time systems and software safety, and more detail about prototyping and software reliability, are worth mentioning. The material on programming and abstract data type implementation has been shortened. The book can be recommended as useful for both the intended purposes. When it is used as a textbook, however, the assumption of previous familiarity with programming and modern computer systems must be taken into account.

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.