软件工程是指用工程方法开发和维护软件的过程和有关技术。软件工程起因于上世纪60年代后期出现的“软件危机”。所谓“软件危机”实质上是指人们难以控制软件的开发和维护,其具体表现为:大型软件系统十分复杂,很难理解和维护;软件开发周期过长;大型软件系统的可靠性差;软件费用往往超出预算。面对“软件危机”,人们通过调查软件系统开发的实际情况,逐步认识到软件的开发和维护有必要采用工程化的方法,于是软件工程在1968年应运而生。
软件工程的适用对象主要是大型软件。软件工程研究的基本内容包括软件开发过程,软件开发和维护的方法与技术,软件开发和维护系统工具,质量评价和质量保证,软件管理和软件开发环境等。对于软件工程来说,从方法论的角度研究软件的开发过程是十分重要的工作。
软件开发过程是为获得高质量的软件系统所需完成的一系列任务的框架。他规定了完成各项任务的工作步骤。在软件工程的初期,软件生命期这一概念被提出。这是用标准的形式表示和定义了软件的生存过程。所谓软件生命期是指软件从软件计划开始,经历了需求分析和定义,设计,编码,测试运行,维护直到废止为止的期间。由于软件生命期视为开发过程模型的依据,工程管理也已该模型为实施依据。当然,这也是模仿其他行业,如机器制造业和建筑业等而得到的过程建模。
软件开发过程模型包括:瀑布式模型,快速原型模型,渐增式模型,螺旋式模型,面向对象的开发模型。
需求工程面临的困难:(1)需求获取与需求分析的困难性(2)需求描述语言和规范化的困难性(3)需求验证的困难性(4)需求管理的困难性。