Software Engineering

About This Course

  • Make you a better programmer
  • Prepare you for industry
  • Prepare you for Capstone
  • Prepare you for Academia

Why Is Programming Hard?

  • Figuring stuff out
  • People

Software Engineering Is Engineering

  • Engineering is a four-step process:

    • What are you going to build? (requirements)
    • How are you going to build it? (design)
    • Build it (implementation)
    • Is it built right? (validation and verification)
  • Engineering is interdisciplinary

  • Engineering is two-tiered:

    • Project: Actually constructing the necessary artifact
    • Process: Managing the work of constructing the artifact
  • Engineering is about risk management

    • What are the likelihoods of various risks?
    • What are the consequences of various risks?
    • How do risks interact?

Software Engineering Is Weird Engineering

  • Extraordinarily complex artifacts

    • Other fields are complicated only as software enables this
  • Bits are not atoms

    • Product is infinitely perfectly replicable and distributable instantly at zero cost
    • Wear and tear are not a thing
  • Software doesn't exist by itself

    • Software-intensive systems

Software Engineering Is New

  • Didn't exist until about 50 years ago

    • Wasn't a real thing until about 40 years ago
  • Tremendous (though slowing) pace of change

  • Still highly failure-prone

What Does This All Mean To You?

  • You (supposedly) know how to program at this point. Gratz

  • What do you still need to learn?

    • End-to-end engineering
    • How use / manage process
    • How to work with people
    • How to manage large scale complexity
    • How to manage risk
    • How to manage rapid change
  • There's only so much I can tell you

    • We only know so much
    • I only know so much
    • Much of it isn't well-written-down
Last modified: Friday, 25 September 2020, 9:01 PM