怎样快速地构建正确的软件产品?
软件开发人员要想构建出正确的软件产品,必须满足以下几点:
所有利益相关方必须对要交付的软件产品有一致的理解。需求分析人员与用户对需求有一致的理解,可以使用户的需求正确地转变为软件的需求;设计人员与需求分析人员对软件需求有一致的理解,可以确保设计正确;编码人员与设计人员对设计有一致的理解,可以确保设计正确地实现;测试人员正确地理解需求,可以顺利地完成验证和确认。
有准确的需求规格说明。准确的需求规格说明是所有利益相关方一致理解的结果。准确的需求规格说明是所有利益相关方共同遵守的基线,这样会使得开发过程中不会出现因模棱两可的需求或功能缺失造成的无谓返工。
有用来衡量某项工作是否已经完成的客观标准。要构建正确的软件产品,需要对开发活动进行验证,而只有建立了有效的衡量标准,才能完成有效地验证。
有用来衡量软件产品是否已经完成的客观标准。这个标准将用于确认测试。
具有引导软件功能变更的文档。这样可以确保变更顺利进行。
但是,上述要求只能适应周期比较长的项目。因为只有研制周期比较长,才有可能在需求开发、设计阶段投入巨大的工作量,才能形成准确的需求规格说明,才能确保所有的利益相关方对软件产品的一致理解。
而如果项目周期比较短,需要快速地构建正确的软件产品,那么上述的一些要求就不那么容易实现了。
对于短周期项目,构建正确的软件产品的要求应当做出一些变化。
比如:
避免过度说明需求从而产生浪费,避免花时间在开发前会发生改变的细节上。项目周期短,要把时间花在刀刃上。早期的需求主要用于明确项目的范围,需求要准确,不需要太详细,等到开发之前再进一步明确需求;同时对于那些“暂定”的需求,早期首要的是把它标识出来,不要一直为它纠结。
需求规格说明不需要详细,但一定要可靠。
可以有效地检查软件产品与需求说明的一致性。在开发之前,应将需求实例化,这样在开发完成之后,可以方便验证软件产品是否满足需求。如果能够实现自动化验证,更为快速有效。
能够以最少的维护成本维持文档的相关性与可靠性。需求文档最好是集体所有制。这样在开发过程中一旦发现需求的问题,就能及时进行处理,维护需求的可靠性以及与软件产品的一致性。
软件项目应当采用Scrum这样的迭代过程或者使用看板这样的精益开发过程,以更好地实现快速正确地构建软件产品。
有一种方法能够完成快速而又正确地构建软件产品的目标,这种方法叫实例化需求说明。使用实例化需求说明可以让团队编写的文档数量恰到好处,在快速迭代或精益开发中,有效地协助变更。
这正是:
正确构建不容易,还要快速难上难
实例需求显身手,快速构建可实现
参考书目:实例化需求:团队如何交付正确的软件,作者:(塞尔维亚)Gojko Adzic,出版社:人民邮电出版社