软件工程(英文版.第6版)
作者 : Ian Sommerville
丛书名 : 经典原版书库
出版日期 : 2003-04-01
ISBN : 7-111-11810-3
定价 : 69.00元
教辅资源下载
扩展信息
语种 : 英文
页数 : 693
开本 : 16开
原书名 : Software Engineering
原出版社: Addison-Wesley
属性分类: 教材
包含CD :
绝版 : 已绝版
图书简介

本书是全球最通行的软件工程教材之一,已被加利福尼亚大学伯克利分校、南加州大学、澳大利亚国立大学、纽约大学布法罗分校、台湾大学等世界多所著名大学采用。本书系统地介绍了软件工程理论,着重阐述了大型软件系统开发中广泛应用的技术,涵盖了整个软件过程的各个阶段的内容,从导出初始需求到设计和开发,再到系统进化。本书适合作为本科生和研究生软件工程课程的教材,同时也可以作为软件工程师的自修教材,用于更新需求工程、分布式系统体系结构和系统可靠性等新技术方面的知识。
  本书的专门网站http://www.software-engin.com/提供了与本书内容相关的链接、教师参考手册、部分习题的答案、本书所有各章的幻灯片(pdf和ppt两种格式)和程序实例源代码等。

图书特色

Ian Sommerville是英国著名软件工程专家,英国兰开斯特大学软件工程学教授。他在软件工程方面有20多年的教学和科研经验。目前他的研究方向主要是需求工程。

图书前言

Software systems are now ubiquitous. Virtually all electrical equipment now includes some kind of software; software is used to help run manufacturing industry, schools and universities, health care, finance and government; many people use software of different kinds for entertainment and education. The specification, development, management and evolution of these software systems make up the discipline of software engineering.
  Even simple software systems have a high inherent complexity so engineering principles have to be used in their development. Software engineering is therefore an engineering discipline where software engineers use methods and theory from computer science and apply this cost-effectively to solve difficult problems. These difficult problems have meant that many software development projects have not been successful. However, most modern software provides good service to its users; we should not let high-profile failures obscure the real successes of software engineers over the past 30 years.
  Software engineering was developed in response to the problems of building large, custom software systems for defence, government and industrial applications.We now develop a much wider range of software from games on specialised consoles through personal PC products and web-based systems to very large-scale distributed systems. Although some techniques that are appropriate for custom systems, such as object-oriented development, are universal, new software engineering techniques areproblems of software engineering and we need a wide spectrum of tools and techniques to solve software engineering problems.
  Books inevitably reflect the opinions and prejudices of their authors. Some readers will inevitably disagree with my opinions and with my choice of material.Such disagreement is a healthy reflection of the diversity of the discipline and is essential for its evolution. Nevertheless, I hope that all software engineers and software engineering students can find something of interest here.
  Changes from the 5th edition Like many software systems, this book has grown and changed since its first edition was published in 1982. One of my goals in preparing this edition was to reduce rather than increase the size of the book and this has entailed some reorganisation and difficult decisions on what to cut out while still including important new material. The end-result is a book that is about 15% shorter than the 5 th edition.
  The book has been re-structured into 7 rather than 8 parts covering an introduction to software engineering, specification, design, critical systems development, verification and validation, management, and software evolution.
  There are new chapters covering software processes, distributed systems architectures, dependability and legacy systems. The section on formal specification has been cut to a single chapter and material on CASE has been reduced and distributed to different chapters. Coverage of functional design is now included in the new chapter on legacy systems. Chapters on verification and validation have been amalgamated.
  All chapters have been updated and several chapters have been extensively rewritten. Reuse now focuses on development with reuse with material on patterns and component-based development; object-oriented design has more of a process focus; the chapters on requirements have been separated into chapters on the requirements themselves and chapters on the requirements engineering process; cost estimation has been updated to COCOMO 2.
  The introductory part now includes 4 chapters. I have taken introductory material that was distributed throughout the book in the 5th edition and covered it all in this part. Chapter 1 has been completely rewritten as a set offrequently asked questions about software engineering.
  The material on critical systems has been restructured and integrated so that reliability, safety and availability are not covered as separate topics. I have introduced some material on security as an attribute of a critical system.
  Program examples are now in Java and object models are described in the UML. Ada and C++ examples have been removed from the text but are available from my web site.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.
  
