需求分析和需求建模概述

发表于:2021-5-19 09:52

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:人月聊IT    来源:今日头条

  今天准备谈下软件需求分析和开发方面的话题,软件需求是整个软件生命周期中最重要的一个环境,但是我们注意到在当前类似SCRUM等各种敏捷方法论下,软件需求被一再的弱化。
  我一再强调,如果仅仅是需求变更,采用类似用户故事这种方式进行需求描述和分解没有问题,但是如果是全新的建设一个大的业务系统,那么软件需求就是一个系统工程,必须要进行完整的业务需求和业务建模。
  需求分析和需求建模概述
  01-需求究竟是什么?
  对于业务用户来说,需求就是他们在不同的业务场景下面临的业务问题,或者说他们希望一种解决方法来达成业务目标;而对于技术人员来说,需求就是你需要实现的软件功能。
  因此需求本身是分层的,其包含了业务需求,用户需求,产品需求和功能需求。
  · 业务需求简单来说就是业务目标和范围。
  · 而用户需求是用户必须要完成的工作和任务,希望解决的问题。
  · 软件功能需求说明书中的软件需求已经到了具体需要实现的软件功能。
  不同的角色对需求的理解都不一样,而需求工程师需要做好的就是从业务需求到软件需求的一个关键转化和抽象。
  即通过业务建模来实现了现实世界的抽象化模型表达。
  对于完整的需求工程实际包括了需求开发和需求管理两个方面的内容,如果实施过CMMI过程改进也可以看到,在CMMI里面需求管理和需求开发是两个独立的过程域。
  需求开发过程重点就是需求定义和获取,需求分析,需求开发,需求验证几个关键内容。而对于需求管理即包括了需求变更管理,需求追踪,需求版本和基线管理等。
  02-需求分析概述
  需求分析是需求工程中的核心工作,也是需求分析人员的工作重心。
  在通过需求调研活动捕获原始需求后,需求分析人员要以原始需求作为输入,通过需求分析,选择一种业务导向的线索将零散的需求串起来,形成体系完整、内容清晰的脉络与框架,以指导后续的设计、开发工作,并最终将需求分析产出的工件输出给开发团队。
  需求分析就是先分解,再提炼,并在这个过程中消除矛盾。
  分解是一种自顶向下的方法,其目的是为了降低问题域的复杂度,通过对问题域的逐层分解,将问题域分解为相对独立的更小的域,从而降低其复杂度,最后分而治之各个击破,得到基于每个分解后域的需求分析结果。
  结合原来的需求实践可以看到,在需求分析时,也经常使用了分解的方法:将待构建的目标系统分解为模块,再将模块分解为不同的业务单元,最后基于业务单元分别进行分析并得到需求分析结果。
  需求分析的核心内容就是分解+抽象。
  基于分解后的“小块”分别分析后会得到很多的需求分析片段,基于这些“小块”的片段之间可能会存在一些矛盾,比如说可能存在一些重复、冲突或是逻辑上的不完整,要消除这些矛盾,就需要将片段放到更大的上下文中考虑,这是一个自底向上的过程,即抽象与提炼。
  03-需求建模
  建模的目的是帮助我们按照实际情况或按我们需要的样式对系统进行可视化,提供一种详细说明系统的结构或行为的方法,给出一个指导系统构造的模板,对我们所做出的决策进行文档化。
  建模的例子在现实生活中无处不在,比如大家常见的对于建筑物的建模,通过模型建筑师可以在真正建造建筑物前将建筑物可视化,从而可以对现实进行简化及研究,从而使用较小的成本发现并修改问题。
  另一方面,模型也是沟通过程中常用的重要手段,试想一下,如果没有模型,建筑师将如何向他人阐明设计理念,销售人员将如何向购买者介绍及推荐?
  同样的,需求建模是需求分析的主要手段,它通过简化、强调来帮助需求分析人员理清思路,对问题域进行研究并最终用于和上游及下游进行沟通。
  如果是对于企业级的业务和需求分析,我们可以参考类似企业架构中的需求和业务建模框架,比如企业架构模型中的Zachman框架,其中的企业模型和概念模型很多就属于需求层面内容。而类似TOGAF方法论中的业务架构和数据架构的建模思路,我们常说的ARIS的流程分析和建模方法等都可以作为我们在进行端到端需求流程和需求分析时的重要参考。
  另外在需求建模过程中,我们总结如下要点需要注意:
  建模只是手段,不要为了建模而建模
  建筑师对建筑物进行建模,要么是为了验证自己的设计思路,要么是需要希望通过模型进一步研究建筑物以发现问题,要么是希望通过模型向他人传达自己的设计意图,总之,建筑师不会为了建模而建模。
  同样的,需求建模也只是需求分析的手段,要带着目的去建模,不要为了建模而建模!
  模型有很多种,不同的模型是对现实在不同精度级别的表达
  还是引用现实生活中的例子来讲解:售房人员在向购房者推荐房子时,通常会使用两种模型,其一是立体的模型,其二是房子的平面模型(买过房子的人都知道,就是房书)。立体的模型可以让购房者能比较好地感受到房子的方位,采光以及小区环境等,然而对于房子的布局以及各个部位的尺寸,使用这种模型就不太容易表达,而这正是平面模型的特长。
  类似的,需求模型也有很多种,不同需求模型有不同的用处,需要在需求分析过程中根据目标来选择不同的模型。
  单个模型是不充分的
  通过上面的阐述可以知道,不同的模型有不同的特点,可以在某一或某些方面对问题域进行表达,所以在需求分析过程中一般要根据目标选择不同的模型来对问题域充分建模。
  需求建模常用的模型主要包括了如下:

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号