Computer Science Field Guide: Software Engineering

Software Engineering Software is essential to our lives. Imagine living without the internet,
Google, Facebook or your smartphone We expect our software to work correctly. A bug in a program can make it
really frustrating to use, or it could even crash your computer. But it could also be a lot worse than that. What if the software controlling
a nuclear power plant fails? Or the software controlling an aeroplane?
[Screams] Fortunately, Software Engineering techniques
[Screams] can help us make software that works correctly.
[Yay] Making good software is difficult
because often software is huge and complex. Some large systems have
tens of millions of lines of code. If you printed them out on paper
and stacked them like a book, You’d get a stack that is
around a hundred meters high. That’s as high as a 25 storey building. If you wanted to read through a program that size,
to try to understand how it works, It’s likely to take you about 50 years! If some software takes almost a lifetime
just to read through, imagine how long it would take to write it. Of course no single person can do this alone.
We need teams of developers working on software. Sometimes three developers, sometimes ten developers, sometimes a hundred,
and sometimes more. This is where Software Engineering comes in. How do we get a team of developers
to write huge software, where all the pieces fit together,
it works reliably, and it does what the user wants. Software Engineering is about
so much more than just programming. In fact, the actual programming part
is usually only about 20% of software projects. Even today we are not good
at getting software development right. A survey in 2009 found that only
around a third of software projects succeeded. While a quarter of projects failed outright, or were cancelled before
the software could be delivered. Fortunately we now know a lot
about what works and what doesn’t. In this chapter, we’ll look at
some approaches that are doomed to failure, but are still used surprisingly often. And some approaches that seems to work a lot better,
and can helps us create software that does what it’s meant to. Software Engineering

Leave a Reply

Your email address will not be published. Required fields are marked *