我经常听到项目经理(项目经理)谈论特性和功能。而且我很困惑要区分它们。有时我认为功能等同于用户故事。诸如“作为用户,鲍勃应该能够看到他的付款清单”之类的东西,他们称其为功能。有时它变得像子系统一样大,例如“通过Web应用程序发送SMS的能力”。另一方面,功能有时会像“为数字输入实现数字分组”这样的任务一样小,而在某些情况下,它会像整个CRUD操作一样大。
我的问题是,如何区分功能和功能?
我经常听到项目经理(项目经理)谈论特性和功能。而且我很困惑要区分它们。有时我认为功能等同于用户故事。诸如“作为用户,鲍勃应该能够看到他的付款清单”之类的东西,他们称其为功能。有时它变得像子系统一样大,例如“通过Web应用程序发送SMS的能力”。另一方面,功能有时会像“为数字输入实现数字分组”这样的任务一样小,而在某些情况下,它会像整个CRUD操作一样大。
我的问题是,如何区分功能和功能?
Answers:
功能是销售人员要卖的东西。
函数是程序员开发的。
函数不能很好地适应用户故事的上下文,并且大多数情况下对用户是透明的。它们可以是后端过程,也可以是某种独特或通用的应用程序功能,可以使其他功能或可能的其他功能得以适当实现。
另一方面,任务是必须完成的单个工作单元,才能交付功能或功能。
在我的项目中,我倾向于不区分功能和功能,我为功能编写用户案例,并添加功能或将重构工作作为“任务”来完成一个功能。
有时这会使某些功能在项目计划上看起来不必要地过大,但这没关系,因为如果我需要重构功能1和2以及功能3以正确地交付功能1,那么我可能唯一可用于该冲刺的交付物就是功能1,或者可能根本没有交付物。
只要在sprint结束时我仍然可以使用软件,那么我的项目就是Agile。
我认为必须针对特定的方法论或特定的需求文化做出正确的区分。以下是我自己的解释。
功能:用户必须在特定版本中拥有的,对软件价值产生重大影响的核心要求。示例:在文本编辑器上保存功能。
功能:具有良好的软件功能,可以增加软件的价值,但并不是软件正常运行和执行其功能的绝对必要条件。例如,在数据输入表单上具有撤消功能,或将文档另存为gif文件以供文本编辑器使用(有线!)。
每个功能的背后都是为用户提供功能预期目的所需的功能。
示例:大学的注册系统将具有“学生注册课程”功能。此任务需要相当多的功能以及对数据库的访问。该功能的设计将涉及对用户实际任务的了解-注册课程。这将是实现用户任务所必需的“交互设计”的前提。该功能将被设计为实现交互需求。
程序员正在寻找要编码的函数。交互设计人员正在寻找通过与用户的软件交互设计来交付此所需功能的最佳方法。首先要了解用户如何才能最好地实现其目标。接下来是所需功能的标识。
以上是不科学的,仅是我的看法。
重要的是要记住产品功能和产品功能之间的区别。功能是“产品对用户任务集的答案”;功能是产品中用于执行功能的固有“用户工具”。拨打电话是一项功能;拨号音和按键式键盘是完成此功能的功能。
我同意这是不值得的,因为在某些情况下术语经常互换使用。但是,在更广泛的管理环境中,我认为有一些重要点。首先,PM还可以指产品经理。必须由人来决定市场在价格,交货日期和功能方面将支持什么。我通常会发现在市场环境中首选该功能。项目经理的职责是管理项目,以便在预算范围内按时交付所需产品。对于架构师和设计师而言,该功能是给定的,可以认为是提供数据转换和存储的人类组织中已交付的功能,但是必须加以修改,直到将设计简化为可以分配给开发人员的可委托工作单元为止。通常情况下,某个功能不能完全映射到机器系统中的一组功能。例如,快速和安全是消费者希望的功能,但不能在代码中分开。这些新兴的特性使非功能性需求难以满足。