28,99 €
A complete introduction to building robust and reliable software Beginning Software Engineering demystifies the software engineering methodologies and techniques that professional developers use to design and build robust, efficient, and consistently reliable software. Free of jargon and assuming no previous programming, development, or management experience, this accessible guide explains important concepts and techniques that can be applied to any programming language. Each chapter ends with exercises that let you test your understanding and help you elaborate on the chapter's main concepts. Everything you need to understand waterfall, Sashimi, agile, RAD, Scrum, Kanban, Extreme Programming, and many other development models is inside! * Describes in plain English what software engineering is * Explains the roles and responsibilities of team members working on a software engineering project * Outlines key phases that any software engineering effort must handle to produce applications that are powerful and dependable * Details the most popular software development methodologies and explains the different ways they handle critical development tasks * Incorporates exercises that expand upon each chapter's main ideas * Includes an extensive glossary of software engineering terms
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 883
Veröffentlichungsjahr: 2015
INTRODUCTION
WHAT IS SOFTWARE ENGINEERING?
WHY IS SOFTWARE ENGINEERING IMPORTANT?
WHO SHOULD READ THIS BOOK?
APPROACH
WHAT THIS BOOK COVERS (AND WHAT IT DOESN'T)
WHAT TOOLS DO YOU NEED?
CONVENTIONS
ERRATA
IMPORTANT URLS
CONTACTING THE AUTHOR
DISCLAIMER
PART I SOFTWARE ENGINEERING STEP-BY-STEP
CHAPTER 1 SOFTWARE ENGINEERING FROM 20,000 FEET
REQUIREMENTS GATHERING
HIGH-LEVEL DESIGN
LOW-LEVEL DESIGN
DEVELOPMENT
TESTING
DEPLOYMENT
MAINTENANCE
WRAP-UP
EVERYTHING ALL AT ONCE
SUMMARY
CHAPTER 2 BEFORE THE BEGINNING
DOCUMENT MANAGEMENT
HISTORICAL DOCUMENTS
CODE
CODE DOCUMENTATION
APPLICATION DOCUMENTATION
SUMMARY
CHAPTER 3 PROJECT MANAGEMENT
EXECUTIVE SUPPORT
PROJECT MANAGEMENT
SUMMARY
CHAPTER 4 REQUIREMENT GATHERING
REQUIREMENTS DEFINED
REQUIREMENT CATEGORIES
GATHERING REQUIREMENTS
REFINING REQUIREMENTS
RECORDING REQUIREMENTS
VALIDATION AND VERIFICATION
CHANGING REQUIREMENTS
SUMMARY
CHAPTER 5 HIGH-LEVEL DESIGN
THE BIG PICTURE
WHAT TO SPECIFY
UML
SUMMARY
CHAPTER 6 LOW-LEVEL DESIGN
OO DESIGN
DATABASE DESIGN
SUMMARY
CHAPTER 7 DEVELOPMENT
USE THE RIGHT TOOLS
SELECTING ALGORITHMS
TOP-DOWN DESIGN
PROGRAMMING TIPS AND TRICKS
SUMMARY
CHAPTER 8 TESTING
TESTING GOALS
REASONS BUGS NEVER DIE
LEVELS OF TESTING
TESTING TECHNIQUES
TESTING HABITS
HOW TO FIX A BUG
ESTIMATING NUMBER OF BUGS
SUMMARY
CHAPTER 9 DEPLOYMENT
SCOPE
THE PLAN
CUTOVER
DEPLOYMENT TASKS
DEPLOYMENT MISTAKES
SUMMARY
CHAPTER 10 METRICS
WRAP PARTY
DEFECT ANALYSIS
SOFTWARE METRICS
SUMMARY
CHAPTER 11 MAINTENANCE
MAINTENANCE COSTS
TASK CATEGORIES
TASK EXECUTION
SUMMARY
PART II PROCESS MODELS
CHAPTER 12 PREDICTIVE MODELS
MODEL APPROACHES
PREREQUISITES
PREDICTIVE AND ADAPTIVE
WATERFALL
WATERFALL WITH FEEDBACK
SASHIMI
INCREMENTAL WATERFALL
V-MODEL
SYSTEMS DEVELOPMENT LIFE CYCLE
SUMMARY
CHAPTER 13 ITERATIVE MODELS
ITERATIVE VERSUS PREDICTIVE
ITERATIVE VERSUS INCREMENTAL
PROTOTYPES
SPIRAL
UNIFIED PROCESS
CLEANROOM
SUMMARY
CHAPTER 14 RAD
RAD PRINCIPLES
JAMES MARTIN RAD
AGILE
XP
SCRUM
LEAN
CRYSTAL
FEATURE-DRIVEN DEVELOPMENT
AGILE UNIFIED PROCESS
DISCIPLINED AGILE DELIVERY
DYNAMIC SYSTEMS DEVELOPMENT METHOD
KANBAN
SUMMARY
APPENDIX SOLUTIONS TO EXERCISES
GLOSSARY
TITLE PAGE
COPYRIGHT
ABOUT THE AUTHOR
ABOUT THE TECHNICAL EDITOR
CREDITS
ACKNOWLEDGMENTS
ADVERT
EULA
Chapter 3
Table 3.1
Table 3.2
Chapter 5
Table 5.1
Table 5.2
Table 5.3
Table 5.4
Chapter 6
Table 6.1
Table 6.2
Table 6.3
Table 6.4
Table 6.5
Table 6.6
Chapter 7
Table 7.1
Chapter 10
Table 10.1
Table 10.2
Table 10.3
Table 10.4
Table 10.5
Table 10.6
Table 10.7
Chapter 14
Table 14.1
Table 14.2
Table 14.3
Appendix
Table A.1
Table A.2
Table A.3
Table A.4
Table A.5
Table A.6
Cover
Table of Contents
Part
xxi
xxii
xxiii
xxiv
xxv
xxvi
xxvii
xxviii
xxix
1
2
3
5
6
7
8
9
10
11
12
15
17
18
19
20
21
22
23
24
25
26
28
29
30
31
32
33
34
35
36
37
39
40
41
42
43
44
45
46
47
48
49
50
51
53
54
55
57
58
59
60
61
62
63
65
66
67
68
69
71
72
73
74
75
76
77
78
79
81
82
83
84
87
89
90
91
92
93
96
97
98
99
100
103
106
107
108
109
111
112
113
114
115
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
135
136
137
138
139
141
143
144
145
146
148
149
150
151
152
154
155
156
157
158
159
160
161
162
164
165
166
168
169
170
173
174
175
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
195
196
198
200
201
203
204
205
206
207
208
210
211
212
213
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
233
234
235
236
237
238
239
241
242
243
245
246
247
248
249
250
251
252
253
255
257
259
260
263
265
266
268
269
270
271
272
273
275
276
277
278
279
281
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
300
303
304
305
306
307
310
311
312
313
314
315
316
318
320
321
322
323
324
325
326
327
328
329
330
331
333
334
335
336
337
338
339
341
342
343
344
345
347
348
349
350
351
352
354
355
356
358
359
361
362
363
364
366
368
369
370
371
372
373
376
377
378
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
CHAPTER 1: Software Engineering from 20,000 Feet
CHAPTER 2: Before the Beginning
CHAPTER 3: Project Management
CHAPTER 4: Requirement Gathering
CHAPTER 5: High-Level Design
CHAPTER 6: Low-Level Design
CHAPTER 7: Development
CHAPTER 8: Testing
CHAPTER 9: Deployment
CHAPTER 10: Metrics
CHAPTER 11: Maintenance
Software and cathedrals are much the same. First we build them, then we pray.
—SAMUEL REDWINE
In principle, software engineering is a simple two-step process: (1) Write a best-selling program, and then (2) buy expensive toys with the profits. Unfortunately, the first step can be rather difficult. Saying “write a best-selling program” is a bit like telling an author, “Write a best-selling book,” or telling a baseball player “triple to left.” It’s a great idea, but knowing the goal doesn’t actually help you achieve it.
To produce great software, you need to handle a huge number of complicated tasks, any one of which can fail and sink the entire project. Over the years people have developed a multitude of methodologies and techniques to help keep software projects on track. Some of these, such as the waterfall and V-model approaches, use detailed requirement specifications to exactly define the wanted results before development begins. Others, such as Scrum and agile techniques, rely on fast-paced incremental development with frequent feedback to keep a project on track. (Still others techniques, such as cowboy coding and extreme programming, sound more like action adventure films than software development techniques.)
Different development methodologies use different approaches, but they all perform roughly the same tasks. They all determine what the software should do and how it should do it. They generate the software, remove bugs from the code (some of the bugs, at least), make sure the software does more or less what it should, and deploy the finished result.
NOTE I call these basic items “tasks” and not “stages” or “steps” because different software engineering approaches tackle them in different ways and at different times. Calling them “stages” or “steps” would probably be misleading because it would imply that all projects move through the stages in the same predictable order.
The chapters in the first part of this book describe those basic tasks that any successful software project must handle in some way. They explain the main steps in software development and describe some of the myriad ways a project can fail to handle those tasks. (The second part of the book explains how different approaches such as waterfall and agile handle those tasks.)
The first chapter in this part of the book provides an overview of software development from a high level. The subsequent chapters explain the pieces of the development process in greater detail.