Software Engineering: Architecture-driven Software Development is the first comprehensive guide to the underlying skills embodied in the IEEE's Software Engineering Body of Knowledge (SWEBOK) standard. Standards expert Richard Schmidt explains the traditional software engineering practices recognized for developing projects for government or corporate systems.
Software engineering education often lacks standardization, with many institutions focusing on implementation rather than design as it impacts product architecture. Many graduates join the workforce with incomplete skills, leading to software projects that either fail outright or run woefully over budget and behind schedule.
Additionally, software engineers need to understand system engineering and architecture-the hardware and peripherals their programs will run on. This issue will only grow in importance as more programs leverage parallel computing, requiring an understanding of the parallel capabilities of processors and hardware. This book gives both software developers and system engineers key insights into how their skillsets support and complement each other. With a focus on these key knowledge areas, Software Engineering offers a set of best practices that can be applied to any industry or domain involved in developing software products.
- A thorough, integrated compilation on the engineering of software products, addressing the majority of the standard knowledge areas and topics
- Offers best practices focused on those key skills common to many industries and domains that develop software
- Learn how software engineering relates to systems engineering for better communication with other engineering professionals within a project environment
Author(s): Richard F Schmidt
Publisher: Morgan Kaufmann
Year: 2013
Language: English
Pages: 376
Tags: Информатика и вычислительная техника;Технология программирования;
Front Cover......Page 1
Software Engineering......Page 4
Copyright Page......Page 5
Contents......Page 6
A Note from the Author......Page 16
Preface......Page 18
Book outline and subject matter......Page 19
1 Software Engineering Fundamentals......Page 26
Systems engineering principles and practices......Page 28
Summary......Page 30
1 Introduction to Software Engineering......Page 32
1.1 Specifying software requirements......Page 35
1.2 Software architecture......Page 36
1.3 Integrated product and process development......Page 37
1.4 Integrated product teams......Page 38
1.6 Software breakdown structure......Page 40
1.8 Integrated master plan and schedule......Page 42
1.9 Reviews and audits......Page 43
1.10 Configuration management and change control......Page 45
1.11 Trade-off analysis......Page 47
1.13 Modeling and simulation......Page 49
2 Generic Software Development Framework......Page 54
2.1 Software breakdown structure......Page 56
2.2 Software development process......Page 59
2.2.1.2 Software requirements review......Page 60
2.2.2.3 Training strategy review......Page 61
2.2.3.2 Deployment design review......Page 62
2.2.4.1 Unit design review (peer evaluation)......Page 63
2.2.6.1 Acceptance testing readiness review......Page 64
2.2.7.3 Deployment qualification review......Page 65
2.3 Summary......Page 66
3 Software Architecture......Page 68
3.1 Stakeholder needs relationships and dependencies......Page 71
3.2 Software requirements baseline relationships and dependencies......Page 73
3.4 Test and evaluation relationships and dependencies......Page 74
3.5 Functional architecture relationships and dependencies......Page 75
3.7 Post-development process relationships and dependencies......Page 76
3.8 Motivation for the software architecture......Page 77
4 Understanding the Software Project Environment......Page 80
4.1 Integrated product teams......Page 85
4.2 Software architecture......Page 86
4.3.1 Work breakdown structure......Page 88
4.3.2 Product breakdown structure......Page 89
4.3.5 Software product baselines......Page 90
4.3.6 Requirements traceability guidelines......Page 92
4.3.7 Trade-off analysis......Page 93
4.3.8 Software complexity measures......Page 95
4.5 Software integration strategy......Page 99
4.6.1 Technical organization plans......Page 100
4.6.2 Project plans......Page 102
5 Software Integrated Product and Process Development......Page 104
5.1 Application of IPPD to software......Page 107
5.1.2 Concurrent development of products and processes......Page 109
5.1.3 Early and continuous life-cycle planning......Page 111
5.1.4 Maximize flexibility for optimization and use of contractor unique approaches......Page 112
5.1.8 Empowerment......Page 113
5.2 Software engineering and development......Page 114
6 Impediments to Software Design......Page 118
6.1 Software as a raw material......Page 120
6.2 Evolution of software technologies......Page 123
6.2.1 Software development methods and standards......Page 126
6.2.2 Agile manifesto......Page 130
6.3 Architecture-driven software development......Page 133
2 Software Engineering Practices......Page 138
Software architectural approaches......Page 141
Iterative software engineering application......Page 142
7 Understanding Software Requirements......Page 146
7.1 Step 1: Soliciting stakeholder needs and expectations......Page 149
7.2 Step 2: Requirement analysis and specification......Page 152
7.2.2 Maintaining the scope of the project......Page 154
7.2.2.1 Cost associated with implementing the complete set of software requirements......Page 155
7.2.2.4 Software development timeline and task dependencies......Page 156
7.3 Step 3: Task definition and scheduling......Page 157
7.6 Step 6: Technical planning......Page 158
7.7 Step 7: Project planning......Page 159
7.8 Exploring stakeholder needs......Page 160
8 Software Requirements Analysis Practice......Page 164
8.1 Project analysis tasks......Page 165
8.1.1 Analyze project goals and objectives......Page 166
8.1.3 Solicit stakeholder needs and expectations......Page 167
8.2 Operational analysis tasks......Page 169
8.2.2 Identify operational scenarios......Page 170
8.2.3 Identify the computing environment characteristics......Page 171
8.3 Product analysis tasks......Page 172
8.3.2 Identify functional behaviors......Page 173
8.3.4 Identify data processing conditional logic......Page 175
8.3.6 Identify data security needs......Page 176
8.4.1 Identify post-development process operational concepts......Page 177
8.4.3 Identify post-development process characteristics......Page 178
8.4.4 Identify architectural guidelines and principles......Page 179
8.5.2 Identify the software test strategy......Page 180
8.5.3 Assess proposed changes......Page 181
8.6 Establish the requirements baseline......Page 182
9 Software Requirements Management......Page 184
9.1.1 Time is a valuable resource......Page 185
9.1.2 Change impact analysis......Page 187
9.1.3 Adjusting project milestones......Page 189
9.2 Specifying requirements......Page 191
9.3 Requirement decomposition and allocation......Page 193
9.3.2 Performance allocation......Page 194
9.4 Requirement traceability......Page 195
9.4.1 Change control......Page 196
9.4.2 Configuration audits......Page 197
10 Formulating the Functional Architecture......Page 198
10.1 Motivation for the functional architecture......Page 199
10.2.1 Functional component......Page 201
10.2.4 Functional interface......Page 202
10.2.7 Resource......Page 203
10.3 Conceiving the functional architecture......Page 204
10.4.1 Functional hierarchy......Page 206
10.4.2 Behavior model......Page 207
10.4.4 Resource utilization profile......Page 208
10.4.6 Requirement allocation sheet......Page 209
11 Functional Analysis and Allocation Practice......Page 210
11.1 Assess functional complexity......Page 212
11.2 Behavioral analysis......Page 214
11.2.2 Identify functional sequences......Page 215
11.2.3 Identify data flows......Page 216
11.2.4 Identify control behaviors......Page 217
11.2.5 Identify data processing procedures......Page 218
11.2.7 Identify failure conditions......Page 219
11.2.8 Identify systems monitoring procedures......Page 221
11.2.11 Identify data persistence and retention functions......Page 222
11.3 Performance allocation......Page 223
11.3.2 Allocate resource budgets......Page 224
11.5 Establish the functional architecture......Page 225
12 Configuring the Physical Architecture......Page 228
12.1 Structural design solution......Page 230
12.1.1 Designating structural units......Page 232
12.1.3 Establishing the software integration strategy......Page 234
12.2.1 Structural design guidelines......Page 236
12.2.2 Use of modeling and simulation......Page 240
12.2.3 Behavioral analysis......Page 241
12.2.5.1 Design responsiveness......Page 242
12.2.5.2 Design dependability......Page 244
12.2.5.3 Resource utilization......Page 245
12.2.6 Software prototyping......Page 247
13 Software Design Synthesis Practice......Page 252
13.1.1 Establish software architectural design guidelines......Page 255
13.1.3 Identify abstract user interface mechanisms......Page 258
13.2.1 Identify fundamental structural elements......Page 260
13.2.3 Assess software reuse opportunities......Page 261
13.3.1 Establish performance benchmarks......Page 263
13.3.2 Identify structural design deficiencies......Page 264
13.3.3 Assess architectural alternatives......Page 265
13.3.4 Assess software implementation challenges......Page 266
13.3.6 Assess architectural integrity......Page 267
13.5 Prepare the software technical data package......Page 269
14 Software Analysis Practice......Page 272
14.1.2 Identify the candidate alternatives......Page 275
14.2 Establish the trade-study environment......Page 276
14.2.1 Assemble the experimental mechanisms......Page 277
14.2.2 Assemble the data collection and analysis mechanisms......Page 278
14.3 Conduct the analysis......Page 280
14.3.2 Evaluate functional alternatives......Page 281
14.3.3 Evaluate structural alternatives......Page 282
14.4.2 Assess project implications......Page 283
14.5.1 Prioritize architectural alternatives......Page 284
14.5.2 Determine the preferred course of action......Page 285
14.5.4 Promote the execution strategy......Page 286
15 Software Verification and Validation Practice......Page 288
15.1 Define the V&V strategy......Page 290
15.1.1 Establish V&V scope......Page 291
15.1.3 Establish V&V procedures......Page 295
15.2.3 Verify the physical architecture......Page 296
15.3.2 Validate the integrated software configuration......Page 297
15.4 Document V&V results......Page 298
16 Software Control Practice......Page 300
16.1.1 Identify architectural elements......Page 302
16.1.2 Maintain architectural status......Page 303
16.2.2 Prepare change evaluation packages......Page 304
16.3.1 Assess change technical merits......Page 306
16.3.3 Assess technical work package consequences......Page 307
16.4.1 Publish change notification package......Page 308
16.5 Software repository control......Page 309
16.5.3 Maintain technical risk repository......Page 310
3 Stages of Software Engineering Application......Page 312
17 Software Requirements Definition......Page 316
17.1 Products of software requirements definition......Page 317
17.2 Software engineering integrated product team (software requirements definition stage)......Page 320
17.3 Software implementation (software requirements definition stage)......Page 323
17.5 Post-development process implementation (software requirements definition stage)......Page 324
17.6 Software test and evaluation (software requirements definition stage)......Page 325
17.7 Reviews, milestones, and baselines (software requirements definition stage)......Page 326
18 Software Architecture Definition......Page 330
18.1.1 Products of preliminary architecture definition......Page 332
18.1.2 Software engineering integrated product team (preliminary architecture definition stage)......Page 334
18.1.4 Computing environment preparation (preliminary architecture definition stage)......Page 336
18.1.6 Software test and evaluation (preliminary architecture definition stage)......Page 337
18.1.7 Reviews and milestones (preliminary architecture definition stage)......Page 339
18.2.1 Products of detailed architecture definition......Page 340
18.2.2 Software engineering integrated product team (detailed architecture definition stage)......Page 342
18.2.3 Software implementation (detailed architecture definition stage)......Page 343
18.2.5 Post-development process preparation (detailed architecture definition stage)......Page 344
18.2.6 Software test and evaluation (detailed architecture definition stage)......Page 345
18.2.7 Reviews and milestones (detailed architecture definition stage)......Page 346
18.2.8 Establish the allocated baseline......Page 347
19 Software Implementation......Page 348
19.1 Products of software implementation......Page 350
19.3 Software implementation tasks (software implementation stage)......Page 352
19.5 Post-development process tasks (software implementation stage)......Page 354
19.6 Software test and evaluation tasks (software implementation stage)......Page 355
19.7 Reviews and milestones (software implementation stage)......Page 357
20 Software Acceptance Testing......Page 360
20.1 Products of software acceptance testing......Page 361
20.2 Software engineering (software acceptance testing stage)......Page 362
20.3 Software implementation organization (software acceptance testing stage)......Page 363
20.6 Software test and evaluation (software acceptance testing stage)......Page 364
20.7 Reviews and milestones (software acceptance testing stage)......Page 365
20.8 Establish the software product baseline......Page 366
Index......Page 368