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.