前言
需求管理是一个所有人都很关注、似乎技术性不强,却很难解决的工程难题。本文提出了一种基于模型的需求管理方法,并基于此理论,选择了主流的建模工具EA,定制开发了对应的需求管理工具。希望面临同样需求管理难题的同行能够获得启发。
正文
需求是很多工作的基础:
项目的范围管理、工作量估算应该基于需求
进行了充分的需求分析,例如 功能、扩展、性能,才能对软件的框架和运行过程进行有效设计。
测试也需要基于需求设计测试用例,制定验证标准。
产品经理很多的工作都是基于需求进行,例如 产品需求分析、产品设计、产品发布管理。
需求管理目前也是软件开发过程、系统工程中问题最多的环节,无论是具有高可靠性要求的航空、航天、汽车上的控制系统,还是面向企业信息化的业务系统,需求的质量都是一直被重视、却从来没有被有效解决的难题。
需求的工作过程一般是:
1. 首先接收到用户原始请求,然后由需求人员对用户的需求进行分析,描述清楚用例;
2. 在清楚用户需求的基础上,进一步的进行产品需求分析,定义清楚系统的功能模块;
3. 开发方和用户方签订需求契约,明确要开发什么、投入多大工作量、估算出成本和时间、确定预算。
4. 然后开发团队基于需求进行开发,在此过程中用户提出的需求要进行变更控制,以便能够按照预期的时间交付符合质量的产品。
5.当开发完成后,基于需求进行验证,合格的才能成为交付给用户的产品。
开发过程虽然是可以迭代进行,但是在用户来看,高水平的开发团队应该是确认清楚需求然后才进行开发的,交付的产品也应该是符合质量要求的。
基于如上的需求工作流程,可以整理出如下需求管理的内容:
1.用户的原始请求
2.需求分析的模型,例如:用例模型、接口模型,描述非功能需求的模型。
3.正在开发或者交付的系统或者软件本身。
4.需求验证的用例。
5.发现的缺陷或者需求不一致问题
需求的管理内容看似各种各样,而且还要关联到后续的设计、开发、测试的工件,这样相关的内容就更多了,如何管理好呢?可以把各种工作的管理内容整理为三类:
1.文档,例如:需求文档、设计文档、开发文档、测试文档。
2.条目数据,例如:需求的用例列表、设计的模块列表、开发的code目录、测试的bug列表。
3.模型,例如:需求模型、架构模型、数据模型、代码模型、测试模型。
虽然各个内容不同,但是同一种形式的管理方法基本相同。在三种形式中,模型适合作为专业化分析设计工作的形式;文档则可以提供给所有人阅读,尤其是那些非设计和开发人员;条目数据则适合进行跟踪管理。
通过如上分析,无疑模型是整个研发过程中工作的关键,如果没有充分的分析设计,管理的内容质量都不行、条理不清楚,再好的管理流程和工具也管理不好。正是基于这样的原因,我们提出基于模型的需求管理方法,主要的思路是:
1.基于模型进行专业的需求分析、系统设计、软件设计和测试分析设计。
2.基于模型的逻辑关系中的层级关系,把模型变为条目列表,进行跟踪管理,重点是要建立各种模型元素之间的关联关系,例如:需求中的用例和设计中的组件的实现关系,测试中的bug和对应的需求用例或者组件的跟踪关系。
3.把各种文档,可以基于模型生成,这样文档就自然关联到了模型上,也可以通过列表的形式进行跟综合管理。
通过把模型转化为列表数据,可以很方便的支持对象列表、影响分析矩阵、跟踪树、看板、统计图等形式,各个版本的需求差异分析也方便多了。
为此我们专门开发了基于模型的需求管理工具iSpace,它基于主流建模工具EA的模型生成条目化数据进行管理,今后可以根据用户需要,扩展到其他建模工具的模型。
如下是iSpace的一些使用场景界面截图和说明。
把EA模型中的元素,采用iSapce的列表视图,可以方便进行跟踪管理。
基于系统工程或者软件工程的全周期模型:需求模型、设计模型、代码模型、测试模型,都可以条目列表的视图浏览和管理。这样就很方便进行完整的管理,各种管理(需求管理、设计管理、代码管理、测试管理)都有一套方法,有些是重叠的,如果分别在不同的工具里面管理,则互相之间的关联是一个复杂的工作。
如果在一个建模工具中把所有的模型都建立了,再基于模型对应到各种管理视图,看似复杂的各种管理一起就简单了,很多关联问题就很容易解决了。
如下是在iSpace中编辑对应的元素和属性内容,会自动地同步到建模工具里面,反之亦然。
还可以很方便的选中一个元素,通过关联选择器快速的选择其他关联的元素,这样操作方便多了,关键是在建模工具EA中还能自动同步出模型图上对应元素之间的关系。
为了弥补建模工具的描述方式比较单一的问题(以文本为主),特别提供了一个富文本编辑区域,用户可以:
创建表格
粘贴图片
上传视频
挂接文档
这对于有些工作场景非常有用,例如:
需求人员要把一个界面原型图或者专业算法图放在一个用例下面。
测试人员发现了bug,要截屏,然后把截图放在一个bug模型元素下面。
还可以基于模型里的元素关系,快速生成一个关联脉络图,这对需求变更的影响分析或者bug的影响分析很有实用价值。
下面就针对需求的各种管理的工作场景专门截图说明。
如下是变更影响分析,建立了各种模型(需求模型、设计模型、code模型、测试模型)后,如果用户提出了需求变更,可以生成关联脉络图,选中一个变更,就可以查看影响的所有模型的内容。
如下是bug影响分析,建立了各种模型(需求模型、设计模型、code模型、测试模型)后,如果发现了bug,可以生成关联脉络图,选中一个bug,就可以查看影响的所有模型的内容。
需求还需要跟踪各种状态(提出、待开发、待测试、待发布、已发布),目前看板是一个很实用的跟踪方法,iSpace可以根据各种元素的状态自动分配到看板的状态列上,还可以通过拖动改变元素状态。如果配上一个大屏幕,就是一个很好的电子看板了。
需求管理需要进行各种统计,例如 需求完成统计、需求验证覆盖率统计、需求质量统计,为此提供了各种统计图,统计的数据都来自于模型,用户可以随时转换到统计视图,实时了解需求的各种信息,指导相关的开发、测试和管理工作。
后记
希望您读了此文后有所受益。
如果您有经验乐于分享,欢迎投稿给我们。
作者:可乐
来源:http://www.uml.org.cn/modeler/201905273.asp