在我看来与其说软件工程是教会不怎么会写程序的人开发软件还不如说是让会写程序的人更好的开发软件。
软件工程的目标是:在给定成本、进度的前提下,开发出具有适用性、有效性、可修改性、可靠性、可理解性、可维护性、可重用性、可移植性、可追踪性、可互操作性和满足用户需求的软件产品。追求这些目标有助于提高软件产品的质量和开发效率,减少维护的困难。可以知道,软件工程的目的是以科学的手段去管理整个工程,换句话说就是告诉你如何去开发一套软件,或者说复杂的工程。
软件工程是教那些不会开发复杂项目的人怎样去编程的学科。当学习掌握一门编程语言时,我们会在学习过程中试着编写一些小程序,这些程序可能只有几十行代码,而当我们编写的程序变得复杂,需要成千上万行代码和复杂的逻辑结构时,我们会发现自己变得又不会编程了;你可能试着像以前一样按自己所想去实现这个复杂的程序,但是当程序的代码越来越多,结构越来越复杂时,会发现出现的错误也越来越多,同时很难修改,甚至可能会出现不能修复的错误。所以,一个复杂系统的开发,需要一套规范的管理方法去管理这个开发的过程,软件工程就是关于怎样管理开发过程的学科。软件工程会使你知道怎样去做需求分析以了解程序需要实现的功能,怎样去做系统设计以构建程序的框架,怎样测试以验证程序功能的正确等。你可以通过软件工程的指导去实现一个结构清晰、可维护和健壮的程序。所以软件工程是让会写程序的人能更好的开发软件。