Readership
  The book is aimed at students taking 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 and knowledge of basic data structures such as stacks, lists and queues.
Using the book as a course text There are three main types of software engineering courses where this book can be used:
  1. 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 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.
  2. Introductory or intermediate courses on specific software engineering topics.
  The book supports courses in software requirements specification, software design, software engineering management, dependable systems development and software evolution. 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. Some additional reading is suggested for these courses.
  3. 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 and additional reading is suggested on my web site.
  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抰 have to buy several different books.
  This book covers all suggested material in the SE.Software Engineering component of the proposed ACM/IEEE computer science body of knowledge -Computing Curricula 2001. The book is also consistent with the forthcoming IEEE/ACM oftware Engineering Body of Knowledge document that is due for publication sometime in 2000 or 2001.
  
Web site
  My web site is http://www.software-engin.com and this includes links to material to support the use of this book in teaching and personal study. The following downloadable supplements are available:
  An instructor's guide including hints on teaching using the book, class and term project suggestions, case studies and examples and some solutions to the exercises. This is available in Adobe PDF format.
  A set of overhead projector transparencies for each chapter. These are available in Adobe PDF and in Microsoft PowerPoint format. Instructors may adapt and modify the presentations as they wish.
  Source code in Java for most of the individual program examples including supplementary code required for compilation.
  Additional material based on chapters from previous editions on algebraic specification, Z and function-oriented design. Ada and C++ examples as used in the 5 th edition are also available.
  This page also includes links to copies of slides and papers on systems engineering, links to other software engineering sites, information on other books and suggestions for additional further reading.
  I am always pleased to receive feedback on my books and you can contact me by E-mail at ian@software-engin.com. However, I regret that I don抰 have time to give advice to individual students on their homework.
  
Acknowledgements
  A large number of people have contributed over the years to the evolution of this book and I’d first like to thank everyone who has commented on previous editions and made suggestions for change. I am grateful to the reviewers of initial drafts of this text for their helpful comments and suggestions which helped me a great deal when completing the final version.
  The reviewers of the first draft were Andy Gillies and Lindsey Gillies of the University of the West of England, Joe Lambert of Penn. State University, Frank Maddix of the University of the West of England, Nancy Mead of the Software Engineering Institute, Pittsburgh, Chris Price of the University of Wales,Aberystwyth, Gregg Rothermel of Oregon State University and Guus Schreiber of the University of Amsterdam. I’d particularly like to thank my friends Ron Morrison of St Andrews University and Ray Welland of Glasgow University who have reviewed previous editions and again volunteered to review this text.Finally, my family has put up with my absence for more evenings than I like to think while I finished this book. Thanks to my wife Anne and my daughters
Ali and Jane for their coffee and tolerance.
  
Ian Sommerville
Lancaster, February 2000.

作者简介

Ian Sommerville:Ian Sommerville: 英国著名软件工程专家,曾任教于兰卡斯特大学,现为圣安德鲁斯大学软件工程学教授。他在软件工程的教学和科研方面有20多年的经验,是IEEE CS组织编撰“软件工程知识体系” (SWEBOK) 的专家委员会成员之一。他的研究领域包括计算机系统工程、需求工程、系统可靠性以及软件进化。

图书目录

