关于需求变更对软件结构的冲击,我想如果使用面向对象方法效果会好一些。Yourdon在《Object Oriented Analysis》中有一个被人广泛引用的结论。就是对于软件结构言,最容易变化的首先是流程,其次是接口,在次是对象的属性,最后才是对象本身。拿一个单位的人事管理系统来举例子,最容易变的肯定是流程,单位的一道文件就可能改变比如入职,辞职,调动等等流程。接口的易变性要小一点,比如原来的脱机接口变成联机接口,增加一些额外的用户界面,报表生成等等。对象的属性(包括对象之间的关系)其实就很不容易变动了,在现实世界中增加的情况比较多,如果此系统要进行移植,比如从国企到外企,对象属性要进行比较大的变动,但是对象和对象的基本属性是非常稳固的,任何企业,雇主和雇员,上级和下级,工作,报酬等等对象是一定要存在的,对象的状态,对于雇员,入职,离职,请假,生病,这些状态和状态转移关系,是具有一定普遍性的。
系统分析员如果能抓住系统中这些稳固的部分,并且加以很好抽象和封装,在应对需求变化的时候,就会从容得多,当然,西谚有云“不要认为递给一个傻瓜一把锤子,他就会成为一个建筑师”,能否构建稳定的系统模型是衡量系统分析员的一个重要的方面。需求的不断变化,是系统分析员永远要面对的挑战,我想,这也是系统分析工作的魅力之所在。