ix
Contents
Preface iii
Chapter 1 Writing a Program 1
1.1 A Simple Problem 2
1.2 Decisions, Decisions 2
1.2.1 Functional Requirements 3
1.2.2 Nonfunctional Requirements 4
1.2.3 Design Constraints 5
1.2.4 Design Decisions 6
1.3 Testing 6
1.4 Estimating Effort 7
1.5 Implementations 8
1.5.1 A Few Pointers on Implementation 8
1.5.2 Basic Design 10
1.5.3 Unit Testing with
JUnit 10
1.5.4 Implementation of
StringSorter 10
1.5.5 User Interfaces 16
91998_TOCX_Tsui.indd 9 1/11/13 8:50:32 AM
1.6 Summary 19
1.7 Review Questions 19
1.8 Exercises 20
1.9 Suggested Readings 20
Chapter 2 Building a System 23
2.1 Characteristics of Building a System 24
2.1.1 Size and Complexity 24
2.1.2 Technical Considerations of Development and
Support 25
2.1.3 Nontechnical Considerations of Development and
Support 29
2.2 Building a Hypothetical System 30
2.2.1 Requirements of the Payroll System 30
2.2.2 Designing the Payroll System 32
2.2.3 Code and Unit Testing the Payroll System 34
2.2.4 Integration and Functionally Testing the Payroll
System 35
2.2.5 Release of the Payroll System 36
2.2.6 Support and Maintenance 36
2.3 Coordination Efforts 37
2.3.1 Process 37
2.3.2 Product 38
2.3.3 People 38
2.4 Summary 39
2.5 Review Questions 39
2.6 Exercises 39
2.7 Suggested Readings 40
Chapter 3 Engineering of Software 41
3.1 Examples and Characteristics of Software Failures 42
3.1.1 Project Failures 42
3.1.2 Software Product Failures 43
3.1.3 Coordination and Other Concerns 44
3.2 Software Engineering 45
3.2.1 What Is Software Engineering? 45
x Contents
91998_TOCX_Tsui.indd 10 1/11/13 8:50:32 AM
3.2.2 Definitions of Software Engineering 45
3.2.3 Relevancy of Software Engineering and Software 46
3.3 Software Engineering Profession and Ethics 47
3.3.1 Software Engineering Code of Ethics 47
3.3.2 Professional Behavior 49
3.4 Principles of Software Engineering 49
3.4.1 Davis’s Early Principles of Software Engineering 50
3.4.2 Royce’s More Modern Principles 52
3.4.3 Wasserman’s Fundamental Software Engineering
Concepts 52
3.5 Summary 54
3.6 Review Questions 54
3.7 Exercises 54
3.8 Suggested Readings 55
Chapter 4 Software Process Models 57
4.1 Software Processes 58
4.1.1 Goal of Software Process Models 58
4.1.2 The “Simplest” Process Model 58
4.2 Traditional Process Models 59
4.2.1 Waterfall Model 59
4.2.2 Chief Programmer Team Approach 61
4.2.3 Incremental Model 61
4.2.4 Spiral Model 63
4.3 A More Modern Process 64
4.3.1 General Foundations of Rational Unified Process
Framework 64
4.3.2 The Phases of RUP 65
4.4 Entry and Exit Criteria 68
4.4.1 Entry Criteria 69
4.4.2 Exit Criteria 69
4.5 Process Assessment Models 70
4.5.1 SEI’s Capability Maturity Model 70
4.5.2 SEI’s Capability Maturity Model Integrated 72
4.6 Process Definition and Communication 78
4.7 Summary 79
Contents xi
91998_TOCX_Tsui.indd 11 1/11/13 8:50:32 AM
4.8 Review Questions 80
4.9 Exercises 80
4.10 Suggested Readings 81
Chapter 5 New and Emerging Process Methodologies 83
5.1 What Are Agile Processes? 84
5.2 Why Agile Processes? 85
5.3 Some Process Methodologies 86
5.3.1 Extreme Programming (XP) 86
5.3.2 The Crystal Family of Methodologies 91
5.3.3 The Unified Process as Agile 94
5.3.4 Scrum 94
5.3.5 Open Source Software Development 96
5.3.6 Summary of Processes 98
5.4 Choosing a Process 98
5.4.1 Projects and Environments Better Suited for Each Kind
of Process 99
5.4.2 Main Risks and Disadvantages of Agile Processes 99
5.4.3 Main Advantages of Agile Processes 100
5.5 Summary 101
5.6 Review Questions 101
5.7 Exercises 101
5.8 Suggested Readings 102
Chapter 6 Requirements Engineering 103
6.1 Requirements Processing 104
6.1.1 Preparing for Requirements Processing 104
6.1.2 Requirements Engineering Process 105
6.2 Requirements Elicitation and Gathering 107
6.2.1 Eliciting High-Level Requirements 108
6.2.2 Eliciting Detailed Requirements 110
6.3 Requirements Analysis 112
6.3.1 Requirements Analysis and Clustering by Business
Flow 112
6.3.2 Requirements Analysis and Clustering with Object-
Oriented Use Cases 114
xii Contents
91998_TOCX_Tsui.indd 12 1/11/13 8:50:32 AM
6.3.3 Requirements Analysis and Clustering by Viewpoint-
Oriented Requirements Definition 116
6.3.4 Requirements Analysis and Prioritization 117
6.3.5 Requirements Traceability 120
6.4 Requirements Definition, Prototyping, and Reviews 120
6.5 Requirements Specification and Requirements
Agreement 124
6.6 Summary 125
6.7 Review Questions 126
6.8 Exercises 127
6.9 Suggested Readings 127
Chapter 7 Design: Architecture and Methodology 129
7.1 Introduction to Design 130
7.2 Architectural Design 131
7.2.1 What Is Software Architecture? 131
7.2.2 Views and Viewpoints 131
7.2.3 Meta-Architectural Knowledge: Styles, Patterns,
Tactics, and Reference Architectures 133
7.3 Detailed Design 139
7.3.1 Functional Decomposition 139
7.3.2 Relational Database Design 141
7.3.3 Object-Oriented Design and UML 146
7.3.4 User-Interface Design 152
7.3.5 Some Further Design Concerns 157
7.4 HTML-Script-SQL Design Example 158
7.5 Summary 161
7.6 Review Questions 161
7.7 Exercises 162
7.8 Suggested Readings 162
Chapter 8 Design Characteristics and Metrics 165
8.1 Characterizing Design 166
8.2 Some Legacy Characterizations of Design Attributes 166
8.2.1 Halstead Complexity Metric 166
8.2.2 McCabe’s Cyclomatic Complexity 168
Contents xiii
91998_TOCX_Tsui.indd 13 1/11/13 8:50:32 AM
8.2.3 Henry-Kafura Information Flow 169
8.2.4 A Higher-Level Complexity Measure 170
8.3 “Good” Design Attributes 171
8.3.1 Cohesion 171
8.3.2 Coupling 175
8.4 Object-Oriented Design Metrics 177
8.4.1 Aspect-Oriented Programming 179
8.4.2 The Law of Demeter 179
8.5 User-Interface Design 180
8.5.1 Good UI Characteristics 180
8.5.2 Usability Evaluation and Testing 181
8.6 Summary 182
8.7 Review Questions 183
8.8 Exercises 184
8.9 Suggested Readings 184
Chapter 9 Implementation 187
9.1 Introduction to Implementation 188
9.2 Characteristics of a Good Implementation 188
9.3 Programming Style and Coding Guidelines 189
9.4 Comments 191
9.5 Debugging 193
9.6 Assertions and Defensive Programming 194
9.7 Performance Optimization 195
9.8 Refactoring 196
9.9 Summary 197
9.10 Review Questions 197
9.11 Exercises 197
9.12 Suggested Readings 198
Chapter 10 Testing and Quality Assurance 199
10.1 Introduction to Testing and Quality Assurance 200
10.2 Testing 202
10.2.1 The Purposes of Testing 202
10.3 Testing Techniques 203
10.3.1 Equivalence Class Partitioning 205
xiv Contents
91998_TOCX_Tsui.indd 14 1/11/13 8:50:32 AM
10.3.2 Boundary Value Analysis 207
10.3.3 Path Analysis 208
10.3.4 Combinations of Conditions 213
10.3.5 Automated Unit Testing and Test-Driven
Development 213
10.3.6 An Example of Test-Driven Development 214
10.4 When to Stop Testing 218
10.5 Inspections and Reviews 220
10.6 Formal Methods 222
10.7 Static Analysis 223
10.8 Summary 224
10.9 Review Questions 224
10.10 Exercises 225
10.11 Suggested Readings 226
Chapter 11 Configuration Management, Integration, and Builds 229
11.1 Software Configuration Management 230
11.2 Policy, Process, and Artifacts 230
11.2.1 Business Policy Impact on Configuration
Management 234
11.2.2 Process Influence on Configuration
Management 235
11.3 Configuration Management Framework 236
11.3.1 Naming Model 236
11.3.2 Storage and Access Model 238
11.4 Build and Integration and Build 240
11.5 Tools for Configuration Management 241
11.6 Managing the Configuration Management Framework 243
11.7 Summary 244
11.8 Review Questions 245
11.9 Exercises 245
11.10 Suggested Readings 246
Chapter 12 Software Support and Maintenance 249
12.1 Customer Support 250
12.1.1 User Problem Arrival Rate 250
Contents xv
91998_TOCX_Tsui.indd 15 1/11/13 8:50:32 AM
12.1.2 Customer Interface and Call Management 252
12.1.3 Technical Problem/Fix 254
12.1.4 Fix Delivery and Fix Installs 256
12.2 Product Maintenance Updates and Release Cycles 258
12.3 Change Control 259
12.4 Summary 261
12.5 Review Questions 261
12.6 Exercises 262
12.7 Suggested Readings 262
Chapter 13 Software Project Management 265
13.1 The Necessity of Project Management 266
13.2 The Project Management Process 266
13.2.1 Planning 267
13.2.2 Organizing 270
13.2.3 Monitoring 271
13.2.4 Adjusting 273
13.3 Some Project Management Techniques 275
13.3.1 Project Effort Estimation 275
13.3.2 Work Breakdown Structure 283
13.3.3 Project Status Tracking with Earned Value 286
13.3.4 Measuring Project Properties and GQM 288
13.4 Summary 290
13.5 Review Questions 291
13.6 Exercises 291
13.7 Suggested Readings 293
Chapter 14 Epilogue and Some Contemporary Issues 295
14.1 Security and Software Engineering 297
14.2 Reverse Engineering and Software Obfuscation 298
14.3 Software Validation and Verification Methodologies and
Tools 299
14.4 Suggested Readings 300
Appendix A 303
Essential Software Development Plan (SDP) 303
xvi Contents
91998_TOCX_Tsui.indd 16 1/11/13 8:50:33 AM
Appendix B 305
Essential Software Requirements Specifications (SRS) 305
Example 1: Essential SRS—Descriptive 305
Example 2: Essential SRS—Object Oriented 307
Example 3: Essential SRS—IEEE Standard 308
Example 4: Essential SRS—Narrative Approach 309
Appendix C 311
Essential Software Design 311
Example 1: Essential Software Design—UML 311
Example 2: Essential Software Design—
Structural 312
Appendix D 315
Essential Test Plan 315
Glossary 317
Index 321
Contents xvii
91998_TOCX_Tsui.indd 17 1/11/13 8:50:33 AM
91998_TOCX_Tsui.indd 18 1/11/13 8:50:33 AM
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.117.71.211