移动互联网时代敏捷系列产品级敏捷.docx

上传人:b****6 文档编号:8894819 上传时间:2023-02-02 格式:DOCX 页数:9 大小:145.78KB
下载 相关 举报
移动互联网时代敏捷系列产品级敏捷.docx_第1页
第1页 / 共9页
移动互联网时代敏捷系列产品级敏捷.docx_第2页
第2页 / 共9页
移动互联网时代敏捷系列产品级敏捷.docx_第3页
第3页 / 共9页
移动互联网时代敏捷系列产品级敏捷.docx_第4页
第4页 / 共9页
移动互联网时代敏捷系列产品级敏捷.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

移动互联网时代敏捷系列产品级敏捷.docx

《移动互联网时代敏捷系列产品级敏捷.docx》由会员分享,可在线阅读,更多相关《移动互联网时代敏捷系列产品级敏捷.docx(9页珍藏版)》请在冰豆网上搜索。

移动互联网时代敏捷系列产品级敏捷.docx

移动互联网时代敏捷系列产品级敏捷

移动互联网时代敏捷系列

(1):

产品级敏捷

 

前言:

∙   产品开发最危险的一件事便是:

 开发人员往往是在无知的情况下, 写代码。

∙   产品开发最没效率的一件事便是:

 架构师进行笨重的软件设计, 输出对开发人员毫无帮助的设计文档。

∙   产品开发最不可思议的一件事便是:

 开发人员开发汽车; 测试人员测试飞机 。

∙   产品开发最悲催的一件事便是:

 天天熬夜加班, 最终发布的版本, 却对客户、对用户, 产生不了任何正面的影响。

∙   产品开发中最郁闷的一件事便是:

 来了团队两、三年, 还是没法成为能独当一面的大牛。

   产品级敏捷经由团队的高度协作与自主, 建立起一讲求个人价值与责任, 逐步的形成一高效的产品开发生态系统◦在这生态系统中,团队成员不仅能高效的完成版本开发,更重要的是能发挥“集体的智慧”做出最佳的决策◦而使每一轮版本的发布,都能以最少的产出,却能对客户、对使用者,产生最大的影响◦ 

本文:

  产品级敏捷是我在2014年所独立创建的;是当今在业界唯一能将精益敏捷开发与软件工程,无缝结合的端到端的产品开发模式◦

   产品级敏捷:

∙有著精益敏捷开发的轻量级、可视化、即时发现问题等的特点◦

∙也有著软件工程的系统化与规范化◦

∙更重要且独特的是,产品级敏捷中的各核心工程实践,均可根据团队所要开发的需求(特性)的不同,而可任意的“组合”成团队所需的工程实践;使得团队可真正的拥有适合自身的产品开发的工程实践与工作模式,使得团队不仅是能高效的开发产品,更能保证产品发布的质量;对客户、对使用者,产生最大的影响◦ 

   产品级敏捷共有五大核心工程实践:

∙SliceBoard(切片板):

 使得每一轮版本的发布,都能以最少的产出,却能对客户产生最大的影响◦

∙ArchitectureMap(架构地图):

 轻量级的设计每一轮版本的架构设计,并识别每一轮版本在架构上的风险◦

∙StoryWall(故事墙):

 使得开发人员与测试人员, 认同 UserStory 的价值, 并从产品外部的视角, 清楚的明白:

UserStory完成的定义或标准为何?

∙ScenarioTree (场景树):

 轻量级且可视化的Story的设计与定义完成◦

∙FeatureAPI (特性API):

 从外部的视角, 使得特性对外所提供的 API, 均能代表ㄧ有价值的 "业务概念"。

 

