Beginning Software Engineering - Rod Stephens - E-Book

Beginning Software Engineering E-Book

Rod Stephens

4,9
28,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.
Mehr erfahren.
Beschreibung

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:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 883

Veröffentlichungsjahr: 2015

Bewertungen
4,9 (16 Bewertungen)
14
2
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



CONTENTS

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

E-MAIL

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

List of Tables

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

Guide

Cover

Table of Contents

Part

Pages

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

PART ISoftware Engineering Step-by-Step

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.