关于敏捷过程中的Stroy, Epic和Theme 的关系和区别(翻译)

本文解析了敏捷开发中故事(Stroy)、史诗(Epic)与主题(Theme)的概念,阐述了它们在需求描述中的作用。同时,引入了精益创业中MMF(最小市场特征)和MVP(最小可行产品)的概念,解释了这些概念如何帮助团队更有效地进行产品迭代。
部署运行你感兴趣的模型镜像

 

这三个名称其实没那么重要, 只是为了方便敏捷过程中更加有利于沟通.

Stroy

As a <type of user> I <want/can/am able to/need to/etc.> so that <some reason>.

即,言简意赅的描述清楚需求;

Epic

可以认为就是一个大的Stroy, 还没有拆解, 是对大Story的一个描述性标签;

Theme

可以认为是一组Story, 有相似特性的一些Story的集合

MMF & MVP

精益人还介绍了其他术语,如MMF(最小市场特征或最小市场特征集Minimal Marketable Feature or Minimal Marketable Feature set)这是另外一种定义需求的方式。MMF通常比故事更大,于是许多人已经将它视为史诗故事了,但是它比刚才的大故事有更多具体的定义。如果你发布的东西有客户来买,功能再少了客户就不买了,这样的最少特性集就是MMF。如果它没有市场,可能是它太小了,而且不能分解出更大的故事。一个或多个MMF与最小可用产品(MVP)一起发布。因为精益企业(Lean Startup)活动的出现,最近这个词已经非常流行。

您可能感兴趣的与本文相关的镜像

Wan2.2-T2V-A5B

Wan2.2-T2V-A5B

文生视频
Wan2.2

Wan2.2是由通义万相开源高效文本到视频生成模型,是有​50亿参数的轻量级视频生成模型,专为快速内容创作优化。支持480P视频生成,具备优秀的时序连贯性和运动推理能力

在WPF中,要使用Story获取动画当前值,可以通过获取动画的`Clock`对象,然后从`Clock`对象中获取当前值。以下是一个示例代码,展示了如何获取`DoubleAnimation`的当前值: ```csharp using System; using System.Windows; using System.Windows.Controls; using System.Windows.Media.Animation; namespace WpfApp { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); // 创建一个按钮 Button myButton = new Button(); myButton.Content = "Animated Button"; myButton.Width = 100; this.Content = myButton; // 创建一个DoubleAnimation DoubleAnimation myAnimation = new DoubleAnimation(); myAnimation.From = 100; myAnimation.To = 200; myAnimation.Duration = TimeSpan.FromSeconds(5); // 创建一个Storyboard Storyboard storyboard = new Storyboard(); Storyboard.SetTarget(myAnimation, myButton); Storyboard.SetTargetProperty(myAnimation, new PropertyPath("Width")); storyboard.Children.Add(myAnimation); // 开始动画 storyboard.Begin(); // 定时获取动画当前值 System.Windows.Threading.DispatcherTimer timer = new System.Windows.Threading.DispatcherTimer(); timer.Interval = TimeSpan.FromMilliseconds(100); timer.Tick += (sender, e) => { // 获取动画的Clock对象 ClockGroup clockGroup = storyboard.CreateClock() as ClockGroup; if (clockGroup != null && clockGroup.Children.Count > 0) { AnimationClock animationClock = clockGroup.Children[0]; if (animationClock.CurrentState == ClockState.Active) { // 获取动画的当前值 double currentValue = (double)animationClock.CurrentValue; Console.WriteLine($"Current value of animation: {currentValue}"); } } }; timer.Start(); } } } ``` 在上述代码中,首先创建了一个`DoubleAnimation`一个`Storyboard`,并将动画添加到故事板中。然后开始动画,并使用`DispatcherTimer`定时获取动画的当前值。通过`storyboard.CreateClock()`方法创建`ClockGroup`对象,再从`ClockGroup`中获取`AnimationClock`对象,最后通过`AnimationClock.CurrentValue`属性获取动画的当前值。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值