I.  SliceBoard (切片板):

    任何的产品; 不论是与使用者会直接发生互动的应用系统, 或是提供给众多产品使用的平台; 都应该要先有一个完整的产品特性树。

    产品特性树将使得我们可以很清楚的知道, 从外部使用者或外部产品的视角, 产品的架构, 最终应提供哪些有价值的服务?

    而团队中针对产品特性树中的每一个特性, 都应该要有一个主要的特性负责人; 每一个特性都会有一个主要的特性负责人负责, 每一个特性负责人, 都将负责多个特性。

    在产品级敏捷中, 特性负责人的主要责任便是:

 经由与团队中各不同领域的成员; 架构师, 开发骨干人员, 测试经理,资深测试人员; 共同具体分析出每个特性的业务场景。

    特性负责人与团队成员协作, 分析每个特性业务场景的主要步骤如下:

    步骤-1:

     特性负责人, 分析特性是由哪些业务活动所构成的?

    步骤-2:

     特性负责人, 针对特性中的某个业务活动, 分析出此业务活动的基本流。

    步骤-3:

    团队成员, 以特性负责人所分析出的基本流为基础, 分析出相关的扩展流与异常流。

    步骤-4:

     特性负责人, 决定团队成员所分析出的扩展流与异常流, 哪些是需在这个版本中, 置入到产品的架构中,来进行开发的。

    步骤-5:

     特性负责人, 再选取特性中的其他业务活动, 并重复步骤二至步骤五。

直到特性中的所有业务活动均已分析完毕为止。

当特性负责人, 将特性的所有业务活动均分析出, 其各自的基本流, 扩展流与异常流之后, 特性负责人便可经由组合基本流, 扩展流与异常流, 而分析出从外部使用者或外部产品的视角, 有价值的端到端的业务场景切片。

特性负责人经由与团队成员的协作:

∙团队成员, 分析出扩展流与异常流; 团队成员作加法。

∙特性负责人, 从团队成员所分析出扩展流与异常流中, 删除不需要置入产品的架构中, 去进行开发的扩展流与异常流; 特性负责人作减法。

 

团队成员作加法, 特性负责人作减法; 此种团队协作的方式, 不仅使团队成员间, 能对需开发的特性场景 (需求), 迅速的达成一致的共识, 并且能使得每个特性, 都能以最少的场景 (需求), 却能对外部使用者或外部产品, 产生最大的正面影响。

 

[图一:

SliceBoard使得特性负责人与团队成员协作; 分析对客户、对使用者能产生最大正面影响的业务场景切片]

II.  ArchitectureMap (架构地图):

    当特性负责人与架构师, 开发骨干人员, 测试经理, 资深测试人员协作, 而可分析出特性下的所有业务场景切片时,特性负责人与架构师, 开发骨干人员, 

测试经理, 资深测试人员应再持续的协作, 根据由分析特性业务场景切片时, 所获得的知识, 继续分析出特性在架构上的依赖。

这些架构上的依赖, 包括:

∙特性依赖产品外部的哪些产品?

 设备?

∙特性依赖外部这些产品或设备的哪些接口?

 端口?

 数据库?

∙特性依赖自身产品内部的哪些子系统?

∙特性依赖自身产品内部的这些子系统的哪些接口?

 数据库?

当特性负责人与架构师, 开发骨干人员, 测试经理, 资深测试人员分析出特性在架构上的依赖后, 特性负责人便以“ArchitectureMap”, 去承载这些特性在架构上的依赖。

特性负责人与架构师, 开发骨干人员, 测试经理, 资深测试人员便可根据特性的ArchitectureMap 中, 所体现出的各特性在架构上的依赖, 而识别出:

∙哪些依赖会存在著风险, 而使特性无法进行集成测试?

∙或者哪些依赖所造成的风险, 会使特性无法进行独立发布、独立部署?

 

特性负责人必需与架构师, 开发骨干人员, 测试经理, 资深测试人员协作, 认真的分析因架构上的依赖, 对特性在执行集成测试或独立发布、独立部署上, 所可能带来的风险为何?

 并深度的思考, 应该有怎样的A计划?

B计划?

 才能消除或降低因为架构上的依赖, 所导致的风险; 这一步真的很关键, 往往会决定产品开发的成功或失败...

