需求收集过程特别集中于软件上。要理解待建造程序的本质,软件工程师(“分析员”)必须了解软件的信息领域以及需求的功能、行为、性能和接口。系统需求和软件需求均要文档化,并与用户一起复审。
设计:软件设计实际上是一个多步骤的过程,集中于程序的四个完全不同的属性上:数据结构、软件体系结构、界面表示及过程(算法)细节。设计过程将需求转换成软件表示,在编码之前可以评估其质量。象需求一样,设计也要文档化,并且是软件配置的一部分。
代码生成:设计必须转换成机器可读的形式。代码生成这一步就是完成这个任务的。如果设计已经表示得很详细,代码生成可以自动完成。
测试:一旦生成了代码,就可以开始程序测试。测试过程集中于软件的内部逻辑——保证所有语句都测试到,以及外部功能——即引导测试去发现错误,并保证定义好的输入能够产生与预期结果相同的输出。
维护:软件在交付给用户之后不可避免地要发生修改(一个可能的例外是嵌入式软件)。在如下情况下会发生修改:当遇到错误时;当软件必须适应外部环境的变化时(例如,因为使用新的操作系统或外设);或者当用户希望增强功能或性能时。软件维护重复以前各个阶段,不同之处在于它是针对已有的程序,而非新程序。