Software development: The system performs function A.
Software engineering: The system performs function A under operating conditions B with operational performance parameters C with tolerances within the probability distribution D and reliability within the probability distribution E and we are legally responsible if it doesn’t.
So, are my software engineering students learning software engineering? I’m not sure I could achieve consensus on an answer. Will my students be able to work as part of a software development team when they graduate? I am sure about this. The students who learn the lessons I teach can be productive members of a software development team. They will know a little bit about process and how to make it work for them. They will know how to write software that matches the requirements and test that software. They will know how to deal with the constant change that’s part of the real world.
Fascinating – I didn’t think there was so much to this question when somebody asked me about it.