前几天在公司听了一个老外的讲座,内容和标题一样,是应用Key Conception进行敏捷软件开发,感觉有所收获,拿出来共享一下。在开始一个Project的时候,首先要解决的两个问题是:“这个项目要实现哪些特性”和“哪些特性要优先完成,哪些可以稍后完成”。因为我们不解决这两个问题,整个项目的开展就会变得十分混乱,把时间消耗在确定“下一步要做什么”,“Oh no,现在看起来其实当初应该先弄好那个特性”这样的事情上。正因为通过主管臆断很可能会导致错误的决定,所以我们需要一个更有效的工具来帮助我们解决这两个问题。
如果我们用Feature List来表示“要实现的特性”,用优先级来表示这些特性被完成的顺序,实际上我们可以通过下面这样一张表来帮助我们对项目更好地进行规划:
Feature\Key Conception |
KC(1) |
KC(2) |
…... |
KC(n) |
SUM |
Feature-1 |
|
|
|
|
|
Feature-2 |
|
|
|
|
|
…. |
|
|
|
|
|
Feature-n |
|
|
|
|
|
介绍一下什么是Key Conception[以后简称KC],我觉得或许叫Key Target更合适一些,意指达成项目目标的关键因素或影响项目最终质量的关键条件。一个项目当然会有多个这样的KC,他们是影响项目所要实现的特性及其优先顺序的关键因素。下面我们就以手机QZone项目为例,说明如何利用这张表来帮助我们确定本文开始所要解决的那两个问题。
这是一个将互联网QZone的功能搬到手机端的项目,我们认为该项目的KC有:图像质量,UI体验感,下载速度[其实还有很多,为简便暂时只列3条]。要实现的特性就太多了,这里也只列一部分:
(1)用Flash完成酷炫的效果;
(2)只用一个按钮完成所有操作;
(3)Context Sensitive功能[即通过软件当前状态的Context就能判断用户当前操作的意图]
(4)按需下载主题[即不是一次性地、而是根据需要下载相应的主题数据]
等等…...
填表的规则是:如果某个特性特别有利于某个KC,那么给2分,一般有利1分,没啥关系0分,起反作用-1分,特别不利于该KC就给-2分。最后计算一下每一行的总分,就可以明确到底应该做那些事情,以及这些事情的先后顺序了。我们的例子填完之后如下[仅供参考]:
Feature\Key Conception |
图像质量 |
UI体验感 |
下载速度 |
SUM |
用Flash完成酷炫效果 |
2 |
0 |
-2 |
0 |
只用一个按键完成全部操作 |
0 |
1 |
0 |
1 |
Context Sensitive功能 |
0 |
2 |
0 |
2 |
按需下载主题 |
-1 |
0 |
2 |
1 |
稍微解释一下,对于第一行来说,如果用Flash的话,当然效果很炫。但是对于手机来说是一大考验,因为现在无线的下载速度实在不敢恭维,可能你东西还没下载一半用户已经不耐烦了,所以是这样一个分数。对于第二行,由于手机客户端千奇百怪,一个软件要想兼收并蓄支持绝大多数手机,就必须精简操作,使用更少的按键完成尽可能多的操作,所以第二个Feature是符合用户使用利益的,但和其他两个KC无甚关联。OK,至此我们就可以根据最终的分值来决定到底哪些特性应该被有限执行,特别是当你的特性列表有几百个的时候。而且这种方法还可以减少因为过分依赖直观感觉而产生错误决定的几率。因为这些分值所对应的是Key Conception,所以决定的顺序是客观的、考虑周全的、符合项目整体目标和利益的。
虽然这里里的例子十分简单,但并不代表真正操作起来也会如此轻松,因为世界是多样的,问题层出不穷,用这样一个简单的表有时无法完全达到目的,这时就必须做一些调整来适应我们的需求。例如,我们都知道,项目中的每一个特性其实现难度都是不同的,难度有时也是决定某个特性优先级的关键因素,于是我们就需要在标的最后加上一列用以记录每一个Feature的难度。
Feature\Key Conception |
KC(1) |
KC(2) |
...... |
KC(n) |
SUN |
Difficulty |
Feature-1 |
|
|
|
|
|
|
Feature-2 |
|
|
|
|
|
|
…. |
|
|
|
|
|
|
Feature-n |
|
|
|
|
|
|
在最终确定顺序的时候,经验的原则是在同等分数的Features中,优先做哪些困难的部分,如此才会有顺流而下或猛虎下山的气势。先挑简单的后作困难的可能会影响团队的士气,在项目总不断地勇攀高峰有时并不明智。此外,每一个KC可能也有不同的重要性,所以在打分的时候可以对不同的KC加以不同的优先权重来体现其重要程度,这也会对总分产生影响。不过应该尽量不要搞的过于复杂,因为“过犹不及”。
另一个例子是,对于一个大项目,我们的Feature List可能有数百条,把这些都搞到一张表里容易被湮没在特性海洋中不能自拔,殊为不智。这时候我们可以给出一个Outline Feature List,用于摆放那些关键的、抽象一些的特性,利用这个纲领性的表来首先决定一个大体的范围。然后在进行每一项细化的操作的时候,再针对每一个抽象的Feature列出一个Detail Feature List,这样作既简单又清晰,从此不必为过长的特性列表发愁了。
Outline Feature List[OFL]
Feature\Key Conception |
KC(1) |
…... |
KC(n) |
SUM |
Difficulty |
Detailed Feature List |
Feature-1 |
|
|
|
|
|
DFL[1]这里的每一项都是与OFL同样格式的表,只是目的和内容不同 |
…. |
|
|
|
|
|
DFL[2] |
Feature-n |
|
|
|
|
|
DFL[n] |
除此之外,还有很多可以讨论的问题,在实际工作中我们可以灵活地对这个表进行调整,赋予新的结构和新的含义来适应实际项目需要,但是一个重要的原则是不要太过复杂,这个度就需要自己把握了。
内容就到这里吧,不过投诉一下CSDN的Blog,在写Blog和预览的时候表格是好好的,可是一发布网页上的结果就是自动在每段前加了缩进,使得表格格式都乱了,希望解决一下。
分享到:
相关推荐
基于给定文件信息,我们将深入解析“CONCEPTION DE BASE DE DONNEE”(数据库设计)这一主题,尤其关注如何从概念模型到逻辑模型再到物理模型的转化过程。 ### 数据库设计概览 数据库设计是创建高效、可维护数据库...
【标题】"Conception"可能指的是软件开发中的概念设计阶段,这是项目初期的重要步骤,用于定义项目的整体架构、目标和范围。在这个阶段,开发者和团队会构思应用的基本功能、用户界面设计以及技术实现策略。 【描述...
在IT领域,我们通常讨论的是软件开发、网络技术、数据库管理、编程语言、操作系统、数据结构等主题。 然而,如果这个压缩文件包含了与IT相关的文档或资料,而标题和描述是由于某种原因被误用或不准确,那么我需要...
Oracle_Conception_Training.pptx
总之,Human Conception Optimizer (HCO)是智能算法在人类生殖健康领域的一个创新应用,通过Matlab进行实现和优化。利用这样的工具,我们可以更好地理解生育过程,并为想要孩子的夫妇提供科学的建议。然而,实际使用...
本文将深入探讨“conception-connection:网络漫画的实现”这一主题,主要聚焦于JavaScript在构建网络漫画平台中的应用。 首先,理解“概念连接”在这一上下文中的含义至关重要。在数字媒体领域,概念连接指的是将...
SDL是软件开发库的缩写,它提供了软件开发的资源和工具,帮助开发者进行软件开发。 23. SDP - 软件开发计划(Software Development Plan) SDP是软件开发计划的缩写,它提供了软件开发的计划和策略,帮助开发者...
在这个项目中,我们将专注于Java语言,这是一种广泛应用的面向对象编程语言,尤其在企业级应用开发中占据主导地位。 【描述】中的"Projet-Conception-Logicielle"没有提供具体的细节,但可以推测这是一个关注软件...
五、456189786-451798664-Conception-Boitier-03.pdf文件内容 该PDF文件很可能是详细的设计图纸或指南,包含了电柜的结构图、电气原理图、元件列表、安装和使用说明等内容。读者可以通过这份文件深入理解电柜设计的...
同时,良好的编程实践,如遵循编码规范、进行单元测试和集成测试,都是保证应用稳定性和质量的关键。 在发布后,持续的更新和维护同样重要。收集用户反馈,分析应用性能数据,及时修复问题,添加新功能,以满足不断...
平台的设计理念可能基于敏捷开发和协同工作理论,旨在打破传统工作流程中的地域限制,提升团队间的沟通效率。通过Web界面,用户可以实时共享想法、讨论项目、创建和编辑文档,甚至进行版本控制,确保信息的一致性和...
它是研究软件开发工具和技术的平台。 它由一系列指导原则驱动。 构想目标进行开发。 我的“短期”目标是实施Bret Victor的文章中显示的一些想法。 另一个目标是尝试击败我当前的Sublime Text + GoSublime开发环境...
开发者们自发地在业余时间对UEFI Shell进行了扩展,添加了脚本功能、if和for等脚本命令,以及copy等通用Shell命令,同时还开发了一系列丰富的应用程序,尽管这些应用并不完全组织化,但它们在调试底层UEFI应用程序时...
【描述】"conception_logicielle TP概念逻辑"可能是指一个教学实践项目或教程,专注于通过Python来理解和应用软件的概念逻辑设计。在这样的实践中,参与者会学习如何将问题抽象化,定义数据结构,设计算法,以及构建...
"Acceptance Testing"则为验收测试,是用户或客户对软件进行的最终确认,看是否符合他们的需求和期望。 在国际化环境中,"Localization Testing"(本地化测试)是检查软件是否适应特定地区或语言环境。...
在“conception et analyse uml”的主题下,我们将重点讨论如何使用UML进行系统概念设计和分析。概念设计阶段,UML用例图和类图可以用来捕捉需求并初步定义系统架构。分析阶段,我们可以利用活动图和状态图来细化...
MISRA C专门针对C语言在嵌入式软件开发中的应用,特别是汽车电子行业。这些指南被设计为帮助开发者创建可靠、安全的代码,减少软件缺陷,降低维护成本,并确保软件的可移植性与重用性。MISRA标准中的规则分为必须...
***软件和版本:v1.0 ***数据:.sql数据库,使用sgbd导入服务器:mysql ***出版物:研究项目报告结束***相关文档:开发人员指南和管理指南** *安装:0-安装Wamp服务器1-安装laravel的作曲者2-通过CMD安装Laravel并...
对于其应用请参考后面的“struts安装及应用”和“struts实用案例分析”。 文章的包括了如下四大部分: 一、 Framework的概念和体系简介 (Framework Conception and Architecture) 二、 Struts的概念和体系结构...
Java Concepts for Java 5 and 6 5th Edition – PDF Books