原理篇
在软件工程的失败原因中,由于软件的设计的错误和缺陷导致软件失败约占64%,而属于程序代码的错误仅占36%,所以软件需求分析是提高软件质量的基础,也是决定的一个项目成败的关键。
在以往的失败的软件的项目中,软件需求是最被忽视的,也是最复杂的,在漫长的软件工程的发展中,大家只注重于提高技术,而忽视了对于软件需求分析的认识。在一个成功的软件开发项目中,我们必须掌握软件工程和需求工程。
那么软件需求工程应该怎么做?人们一直以为软件需求规格说明是软件需求的核心,其实它只是软件需求工作的目标而不是核心,真正的核心是业务需求。业务需求即是将业务主体和业务对象间的那些现实与期望的存在的差距梳理出来,然后找出解决这些差距的措施然后加以改进,以满足期望。没有业务需求的用户需求是不完整的。需求变化一是需求增加和减少的变化,二是需求有原先的变成现在的。只有找到变化的根源才能控制需求的变化,才能为需求变化预留充足的余量。软件需求将业务和软件接连在一起。在软件开发活动中,出现问题后需求分析可谓是千夫所指,那么不如建立一个新型的开发模型,以软件需求为核心,软件开发的各个活动都是围绕软件需求分析来运动的。
软件需求是需求分析的成果物,新一代的软件需求是由业务即信息化规划、用户需求和系统需求三个部分来构成的。业务及信息化规范是站在客户全局和技术顶层的角度来描述的,用户需求是站在系统操作者角度进行的描述,系统开发是站在开发人员的角度进行的描述。软件需求在内容上需要具有完整性、正确性、可行性、第一性、前置性、必要性、无二义性、可验证性。在形式上应具有规则性、一致性、可修改性、可跟踪性。