Slide 1

Slide 1 text

What your mum didn’t tell you about software development Chris K. Young Presentation for 12ISP August 2004

Slide 2

Slide 2 text

Software isn’t just coding  Contrary to popular belief, being good at coding doesn’t make you a successful programmer.  The skills required to become one are usually learnt by experience rather than study.

Slide 3

Slide 3 text

It’s all about the customer  The customer sponsors the development of a software product, so their input is vital.  They have functionality, performance, and/or timeframe requirements.  They often revise requirements to adapt to their changing needs.  Consequently, developers need processes to cater for changes.

Slide 4

Slide 4 text

A process, not a product  Product lifetime is typically long, often outlasting the original developers.  Therefore, software is normally maintained by more than one developer.  There are many aspects to a successful software development process. This presentation will discuss three of them.

Slide 5

Slide 5 text

Software design  Code needs to be partitioned into small, easily-understood units.  Tightly-coupled units depend on each other’s internal details, making their implementation difficult to change.  Therefore, each unit should have a single responsibility, which other units access via a complete, minimal interface.

Slide 6

Slide 6 text

Complete, minimal interfaces  “A complete interface is one that allows clients to do anything they might reasonably want to do. … A minimal interface…is one with as few functions in it as possible, one in which no two member functions have overlapping functionality.” (Meyers, 1998, p. 79)

Slide 7

Slide 7 text

Code review  Code is normally maintained by a team, which has a set of coding standards to ease maintainability.  In a code review, a team member critiques code written by another member.  This serves two purposes: to allow more team members to understand the code, and to enforce coding standards.

Slide 8

Slide 8 text

Software testing  In order to ensure correct operation of a software product, it needs thorough and regular testing.  Coders write unit tests for every unit they have, based on its interface, which are executed by an automated process.  This allows regressions to be detected and fixed swiftly.

Slide 9

Slide 9 text

More than meets the eye  There are many more aspects of running a successful software project.  As a developer, I’m not too knowledgeable about some of these, so I won’t go into them.  In conclusion, coding is only a miniscule part of software development.

Slide 10

Slide 10 text

Reference  Meyers, S. D. (1998). Effective C++ (2nd ed.). Boston, MA: Addison-Wesley.