我倾向于把软件过程认为是一个存在于包括了客户、开发者和计算机系统三个主体在内的完整系统中的知识建构过程,而不是一个仅仅局限于软件开发组织内部的设计制造过程。各个主体都是一个智能体,必须对另外两个主体的信息表示进行学习和加工处理,进而建立自己的知识结构,而软件产品是联结这几个主体的媒介。因此,软件设计开发不是在客户需求形成文档时完成的,不是在编译成机器语言时完成的,也不能说是在交付给用户使用时完成的。客户的目标是信息而非软件,软件是在这个知识循环中为了不断向客户提供其所需信息而构建的信息加工结构。
把软件开发过程作为一个信息加工过程,可以从人类认知过程的信息加工理论中得到很多启发。
软件开发过程的SW-PASS模型,将软件生产的过程表示为由计划过程(Planning)、注意力过程(Attention)、同时性加工过程(Simultaneous processing)和继时性加工过程(Successive processing)核心过程构成的有机整体。
图2 SW-PASS模型
注意力过程是所有过程的基础,是最低层次和最基本的过程,使敏捷过程实现快速的市场反应和合理的资源配置;加工过程处于中间层次,同时性过程和继时性过程实现业务需求向软件产品的编码过程;计划过程是主动适应市场变化的源动力,是系统中最高级的层次。三个层次4个过程以信息的加工处理为中心形成了有机整体。
首先,基于认知过程模型的软件过程基础是注意过程,强调的是注意的选择性和反应的速度。软件过程是以商业目标驱动的,这一点在新的软件工程方法中尤其突出。但事实上,目前软件过程中对业务需求和商业机会的适应很难令人满意。软件开发者和客户都为“什么是需求”而困惑,原因是需求调查与分析的范围过广而难有焦点;因为对每一个需求特性没有建立快速的反馈机制,对于过程的敏捷性得以实现的基础,软件组织在以往过程管理中忽视了如何把注意力集中于一个业务需求的焦点而执行快速的应对流程。注意过程在CMM和敏捷方法中都有很多体现,如CMM中的SSM、SPTO、OPF、DP、TCM等,而在敏捷方法中注意力更是其快速、适应和客户满意度的竞争力源泉。