软件需求分析的思维方法

2018-03-29 04:34宋振乾
软件 2017年8期
关键词:需求分析软件工程系统化

摘要:在软件工程中,虽然已经总结出了大量的需求分析方法和工具,但需求模糊问题依然普遍存在,究其原因是在需求实践中,缺乏必要的需求思维方式。只有在正确的宏观思维方式指导下,结合具体的需求分析方法和工具才能捕获到真实需求。本文结合辩证唯物主义哲学思想和需求的实践经验,提出了需求分析中的用户思维、场景思维、迭代思维、信息化思维和系统化思维,目的是在这些思维方式的指导下,辅助软件工程中的需求分析方法和工具发挥更大的作用。

关键词:软件工程;需求分析;信息化;系统化

中图分类号:TP311.52 文献标识码:A DOI:10.3969/j.issn.l003-6970.2017.08.029

本文著录格式:宋振乾.软件需求分析的思维方法[J].软件,2017,38(8):151-154

引言

软件和我们日常使用的其他产品一样,其设计开发过程本质上是产品的制造过程,有其独特的制造工艺,其中需求分析是软件制造工艺中的重要环节,直接决定着未来软件的成败。在软件工程中,需求分析是指定义和描述软件系统的范围、目标及定义其功能时所要做的全部工作。简言之,需求分析就是分析软件用户的需求是什么,即全面地理解用户的各项要求,并准确地表达用户需求,明确软件开发的内容。正确的需求是构造软件大厦的基石和蓝图,其重要性是不言而喻的。但现实是残酷的,要捕获到真实的软件需求是一件非常困难的工作,用户需要的是个苹果,结果我们给用户的是一个梨。据Standish Group的研究显示,高达31.1%的项目彻底失败,高达52.7%的项目进度超期或成本超支,被认为成功的软件仅有可怜的16.2%。而这些问题中绝大部分都是在需求分析阶段埋下的“祸根”。需求分析在软件项目中如此重要,我们有必要分析造成需求获取困难的原因和应对策略。

1 需求的难点

是什么原因导致我们获取真实需求如此困难,原因总结起来有如下三点,第一点是需求工程的理论和实践还尚不完备。从1946年世界上第一台计算机发明到现在,虽经历了70年的发展,但从上个世纪七十年代开始计算机才逐渐大规模应用到社会生产生活中。伴随着计算机应用的普及,需求工程作为软件工程中的一个分支才逐渐发展起来,其发展历史就更为短暂。需求分析工作与软件开发工作相比,表面上看似没有技术含量,但却是一个集计算机技术、分析设计、人际沟通、语言和文字表达能力以及心理学等多领域知识于一体的技术领域。当今世界上无数软件项目由于需求问题而遭受经济损失甚至是彻底失败,表明对需求工程领域客观规律的认识还不够深刻。第二点是需求获取和分析中存在信息失真的现象。需求获取的关键环节就是向软件使用者了解对系统的要求,人与人之间的沟通就是一个重要环节,而人际交流中存在的信息失真是一种普遍现象,从而影响了需求的真实性。第三点是需求变更频繁,似乎永远不知道用户的最终需求是什么。软件形态的虚拟特性,使用户往往错误地认为修改软件设计的代价很小,付出的代价不像推倒一栋盖好的楼房那样有直观和震撼的感受,甚至在开发工作完成后,还在不断提出需求变更,这是软件开发与其他生产制造行业最大的不同点,也是软件工程师面临的最大的痛点。其原因是多方面的,用户水平参差不齐是一个重要原因,有时用户自己也不知道真正需求是什么,所以在开发过程中不断提出这样或那样的需求。

虽然要捕获到真实需求面临很大难度,但需求的获取作为客观事物是可以发现其固有的规律,这就要求我们在实践中不断总结,运用正确的思维模式去发掘真实需求,这些思维方式包括用户思维、场景思维、迭代思维、信息化思维和系统化思维。

2 需求获取的思维方法

2.1 用户思维

用户思维要求我们近距离全方位接触用户,运用用户思维,就必须明确三个问题,你的目标用户是谁,目标用户要什么以及怎样满足目标用户的需求。要正确选择关键用户才能获得比较全面和真实的需求素材,正确选择关键用户的含义有两个,一个是选择关键岗位上的用户,这样可以确保需求的真实性和有效性。另一个是同一个岗位上的人员要访谈多个,这样可以确保全面性。软件是为用户服务的,只有深入了解用户的工作内容和工作特点,了解用户的所思所想,才能发现用户的痛点,知道软件存在的价值,从而也就了解了用户要什么。在后续的设计阶段,我们才能围绕着用户所需,开展设计工作,解决怎样满足目标用户需求的问题。不同层次的用户对软件的认识程度也不同,在和用户沟通中可以逐步灌输适当的软件知识,让用户充分了解哪些是系统可以实现的,哪些是不能实现的,使用户所提出需求的有效性与合理性更高。在实践中,需求人员要深入用户岗位,观察用户处理业务的过程,详细记录业务处理步骤和内容,通过反复回放的方式,分析最为费时费力的工作节点,思考用适当的方法解决用户工作中的难点和痛点,所以做需求工作要始终围绕着用户才有可能发现真正的需求。

2.2 场景思维