[图二:

 ArchitectureMap;Payroll 与 Finance 由不同的团队开发, 并且Payroll 依赖著 Finance。

     Payroll 与 HR 是经由数据库整合;Payroll 与 HR 共用 Employee 数据表。

HR 会调用

     Recruitment 的 RESTAPI。

]

III.  StoryWall (故事墙):

    特性负责人与架构师, 开发骨干人员, 测试人员, 资深测试人员, 经由协作, 完成了:

1.  特性业务场景切片的分析。

2.  特性架构上的依赖分析。

所以, 接下来特性负责人便可:

∙将特性内部的业务场景切片, 依场景或功能点, 拆分成一个或多个 UserStories。

∙将特性会与其他特性产生交互的场景, 拆分成一个或多个 UserStories。

 

特性负责人, 需针对每一个 UserStories, 提供以下的信息给开发人员与测试人员:

∙会与 UserStory 直接产生交互的外部使用者、系统、设备或事件。

∙外部使用者、系统、设备或事件, 和 UserStory 直接产生交互的目的。

∙ 外部使用者、系统、设备或事件, 和 UserStory 直接产生交互的主要场景。

∙UserStory 完成标准 (验收条件):

∙使用性:

 外部使用者、系统、设备或事件是经由何种方式; 浏览器, 手机, 接口, 端口或某事件类型; 与 UserStory直接产生交互。

∙性能

∙可靠性

∙安全性 

在产品级敏捷中, 特性负责人, 不应只是传递特性的需求, 而应该是:

∙要能说服开发与测试人员, 能认同 UserStory 的价值。

∙并使开发与测试人员能从产品外部的视角, 清楚明白:

 外部使用者、系统、设备或事件所期望 UserStory 完成的定义或标准为何?

 

对于没被我们说服的这些开发、测试人员,我们怎能相信这些开发、测试人员,能为我们产出高质量的特性?

假如,我们自己都不把说服开发、测试人员,这么重要的事,当成是一回事,那只能再度的证明:

我们自己也都是抱着一种做事的心态;只要开发、测试人员听我的命令在做事就行了。

做产品和做事最大的差别,不在于做事的内容,而在于心态与文化;一种懂得尊重他人,说服他人能交心,又能严守原则与是非的心态与文化。

产品的特性负责人,对于自己所负责的特性,都无法从外部的视角,明确且清楚的定义出,什么是特性开发完成的条件时,这样的特性负责人,除了只会使团队交付永远没有市场竞争力、永远无法使客户满意的产品外,其他什么事也没法做… 

                                 [图三:

 StoryWall] 

IV.   ScenarioTree (场景树):

    特性负责人, 说服开发与测试人员, 能认同特性中的 UserStory 的价值, 并使开发与测试人员能从产品外部的视角,清楚的明白:

 外部使用者、系统、设备或事件所期望的特性中的 UserStory 完成的定义或标准为何后, 开发人员与测试人员便必需协作, 藉由“ScenarioTree”, 针对特性中的每个 UserStories, 共同的完成:

∙从产品外部的视角, 分析出 UserStory 最佳的易用性业务流活动步骤。

∙分析出 UserStory 每个业务流的活动步骤, 对外依赖的接口, 数据库或端口。

∙分析出 UserStory 每个业务流活动步骤完成后, 其所产出的实体。

∙设计出每个实体的关键的纬度, 经由这些关键的纬度, 便能校验出 UserStory 每个业务流活动步骤完成后, 其所产出的实体是正确、不正确、合法或不合法。

∙由每个实体的关键纬度, 设计出 UserStory 每个业务流活动步骤的表格式测试用例; 经由此表格式测试用例, 便可定义出:

∙UserStory 每个业务流活动步骤, 其 ”开发完成” 的定义。

 

开发人员, 架构师,UX 工程师与 ProductOwner, 也必需协作, 藉由“ScenarioTree” , 针对特性中的每个 UserStories, 共同的完成下列的设计:

