What is Software Engineering?

What is Software Engineering?

Lecture Date: Thursday, August 26

Coming into a class like 3240, it’s really easy to get caught in the mindset of “this is the class that I make a big project thing with other people and that’s all I need to focus on.”

And, yes, we do “make a big project thing.” You are going to work in Python and a web framework called Django to build a web app in teams of four. Those web apps will be largely of your own design (you’ll pick the project domain and many of the features), will be tested by you and others, and will be hosted online using Heroku. You will do a small ramp-up, tutorial project to learn about the platform and how it works.

But, honestly, that’s not what the class is about. The project is a vehicle for covering all of what actually makes up “software engineering.”


  • Requirements - How do you know what to build? Does your customer know what they actually need (versus what they want)?
  • Design - How do you communicate the requirements of what should be built to a team of technical people who have never met the customer? Do you draw diagrams? What do you write down? How do you avoid confusion?
  • Implementation - How can teams of dozens of people all work on the same code base without messing up each other’s code? How do you write “good” code that others can read and maintain when you’ve moved on to other projects?
  • Testing - Can you ensure that your project works? Can you prove that you “built the right solution” according to what the customer asked for?
  • Maintenance - Once the software is “finished”…. ha, nope. It’s not finished. Over 2/3 of the cost of software comes AFTER it’s been released! How do you keep it up to date? How do you handle support?

This is just a sampling of the questions that we try to answer in the field of software engineering. Writing code is good. Building solid software that lasts for years is better.

Welcome to software engineering :-).

Slide Deck
What is Software Engineering?


Prof. Sherriff