软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。具体说来,软件工程是以借鉴传统工程的原则、方法,以提高质量,降低成本为目的指导计算机软件开发和维护的工程学科。它是一种层次化的技术。
软件工程确实教会了我们如何编写和开发软件,但不是仅仅的写代码。 当我们准备做个比较大的软件的时候,只能按照软件工程的方法来一步步的设计这个软件。 对于做软件来说,程序员如果没有扎实的软件工程专业的知识,那么他就像一个农民工,只会敲代码,就如同我们常说的"码农"。 懂软件工程的人就像工程师,从头到尾设计软件,而不仅仅只是编写程序。 当学习一门编程语言时,我们会在学习过程中试着编写一些小程序,这些程序可能只有几十行代码,而当我们编写的程序变得复杂,需要成千上万行代码和复杂的逻辑结构时,我们会发现自己变得又不会编程了,因为这些复杂的逻辑结构需要大量的专业知识去打造出来。所以,一个复杂系统的开发,需要一套规范的管理方法去管理这个开发的过程,软件工程就是关于怎样管理开发过程的学科。