"synopsis" may belong to another edition of this title.
In previous editions, I have presented program examples in Ada as I consider this an excellent language for large-scale software engineering. However, Ada has not become as widely used as was once predicted. C or C++ are the programming languages of choice for most personal computer and workstation applications. Because of this wide use, I have included C++ as well as Ada versions of most of the program examples in the book. For safety-critical systems, however, I think it unwise to use a language which includes potentially unsafe constructs. Those examples are, therefore, only presented in Ada. I considered for a long time whether it would be appropriate to include a new chapter on professional and ethical issues. I decided not to do so because the topic is so subjective that it is difficult to present in a balanced way in a single chapter. There are no absolutes in this area and it is best addressed in an interactive context rather than as a chapter of a book. However, I have included a brief discussion of these issues in the introduction to the book. I have also included possible ethical and professional topics for discussion as exercises in many chapters. Links to WWW pages on this topic are included in the Web page whose URL is given below. The further reading associated with each chapter has been updated from previous editions. However, in many cases, articles written in the 1980s are still the best introduction to some topics. As new articles which are useful become available, I will include them on the Web page. The author index in previous editions has been removed. Rather, each entry in the References section includes the page numbers where it has been referenced. Readership The book is aimed at students in undergraduate and graduate courses and at software engineers in commerce and industry. It may be used in general software engineering courses or in courses such as advanced programming, software specification, software design or management. Practitioners may find the book useful as general reading and as a means of updating their knowledge on particular topics such as requirements engineering, architectural design, dependable systems development and process improvement. Wherever practicable, the examples in the text have been given a practical bias to reflect the type of applications which software engineers must develop. I assume that readers have a basic familiarity with programming and modern computer systems. Some examples rely on knowledge of basic data structures such as stacks, lists and queues. The chapters on formal specification assume knowledge of very elementary set theory. No other mathematical background is required. Using the book as a course text There are three main types of software engineering courses where this book can be used: General introductory courses in software engineering. For students who have no previous software engineering experience, you can start with the introductory section then pick and choose the introductory chapters from the different sections of the book. This will give students a general overview of the subject with the opportunity of more detailed study for those students who are interested. Introductory or intermediate courses on specific topics in software engineering such as software specification, design or dependable systems development. Each of the parts in the book can serve as a text in its own right for an introductory or intermediate course on that topic. More advanced courses in specific software engineering topics. In this case, the chapters in the book form a foundation for the course which must be supplemented with further reading which explores the topic in more detail. All chapters include my suggestions for further reading.
The benefit of a general text like this is that it can be used in several different related courses. At Lancaster, we use the text in an introductory software engineering course, in courses on specification, design and critical systems and in a software management course where it is supplemented with further reading. With a single text, students are presented with a consistent view of the subject. They also like the extensive coverage because they don't have to buy several different books. This book covers all suggested material in Units SE2 to SE5 in the ACM/IEEE 1991 Curriculum. It also includes material to supplement an introductory programming text which would normally cover Unit SE1 and all material in the suggested course entitled 'Advanced Software Engineering'. Supplements The following supplements are available: An instructor's guide including hints on teaching the material in each chapter, class and term project suggestions, and solutions to some of the exercises. This is available in Postscript or on paper from Addison-Wesley. A set of overhead projector transparencies for each chapter. These are available in Postscript and in Microsoft Powerpoint format. Source code for most of the individual program examples including supplementary code required for compilation. An introduction to the Ada programming language. Information on course presentation using electronically mediated communication and links to material for that approach to teaching. ac.uk/computing/resources/ser/ This page also includes links to other software engineering resources which you may find useful. If you have any problems, you can contact me by E-mail (is@comp.lancs.ac.uk). Acknowledgements I am indebted to a number of reviewers who provided helpful and constructive criticism of early drafts of this book. Many thanks to Leonora Barocca of the Open University, Stewart Green of the University of the West of England, Andrew McGettrick of the University of Strathclyde, Philip Morrow of the University of Ulster and Ray Welland of the University of Glasgow. Thanks also to Rodney L. Bown, University of Houston-Clear Lake, Charles P. Howerton, Metropolitan State College of Denver, Josephine DeGuzman Mendoza of California State University, San Bernardino and David C. Rine of George Mason University. Thanks also to all users of previous editions who have provided me with comments and constructive criticism and to my colleagues in the Cooperative Systems Engineering Group and Lancaster University. Finally, a big thank-you to my wife Anne and daughters, Ali and Jay. They have provided coffee, encouragement and occasional inspiration during the long hours I spent writing this book. Ian Sommerville August 1995
Software Engineering presents a broad perspective on software systems engineering, concentrating on widely-used techniques for developing large-scale software systems. In seven parts, this best-selling book covers a wide spectrum of software processes from initial requirements elicitation through design and development to system evolution. It supports students taking undergraduate and graduate courses in software engineering and software engineers in industry who need to update their knowledge on new techniques such as requirements engineering, distributed systems architectures and system dependability.
Extensive market research has ensured that this new edition is useful and relevant for both students and practising software engineers. The sixth edition has been restructured and updated, important new topics have been added and obsolete material has been cut. The end result is an even more focused book that is about 10% shorter than the previous edition.
Changes from the fifth edition
· There are new chapters covering software processes, distributed systems architectures, dependability and legacy systems.
· Program examples are now in Java and graphical system models are described in the standard UML.
· All chapters have been updated and several have been extensively rewritten. Reuse now focuses on component-based development and patterns; object-oriented design has a process focus and uses the UML; the chapters on requirements have been split to cover the requirements themselves and requirements engineering process; cost estimation has been updated to include the COCOMO 2 model.
· The chapters on critical systems has been restructured so that reliability, safety, availability and security are integrated in chapters on critical systems specification, development and validation.
· The section on formal specification has been cut to a single chapter and material on CASE has been integrated with the chapters covering the processes supported. Functional design has been incorporated in the new chapter on legacy systems.
The book's web site (www.software-engin.com) includes links to material to support the use of the book in teaching and personal study. It includes an instructor's manual, overhead transparencies, source code of the program examples and additional material on CASE and formal specification.
Ian Sommerville is Professor of Software Engineering at Lancaster University, England. He has more than 20 years of experience in software engineering education and research. His current areas of interest include computer-based systems engineering, requirements engineering, system dependability and software evolution.
"About this title" may belong to another edition of this title.
Shipping:
US$ 4.00
Within U.S.A.
Book Description Paperback. Condition: new. New. Fast Shipping and good customer service. Seller Inventory # Holz_New_020113795X