场景思维建立在用户思维基础上,在和用户深入接触过程中获取用户的所有工作细节的第一手资料通过梳理这些工作细节,分析出主要的工作步骤,每一个工作步骤形成一个快照,固定为一个业务场景,仔细分析每个场景中用户的工作细节。不仅要分析每个场景下用户的工作内容,而且要分析上下游场景之间的工作关系。场景之间有机的串联和切换形成一部生动的用户故事,从故事开头到结尾完整展现某个业务处理的全过程[1<\以场景化的思维过程构建的系统能够使业务在系统中的展现具有清晰的逻辑路径,才能符合用户的业务习惯,同时借助于信息化的技术手段,使工作效率显著提升。在实践中,需求和设计人员往往会设计出五花八门的功能,令人眼花缭乱,但缺乏业务处理主线,其本质就是缺乏场景化设计,舍本逐末的表现。场景思维的典型输出工具是系统用例,通过编写系统用例,详细描述了系统在实現业务场景时的各种交互行为,是编写测试用例和系统原型的基础文档。

2.3 迭代思维

迭代思维体现的是对客观事物认识的渐进性,唯物主义哲学的认识论告诉我们,人类对客观事物的认识是波浪式前进,螺旋式上升的,是实践、认识,再实践和再认识的过程。迭代思维恰恰反映了这样的认识过程。需求的获取不是一蹴而就的,与用户的交流大多采用语言的沟通方式,由于在信息传递过程中存在信息的衰减和扭曲,或理解上的歧义,决定了我们往往不可避免的存在一定程度的偏差。而需求的迭代思维就是指导我们反复和用户交流确认,这个过程就是不断修正偏差的过程。在实践中,需求文档和原型是与用户交流需求的重要媒介,迭代思维运用在需求工程上就是基于需求文档和系统原型的循环进化过程,通过反复确认和修正需求文档和原型系统,最终获得信息系统真实的未来蓝图。需要注意的是,在需求迭代过程中要抓住关键需求,关键需求包括功能需求,质量属性和约束这三类需求,关键需求决定系统架构。当需求、设计和开发同时纳入迭代模式后,形成了完整的迭代开发过程,使系统逐步得到有序进化。基于迭代思想的软件开发工艺,在应对用户需求变更方面的代价是较小的,这也是迭代思维的价值所在。

2.4 信息化思维

信息化思维要求需求分析人员不仅要深入了解用户的业务,理解用户的需求,而且要运用信息化的知识和技术合理引导用户的需求,使系统在设计阶段就具备合理的功能要求,避免在系统上线运行阶段才发现设计缺陷,从而造成返工,这样可以节省大量的成本。信息化思维所提出的要求,也正是需求分析人员的价值所在,充当了业务人员和技术人员的沟通桥梁,在理解用户业务要求的基础上,思考如何利用信息系统快速、有效地完成业务的处理,并且能够提供给用户手工处理所无法比拟的优势和便利。业务系统是用户处理业务的规则和流程,软件系统是对业务系统的模拟和固化。业务系统和软件系统是一体两面,是同一个抽象体在两个世界的投射。软件系统最大的优势是信息的海量存储记忆,快速检索以及数据的复杂分析,这方面是人脑远远不能企及的。所以在设计系统时,要充分利用信息系统的这些特点,给用户提供最大的便利。要灵活和充分利用当前比较先进的信息化技术,把云平台,大数据分析技术、移动互联网等技术手段形成技术需求的一部分,和用户的业务需求紧密融合,才能最终打造出软件系统的精品。

2.5 系统化思维

系统化思维指以系统论为思维基本模式的思维形态,是整体思维、全面思维的哲学思想在信息化建设领域中的实际应用。客观世界中的系统是由两个或两个以上的元素相结合的有机整体,思维的系统性与客体的系统性是一致的。信息系统就是一个客观存在的系统,要求我们在做需求分析和系统设计时,不能孤立地关注某一个或某几个功能需求,还要考虑这些功能和其他功能之间的关系,这些功能和其他模块之间的关系,以及这些功能和周边系统之间的关系。例如在设计某个业务数据输入的功能时,就要考虑该业务数据是否已经存在于其他业务系统中了,如果已经存在就应该把这个功能设计为接口,就可以避免数据的重复录人,并且能够保持业务数据的一致性。系统化思维的核心思想要充分考虑到某个功能的需求和设计对于周边系统的影响,使每个功能设计能够很好的融入到用户业务系统生态圈中。

3 结论

综上所述,需求分析是任何软件设计开发的基础环节,直接决定软件产品的成败,失败的软件产品必然会带来巨大的投资损失,所以必须提高对需求分析环节的重视程度,要充分认识到需求分析工作的自身规律性,把心理学、哲学领域的思想观念综合运用到需求分析和设计的工作中。用户思维、场景思维、迭代思维、信息化思维和系统化思维就是结合多年的实践经验,在需求分析环节总结提炼出来的思维方式,这些思维方式将深刻影响需求分析人員的实践方式,影响着系统原型的设计和蓝图设计。深刻理解这些思维方式的核心含义并采用灵活多样的实现形式,充分结合相关软件工程的理论和工具,就可以使这些理论和工具发挥更大的作用,有利于发掘到用户真正的需求,尽可能规避需求环节带来的风险。

猜你喜欢
需求分析软件工程系统化
坚持系统化思维 构建大安全格局
系统化推进回迁提速
大学师生需求发展分析
基于UML技术的高校贫困生管理系统建模分析
关于如何创新和完善计算机软件工程管理的探讨
电视栏目系统化包装与宣传
系统化工艺在商用车制造中的应用与创新