精华内容
下载资源
问答
  • 软件需求分析步骤_建立满足用户需求的云的5个步骤
    千次阅读
    2020-07-01 18:32:49

    软件需求分析的五个步骤

    本文与Ian Tewksbury共同撰写。

    无论您如何定义云,云只是用户执行其组织价值流中的一部分的另一种工具。 当谈论任何新的范式或技术(云可以说是两者)时,很容易被它闪亮的新颖性所分散。 对话可以Swift转变为功能性愿望清单,这些愿望清单由一系列永无止境的问题引起,您可能已经考虑了所有这些问题:

    • 它是公共的,私人的还是混合的?
    • 它会使用虚拟机或容器,还是同时使用两者?
    • 会自助吗?
    • 它是从开发到生产的全自动化产品,还是有手动门?
    • 我们能做到多快?
    • 那么工具X,Y或Z呢?

    清单继续。

    那是因为交付的不是用户想要或需要的工具。 更糟糕的是,当用户确实需要一系列可以随着时间推移而换出的工具时,随着新的,更明亮,升级的工具可以更好地满足他们的需求,它可能只是一个工具。

    专注于重要的事情

    问题是焦点,传统上一直是工具。 但是这些工具并不能为您的组织增加价值。 最终用户会使用工具。 您需要将重点从构建云(例如技术和工具)转移到人员,用户。

    除了使用工具的用户(而不是工具本身)是推动价值的事实之外,还有其他一些理由将注意力集中在用户身上。 这些工具供用户用来解决他们的问题并允许他们创造价值,因此,如果这些工具不能满足那些用户的需求,那么这些工具将不会被使用。 如果您提供了用户不喜欢的工具,那么他们将不会使用它们。 这是人类的自然行为。

    IT行业数十年来一直为用户提供单一解决方案,因为只有一两种选择,而用户无权更改。 这已不再是这种情况。 我们现在生活在技术选择的世界中。 没有选择的权利不再是用户所接受的; 他们在个人技术生活中有很多选择,他们也希望在工作场所也有选择。 今天的用户已经受过教育,并且知道有比您提供的更好的选择。

    结果,在物理上最安全的位置之外,无法阻止他们仅执行他们想要的操作,我们称之为“影子IT”。 如果您的组织具有如此严格的安全性和合规性策略,以至于无法掩盖IT,那么您最好的许多人都会感到沮丧,而转向其他为他们提供选择的组织。

    由于所有这些原因,您必须在设计最终用户时最先考虑昂贵且耗时的云项目。

    建立满足用户需求的云的五步过程

    现在我们知道了原因 ,让我们谈谈如何 。 您如何为最终用户构建云? 您如何开始将注意力从技术转移到使用该技术的人们身上?

    通过经验,我们了解到最好的方法涉及两件事:从用户那里获得不断的反馈,以及迭代地构建事物。

    您的云环境将随着您的组织不断发展。 以下五步过程将帮助您创建满足用户需求的云。

    1.确定您的用户是谁。

    在开始向用户提问之前,首先必须确定新云的用户是谁。 他们可能包括在云上构建应用程序的开发人员。 将运营,维护并可能构建云的运营团队; 还有保护您组织的安全团队。 对于第一次迭代,将用户范围缩小到较小的组,这样您就不会因反馈而感到不知所措。 要求您确定的每个用户组任命两名联络员(主要和次要),他们将代表他们的团队在这次旅程中。 这也将使您的初次交付体积和时间都较小。

    2.与您的用户面对面交流,以获取宝贵的意见。

    获得用户反馈的最佳方法是直接沟通。 如果您收到回复,要求输入的大量电子邮件将自动选择答复者。 小组讨论可能会有所帮助,但是当人们有一个私人的,专心的听众时,他们会变得更加坦率。

    与您的第一批用户安排面对面的个人会议,向他们询问以下问题:

    • 需要什么来完成任务?
    • 想要什么来完成任务?
    • 您当前最烦人的技术难题是什么?
    • 您当前最烦人的政策或程序上的痛苦是什么?
    • 您有什么想法可以解决您的任何需求,想要或痛苦?

    这些问题只是指导原则,并不是每个组织的理想选择。 它们不应该是您提出的唯一问题,而应该引起进一步的讨论。 一定要告诉人们说或问的任何内容都应作为反馈,所有反馈(无论是正面还是负面)都是有帮助的。 这些对话的结果将有助于确定您的发展重点。

    收集这种水平的个性化反馈是保持最初的用户规模较小的另一个原因:与每个用户坐下来要花费很多时间,但是我们发现绝对值得投资。

    3.设计并交付解决方案的第一版。

    从最初的用户那里收集反馈后,就可以设计并提供功能了。 我们建议尝试提供整个解决方案。 设计和交付阶段应该很短; 这是为了避免因花一年时间构建您认为正确的解决方案而犯的巨大错误,而只是让您的用户拒绝它,因为这对他们没有好处。 您选择的用于构建云的特定工具将取决于您的组织及其特定需求。 只要确保您构建的解决方案基于用户的反馈,并以小块的形式交付它,以尽可能多地征求他们的反馈。

    4.询问用户有关第一次迭代的反馈。

    太好了,现在您已经设计了新奇的新云并将其首次交付给最终用户! 您没有花一年的时间来完成它,而是一小部分地解决了它。 一小部分做事情为什么很重要? 这是因为您要回到用户组并收集有关设计和交付的反馈。 他们喜欢什么? 他们不喜欢什么? 您是否正确解决了他们的担忧? 技术很棒,但是系统的流程或策略方面仍然缺乏吗?

    同样,您要提出的问题取决于您的组织。 这里的关键是继续早期阶段的讨论。 毕竟,您是在为用户构建此云,因此请确保对用户有用,并有效利用每个人的时间。

    5.返回步骤1。

    这是一个反复的过程。 您的第一次交付应该是快速而小巧的,以后的所有迭代也应该如此。 不要指望能够一次,两次甚至三次遵循此过程并完成。 当您进行迭代时,您将引入更多的用户并在此过程中变得更好。 您将从用户那里获得更多支持。 您将能够更快,更可靠地进行迭代。 最后,您将更改流程以满足用户的需求。

    用户是此过程中最重要的部分,但迭代是第二重要的部分,因为迭代使您可以继续与用户联系并获取更多信息。 在每个阶段中,请注意哪些有效,哪些无效。 内省和诚实。 我们是否为所花费的时间提供了最大的价值? 如果不是,请在下一阶段尝试其他操作。 关于在每个周期中不花费太多时间的重要之处在于,如果这次不起作用,您可以轻松地对其进行下一次调整,直到找到适合您组织的方法为止。

    这仅仅是开始

    通过许多客户参与,用户收集的反馈以及现场同行的经验,我们一次又一次地发现,构建云时您能做的最重要的事情就是与用户交谈。 看起来似乎很明显,但是令人惊讶的是,有多少组织将花费数月或数年时间来构建某些东西,然后发现它甚至对最终用户没有用。

    现在您知道了为什么要继续关注最终用户制定一个以他们为中心的云的过程。 剩下的部分是我们大家都喜欢的部分,是您外出去做的部分。


    本文基于“ 为最终用户设计混合云,否则将失败 ”,作者将在5月8日至10日在旧金山举行的Red Hat Summit 2018上发表演讲。

    5月7日前注册可节省500美元的注册费用。 在付款页面上使用折扣码OPEN18来应用折扣。

    翻译自: https://opensource.com/article/18/4/5-steps-building-your-cloud-correctly

    软件需求分析的五个步骤

    更多相关内容
  • 和数据分析一样 1、确定目的 2、数据获取, 3、数据预处理和数据探索(特征工程) 4、模型建立(选择模型) 5、模型训练 6、测试评估(评价指标) 7、优化 8、保存应用和撰写报告 很好的参考资料: 流程: 【1】...

    和数据分析一样

    1、确定目的
    2、数据获取,
    3、数据预处理和数据探索(特征工程)
    4、模型建立(选择模型)
    5、模型训练
    6、测试评估(评价指标)
    7、优化(调参,损失函数等)
    8、保存应用和撰写报告

    在这里插入图片描述
    在这里插入图片描述

    很好的参考资料:
    流程:
    【1】https://zhuanlan.zhihu.com/p/184673895
    【2】https://www.cnblogs.com/helongBlog/p/11612104.html
    【3】https://blog.csdn.net/qq_27567859/article/details/79666969
    【4】https://www.jianshu.com/p/afa0facbe625

    展开全文
  • 通常,我们拿到一具体的领域问题后,可以使用网上一些具有代表性的、大众经常会用到的公开数据集。相较于自己整理的数据集,显然大众的数据集更具有代表性,数据处理的结果也更容易得到大家的认可...

    目录

    1.数据收集
    2.数据预处理与特征工程
    2.1 数据清理
    2.2 数据集成
    2.3 数据规约
    2.4 数据变换
    3.模型的选择与训练
    4.模型的评估与优化

    处理机器学习问题,通常分为以下几步:

    在这里插入图片描述

    1 数据收集

    通常,我们拿到一个具体的领域问题后,可以使用网上一些具有代表性的、大众经常会用到的公开数据集。相较于自己整理的数据集,显然大众的数据集更具有代表性,数据处理的结果也更容易得到大家的认可。此外,大众的数据集在数据过拟合、数据偏差、数值缺失等问题上也会处理的更好。但如果在网上找不到现成的数据,那我们只好收集原始数据,再去一步步进行加工、整理,这将是一个漫长的过程,需要我们足够细心。

    2 数据预处理与特征工程

    在真实数据中,我们拿到的数据可能包含了大量的缺失值,可能包含大量的噪音,也可能因为人工录入错误导致有异常点存在,非常不利于算法模型的训练。

    数据的质量,直接决定了模型的预测和泛化能力的好坏。它涉及很多因素,包括:准确性、完整性、一致性、时效性、可信性和解释性。

    数据预处理的主要步骤分为:数据清理、数据集成、数据规约和数据变换。

    2.1 数据清理

    数据清理(data cleaning) 的主要思想是通过填补缺失值、光滑噪声数据,平滑或删除离群点,并解决数据的不一致性来“清理“数据。

    1、缺失值的处理

    针对这些缺失值的处理方法,主要是基于变量的分布特性和变量的重要性(信息量和预测能力)采用不同的方法。主要分为以下几种:

    删除变量:若变量的缺失率较高(大于80%),覆盖率较低,且重要性较低,可以直接将变量删除。

    定值填充:工程中常见用-9999进行替代

    统计量填充:若缺失率较低(小于95%)且重要性较低,则根据数据分布的情况进行填充。对于数据符合均匀分布,用该变量的均值填补缺失,对于数据存在倾斜分布的情况,采用中位数进行填补。

    插值法填充:包括随机插值,多重差补法,热平台插补,拉格朗日插值,牛顿插值等

    模型填充:使用回归、贝叶斯、随机森林、决策树等模型对缺失数据进行预测。

    哑变量填充:若变量是离散型,且不同值较少,可转换成哑变量,例如性别SEX变量,存在male,fameal,NA三个不同的值,可将该列转换成 IS_SEX_MALE, IS_SEX_FEMALE, IS_SEX_NA。若某个变量存在十几个不同的值,可根据每个值的频数,将频数较小的值归为一类’other’,降低维度。此做法可最大化保留变量的信息。

    总结来看,楼主常用的做法是:先用pandas.isnull.sum()检测出变量的缺失比例,考虑删除或者填充,若需要填充的变量是连续型,一般采用均值法和随机差值进行填充,若变量是离散型,通常采用中位数或哑变量进行填充。

    注意:若对变量进行分箱离散化,一般会将缺失值单独作为一个箱子(离散变量的一个值)

    2、离群点处理

    异常值是数据分布的常态,处于特定分布区域或范围之外的数据通常被定义为异常或噪声。
    异常分为两种:“伪异常”,由于特定的业务运营动作产生,是正常反应业务的状态,而不是数据本身的异常;“真异常”,不是由于特定的业务运营动作产生,而是数据本身分布异常,即离群点。

    主要有以下检测离群点的方法:

    简单统计分析:根据箱线图、各分位点判断是否存在异常,例如pandas的describe函数可以快速发现异常值。

    3σ原则:若数据存在正态分布,偏离均值的3σ之外. 通常定义P(|x-u|>3σ)<=0.003范围内的点为离群点。

    基于绝对离差中位数(MAD):这是一种稳健对抗离群数据的距离值方法,采用计算各观测值与平均值的距离总和的方法。放大了离群值的影响。

    基于距离:通过定义对象之间的临近性度量,根据距离判断异常对象是否远离其他对象,缺点是计算复杂度较高,不适用于大数据集和存在不同密度区域的数据集

    基于密度:离群点的局部密度显著低于大部分近邻点,适用于非均匀的数据集

    基于聚类:利用聚类算法,丢弃远离其他簇的小簇。

    总结来看,在数据处理阶段将离群点作为影响数据质量的异常点考虑,而不是作为通常所说的异常检测目标点,因而楼主一般采用较为简单直观的方法,结合箱线图和MAD的统计方法判断变量的离群点。

    具体的处理手段:

    根据异常点的数量和影响,考虑是否将该条记录删除,信息损失多

    若对数据做了log-scale 对数变换后消除了异常值,则此方法生效,且不损失信息

    平均值或中位数替代异常点,简单高效,信息的损失较少

    在训练树模型时,树模型对离群点的鲁棒性较高,无信息损失,不影响模型训练效果

    3、噪声处理

    噪声是变量的随机误差和方差,是观测点和真实点之间的误差,即obs = xε。通常的处理办法:对数据进行分箱操作,等频或等宽分箱,然后用每个箱的平均数,中位数或者边界值(不同数据分布,处理方法不同)代替箱中所有的数,起到平滑数据的作用。另外一种做法是,建立该变量和预测变量的回归模型,根据回归系数和预测变量,反解出自变量的近似值。

    2.2 数据集成

    数据分析任务多半涉及数据集成。数据集成将多个数据源中的数据结合成、存放在一个一致的数据存储,如数据仓库中。这些源可能包括多个数据库、数据方或一般文件。

    1.实体识别问题:例如,数据分析者或计算机如何才能确信一个数 据库中的 customer_id 和另一个数据库中的 cust_number 指的是同一实体?通常,数据库和数据仓库 有元数据——关于数据的数据。这种元数据可以帮助避免模式集成中的错误。

    2.冗余问题。一个属性是冗余的,如果它能由另一个表“导出”;如年薪。属性或 维命名的不一致也可能导致数据集中的冗余。用相关性检测冗余:数值型变量可计算相关系数矩阵,标称型变量可计算卡方检验。

    3.数据值的冲突和处理:不同数据源,在统一合并时,保持规范化,去重。

    2.3 数据规约

    数据归约技术可以用来得到数据集的归约表示,它小得多,但仍接近地保持原数据的完整性。这样,在归约后的数据集上挖掘将更有效,并产生相同(或几乎相同)的分析结果。一般有如下策略:

    1.维度规约

    用于数据分析的数据可能包含数以百计的属性,其中大部分属性与挖掘任务不相关,是冗余的。维度归约通过删除不相关的属性,来减少数据量,并保证信息的损失最小。

    属性子集选择:目标是找出最小属性集,使得数据类的概率分布尽可能地接近使用所有属性的原分布。在压缩 的属性集上挖掘还有其它的优点。它减少了出现在发现模式上的属性的数目,使得模式更易于理解。

    逐步向前选择:该过程由空属性集开始,选择原属性集中最好的属性,并将它添加到该集合中。在其后的每一次迭代,将原属性集剩下的属性中的最好的属性添加到该集合中。

    逐步向后删除:该过程由整个属性集开始。在每一步,删除掉尚在属性集中的最坏属性。

    向前选择和向后删除的结合:向前选择和向后删除方法可以结合在一起,每一步选择一个最 好的属性,并在剩余属性中删除一个最坏的属性。

    python scikit-learn 中的递归特征消除算法Recursive feature elimination (RFE),就是利用这样的思想进行特征子集筛选的,一般考虑建立SVM或回归模型。

    单变量重要性:分析单变量和目标变量的相关性,删除预测能力较低的变量。这种方法不同于属性子集选择,通常从统计学和信息的角度去分析。

    pearson相关系数和卡方检验,分析目标变量和单变量的相关性。

    回归系数:训练线性回归或逻辑回归,提取每个变量的表决系数,进行重要性排序。

    树模型的Gini指数:训练决策树模型,提取每个变量的重要度,即Gini指数进行排序。

    Lasso正则化:训练回归模型时,加入L1正则化参数,将特征向量稀疏化。

    IV指标:风控模型中,通常求解每个变量的IV值,来定义变量的重要度,一般将阀值设定在0.02以上。

    以上提到的方法,没有讲解具体的理论知识和实现方法,需要同学们自己去熟悉掌握。楼主通常的做法是根据业务需求来定,如果基于业务的用户或商品特征,需要较多的解释性,考虑采用统计上的一些方法,如变量的分布曲线,直方图等,再计算相关性指标,最后去考虑一些模型方法。如果建模需要,则通常采用模型方法去筛选特征,如果用一些更为复杂的GBDT,DNN等模型,建议不做特征选择,而做特征交叉。

    2.维度变换

    维度变换是将现有数据降低到更小的维度,尽量保证数据信息的完整性。楼主将介绍常用的几种有损失的维度变换方法,将大大地提高实践中建模的效率

    主成分分析(PCA)和因子分析(FA):PCA通过空间映射的方式,将当前维度映射到更低的维度,使得每个变量在新空间的方差最大。FA则是找到当前特征向量的公因子(维度更小),用公因子的线性组合来描述当前的特征向量。

    奇异值分解(SVD):SVD的降维可解释性较低,且计算量比PCA大,一般用在稀疏矩阵上降维,例如图片压缩,推荐系统。

    聚类:将某一类具有相似性的特征聚到单个变量,从而大大降低维度。

    线性组合:将多个变量做线性回归,根据每个变量的表决系数,赋予变量权重,可将该类变量根据权重组合成一个变量。

    流行学习:流行学习中一些复杂的非线性方法,可参考skearn:LLE Example

    2.4 数据变换

    数据变换包括对数据进行规范化,离散化,稀疏化处理,达到适用于挖掘的目的。

    1.规范化处理:数据中不同特征的量纲可能不一致,数值间的差别可能很大,不进行处理可能会影响到数据分析的结果,因此,需要对数据按照一定比例进行缩放,使之落在一个特定的区域,便于进行综合分析。特别是基于距离的挖掘方法,聚类,KNN,SVM一定要做规范化处理。

    最大 - 最小规范化:将数据映射到[0,1]区间,

    Z-Score标准化:处理后的数据均值为0,方差为1,

    Log变换:在时间序列数据中,对于数据量级相差较大的变量,通常做Log函数的变换, .

    2.离散化处理:数据离散化是指将连续的数据进行分段,使其变为一段段离散化的区间。分段的原则有基于等距离、等频率或优化的方法。数据离散化的原因主要有以下几点:

    模型需要:比如决策树、朴素贝叶斯等算法,都是基于离散型的数据展开的。如果要使用该类算法,必须将离散型的数据进行。有效的离散化能减小算法的时间和空间开销,提高系统对样本的分类聚类能力和抗噪声能力。

    离散化的特征相对于连续型特征更易理解。

    可以有效的克服数据中隐藏的缺陷,使模型结果更加稳定。

    等频法:使得每个箱中的样本数量相等,例如总样本n=100,分成k=5个箱,则分箱原则是保证落入每个箱的样本量=20。

    等宽法:使得属性的箱宽度相等,例如年龄变量(0-100之间),可分成 [0,20],[20,40],[40,60],[60,80],[80,100]五个等宽的箱。

    聚类法:根据聚类出来的簇,每个簇中的数据为一个箱,簇的数量模型给定。

    3.稀疏化处理:针对离散型且标称变量,无法进行有序的LabelEncoder时,通常考虑将变量做0,1哑变量的稀疏化处理,例如动物类型变量中含有猫,狗,猪,羊四个不同值,将该变量转换成is_猪,is_猫,is_狗,is_羊四个哑变量。若是变量的不同值较多,则根据频数,将出现次数较少的值统一归为一类’rare’。稀疏化处理既有利于模型快速收敛,又能提升模型的抗噪能力。

    3.模型的选择与训练

    首先我们要对处理好的数据进行分析,判断训练数据有没有类标,若是有类标则应该考虑监督学习的模型,否则可以划分为非监督学习问题。

    其次分析问题的类型是属于分类问题还是回归问题,当我们确定好问题的类型之后再去选择具体的模型。在模型的实际选择时,通常会考虑尝试不同的模型对数据进行训练,然后比较输出的结果,选择最佳的那个。

    此外,我们还会考虑到数据集的大小。若是数据集样本较少,训练的时间较短,通常考虑朴素贝叶斯等一些轻量级的算法,否则的话就要考虑SVM等一些重量级算法。

    4.模型的评估与优化

    我们可以选择查准率、查全率、AUC指标表现更好的模型;
    还可以通过的交叉验证法用验证集来评估模型性能的好坏;
    当然,也可以针对一种模型采用多种不同的方法,每种方法给予不同的权重值,来对该模型进行综合“评分”。

    在模型评估的过程中,我们可以判断模型的“过拟合”和“欠拟合”。若是存在数据过度拟合的现象,说明我们可能在训练过程中把噪声也当作了数据的一般特征,可以通过增大训练集的比例或是正则化的方法来解决过拟合的问题;

    若是存在数据拟合不到位的情况,说明我们数据训练的不到位,未能提取出数据的一般特征,要通过增加多项式维度、减少正则化参数等方法来解决欠拟合问题。

    最后,为了使模型的训练效果更优,我们还要对所选的模型进行调参,这就需要我们对模型的实现原理有更深的理解。

    此外,在实际项目中,我们还会对机器学习的模型进行模型的融合,根据模型的重要程度对每个模型设置不同的权重等,以调高模型的准确率。

    关于模型的选择和预处理这一块,我们可以参阅sklearn官方手册:https://scikit-learn.org。

    参考:
    1.解决机器学习问题的一般流程
    2.整理一份详细的数据预处理方法
    3.

    展开全文
  • 敏捷开发流程的8个步骤

    千次阅读 2022-02-15 18:32:06
    一、敏捷开发流程的8个步骤包括: 1、目标制定,目标对齐:通过市场调研、业务思路、风险评估制定公司规划和目标,根据这一目标产生所有部门的目标并实现对齐; 2、产品规划:产品研发部门根据目标制定产品关键...

    一、敏捷开发流程的8个步骤包括:

    1、目标制定,目标对齐:通过市场调研、业务思路、风险评估制定公司规划和目标,根据这一目标产生所有部门的目标并实现对齐;

    2、产品规划:产品研发部门根据目标制定产品关键路线图,这个路线图中分布着不同的产品特性和其完成时间;

    3、组织产品待办列表:产品规划产生的需求、客户需求、市场人员收集到的缺陷等将组成产品待办列表;

    4、需求梳理:然后产品负责人(Product Ower)对这个列表进行梳理,并在需求梳理会(Backlog Grooming Meeting)讲解具体每一个需求,团队成员根据需求的复杂程度评估每个任务的工作量,输出本次迭代的待办事项列表,完成优先级排序等工作;

    5、迭代规划:通过Sprint计划会,明确要执行的工作、冲刺目标等,

    6、迭代开发:期间会进行每日站会、性能测试、CodeReview、Demo、测试等工作;7、Sprint评审:由每个任务的负责人演示其完整的工作,由PO确定Sprint目标是否完成,版本什么时候对外发布,新增bug的紧急程度等等。

    8、开回顾会议:回顾会议由Scrum团队检视自身在过去的Sprint的表现,包括人 、关系、过程、工具等,思考在下一个Sprint中怎么样可以表现得更好,更高效,怎么样可以和团队合作地更愉快。

    以上流程是从目标阶段开始,到一个迭代结束,形成了一个相对完整的闭环。但仅从这个流程我们也很难学习到敏捷管理过程具体细节。

    所以,我们下面将从具体的敏捷实践过程对以上流程展开介绍:

    延伸阅读:

    二、敏捷开发是如何开发产品的

    在讲道理之前,我先讲个故事。

    最近某公司负责人一直在思考这件事,“冬季如何让更多的人参加户外运动”。然后在某个下雪天,他惊讶的发现路上竟然一个雪人都看不到,这时他灵机一动,“如果现场有一些造型奇特的雪人,会不会让更多人参与户外运动呢”。

    于是他回到公司跟核心团队交换了想法,随后经过初步的市场调研和反复的讨论,负责人决定在这一方向上投入一些研发力量进行市场验证。

     

    经过产品研发部门的细化,雪人的实现路径慢慢的清晰起来,于是负责人决定投入三个敏捷团队来“堆”这个雪人,那为了保障跨团队的协作效率,相关团队有这么几个重要的工作契约:

    1. 全团队只有一个产品总决策人,每个敏捷团队驻扎一名产品负责人。
    2. 每两周全团队要同步一次雪人的研发状态和下一步的研发目标(遇紧急问题需及时沟通)。
    3. 三个敏捷团队有各自的“待办列表”,但总体“需求”来源于大目标。
    4. 各敏捷团队要有持续交付能力,需定期集成一次,每两周要有一个全局版本。

    从全团队的计划会议上,所有人明确了第一个开发周期的目标:一个戴帽子的雪人(MVP版本)。

    那么第一个开发周期的目标确定后,各敏捷团队内部召开了内部计划会议。

    团队一采用的是Scrum,他们第一个开发周期的目标是“实现一顶能戴的帽子”;

    团队二采用的是看板,他们第一个开发周期的目标是“实现一个个圆圆的头”;

    团队三采用的也是Scrum,他们第一个开发周期的目标是“实现一个结识的身体”。

    他们约定了各自的对接时间和关键协议,然后在随后的两周时间里,每个团队开始了各自的研发任务。当然除了既定的业务目标,每个团队也把自己第一版的CI/CD搭建了出来(非功能性需求)。

    两周后,第一版雪人在预发布环境中亮相,因为内部已经经历了验收和跨部门的联调,所以这次的预发布过程中没有遇到什么大问题。

    两天后,雪人被投放在指定的地点,根据数据埋点显示,当天现场有很多人围观,引起了不小的轰动,负责运营的团队在现场也收集了很多反馈。

    后来负责人召集核心团队对第一版雪人的发布进行复盘,同时对发布后的数据进行了分析,最终负责人决定在这个方向上继续投入,随即负责人召集产品研发部门规划了下一阶段的工作。

    第二个开发周期的目标确定后,各敏捷团队的”待办事项列表“都更新了。这三个敏捷团队根据最新的”待办事项列表“对这个周期的工作进行了规划,然后开始了新一轮的开发,接着第二版雪人如期投放,吸引了更多的人到户外参加现场活动。

    之后是第三次迭代、第四次迭代……随着时间的推移,各个敏捷团队的交付能力越来越强。

    为了最大化的发挥敏捷团队的创造力,负责人做了如下要求:

    1. 每个新特性必须有独立的测试。
    2. 每个生产环境的变更必须通过严格的测试测试(在CD中通过单元测试、集成测试、性能测试等)。
    3. 在不影响其他”雪人部位“、不影响大版本规划的前提下,各个”雪人部位“可以按需部署,用于快速响应游客的诉求、修复雪人的缺陷。

    后来雪人在不断的产品迭代中走向正轨……那这种方式就是典型的互联网公司的「敏捷开发」流程。

    我总结这个流程就是:

     

    在一个健康的互联网公司中,一个明智的决策通常要经过充分的调研和评估,然后才能成为各个部门的目标。当然定目标绝不是喊口号,它包含两部分的内容:

    1. 目标是什么

    2. 如何检验我们正在向目标走

    而在这个过程中,各个关键角色的目标要进行对齐,所有人的步调要保持一致,由下向上及时反馈目标进展。

    (使用PingCode Goals进行各个关键角色的目标对齐)

    那对于产品研发部门来说,产品的研发进度无疑是非常重要的。如果我们对一个产品目标进行分解,会形成一个产品的关键路线图(或者称为用户故事地图),在这个路线图中分布着不同的产品特性和其完成时间。

    (使用PingCode Plan规划路线图)

    接着这些”需求“被分级分类后放在各个开发团队的”产品待办列表“中。

    (使用PingCode Plan规划程序增量)

    进入到一个Scrum团队中,他们在自己的”产品待办列表“中就可以看到按优先级排序的各类需求。

     

    (使用PingCode Agile管理敏捷团队的开发工作)

    Scrum团队会根据综合因素(通常包含:优先级、工作量、依赖关系、非功能性需求的比例等等)安排每个开发周期的工作,他们在每个开发周期结束时都会产出一个可以交付的程序增量。随后我们将所有的Scrum团队完成的服务进行集成,形成一个全局版本,部署到生产环境中。

    (使用PingCode Plan管理各Scrum团队的版本)

    最后我们再对不同的功能点进行追踪,对各类活动数据进行分析,为后续的决策提供数据支持,这便形成了一个完整的闭环。这里我之所以把”敏捷开发流程“拉的这么长,是因为今天的敏捷已经不是”团队级别“的概念了。20年前敏捷开发试图解决业务团队与开发团队之间的矛盾,而今天敏捷开发是一种思维方式,这种思维方式将为整个组织进行赋能。

    那对于今天雪人的故事而言,整个组织就是在用敏捷的方式响应新的”需求“。如果只有研发部门采用敏捷开发,那今天故事的结局会不一样;如果只有一个研发团队采用敏捷开发,那故事的结局会更不一样。当然今天雪人的故事中有很多夸张的因素在,很多事情并不是一蹴而就的,基础设施也需要时间来演进。

    说到这,我们再回到团队级别的敏捷开发中,毕竟能落地的才是真的。

    首先,我认为敏捷开发绝不是一种或几种固定的开发框架,虽然我们在实施敏捷开发时确实也离不开这些框架,但敏捷最大的价值是它传达出来的价值观。其次,我认为使用Scrum和看板这样成熟的框架是十分必要的,标准化的研发流程容易产生规划化效果,说人话就是容易复制。

    那么典型的敏捷团队是什么样?内部又有什么样的流程的?

    三、Scrum 敏捷团队在一个(Sprint)冲刺中具体是怎么工作的?

    我首推Scrum,放图:

    (这是一个由8人组成,开发周期为2周的Scrum团队,主要负责产品研发)

    这个团队在开始一个新的Sprint之前,PO会及时更新左侧的产品待办列表,他通常按照优先级进行排序,并对列表里的工作项复杂度有个大概的认知。

    在第一周周一的早上10点,Scrum Master组织所有人参加计划会议:首先由PO说明这个Sprint的目标,再对待办列表进行讲解。然后由开发团队对用户故事的规模进行预估,在团队容量允许的情况下,将用户故事放入这个Sprint的工作列表中。

    之后由开发团队对Sprint的工作列表进行承诺。

    (使用PingCode Agile开计划会议)

    散会后各自回去主动领任务开始干活,当开发工程师开始一项工作时,他会从主分支checkout出一个特性分支,然后基于这个分支提交新代码,当开发完成时,他会向主分支提交Pull Request(或Merge Request),这会自动触发CI流水线(执行静态检查、单元测试等),CI流水线通过后,需要另一位开发工程师手动Code Review,只有Code Review通过后代码才会合入主分支,这会自动触发CD流水线(执行集成测试、部署测试环境等)。

    部署完成后关掉相关的开发任务,领取下一个开发任务。

    (使用PingCode Agile关联开发数据)

    每天早上10点,Scrum Master组织所有人开站立会议,每人花2分钟同步一下工作进展。

    (使用PingCode Agile开站立会议)

    第二周周五下午4点左右,Scrum Master组织所有人开评审会议,由每个任务的负责人演示其完整的工作,由PO确定Sprint目标是否完成,版本什么时候对外发布,新增bug的紧急程度等等。

    第二周周五下午5点左右,Scrum Master组织所有人开回顾会议,每个人说一下团队做的好的和不好的地方,有哪些改进方案等。

    (使用PingCode Agile开回顾会议)

    第二周周五晚些时候,最新的版本部署到预发布环境中。第三周(新Sprint的第一周)周二的晚上,部署最新的版本到生产环境中。

    对于自管理能力强,或者周期性不强的团队选择看板,放图:

    (这是一个由5人组成,开发周期为1周的看板团队,主要负责基础服务维护)

    这个团队非常注意”流动的感觉“,为了保证让工作流动起来,他们定义了5个栏:需求、设计、开发、测试和部署,其中设计、开发和测试都有明确的“完成的定义”和在制品的限制。

    有任何需求给到这个团队的时候,直接在需求列创建一个工作项即可。当设计同学准备处理下一项任务时,他只需从上一栏中拉过来即可,但是当他想将任务拖到已完成时,这项工作必须满足设计栏的“完成的定义”。

    就是说所有的方案必须通过评审,并且将影响方案告知相关方。当他不把这个任务拖到已完成的时候,那么下游的开发同学不会继续处理这个任务,这项任务将一直卡在”设计正在做“这一栏里。

    当开发同学准备处理下一项任务时,他只需从上一栏的已完成中拉过来即可,当他要完成一项任务时,要提交相应的代码,覆盖单元测试并通过CI,然后再通过CD部署到Test环境中。

    当测试同学准备处理下一件工作时,他只需从上一栏的已完成中拉过来即可,为这个任务写相关的自动化测试并执行通过,然后再把任务拖到已完成中。最后由部署同学拖动任务到部署栏中,部署这个最新的版本。他们每天早上都会看着看板开早会,说一下当前的工作进展。

    在这个过程中,如果有一项工作长期被卡在某一栏中,将很容易被发现,如果有大量的工作被卡在某一栏时,这时将暴露出这个团队最大的瓶颈问题。

    这样的方式让他们的工作状态一目了然。

    (使用PingCode Agile的看板管理一个基础框架的研发流程)

    类似这样的Scrum和看板团队组成了一个大型的研发部门,这个部门有自己的季度目标,每个月至少会开会一次部门同步会,他们会同步所有项目的工作进展和下一步的工作计划,就像雪人的故事一样……

    推荐阅读:

    了解敏捷:什么是敏捷开发 | 敏捷宣言及其解读 | 敏捷开发模式与瀑布开发模式对比 | 敏捷开发适合什么样的团队 | 敏捷开发框架 Scrum团队内部的角色与分工 | 待续...

    敏捷实践分享中小团队如何落地敏捷开发 | 国内外十大顶级敏捷开发项目管理工具盘点 |待续...

    展开全文
  • 数据分析的工作看似简单,实则可以细分成以下六个步骤: 1.确定业务需求 首先,数据分析师需要根据客户的要求,确定业务需求,从而指定将哪些数据作为分析输入。这一步骤看似简单,但是却不可省略。 在没有搞清需求...
  • 时候,我们需要分两种情况来说:当收到客户的需求之后,不是马上动手去做功能分析、产品逻辑架构或者任务流程。而是认真的分析需求。分析现有的解决方案,我们将要提供的解决方案会比现有的号多少?用户为什么要...
  • 上一篇文章我们简单阐述了,大多数研究者在进行大数据分析时,所存在的逻辑问题,并简明扼要的对大数据建模流程进行了说明,那么为了使大家更加清晰每一个步骤的具体内容,我们将每一模块展开分析。详细阐述流程中...
  • 敏捷开发流程的8个步骤 企业正在通过使用Linux容器 , Kubernetes和无服务器等云原生技术进行敏捷软件开发, 从而踏上 DevOps之旅。 持续集成可帮助企业开发人员减少错误,意外错误并提高生产环境中部署的代码质量。...
  • 任务分解的五个步骤

    千次阅读 2022-01-05 13:29:40
    我这里列一自己觉得可行的分析框架。肯定不只这一种构造方法。 说一千道一万,任务分解和目标管理,就是一句话“知所先后,则近道矣”——就是搞清楚优先级、锻炼清晰的目标界定、目标分解、目标沟通的能力,是...
  • 大数据开发的五个步骤

    千次阅读 2019-11-09 14:12:53
    上图只是一简化后的步骤流程,实际开发中,有的步骤可能不需要,有的还需要增加步骤,有的流程可能更复杂,因具体情况而定。 下面以Google搜索引擎为例,来说明以上步骤。 1.大数据采集 Google的数据来源于...
  • 班级 姓名 座号一、选择题1、人们利用计算机解决问题的基本过程一般有如下五个步骤(①~⑤),请按各步骤的先后顺序在下列选项(A~D)中选择正确的答案( ) ①调试运行程序 ②分析问题 ③设计算法 ④问题解决 ⑤编写程序A...
  • 可行性分析可能包括但不限于以下几个步骤:市场调研、技术难度、盈利能力等诸多方面。 a. 市场调研:对市场做一些具体的调查,主要对一些问题做出回答,比如市场是否有对项目的切实需求、市场中是否已经有公司或组织...
  • FPGA的开发流程一般如图1-10所示,包括电路功能设计、设计输入、功能仿真、综合优化、综合后仿真、实现、布线后仿真、板级仿真以及芯片编程与调试等主要步骤。 图1-10 FPGA开发的一般流程 1.电路功能设计 在系统...
  • 明确数据分析目标的 3 个步骤

    千次阅读 2020-02-09 17:30:00
    本文从电影中的一句话开始,说明目标的重要性,然后介绍了明确数据分析目标的 3 个步骤,分别是正确地定义问题、合理地分解问题和抓住关键的问题。 数据分析的目标就像枪上的瞄准器,如果没有瞄准器,枪照样可以打,...
  • 班级姓名座号一、选择题1、人们利用计算机解决问题的基本过程一般有如下五个步骤(①~⑤),请按各步骤的先后顺序在下列选项(A~D中选择正确的答案()①调试运行程序②分析冋题③设计算法④冋题解决⑤编写程序A、①②③...
  • 结构化分析具体步骤

    千次阅读 2020-12-07 09:02:28
    结构化分析具体步骤 1.建立当前系统的“具体模型”:分析系统的“具体模型”,就是现实环境的忠实写照,这样的表达与当前系统完全对应,因此用户容易理解。 2.抽象出当前系统的逻辑模型:分析系统的"具体模型“,...
  • 需求分析——需求分析步骤

    万次阅读 2019-05-27 21:52:33
    需求分析学习指导目录:https://blog.csdn.net/weixin_42562514/article/details/90572761 (1)需求征集、获取:观察、访谈、情景、调查问卷、会议。 (2)需求分析和协商:与甲方讨论...(5)需求确认:与用户...
  • 但这还仅仅是一过程中的一个步骤。数据分析本身不是目标,目标是使业务能够做出更好的决策。数据科学家必须构建产品,让组织中的每人更好地使用数据,,使每部门和各级都能用数据驱动决策。 数据价值链是对自动...
  • Flink任务执行总体流程

    千次阅读 2021-11-26 20:18:12
    本文描述一Flink任务执行的总体流程的前半部分,执行环境的选择。 Flink任务的一例子 public class SocketWindowWordCount { public static void main(String[] args) throws Exception { // the port to ...
  • 数据科学项目的完整流程通常是这样的五步骤:需求定义=》数据获取=》数据治理=》数据分析=》数据可视化 一、需求定义 需求定义是数据科学项目和数据科学比赛的较大不同之处,在真实情景下,我们往往对目标函数、自...
  • Halcon Blob分析流程及案例介绍

    千次阅读 2022-03-20 11:43:19
    文章目录前言一、什么是Blob分析二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容:        Halcon中的Blob分析是最常见、最常用的方法,本篇...
  • 数据分析型产品的需求分析6大步骤 面对数据型产品,项目经理往往很茫然,不知道该如何进行需求分析。下面我就讲讲如何从0开发搭建一数据分析型产品。 1.深刻了解业务 了解业务是数据需求挖掘的基础,通过的整个...
  • 需求分析步骤

    万次阅读 多人点赞 2014-03-25 18:03:07
    遵循科学的需求分析步骤可以使需求分析工作更高效。需求分析的一般步骤如图2-3所示。 需求涉及的方面有很多。 在功能方面,需求包括系统要做什么,相对于原系统目标系统需要进行哪些修改,目标用户有哪些,以及...
  • 大数据开发步骤流程

    千次阅读 2019-12-06 12:50:19
    大数据项目开发步骤: 第一步:需求:数据的输入和数据的产出; 第二步:数据量、处理效率、可靠性、可维护性、简洁性; 第三步:数据建模; 第四步:架构设计:数据怎么进来,输出怎么展示,最最重要的是处理...
  • 探索产品研发流程步骤

    千次阅读 2021-02-02 10:53:33
    产品研发流程涉及的人员从产品经理到设计师、前端、后端、测试等等一系列人员,这篇文章主要来探讨产品研发的主要步骤流程,及相关重要的里程碑。 一.产品规划 根据公司现有产品和市场经理提供的MRD(Market ...
  • 实验设计(DOE)的七大步骤分析

    千次阅读 2021-02-01 02:19:13
    《实验设计(DOE)的七大步骤分析》由会员分享,可在线阅读,更多相关《实验设计(DOE)的七大步骤分析(3页珍藏版)》请在人人文库网上搜索。1、实验设计(DOE)的七大步骤分析无论在六西格码管理,还是在工程品质、科技...
  • DOE试验设计的步骤

    千次阅读 2020-12-30 10:33:45
    DOE试验设计的步骤无论是在工程技术、质量管理、产品研发等方面,还是在近来热门的六西格玛领域,试验设计DOE都是我们解决问题的好帮手,其应用可以说涵盖了包括机械、电子、化工、汽车、烟草、医药、食品、银行...
  • 了解采购计划分析的主要步骤 了解采购成本分析的主要指标 了解采购策略分析内容;知识导图; ;采购指一整套购买产品和服务的商业流程是供应链管理必不可少的环节从业务本身来说采购管理要求在恰当的时间以合理的价格...
  • 而在与合作伙伴交流的过程中,我们发现了大量对任务挖掘和流程挖掘进行混淆的见解,国内市场上也出现了大量宣称自己拥有流程挖掘产品的厂商,而真正部署实施地却是用户桌面级的任务挖掘。这一现象让国内很多企业决策...
  • keil5建立工程步骤 在本系列的第一部分中 ,我们将社区定义为开放式组织的基本原则,人们通常通过共同的兴趣和激情而不是组织结构图上的头衔,角色或职位来定义其角色,职责和隶属关系。 然后,在本系列的第二部分中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 134,042
精华内容 53,616
关键字:

任务分析流程的五个步骤