∙UserStory 是属于哪一个版本的特性?

 或是属于新产生的特性?

∙UserStory 将开发在那个模块?

 那个类或文件内?

∙UserStory 所需的数据表结构。

∙UserStory 所需的使用者介面。

 

更重要的是:

ProductOwner 可藉由“ScenarioTree”, 确认开发人员已清楚的知道:

∙UserStory 开发完成的定义为何?

∙UserStory 该如何进行开发者测试?

∙UserStory 最佳易用性的行为为何?

 

ProductOwner 应坚持:

确认开发人员能经由“ScenarioTree”, 清楚的知道, 上述的三件事后, 才允许开发人员, 进行 UserStory 的开发。

因为, 唯有如此, 才能确保特性交付时的质量与易用性。

假如,某个开发人员没办法清楚且具体的定义出,自己所负责开发的 UserStory,什么是完成?

那可以预见的是,这个开发人员,便只是会在我们的产品中,不断的制造问题单罢了…

[图四:

 ScenarioTree:

 业务流活动步骤:

 获取客户租 CD 数据, 将会调用一 RESTAPI, 并产生一实体:

 客户租 CD 数据。

验证实体:

 客户租 CD 数据, 是, 否正确的关键纬度是:

CustomerID,CD 数,CDID,RentalDate。

]

V.  FeatureAPI (特性API):

    每个特性依照场景或功能点, 分解成一到多个的 UserStories。

每个 UserStory 经过开发人员与测试人员的协作,藉由“ScenarioTree”, 分析出特性中包含哪些“实体” ?

    每一个特性中的实体应能只明确代表特性中的某个单一的业务概念; 同样的, 特性中的某个业务概念应也只能由特性中某个单一的实体所代表。

    所以, 在特性中的 ScenarioTree 中, 假如, 识别出有一个以上的实体; 名称不同, 但这些实体所代表的业务概念, 却是同一个的业务概念; 则开发人员与测试人员, 便应该将这些代表相同业务概念的实体, 合并为单一的实体。

    当开发人员与测试人员可从特性中的 ScenarioTree 中, 将特性中的实体都能明确的对映到某个单一的业务概念后, 开发人员与测试人员便可轻松的从 ScenarioTree 中, 依照实体所对映的活动, 而分析出每个实体对外需提供的方法 (API)。

     最后, 开发与测试人员再将所有实体对外需提供的方法 (API) 集成, 便成为特性对外需提供的方法 (API)。

     

[图五:

Orders 与 OrderStatus 虽是不同的实体, 但, 却代表著同一个业务概念;Orders。

所以, 将实体Orders 与实体OrderStatus 合并。

]

VI.   组合团队自身所需的核心工程实践:

    团队往往面对不同类型的需求 (特性) 开发; 只需演示的需求 (特性), 在既有架构上, 需快速交付的需求 (特性), 新的需求 (特性) 的开发…等等。

    团队针对这些不同类型需求 (特性) 的开发, 应该有不同的核心工程实践的组合。

    例如:

 只需演示的需求 (特性), 建议:

 只需 SliceBoard,StoryWall,ScenarioTree 的组合; 便可快速的产出最少的场景, 却能吸引客户最多的关注。

   

 

SliceBoard

ArchitectureMap

StoryWall

ScenarioTree

FeatureAPI

只需演示的需求(特性)

V

 

V

V

 

在既有架构上, 需快速交付的需求(特性)

V

V

V

V

 

新的需求 (特性)的开发

V

V

V

V

V

        [表一:

 针对不同类型的需求 (特性) 开发, 建议所需的核心工程实践组合] 

VII.  结论:

产品级敏捷使得市场行销、产品管理与研发团队之间,有了共通的语言,而可共同的面向外部的客户与市场;以最少的产出,对客户产生最大的影响。

更重要的是,藉由产品级敏捷,企业将能打造一以人为本,内聚力强,强调协作互助,完全自主当责的全功能幸福团队。

产品级敏捷期待著你的参与!

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1