《软件需求最佳实践》阅读笔记02
软件需求的实践是一名软件工程师的必经、必学的道路。
需求捕获是需求开发中的第一个活动,每个团队都必须提高需求捕获的有效性,要点在于计划性和科学性。 需求捕获的过程是人和人打交道的过程,需求捕获需要需求分析人员积极主动的去获取需求,是散网打鱼,而不是休闲钓鱼;在对用户进行需求提问时,要善于聚焦访谈话题;用户的需求是一个冰山,有很多潜在的需求我们不容易意识到,而理解业务场景有助于需求分析人员更深层次的理解用户的需求。需求捕获有很多种方法,(1)用户访谈:最常见、最基本的需求捕获技术,直接有效、形式灵活,但是要避免占用时间长和用户信息的片面性,最常见的被访谈者包括高层管理人员、中层管理人员、操作层和技术团队四类。访谈之前要有详细的用户访谈计划,访谈时要善于安排问题顺序,可以根据情况采用金字塔结构、漏斗结构和菱形结构组织问题;(2)用户调查:调查面广,可以获得更多人的反馈,但是认识不够深入,容易形而上学,它能有效的克服用户访谈中存在的片面性,先访谈再调查最合理。
需求捕获过程中会产生大量的信息,需要借助一些实用的工具有条理的记录下来。任务卡片是一种十分适合对业务活动级的信息收集与整理的记录工具;场景说明可以使需求人员根据信息进行抽象整理任务;另外还有用户故事、Volere白卡也是记录工具。
需求分析是需求工程中最核心的工作,而需求建模则是需求分析的主要手段。需求分析实际上是业务分析,先分解,再提炼,在这个过程中消除矛盾。行为需求+结构需求构成了整个需求的核心部分。需求建模过程比建模的结果更重要,建模可以帮助我们按照实际情况或按照我们需要的样式对系统进行可视化;提供一种详细说明系统的结构或行为的非那根发;给出一个指导系统构造的模版。需求分析阶段中分两个周期,第一个周期的任务是理清需求的结构框架(类领域图)和行为脉络(流程图和用例图),第二个周期的任务是对用例模型、领域模型标识出用例、领域类的细节进行填充。要根据要完成的任务选择合适的建模工具,UML是一种统一的、标准化的建模语言,应用很广泛。每个业务事件都是一个业务流程的触发,业务流程分析是对每个业务事件进行的,分析并识别现有业务活动,确定业务活动之间的关系。数据流图也是一种建模方法,有5种基本元素,为了表达数据处理过程的数据加工情况,需要有层次结构的数据流程图。
需求描述是将需求捕获、分析的结果进行文档化的过程。在描述需求时,最常见的描述风格可以分成自然语言、图形化模型和形式化规格三种,根据不同项目、软件开发团队的特点选择不同的风格组合。有几种典型的需求规格说明书模版,阐释了“沟通决定内容,内容决定格式”,创建出符合自身项目特点、团队特点的模版。
需求验证是需求开发的最后一个环节,其目标是发现尽可能多的错误,减少因为需求的错误而带来的工作量浪费,需求验证的主要手段是评审,有不同正式化程度的评审,审查有一个完整的过程,包括规划、召开总体会议、做准备、召开审查会议、反攻、跟踪6个阶段。做好需求验证,必须在思想、方法、语言、人员、内容5个要点上做好对策。