The pervasiveness of software in business makes it crucial that software engineers and developers understand how software development impacts an entire organization. Strategic Software Engineering: An Interdisciplinary Approach presents software engineering as a strategic, business-oriented, interdisciplinary endeavor, rather than simply a technical process, as it has been described in previous publications.The book addresses technical, scientific, and management aspects of software development in a way that is accessible to a wide audience. It provides a detailed, critical review of software development models and processes, followed with a strategic assessment of how process models evolved over time and how to improve them. The authors then focus on the relation between problem-solving techniques and strategies for effectively confronting real-world business problems. They also analyze the impact of interdisciplinary factors on software development, including the role of people and business economics. The book concludes with a brief look at specialized system development.The diverse backgrounds of the authors, encompassing computer science, information systems, technology, and business management, help create this book's integrated approach, which answers the demand for a comprehensive, interdisciplinary outlook encompassing all facets of how software relates to an organization.
Author(s): Fadi P. Deek, James A. McHugh, Osama M. Eljabiri
Year: 2005
Language: English
Pages: 333
Contents......Page 6
Dedication......Page 12
Preface......Page 14
Introduction......Page 16
About the Authors......Page 26
The Process and Its Models......Page 28
1.1 Introduction......Page 30
1.2 Characteristics of Software Development Strategies......Page 33
1.3.1 The Waterfall Model......Page 38
1.3.2 Incremental and Iterative Models......Page 42
1.4.1 The Prototyping Model......Page 47
1.4.2 The Spiral Model......Page 52
1.4.3 The Cleanroom Model......Page 58
References......Page 62
2.2 CASE Tools......Page 66
2.3 Object-Oriented and Reuse Models......Page 70
2.3.1 Object-Oriented Models......Page 71
2.3.2 Rational Unified Process Model (RUP)......Page 74
2.3.3 Commercial Off-the-Shelf Model (COTS)......Page 78
2.3.4 The Reengineering Model......Page 85
References......Page 89
3.1 Introduction......Page 92
3.2 Productivity-Driven Dynamic Process Modeling......Page 93
3.3 Human Factors in Development Models......Page 95
3.4 The Capability Maturity Model......Page 102
3.5 Personal and Team Software Development Models......Page 106
References......Page 110
4.1 Introduction......Page 114
4.2 Open Source Model......Page 115
4.3 Agile Software Development......Page 117
4.4 Rapid Application Development (RAD) Models......Page 121
4.5 Workflow Application Models......Page 124
4.6 Aspect-Oriented Development......Page 128
References......Page 130
5.1 Introduction......Page 132
5.2 The Dimension of Time......Page 138
5.3 The Need for a Business Model in Software Engineering......Page 139
5.4.1 First Assumption: Internal or External Drivers......Page 140
5.4.3 Third Assumption: Processes or Projects......Page 141
5.4.4 Fourth Assumption: Process Centered or Architecture Centered......Page 142
5.5 Implications of the New Business Model......Page 143
5.6.1 Data......Page 144
5.6.3 Tools and Capabilities......Page 145
5.7 Redefining the Software Engineering Process......Page 146
5.7.2 Activities......Page 147
5.7.5 Time......Page 148
References......Page 150
Strategies for Solving Software Problems......Page 152
6.1 Introduction......Page 154
6.2 What Is a Problem?......Page 158
6.2.1 Problems of Meeting Standards......Page 161
6.2.3 Problems of Customer Satisfaction......Page 162
6.3 What Is Problem Solving?......Page 163
6.3.1 Models of Problem Solving......Page 164
6.3.2 Commonalities in Problem-Solving Models......Page 166
6.3.3.2 Reusable Subproblems and Solutions......Page 169
6.3.3.3 Problem Expansion (Composition)......Page 170
6.3.3.4 Problem Misrepresentation......Page 171
6.3.4 Strategies Driven by Task Structuring......Page 172
6.3.4.2 Iterative Problem-Solving Strategies......Page 173
6.3.5 Capabilities-Driven Strategies......Page 174
6.4.1 Problems and Solutions in Context of the Old Business Environment......Page 175
6.4.2 Problems and Solutions in Context of the Information Age......Page 178
References......Page 179
7.1 Introduction......Page 182
7.2.2 Business Problem-Solving Optimization......Page 184
7.2.3 The E-Business Revolution......Page 185
7.2.4 Portability Power......Page 187
7.3 Software Technology as a Limited Business Tool-What Computers Cannot Do......Page 188
7.3.2 Most Users Do not Understand Computer Languages......Page 189
7.3.3 Decisions and Problems-Complex and Ill Structured......Page 190
7.3.4 Businesses View Software Technology as a Black Box for Creating Economic Value......Page 191
7.3.5 Computers Cannot Work without People......Page 195
7.4 A View of Problem Solving and Software Engineering......Page 196
References......Page 198
8.1 Introduction......Page 200
8.2 Current Challenges to Software Development......Page 201
8.3 Competing Views of Software Development......Page 202
8.4 The Engineering of Software......Page 204
8.5 The Process and the Model......Page 205
8.6.1 The Era of Management Isolation......Page 208
8.6.2 The Era of Traditional Software Engineering......Page 209
8.6.3 The Era of Business Evaluation of Software Engineering......Page 210
8.6.4 Maturity Era: the Era of Business-Driven Software Engineering......Page 211
8.6.5 Characteristics of Current Software Development......Page 212
References......Page 214
9.1 Introduction......Page 216
9.2.1 Driving Forces of Diversity in Development Strategies......Page 218
9.3 The Hidden Value of Differences......Page 223
9.4 Integration-Not Differentiation......Page 224
9.4.2.1 Unreliable Sources of Information......Page 225
9.4.2.2 Partial Knowledge......Page 226
9.4.2.4 Interorganizational Ignorance......Page 227
9.5 Diversity in Problem Solver Skills at the Project Management Level......Page 230
9.6 Diversity as Value-Adding Tool in Problem Analysis......Page 231
References......Page 233
10.1 Introduction......Page 236
10.2.1 The Reverse Engineering Method......Page 237
10.2.2 The Problem Decomposition Method......Page 238
10.3.1 Generate Stakeholders......Page 239
10.3.2 Rationale for Change......Page 240
10.3.3 The Measurement of Risks of Change......Page 241
10.3.4 Thorough Diagnosis......Page 242
10.3.6 Initial Functional Requirements......Page 243
10.3.6.1 Interdisciplinary Perspective......Page 244
10.3.7.1 Interdisciplinary Perspective......Page 245
10.3.8.1 Interdisciplinary Perspective......Page 246
10.4 Data-Processing Phase......Page 247
10.4.2.1 Interdisciplinary Perspective......Page 248
10.5 Information Presentation Phase......Page 249
10.6 Strategies in Software Engineering......Page 250
References......Page 252
Interdisciplinary Factors in Software Development......Page 254
11.1 Introduction......Page 256
11.2 Interdisciplinary Background......Page 257
11.3.1 The Roles of Users in Problem Definition......Page 258
11.4 Human-Driven Software Engineering......Page 260
11.5 The People Factor-Multidisciplinary Aspects......Page 261
11.5.1 People as Project Managers......Page 262
11.6 The Team Factor......Page 266
11.7 The Customer Factor......Page 267
References......Page 268
12.1 Introduction......Page 270
12.2 Economics and the Development of Software......Page 271
12.3 The Rationale for Software Economics......Page 273
12.4 The Influence of Software Economics on Software Engineering......Page 274
12.5.1 Value Maximization......Page 276
12.5.2.1 Projects with Equal Risks......Page 278
12.6 Risk and Return......Page 279
12.8 Software Cost......Page 281
12.8.1 Cost Estimation......Page 282
References......Page 292
13.1 Introduction......Page 294
13.2 Principles of Specialized System Development......Page 295
13.2.1.1 Domain-Dependent Era: Before Software Development Methodology......Page 296
13.2.1.3 Generic Applications Era: Methodology-Intensive Software Development......Page 297
13.2.2 Generic versus Specialized Development......Page 298
13.2.3 The Problem-Solving Context in Specialized System Development......Page 299
13.2.3.1 Characteristics of System......Page 300
13.3.1 Pervasive Software Development......Page 301
13.3.2 Real-Time Software Development......Page 302
13.3.3.1 E-business Software Systems......Page 305
13.3.4 Security-Driven Software Development......Page 309
13.3.4.1 Security-Driven Requirements Analysis......Page 310
13.3.4.2 Security-Driven Systems Design......Page 314
References......Page 317
Glossary......Page 320
Author Index......Page 342
Subject Index......Page 348