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 tomorrow for delivery by Wed 24 Jun 2026.

    A Paperback / softback by Rod Stephens

    3 in stock

      Trusted by thousands of customers. See 2,385+ Customer Reviews

      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

      © 2026 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