Part 1 Overview
Chapter 1 Introduction
1.1 FAQs about software engineering
1.2 Professional and ethical responsibility
Chapter 2 Computer-based System Engineering
2.1 Emergent system properties
2.2 Systems and their environment
2.3 System modelling
2.4 The system engineering process
2.5 System procurement
Chapter 3 Software Processes
3.1 Software process models
3.2 Process iteration
3.3 Software specification
3.4 Software design and implementation
3.5 Software validation
3.6 Software evolution
3.7 Automated process support
Chapter 4 Project Management
4.1 Management activities
4.2 Project planning
4.3 Project scheduling
4.4 Risk management
Part 2 Requirements
Chapter 5 Software Requirements
5.1 Functional and non-functional requirements
5.2 User requirements
5.3 System requirements
5.4 The software requirements document
Chapter 6 Requirements Engineering Processes
6.1 Feasibility studies
6.2 Requirements elicitation and analysis
6.3 Requirements validation
6.4 Requirements management
Chapter 7 System Models
7.1 Context models
7.2 Behavioural models
7.3 Data models
7.4 Object models
7.5 CASE workbenches
Chapter 8 Software Prototyping
8.1 Prototyping in the software process
8.2 Rapid prototyping techniques
8.3 User interface prototyping
Chapter 9 Formal Specification
9.1 Formal specification in the software process
9.2 Interface specification
9.3 Behavioural specification
Part 3 Design
Chapter 10 Architectural Design
10.1 System structuring
10.2 Control models
10.3 Modular decomposition
10.4 Domain-specific architectures
Chapter 11 Distributed Systems Architectures
11.1 Multiprocessor architectures
11.2 Client-server architectures
11.3 Distributed object architectures
11.4 CORBA
Chapter 12 Object-oriented Design
12.1 Objects and object classes
12.2 An object-oriented design process
12.3 Design evolution
Chapter 13 Real-time Software Design
13.1 System design
13.2 Real-time executives
13.3 Monitoring and control systems
13.4 Data acquisition systems
Chapter 14 Design with Reuse
14.1 Component-based development
14.2 Application families
14.3 Design patterns
Chapter 15 User Interface Design
15.1 User interface design principles
15.2 User interaction
15.3 Information presentation
15.4 User support
15.5 Interface evaluation
Part 4 Critical Systems Engineering
Chapter 16 Dependability
16.1 Critical systems
16.2 Availability and reliability
16.3 Safety
16.4 Security
Chapter 17 Critical Systems Specification
17.1 Software reliability specification
17.2 Safety specification
17.3 Security specification
Chapter 18 Critical Systems Development
18.1 Fault minimisation
18.2 Fault tolerance
18.3 Fault tolerant architectures
18.4 Safe system design
Part 5 Verification and Validation
Chapter 19 Verification and Validation
19.1 Verification and validation planning
19.2 Software inspections
19.3 Automated static analysis
19.4 Cleanroom software development
Chapter 20 Software Testing
20.1 Defect testing
20.2 Integration testing
20.3 Object-oriented testing
20.4 Testing workbenches
Chapter 21 Critical Systems Validation
21.1 Formal methods and critical systems
21.2 Reliability validation
21.3 Safety assurance
21.4 Security assessment
Part 6 Management
Chapter 22 Managing People
22.1 Limits to thinking
22.2 Group working
22.3 Choosing and keeping people
22.4 The people capability maturity model
Chapter 23 Software Cost Estimation
23.1 Productivity
23.2 Estimation techniques
23.3 Algorithmic cost modelling
23.4 Project duration and staffing
Chapter 24 Quality Management
24.1 Quality assurance and standards
24.2 Quality planning
24.3 Quality control
24.4 Software measurement and metrics
Chapter 25 Process Improvement
25.1 Process and product quality
25.2 Process analysis and modelling
25.3 Process measurement
25.4 The SEI process capability maturity model
25.5 Process classification
Part 7 Evolution
Chapter 26 Legacy Systems
26.1 Legacy system structures
26.2 Legacy system design
26.3 Legacy system assessment
Chapter 27 Software Change
27.1 Program evolution dynamics
27.2 Software maintenance
27.3 Architectural evolution
Chapter 28 Software Re-engineering
28.1 Source code translation
28.2 Reverse engineering
28.3 Program structure improvement
28.4 Program modularisation
28.5 Data re-engineering
Chapter 29 Configuration Management
29.1 Configuration management planning
29.2 Change management
29.3 Version and release management
29.4 System building
29.5 CASE tools for configuration management

教学资源推荐
作者: [美]莎拉·芭氏(Sara Baase) 蒂莫西·M.亨利(Timothy M.Henry) 著
作者: 吴国伟 徐子川 姚琳 编著 郭禾 主审
作者: (美) Aditya P. Mathur 著
作者: (英)Hilary Glasman-Deal 著
参考读物推荐
作者: 《越玩越野》杂志社 编
作者: 高群凯
作者: (美)Michael E. Moore 著