Description

Book Synopsis

Discover the foundations of software engineering with this easy and intuitive guide

In the newly updated second edition of Beginning Software Engineering, expert programmer and tech educator Rod Stephens delivers an instructive and intuitive introduction to the fundamentals of software engineering. In the book, you'll learn to create well-constructed software applications that meet the needs of users while developing the practical, hands-on skills needed to build robust, efficient, and reliable software.

The author skips the unnecessary jargon and sticks to simple and straightforward English to help you understand the concepts and ideas discussed within. He also offers you real-world tested methods you can apply to any programming language.

You'll also get:

  • Practical tips for preparing for programming job interviews, which often include questions about software engineering practices
  • A no-nonsense guide to requirements gathering, system modeli

    Table of Contents

    Introduction xxvii

    Part I: Software Engineering Step- By- Step

    Chapter 1: Software Engineering From 20,000 Feet 3

    Requirements Gathering 4

    High- Level Design 5

    Low- Level Design 6

    Development 6

    Testing 7

    Deployment 9

    Maintenance 10

    Wrap- Up 10

    Everything All at Once 11

    Summary 12

    What You Learned in This Chapter 13

    Chapter 2: Before the Beginning 15

    Document Management 16

    Historical Documents 19

    Email 19

    Code 22

    Code Documentation 22

    Application Documentation 25

    Summary 26

    What You Learned in This Chapter 27

    Chapter 3: the Team 29

    Team Features 30

    Clear Roles 30

    Effective Leadership 30

    Clear Goals 31

    Consensus 32

    Open Communication 32

    Support for Risk- Taking 33

    Shared Accountability 33

    Informal Atmosphere 34

    Trust 34

    Team Roles 34

    Common Roles 35

    More- Specialized Roles 36

    Informal Roles 36

    Roles Wrap- Up 37

    Team Culture 37

    Interviews 40

    Interview Puzzles 40

    The Bottom Line 41

    Physical Environment 41

    Creativity 41

    Office Space 43

    Ergonomics 43

    Work- Life Balance 45

    Collaboration Software 46

    Searching 46

    Overload 47

    Outsourcing 47

    Summary 48

    What You Learned in This Chapter 50

    Chapter 4: Project Management 53

    Executive Support 54

    Project Management 56

    PERT Charts 57

    Critical Path Methods 62

    Gantt Charts 65

    Scheduling Software 67

    Predicting Times 68

    Get Experience 69

    Break Unknown Tasks into Simpler Pieces 70

    Look for Similarities 71

    Expect the Unexpected 71

    Track Progress 73

    Risk Management 74

    Summary 76

    What You Learned in This Chapter 79

    Chapter 5: Requirements Gathering 81

    Requirements Defined 82

    Clear 82

    Unambiguous 83

    Consistent 84

    Prioritized 84

    Verifiable 88

    Words to Avoid 89

    Requirement Categories 89

    Audience- Oriented Requirements 90

    Business Requirements 90

    User Requirements 90

    Functional Requirements 91

    Nonfunctional Requirements 92

    Implementation Requirements 92

    FURPS 92

    FURPS+ 93

    Common Requirements 96

    Gathering Requirements 96

    Listen to Customers (and Users) 97

    Use the Five Ws (and One H) 98

    Who 98

    What 98

    When 98

    Where 98

    Why 99

    How 99

    Study Users 99

    Refining Requirements 100

    Copy Existing Systems 101

    Clairvoyance 102

    Brainstorm 103

    Recording Requirements 106

    UML 107

    User Stories 107

    Use Cases 108

    Prototypes 108

    Requirements Specification 109

    Validation and Verification 110

    Changing Requirements 110

    Digital Transformation 111

    What to Digitize 111

    How to Digitize 112

    Summary 113

    What You Learned in This Chapter 116

    Chapter 6: High- Level Design 117

    The Big Picture 118

    What to Specify 119

    Security 119

    Hardware 120

    User Interface 121

    Internal Interfaces 122

    External Interfaces 123

    Architecture 124

    Monolithic 124

    Client/Server 125

    Component- Based 127

    Service- Oriented 128

    Data- Centric 130

    Event- Driven 130

    Rule- Based 130

    Distributed 131

    MIX and Match 132

    Reports 133

    Other Outputs 134

    Database 135

    Audit Trails 136

    User Access 136

    Database Maintenance 137

    NoSQL 137

    Cloud Databases 138

    Configuration Data 138

    Data Flows and States 139

    Training 139

    UML 141

    Structure Diagrams 142

    Behavior Diagrams 145

    Activity Diagrams 145

    Use Case Diagram 146

    State Machine Diagram 147

    Interaction Diagrams 148

    Sequence Diagram 148

    Communication Diagram 150

    Timing Diagram 150

    Interaction Overview Diagram 151

    UML Summary 151

    Summary 151

    What You Learned in This Chapter 152

    Chapter 7: Low- Level Design 155

    Design Approaches 156

    Design- to- Schedule 157

    Design- to- Tools 158

    Process- Oriented Design 158

    Data- Oriented Design 159

    Object- Oriented Design 159

    Hybrid Approaches 159

    High, Low, and Iterative Design 160

    OO Design 160

    Identifying Classes 161

    Building Inheritance Hierarchies 162

    Refinement 163

    Generalization 165

    Hierarchy Warning Signs 167

    Object Composition 167

    Database Design 168

    Relational Databases 168

    First Normal Form 170

    Second Normal Form 174

    Third Normal Form 176

    Higher Levels of Normalization 179

    When to Optimize 180

    Summary 180

    What You Learned in This Chapter 182

    Chapter 8: Security Design 185

    Security Goals 186

    Security Types 186

    Cybersecurity 188

    Shift- Left Security 189

    Malware Menagerie 189

    Phishing and Spoofing 193

    Social Engineering Attacks 195

    Crapware 197

    Password Attacks 198

    User Access 201

    Countermeasures 201

    Cyber Insurance 202

    Summary 203

    What You Learned in This Chapter 207

    Chapter 9: User Experience Design 209

    Design Mindset 210

    UI vs. UX 210

    UX Designers 211

    Platform 212

    User Skill Level 214

    Beginners and Beyond 216

    Configuration 217

    Hidden Configuration 218

    Models 219

    Metaphors and Idioms 220

    Case Study: Microsoft Word 221

    Design Guidelines 225

    Allow Exploration 225

    Make the Interface Immutable 227

    Support Commensurate Difficulty 227

    Avoid State 228

    Make Similar Things Similar 228

    Provide Redundant Commands 230

    Do the Right Thing 231

    Show Qualitative Data, Explain Quantitative Data 232

    Give Forms Purpose 232

    Gather All Information at Once 233

    Provide Reasonable Performance 234

    Only Allow What’s Right 235

    Flag Mistakes 235

    Form Design 236

    Use Standard Controls 236

    Decorating 237

    Displaying 237

    Arranging 237

    Commanding 238

    Selecting 238

    Entering 239

    Display Five Things 240

    Arrange Controls Nicely 241

    Summary 241

    What You Learned in This Chapter 242

    Chapter 10: Programming 245

    Tools 246

    Hardware 246

    Network 247

    Development Environment 248

    Source Code Control 249

    Profilers 249

    Static Analysis Tools 249

    Testing Tools 249

    Source Code Formatters 250

    Refactoring Tools 250

    Training 250

    Collaboration Tools 250

    Algorithms 251

    Top- Down Design 252

    Programming Tips and Tricks 255

    Be Alert 255

    Write for People, Not the Computer 255

    Comment First 256

    Write Self- Documenting Code 259

    Keep It Small 259

    Stay Focused 261

    Avoid Side Effects 261

    Validate Results 262

    Practice Offensive Programming 264

    Use Exceptions 266

    Write Exception Handlers First 266

    Don’t Repeat Code 267

    Defer Optimization 267

    Summary 269

    What You Learned in This Chapter 270

    Chapter 11: Algorithms 273

    Algorithm Study 274

    Algorithmic Approaches 275

    Decision Trees 275

    Knapsack 275

    The Eight Queens Problem 276

    Exhaustive Search 277

    Backtracking 278

    Pruning Trees 279

    Branch and Bound 279

    Heuristics 280

    Greedy 281

    Divide and Conquer 282

    Recursion 283

    Dynamic Programming 285

    Caching 287

    Randomization 287

    Monte Carlo Algorithms 287

    Las Vegas Algorithms 288

    Atlantic City Algorithms 289

    State Diagrams 289

    Design Patterns 290

    Creational Patterns 291

    Structural Patterns 291

    Behavioral Patterns 292

    Design Pattern Summary 293

    Parallel Programming 293

    Artificial Intelligence 295

    Definitions 295

    Learning Systems 296

    Natural Language Processing 297

    Artificial Neural Network 297

    Deep Learning 297

    Expert System 298

    Artificial General Intelligence 298

    Algorithm Characteristics 301

    Summary 302

    What You Learned in This Chapter 304

    Chapter 12: Programming Languages 307

    The Myth of Picking a Language 308

    Language Generations 311

    First Generation 311

    Second Generation 311

    Third Generation (3GL) 312

    Fourth Generation 313

    Fifth Generation 314

    Sixth Generation 314

    IDEs 315

    Language Families 316

    Assembly 316

    Imperative 317

    Procedural 317

    Declarative 318

    Object- Oriented 318

    Functional 319

    Specialized 319

    Language Family Summary 319

    The Best Language 319

    Summary 323

    What You Learned in This Chapter 324

    Chapter 13: Testing 327

    Testing Goals 329

    Reasons Bugs Never Die 330

    Diminishing Returns 330

    Deadlines 330

    Consequences 330

    It’s Too Soon 330

    Usefulness 331

    Obsolescence 331

    It’s Not a Bug 331

    It Never Ends 332

    It’s Better Than Nothing 333

    Fixing Bugs Is Dangerous 333

    Which Bugs to Fix 334

    Levels of Testing 334

    Unit Testing 335

    Integration Testing 336

    Regression Testing 337

    Automated Testing 337

    Component Interface Testing 338

    System Testing 339

    Acceptance Testing 340

    Other Testing Categories 341

    Testing Techniques 342

    Exhaustive Testing 342

    Black- Box Testing 343

    White- Box Testing 344

    Gray- Box Testing 344

    Testing Habits 345

    Test and Debug When Alert 345

    Test Your Own Code 346

    Have Someone Else Test Your Code 346

    Fix Your Own Bugs 348

    Think Before You Change 349

    Don’t Believe in Magic 349

    See What Changed 350

    Fix Bugs, Not Symptoms 350

    Test Your Tests 350

    How to Fix a Bug 351

    Estimating Number of Bugs 351

    Tracking Bugs Found 352

    Seeding 353

    The Lincoln Index 353

    Summary 355

    What You Learned in This Chapter 357

    Chapter 14: Deployment 359

    Scope 360

    The Plan 361

    Cutover 362

    Staged Deployment 362

    Gradual Cutover 363

    Incremental Deployment 365

    Parallel Testing 365

    Deployment Tasks 365

    Deployment Mistakes 366

    Summary 368

    What You Learned in This Chapter 370

    Chapter 15: Metrics 371

    Wrap Party 372

    Defect Analysis 372

    Species of Bugs 373

    Discoverer 373

    Severity 374

    Creation Time 374

    Age at Fix 374

    Task Type 375

    Defect Database 376

    Ishikawa Diagrams 376

    Software Metrics 379

    Qualities of Good Attributes and Metrics 381

    Using Metrics 382

    Process Metrics 384

    Project Metrics 384

    Things to Measure 385

    Size Normalization 387

    Function Point Normalization 389

    Count Function Point Metrics 390

    Multiply by Complexity Factors 391

    Calculate Complexity Adjustment Value 392

    Calculate Adjusted FP 394

    Summary 395

    What You Learned in This Chapter 398

    Chapter 16: Maintenance 401

    Maintenance Costs 402

    Task Categories 404

    Perfective Tasks 404

    Feature Improvements 406

    New Features 406

    The Second System Effect 407

    Adaptive Tasks 408

    Corrective Tasks 410

    Preventive Tasks 414

    Clarification 414

    Code Reuse 415

    Improved Flexibility 416

    Bug Swarms 417

    Bad Programming Practices 417

    Individual Bugs 418

    Not Invented Here 418

    Task Execution 419

    Summary 420

    What You Learned in This Chapter 423

    Part II: Process Models

    Chapter 17: Predictive Models 427

    Model Approaches 428

    Prerequisites 428

    Predictive and Adaptive 429

    Success and Failure Indicators for Predictive Models 430

    Advantages and Disadvantages of Predictive Models 431

    Waterfall 432

    Waterfall with Feedback 433

    Sashimi 434

    Incremental Waterfall 436

    V- model 438

    Software Development Life Cycle 439

    Summary 442

    What You Learned in This Chapter 444

    Chapter 18: Iterative Models 445

    Iterative vs. Predictive 446

    Iterative vs. Incremental 448

    Prototypes 449

    Types of Prototypes 451

    Pros and Cons 451

    Spiral 453

    Clarifications 455

    Pros and Cons 456

    Unified Process 457

    Pros and Cons 459

    Rational Unified Process 459

    Cleanroom 460

    Cowboy Coding 461

    Summary 461

    What You Learned in This Chapter 463

    Chapter 19: Rad 465

    RAD Principles 467

    James Martin RAD 470

    Agile 471

    Self- Organizing Teams 473

    Agile Techniques 474

    Communication 474

    Incremental Development 475

    Focus on Quality 478

    XP 478

    XP Roles 479

    XP Values 480

    XP Practices 481

    Have a Customer On-Site 481

    Play the Planning Game 482

    Use Stand- Up Meetings 483

    Make Frequent Small Releases 483

    Use Intuitive Metaphors 484

    Keep Designs Simple 484

    Defer Optimization 484

    Refactor When Necessary 485

    Give Everyone Ownership of the Code 485

    Use Coding Standards 486

    Promote Generalization 486

    Use Pair Programming 486

    Test Constantly 486

    Integrate Continuously 486

    Work Sustainably 487

    Use Test- Driven and Test- First Development 487

    Scrum 488

    Scrum Roles 489

    Scrum Sprints 490

    Planning Poker 491

    Burndown 492

    Velocity 494

    Lean 494

    Lean Principles 494

    Crystal 495

    Crystal Clear 498

    Crystal Yellow 498

    Crystal Orange 499

    Feature- Driven Development 500

    FDD Roles 501

    FDD Phases 502

    Develop a Model 502

    Build a Feature List 502

    Plan by Feature 503

    Design by Feature 503

    Build by Feature 504

    FDD Iteration Milestones 504

    Disciplined Agile Delivery 506

    DAD Principles 506

    DAD Roles 506

    DAD Phases 507

    Dynamic Systems Development Method 508

    DSDM Phases 508

    DSDM Principles 510

    DSDM Roles 511

    Kanban 512

    Kanban Principles 513

    Kanban Practices 513

    Kanban Board 514

    Summary 515

    What You Learned in This Chapter 517

    Part III: Advanced Topics

    Chapter 20: Software Ethics 523

    Ethical Behavior 524

    IEEE- CS/ACM 524

    ACS 525

    CPSR 526

    Business Ethics 527

    Nada 528

    Hacker Ethics 529

    Hacker Terms 530

    Responsibility 531

    Gray Areas 533

    Software Engineering Dilemmas 535

    Misusing Data and the Temptation of Free Data 535

    Disruptive Technology 536

    Algorithmic Bias 537

    False Confidence 537

    Lack of Oversight 538

    Getting Paid 539

    Thought Experiments 539

    The Tunnel Problem 540

    The Trolley Problem 542

    Summary 544

    What You Learned in This Chapter 545

    Chapter 21: Future Trends 547

    Security 548

    UX/UI 549

    Code Packaging 550

    Cloud Technology 551

    Software Development 552

    Algorithms 553

    Tech Toys 554

    Summary 555

    What You Learned in This Chapter 556

    Appendix: Solutions to Exercises 559

    Glossary 631
    Index 663

