本书的目的是让学生了解软件工程知识中英语的表达方式和专业词汇。全书共分12章,内容涉及软件工程领域各个部分。本书采用英文编写,各章均总结了关键字,书后附有中文参考译文,各章还附有复习题。
本书适用于软件工程专业本科或研究生教材,也可作为计算机类各专业本科或研究生教材。
Chapter 1 Introduction
1.1 Outline the history of hardware in computing
1.2 Hardware Concepts and History Overview
1.2.1 Computer Structure Concepts
1.2.2 Development of Computers
1.3 Software and the Information Age
1.3.1 First Generation: Switches Using Punch Cards
1.3.2 Second Generation: Assembly Language, Interpreters, Compilers
1.3.3 Third Generation Programming Languages (3GL)
1.3.4 Fourth Generation (4GL) and Artificial Intelligence
1.3.5 New Methodologies
1.3.6 Future Computing
1.4 Operating Systems (OS)
1.4.1 Windowing Systems
1.4.2 X-Windows
1.5 History of the Intemet
1.6 What is Software Engineering?
1.7 Review Questions
Chapter 2 Discrete Mathematica
2.1 Logic
2.1.1 Propositional Logic
2.1.2 Predicate Logic
2.2 Set Theory
2.2.1 Set Theory Basics
2.2.2 Axiomatic Set Theory and Paradoxes
2.2.3 Fuzzy Set Theory
2.3 Probability Theory
2.3.1 Kolmogorov's Probability Calculus
2.3.2 Classical Probability
2.4 Graph Theory
2.4.1 Basic Terminology
2.4.2 Graph Coloring
2.4.3 Star Graphs
2.4.4 Simple Circuits and Simple Paths
2,4.5 Euler Circuits, Hamilton Circuits, Directed Graphs
2.4.6 Trees
2,5 Boolean Algebra.
2.6 Review Questions
Chapter 3 Operating Systems (OS)
3.1 Operating System Functions
3.1.1 Computer start up
3.1.2 Loading applications
3.1.3 Memory and file management
3.1.4 Command Interpretation
3,2 File Systems
3.2.1 Hierarchical File Systems
3.3 Modem Operating Systems
3.3.1 UNIX
3.3.2 WINDOWS Desktop Operating Systems
3.3.3 Windows Server Operating Systems
3,3.4 Linux
3,4 Review Questions
Chapter 4 0rgani zati on of Programming Languages and Programmi ng Concepts
4.1 Organization of Programming Languages
4,1.1 Language Design Factors
4.1.2 Programming Language Abstractions
4.1.3 Computer Language Types
4.1.4 Programming Language Definition
4.2 Data Structures and Algorithms
4.2.1 Data Structures
4.2.2 Algorithms
4.3 Object Oriented Principles
4.3.1 Objects
4.3.2 Class
4.3.3 Inheritance
4.3.4 Indirection
4.3.5 Encapsulation
4.3.6 Messages
4.4 Review Questions
Chapter 5 Programming Languages
5.1 Legacy Languages
5.1.1 FORTRAN
5.1.2 PASCAL
5.1.3 ADA
5.1.4 COBOL
5.2 Modem Network Languages
5.2.1 HTML - Hyper Text Markup Language
5.2.2 XML
5.2.3 XHTML
5.2.4 Microsoft .NET
5.2.5 The C Programming Language
5.2.6 C++.
5.2.7 C# or C Sharp
5.2.7 ASP .NET
5.2.8 Web Services
5.2.9 Java
5.3 Review Questions
Chapter 6 Software Engineering Requirements Analysis
6.1 Requirements Analysis Phases
6.1.1 Elicitation
6.1.2 Requirements Grouping
6.1.3 Requirements Evaluation
6.1.4 Software Requirements Specification (SRS)
6.2 Analysis and Design Concepts
6.2.1 Requirements Modeling
6.2.2 Analysis Modeling
6.2.3 Data Modeling
6.2.4 Information Flow and Data Flow Diagrams (DFDs)
6.2.5 Behavior Modeling
6.3 Unified Modeling Language
6.3.1 Modeling Mechanisms
6.3.2 Metamodel
6.3.3 Architectural Views
6.3.4 Notation and Diagrams
6.4 Use Cases
6.5 Review Questions
Chapter 7 Software Development Concepts and Design Methodologies
7.1 Software Design Fundamentals
7.1.l Stepwise Refinemen
7.1.2 Abstraction.
7.1.3 Software Architecture
7.1.4 Data Structure
7.1.5 Program Structure and Modularity
7.1.6 Procedure
7.1.7 Information Hiding
7.1.8 Design Representation
7.2 Traditional Design Methodology
System Development Life-Cycle Model
7.3 Modem Design Methodologies
7.3.1 Object-Oriented Technology
7.3.2 Prototyping
7.3.3 Operational Modeling
7.3.4 Software Design and CASE Technology
7.3.5 Rapid Application Development (RAD)
7.3.6 Cleanroom Software Engineering
7.4 Large Scale Software Design Issues
7.5 Review Questions
Chapter 8 Software Architecture and System Design
8.1 System Architecture
8.2 Software Architecture
8.2.1 Pipes and Filters
8.2.2 Data Abstraction and Object-Oriented Organization
8.2.3 Implicit Invocation
8.2.4 Layered Systems
8.2.5 Centralized
8.2.6 Distributed
8.2.7 Main Program/Subroutine
8.2.8 Domain architectures
8.2.9 Mixed Architectures
8.3 Developing an Architecture
8.4 Component Level Design.
8.4.1 Component Based Development Methods
8.4.2 Modeling a Component-Based Application
8.5 User Interface Design
8.5.l Graphical User Interface (GUI)
8.5.2 Interface Design Factors
8.6 Review Questions
Chapter 9 Database Systems
9.1 Database History and Concepts
9.1.1 The Relational Model
9.1.2 Structured Query Language (SQL)
9.1.3 ACID Properties
9.2 Database Design
9.2.1 Key Definitions and Concepts
9.2.2 Database Normalization
9.3 Commercial Database Systems
9.3.1 Open Source RDBMS
9.3.2 Desktop Databases
9.3.3 Choosing a Database
9.3.4 Database Features
9.3.5 Database Standards
9.4 Data Warehousing
9.4.1 Dimensional Design
9.4.2 Data Warehouse Design Considerations
9.4.3 Data Warehousing Product Considerations
9.5 Data Mining
9.5.1 Ad Hoc Query Processing
9.5.2 Online Analytical Processing (CLAP)
9.6 Review Questions
Chapter 10 Computer Networking
10.1 Networking Basics
10.1.1 Network Topology
10.1.2 Interface Timing
10.1.3 Line Configuration
10.1.4 Data Interfaces
10.1.5 Network Application Paradigms
10.1.6 Network Protocols
10.1.7 Network Operating System (NOS)
10.1.8 Network Management Systems
10.1.9 Network Devices
10.2 Local Area Network (LAN)
10.2.1 Ethernet
10.3 Wide Area Networks (WAN)
10.3.1 Packet Switching
10.3.2 Packet Technology Development
10.4 The World Wide Web
10.4.1 Firewall.
10.4.2 File Transfer Protocol
10.4.3 Domain Name Service (DINS)
10.5 Home Based Broadband Network Services
10.5.1 Digital Subscriber Line Technology
10.5.2 Cable Modems
10.6 Wireless Networking.
10.6.1 Wireless Application Protocol
10.6.2 Bluetooth
10.6.3 Wi-Fi
10.7 Review Questions
Chapter 11 Project and Process Management
11.1 Project Management
11.1.1 Developing a Project Plan.
11.1.2 Manage Expectations
11.2 Project Management Tips
11.3 Software Processes
11.4 Quality
11.5 Capability Maturity Model (CMM) for Software
11.6 Team Software Development
11.6.1 The Team Software Process (TSP)
11.6.2 Personal Software Process (PSP)
] 1.7 Implementing SW-CMM
l 1.8 Software Change and Configuration Management
11.8.1 Change Management and Configuration Management
11.8.2 Change Management Support Tools
11 ~9 New Project Management Methods and Software Development
11.9.1 Steve McConnell's Surviving Projects
11.9.2 Jim Highsmith: Adaptive Complex Systems
11.10 Summary
11.11 Review Questions
Chapter 12 Software Testing and 0ual ity Assurance
12.1 Test Methods
12.1.1 White Box Testing
12.1.2 Black Box Testing
12.1.3 Performance and Reliability Testing
12.2 Testing Levels
12.2.1 Unit Testing
12.2.2 Integration Testing
12.2.3 Alpha or System Test
12.2.4 Acceptance or Beta Test
12.2.5 Regression Testing
12.2.6 Installation Testing
12.3 Test Completion Criteria and Metrics
12.3.1 Test Metrics
12.3.2 Quality Measurement
12.3.3 Risk Measurement
12.3.4 Mean Time to Failure/Repair
12.3.5 Process Measurement
12.4 Software Testing Teams
12.5 Common Testing Problems
12.5.1 Understanding the Purpose of Testing
12.5.2 Poor Test Plans
12.5.3 Wrong Test Personnel
12.6 Testing Techniques
12.6.1 Inspection
12.6.2 Common Tests
12.6.3 Interface Testing
t2.7 Quality Measurement and Standards
12.7.1 ISO 9000
12.7.2 The ISO 9000-3 Standard
12.7.3 ISO Certification Process
12.7.4 Implementing ISO 9000-3
12.8 Review Questions
Bibl i ography
Acronym D i ct i onary
Index.
This book covers all the basics of computer science and software engineering introducing the reader to each required course in a typical software engineering curriculum used in a College of Computer Science, College of Software, or a related major. The authors' intent is not to provide technical details for each subject, but to provide a brief introduction. Every effort has been tried to put the text into an easy to understand manner using plain and simple English. In addition, each chapter has review questions. There is a comprehensive index for fast look up of pertinent subjects and key words which make this book a great reference manual.
This book also provides a perfect complement for the student studying IT related subjects in English where English is the student's second language. It has been our long hope that a special "Technical English" book be written for IT related students, instead of the scientific and technical English that covers a wide selection of topics and with little focus on IT fields. The unfortunate reality is that there are few IT-focused technical English books. We hope this book will fill this gap to help provide a more comprehensive spectrum of books.
All chapters are quite independent. Thus, based on students' background and the needs, teachers can selectively teach different chapters of this book.
Students in all branches of Information Technology at any year in their curriculum can use this book as a valuable reference tool or for understanding software development in general.
We would like to thank Dr. George Chen for our initial discussion about Software-series books leads to the initial idea of writing this book. Great thanks also go to editors at Tsinghua University Press. Without their hard work and consistent encouragement, this book would not be possible.
Philip Lew and Wei Sun
Beihang University College of Software
Beijing, Dec. 25, 2003