Beginning Software Engineering

Product form

£34.00

Includes FREE delivery

RRP £42.50 – you save £8.50 (20%)

Order before 4pm today for delivery by Wed 31 Dec 2025.

A Paperback / softback by Rod Stephens

15 in stock


    View other formats and editions of Beginning Software Engineering by Rod Stephens

    Publisher: John Wiley & Sons Inc
    Publication Date: 22/11/2022
    ISBN13: 9781119901709, 978-1119901709
    ISBN10: 1119901707

    Description

    Book Synopsis

    Discover the foundations of software engineering with this easy and intuitive guide

    In the newly updated second edition of Beginning Software Engineering, expert programmer and tech educator Rod Stephens delivers an instructive and intuitive introduction to the fundamentals of software engineering. In the book, you'll learn to create well-constructed software applications that meet the needs of users while developing the practical, hands-on skills needed to build robust, efficient, and reliable software.

    The author skips the unnecessary jargon and sticks to simple and straightforward English to help you understand the concepts and ideas discussed within. He also offers you real-world tested methods you can apply to any programming language.

    You'll also get:

    • Practical tips for preparing for programming job interviews, which often include questions about software engineering practices
    • A no-nonsense guide to requirements gathering, system modeli

      Table of Contents

      Introduction xxvii

      Part I: Software Engineering Step- By- Step

      Chapter 1: Software Engineering From 20,000 Feet 3

      Requirements Gathering 4

      High- Level Design 5

      Low- Level Design 6

      Development 6

      Testing 7

      Deployment 9

      Maintenance 10

      Wrap- Up 10

      Everything All at Once 11

      Summary 12

      What You Learned in This Chapter 13

      Chapter 2: Before the Beginning 15

      Document Management 16

      Historical Documents 19

      Email 19

      Code 22

      Code Documentation 22

      Application Documentation 25

      Summary 26

      What You Learned in This Chapter 27

      Chapter 3: the Team 29

      Team Features 30

      Clear Roles 30

      Effective Leadership 30

      Clear Goals 31

      Consensus 32

      Open Communication 32

      Support for Risk- Taking 33

      Shared Accountability 33

      Informal Atmosphere 34

      Trust 34

      Team Roles 34

      Common Roles 35

      More- Specialized Roles 36

      Informal Roles 36

      Roles Wrap- Up 37

      Team Culture 37

      Interviews 40

      Interview Puzzles 40

      The Bottom Line 41

      Physical Environment 41

      Creativity 41

      Office Space 43

      Ergonomics 43

      Work- Life Balance 45

      Collaboration Software 46

      Searching 46

      Overload 47

      Outsourcing 47

      Summary 48

      What You Learned in This Chapter 50

      Chapter 4: Project Management 53

      Executive Support 54

      Project Management 56

      PERT Charts 57

      Critical Path Methods 62

      Gantt Charts 65

      Scheduling Software 67

      Predicting Times 68

      Get Experience 69

      Break Unknown Tasks into Simpler Pieces 70

      Look for Similarities 71

      Expect the Unexpected 71

      Track Progress 73

      Risk Management 74

      Summary 76

      What You Learned in This Chapter 79

      Chapter 5: Requirements Gathering 81

      Requirements Defined 82

      Clear 82

      Unambiguous 83

      Consistent 84

      Prioritized 84

      Verifiable 88

      Words to Avoid 89

      Requirement Categories 89

      Audience- Oriented Requirements 90

      Business Requirements 90

      User Requirements 90

      Functional Requirements 91

      Nonfunctional Requirements 92

      Implementation Requirements 92

      FURPS 92

      FURPS+ 93

      Common Requirements 96

      Gathering Requirements 96

      Listen to Customers (and Users) 97

      Use the Five Ws (and One H) 98

      Who 98

      What 98

      When 98

      Where 98

      Why 99

      How 99

      Study Users 99

      Refining Requirements 100

      Copy Existing Systems 101

      Clairvoyance 102

      Brainstorm 103

      Recording Requirements 106

      UML 107

      User Stories 107

      Use Cases 108

      Prototypes 108

      Requirements Specification 109

      Validation and Verification 110

      Changing Requirements 110

      Digital Transformation 111

      What to Digitize 111

      How to Digitize 112

      Summary 113

      What You Learned in This Chapter 116

      Chapter 6: High- Level Design 117

      The Big Picture 118

      What to Specify 119

      Security 119

      Hardware 120

      User Interface 121

      Internal Interfaces 122

      External Interfaces 123

      Architecture 124

      Monolithic 124

      Client/Server 125

      Component- Based 127

      Service- Oriented 128

      Data- Centric 130

      Event- Driven 130

      Rule- Based 130

      Distributed 131

      MIX and Match 132

      Reports 133

      Other Outputs 134

      Database 135

      Audit Trails 136

      User Access 136

      Database Maintenance 137

      NoSQL 137

      Cloud Databases 138

      Configuration Data 138

      Data Flows and States 139

      Training 139

      UML 141

      Structure Diagrams 142

      Behavior Diagrams 145

      Activity Diagrams 145

      Use Case Diagram 146

      State Machine Diagram 147

      Interaction Diagrams 148

      Sequence Diagram 148

      Communication Diagram 150

      Timing Diagram 150

      Interaction Overview Diagram 151

      UML Summary 151

      Summary 151

      What You Learned in This Chapter 152

      Chapter 7: Low- Level Design 155

      Design Approaches 156

      Design- to- Schedule 157

      Design- to- Tools 158

      Process- Oriented Design 158

      Data- Oriented Design 159

      Object- Oriented Design 159

      Hybrid Approaches 159

      High, Low, and Iterative Design 160

      OO Design 160

      Identifying Classes 161

      Building Inheritance Hierarchies 162

      Refinement 163

      Generalization 165

      Hierarchy Warning Signs 167

      Object Composition 167

      Database Design 168

      Relational Databases 168

      First Normal Form 170

      Second Normal Form 174

      Third Normal Form 176

      Higher Levels of Normalization 179

      When to Optimize 180

      Summary 180

      What You Learned in This Chapter 182

      Chapter 8: Security Design 185

      Security Goals 186

      Security Types 186

      Cybersecurity 188

      Shift- Left Security 189

      Malware Menagerie 189

      Phishing and Spoofing 193

      Social Engineering Attacks 195

      Crapware 197

      Password Attacks 198

      User Access 201

      Countermeasures 201

      Cyber Insurance 202

      Summary 203

      What You Learned in This Chapter 207

      Chapter 9: User Experience Design 209

      Design Mindset 210

      UI vs. UX 210

      UX Designers 211

      Platform 212

      User Skill Level 214

      Beginners and Beyond 216

      Configuration 217

      Hidden Configuration 218

      Models 219

      Metaphors and Idioms 220

      Case Study: Microsoft Word 221

      Design Guidelines 225

      Allow Exploration 225

      Make the Interface Immutable 227

      Support Commensurate Difficulty 227

      Avoid State 228

      Make Similar Things Similar 228

      Provide Redundant Commands 230

      Do the Right Thing 231

      Show Qualitative Data, Explain Quantitative Data 232

      Give Forms Purpose 232

      Gather All Information at Once 233

      Provide Reasonable Performance 234

      Only Allow What’s Right 235

      Flag Mistakes 235

      Form Design 236

      Use Standard Controls 236

      Decorating 237

      Displaying 237

      Arranging 237

      Commanding 238

      Selecting 238

      Entering 239

      Display Five Things 240

      Arrange Controls Nicely 241

      Summary 241

      What You Learned in This Chapter 242

      Chapter 10: Programming 245

      Tools 246

      Hardware 246

      Network 247

      Development Environment 248

      Source Code Control 249

      Profilers 249

      Static Analysis Tools 249

      Testing Tools 249

      Source Code Formatters 250

      Refactoring Tools 250

      Training 250

      Collaboration Tools 250

      Algorithms 251

      Top- Down Design 252

      Programming Tips and Tricks 255

      Be Alert 255

      Write for People, Not the Computer 255

      Comment First 256

      Write Self- Documenting Code 259

      Keep It Small 259

      Stay Focused 261

      Avoid Side Effects 261

      Validate Results 262

      Practice Offensive Programming 264

      Use Exceptions 266

      Write Exception Handlers First 266

      Don’t Repeat Code 267

      Defer Optimization 267

      Summary 269

      What You Learned in This Chapter 270

      Chapter 11: Algorithms 273

      Algorithm Study 274

      Algorithmic Approaches 275

      Decision Trees 275

      Knapsack 275

      The Eight Queens Problem 276

      Exhaustive Search 277

      Backtracking 278

      Pruning Trees 279

      Branch and Bound 279

      Heuristics 280

      Greedy 281

      Divide and Conquer 282

      Recursion 283

      Dynamic Programming 285

      Caching 287

      Randomization 287

      Monte Carlo Algorithms 287

      Las Vegas Algorithms 288

      Atlantic City Algorithms 289

      State Diagrams 289

      Design Patterns 290

      Creational Patterns 291

      Structural Patterns 291

      Behavioral Patterns 292

      Design Pattern Summary 293

      Parallel Programming 293

      Artificial Intelligence 295

      Definitions 295

      Learning Systems 296

      Natural Language Processing 297

      Artificial Neural Network 297

      Deep Learning 297

      Expert System 298

      Artificial General Intelligence 298

      Algorithm Characteristics 301

      Summary 302

      What You Learned in This Chapter 304

      Chapter 12: Programming Languages 307

      The Myth of Picking a Language 308

      Language Generations 311

      First Generation 311

      Second Generation 311

      Third Generation (3GL) 312

      Fourth Generation 313

      Fifth Generation 314

      Sixth Generation 314

      IDEs 315

      Language Families 316

      Assembly 316

      Imperative 317

      Procedural 317

      Declarative 318

      Object- Oriented 318

      Functional 319

      Specialized 319

      Language Family Summary 319

      The Best Language 319

      Summary 323

      What You Learned in This Chapter 324

      Chapter 13: Testing 327

      Testing Goals 329

      Reasons Bugs Never Die 330

      Diminishing Returns 330

      Deadlines 330

      Consequences 330

      It’s Too Soon 330

      Usefulness 331

      Obsolescence 331

      It’s Not a Bug 331

      It Never Ends 332

      It’s Better Than Nothing 333

      Fixing Bugs Is Dangerous 333

      Which Bugs to Fix 334

      Levels of Testing 334

      Unit Testing 335

      Integration Testing 336

      Regression Testing 337

      Automated Testing 337

      Component Interface Testing 338

      System Testing 339

      Acceptance Testing 340

      Other Testing Categories 341

      Testing Techniques 342

      Exhaustive Testing 342

      Black- Box Testing 343

      White- Box Testing 344

      Gray- Box Testing 344

      Testing Habits 345

      Test and Debug When Alert 345

      Test Your Own Code 346

      Have Someone Else Test Your Code 346

      Fix Your Own Bugs 348

      Think Before You Change 349

      Don’t Believe in Magic 349

      See What Changed 350

      Fix Bugs, Not Symptoms 350

      Test Your Tests 350

      How to Fix a Bug 351

      Estimating Number of Bugs 351

      Tracking Bugs Found 352

      Seeding 353

      The Lincoln Index 353

      Summary 355

      What You Learned in This Chapter 357

      Chapter 14: Deployment 359

      Scope 360

      The Plan 361

      Cutover 362

      Staged Deployment 362

      Gradual Cutover 363

      Incremental Deployment 365

      Parallel Testing 365

      Deployment Tasks 365

      Deployment Mistakes 366

      Summary 368

      What You Learned in This Chapter 370

      Chapter 15: Metrics 371

      Wrap Party 372

      Defect Analysis 372

      Species of Bugs 373

      Discoverer 373

      Severity 374

      Creation Time 374

      Age at Fix 374

      Task Type 375

      Defect Database 376

      Ishikawa Diagrams 376

      Software Metrics 379

      Qualities of Good Attributes and Metrics 381

      Using Metrics 382

      Process Metrics 384

      Project Metrics 384

      Things to Measure 385

      Size Normalization 387

      Function Point Normalization 389

      Count Function Point Metrics 390

      Multiply by Complexity Factors 391

      Calculate Complexity Adjustment Value 392

      Calculate Adjusted FP 394

      Summary 395

      What You Learned in This Chapter 398

      Chapter 16: Maintenance 401

      Maintenance Costs 402

      Task Categories 404

      Perfective Tasks 404

      Feature Improvements 406

      New Features 406

      The Second System Effect 407

      Adaptive Tasks 408

      Corrective Tasks 410

      Preventive Tasks 414

      Clarification 414

      Code Reuse 415

      Improved Flexibility 416

      Bug Swarms 417

      Bad Programming Practices 417

      Individual Bugs 418

      Not Invented Here 418

      Task Execution 419

      Summary 420

      What You Learned in This Chapter 423

      Part II: Process Models

      Chapter 17: Predictive Models 427

      Model Approaches 428

      Prerequisites 428

      Predictive and Adaptive 429

      Success and Failure Indicators for Predictive Models 430

      Advantages and Disadvantages of Predictive Models 431

      Waterfall 432

      Waterfall with Feedback 433

      Sashimi 434

      Incremental Waterfall 436

      V- model 438

      Software Development Life Cycle 439

      Summary 442

      What You Learned in This Chapter 444

      Chapter 18: Iterative Models 445

      Iterative vs. Predictive 446

      Iterative vs. Incremental 448

      Prototypes 449

      Types of Prototypes 451

      Pros and Cons 451

      Spiral 453

      Clarifications 455

      Pros and Cons 456

      Unified Process 457

      Pros and Cons 459

      Rational Unified Process 459

      Cleanroom 460

      Cowboy Coding 461

      Summary 461

      What You Learned in This Chapter 463

      Chapter 19: Rad 465

      RAD Principles 467

      James Martin RAD 470

      Agile 471

      Self- Organizing Teams 473

      Agile Techniques 474

      Communication 474

      Incremental Development 475

      Focus on Quality 478

      XP 478

      XP Roles 479

      XP Values 480

      XP Practices 481

      Have a Customer On-Site 481

      Play the Planning Game 482

      Use Stand- Up Meetings 483

      Make Frequent Small Releases 483

      Use Intuitive Metaphors 484

      Keep Designs Simple 484

      Defer Optimization 484

      Refactor When Necessary 485

      Give Everyone Ownership of the Code 485

      Use Coding Standards 486

      Promote Generalization 486

      Use Pair Programming 486

      Test Constantly 486

      Integrate Continuously 486

      Work Sustainably 487

      Use Test- Driven and Test- First Development 487

      Scrum 488

      Scrum Roles 489

      Scrum Sprints 490

      Planning Poker 491

      Burndown 492

      Velocity 494

      Lean 494

      Lean Principles 494

      Crystal 495

      Crystal Clear 498

      Crystal Yellow 498

      Crystal Orange 499

      Feature- Driven Development 500

      FDD Roles 501

      FDD Phases 502

      Develop a Model 502

      Build a Feature List 502

      Plan by Feature 503

      Design by Feature 503

      Build by Feature 504

      FDD Iteration Milestones 504

      Disciplined Agile Delivery 506

      DAD Principles 506

      DAD Roles 506

      DAD Phases 507

      Dynamic Systems Development Method 508

      DSDM Phases 508

      DSDM Principles 510

      DSDM Roles 511

      Kanban 512

      Kanban Principles 513

      Kanban Practices 513

      Kanban Board 514

      Summary 515

      What You Learned in This Chapter 517

      Part III: Advanced Topics

      Chapter 20: Software Ethics 523

      Ethical Behavior 524

      IEEE- CS/ACM 524

      ACS 525

      CPSR 526

      Business Ethics 527

      Nada 528

      Hacker Ethics 529

      Hacker Terms 530

      Responsibility 531

      Gray Areas 533

      Software Engineering Dilemmas 535

      Misusing Data and the Temptation of Free Data 535

      Disruptive Technology 536

      Algorithmic Bias 537

      False Confidence 537

      Lack of Oversight 538

      Getting Paid 539

      Thought Experiments 539

      The Tunnel Problem 540

      The Trolley Problem 542

      Summary 544

      What You Learned in This Chapter 545

      Chapter 21: Future Trends 547

      Security 548

      UX/UI 549

      Code Packaging 550

      Cloud Technology 551

      Software Development 552

      Algorithms 553

      Tech Toys 554

      Summary 555

      What You Learned in This Chapter 556

      Appendix: Solutions to Exercises 559

      Glossary 631
      Index 663

    Recently viewed products

    © 2025 Book Curl

      • American Express
      • Apple Pay
      • Diners Club
      • Discover
      • Google Pay
      • Maestro
      • Mastercard
      • PayPal
      • Shop Pay
      • Union Pay
      • Visa

      Login

      Forgot your password?

      Don't have an account yet?
      Create account