HYXT Blog

we produce valuable software for K12.
clock November 26, 2008 13:08 by author Sky Jia (贾超)

Jakob Nielsen, usability guru and author of Usability Engineering, raises the concern that Agile methods are a threat to traditional approaches to designing usability. He says that Agile’s greatest threat to usability is that “it's a method proposed by programmers and mainly addresses the implementation side of system development”. Alistair Cockburn counters that this claim just isn’t true:

  1. It doesn’t matter who proposed a good idea, only whether the idea is good.
  2. This sets up an “us versus them” split in the community instead of an “us plus them” coming together.
  3. Unlike the other threats Nielsen names, he doesn’t offer a solution, so he leaves us with his “us versus them” unsolvable problem, which is unacceptable.

Proposed solution: Just use good ideas – don’t worry about where they come from. As Kurt Morris posted on the agile usability list, “It’s amazing what can get accomplished once you get past the artificial “us v them” mentality.”

Nielsen goes on to raise the issue that the Agile habit of breaking the stories down into smaller tasks threatens to obscure the total user experience, allowing features to be developed in an inconsistent manner. At its worst, he says: “the user interface can end up resembling a patchwork.”. Nielsen’s solution:

  • Perform Usability testing quickly and repeatedly. He says “Weekly tests are completely feasible and give you a surefire way to integrate several user feedback rounds within even the shortest sprint.”
  • Parallel Tracks allow the usability work to be done just one step ahead of the development work.
  • Use low fidelity prototypes (such as paper) that don’t require coding minimizing the time spent upfront.

Jeff Patton has distilled 12 usability best practices (echoing several of Nielsen’s):

  1. Drive: UX practitioners are part of the customer or product owner team
  2. Research, model, and design up front - but only just enough
  3. Chunk your design work
  4. Use parallel track development to work ahead, and follow behind
  5. Buy design time with complex engineering stories
  6. Cultivate a user validation group for use for continuous user validation
  7. Schedule continuous user research in a separate track from development
  8. Leverage user time for multiple activities
  9. Use RITE to iterate UI before development
  10. Prototype in low fidelity
  11. Treat prototype as specification
  12. Become a design facilitator

The RITE (pdf) method that Jeff describes comes from Microsoft’s Games Studio: “RITE differs from a “traditional” usability test by emphasizing extremely rapid changes and verification of the effectiveness of these changes.”. Specifically, practitioners make changes to the UI (prototype or application) as soon as the problem is found and the solution spotted. Changes such renaming buttons, changing the text of menu items often happen before another participant arrives. More complicated, but obvious changes are made as rapidly as possible. This way the change can be tested as quickly as possible.

In addition, Jeff finds his role has changed: “As I've begun to work within Agile teams, my approach has changed to favor collaborative design. More and more I find myself acting as facilitator to harvest and model information from large groups of people. I find myself working with groups of users and developers to write user scenarios, and sketch user interface design.”

Finally, Alistair says (in reference to the developer/usability divide): “Just remember, ‘There’s only us."


clock November 26, 2008 12:10 by author Sky Jia (贾超)

Do work to maximize the available communication bandwidth available to your team. Provide communications tools—like conference phone, Web cams, and hands free headsets—for your team and help them adapt their existing practices to distribution. 

Don’t continually reorganize your teams for each new project. Building teams takes time, building distributed teams takes even longer. Maximize your investments in team building by minimizing churn on teams. 

Do plan to travel, especially at the project’s pivotal points. Bring everyone together for the first couple of iterations, periodically during the project, and right before final release. 

Don’t distribute the work by system components, focus on user stories. Avoid organizing distributed teams by function—for example, the offshore test team. Both these approaches create knowledge silos within the team. 

Do provide tools to augment or replace those that only work within a team room—like a work item tracking system to replace sticky notes on whiteboards. 

Don’t let remote team members be forgotten in team meetings. Pair them up with a buddy and try putting everyone on the same footing by having all members call into conference calls at least occasionally. 

Do evolve the team’s practices as they identify better ways to deal with the challenges of geographic dispersion. Frequent retrospectives are the key to getting a team to consider how to improve.

Don’t forget to include everyone in frequent team retrospectives to identify what does and does not work for the team. 

Do focus on coaching. Make sure everyone understands why agile practices need to be adapted for distributed development.

 

Distributed Agile Development at Microsoft Patterns and Practices.pdf (1.06 mb)


clock November 24, 2008 17:58 by author Sky Jia (贾超)

作者 Dave Nicolette译者 郑柯 发布于 20081119下午356

很多人都觉得:迭代的长度应该由发布周期的长短确定。我不同意,我认为这两个周期之间不应有关系。相对于长迭代来说,短迭代可以提供更为频繁的客户反馈,同时也给予团队机会,让他们可以反思并改进自己的工作实践。短周期可以形成"心跳节奏",这样的快节奏也足以展现更多意义。由于短周期的本性使然,团队不大有机会创建过于冗长的工作项目,而这样的项目会使得人们很难产生成就感,除非等到大量的工作完成之后。即使发布的周期很长,下面这些好处仍然存在。

好处

  1. 快速响应。在不影响正在进行的工作的情况下优先快速响应变化。产品负责人、客户或是代理人在迭代中期改变优先级或是添加新功能,这样的情况很多见。如果迭代时间足够 短,这种状况就可以得到更好的处理,因为变更在下个迭代中就可以容纳进来了,这样也可以避免打乱当前迭代本不应受影响的正常节奏。
  2. 问题检测。成熟的敏捷团队能够发现流程上的问题并马上处理。然而,目前看来,很多敏捷团队仍然在学习曲线上前行,他们还没有成熟到可以自己 发现并解决问题的地步。他们需要根据项目度量数据的变化来识别问题。由于趋势要靠三个点的连线才能体现出来,而项目数据每个迭代才能收集一次,因此更短的 迭代可以更快地暴露问题。
  3. 范围管理。如果待办事项列表中的条目都很小,那就可以灵活移动。较长的迭代会产生较大的用户故事。如果产品负责人需要变更待办事项列表条目的优先级,如果用户故事较大,那么变更这些用户故事造成的影响也更大。较短的迭代则趋向产生较小的用户故事。遵循INVEST原则,产品负责人也更容易变更用户故事的优先级。
  4. 迭代规划和跟踪。长迭代产生的较大的用户故事,经常要被分解为"任务",也就是要将大块儿的开发工作拆分为可操作性更强的明细任务。接下 来,为了让团队知道所有用户故事的状态,这些任务要在迭代中跟踪,要么使用类似于"看板"的系统,要么使用迭代的燃尽图。很多团队每天都会停下来重新估算 尚未完成的个人任务。使用短迭代,可以去除所有这些内部流程的管理成本;用户故事变成了更小的工作单位,而人们也能够以更简单的方式跟踪迭代状态。
  5. 成为转向"无迭代流程"的基础。迭代式开发保留了一些瀑布开发过程固有的管理成本,即使我们付出代价想去掉它们也是如此。如果将每个迭代从 头到尾画一个价值流累积图(cumulative flow diagram),这些管理成本就会以"在途时间(lead time"的形式体现出来。我参与过的一些团队,他们在自己承受范围之内尽量压缩迭代的时间。我注意到他们可以消除大量类似的管理成本。迭代时间越短, 让一切工作顺利进行所需花费的流程管理成本就越少。

从另一方面来看,在有严格时间限制的迭代中工作,也可以带来一些敏捷方法的附加价值,包括频繁和有规律的演示和回顾、用来交付增量开发结果的一致性时间表、频繁得到客户反馈的机会、以及对于"心跳"或是"脉搏"类似节奏的感觉,这样的感觉可以让团队在长期的开发过程中保证认真投入。使用时间盒的方式工作是有一些额外的好处的,而有些团队在采纳无迭代的流程时会把这些好处丢掉,这就等于是"连孩子带洗澡水一起泼出去了"。而使用短迭代,可以减少转向超轻量级、无迭代的流程所带来的痛苦;这也是可以预期的。

人们在转向无迭代流程时经常会犯一个错误,他们会将所有与"迭代"有关系的实践都抛弃掉。我们要将"迭代"的概念与有附加价值的敏捷开发特定实践区分开,并寻找能够减少流程管理成本、同时还可以保留有价值实践的解决之道。

潜在问题

有人在使用短迭代时遇到了困难。短迭代的拥护者Mishkin Berteig也提到一些潜在的问题 

  • "密集的工作回让人筋疲力尽。"我想这是团队选择何种工作方式的问题。周期短,不一定意味着工作就一定密集。短迭代可能仅仅意味着小时间盒;也就是说,每 个时间盒承诺交付的工作更少了。在工作密度上不一定有什么变化。其他的敏捷原则(特别是"可持续的步调")就是为了防止发生筋疲力尽的情况。
  • "战略层面的思考很难跟日程相结合。"战略层面的思考跟每个迭代要做的具体工作没有太大干系。迭代是战术层面的。战略层面的思考是……呃,非战术层面的。这听起来更像是管理上的问题,而不是短迭代的特性之类的东西。
  • " 每个迭代必须完成的、耗费管理成本的相关任务占用了短迭代的大部分时间。"这似乎又是一个团队如何选择工作方式的问题。我曾观察到挤压迭代时间长度而引 发的一个有趣结果:人们首先"发现"一些并不是非常必要的管理任务,然后就不再做它们了。最后,团队只做必要的事情,换句话说,他们去除了流程中的浪费。 实际上,这些观察让我对Jim ShoreJava Ranch上的发言 保留意见。他认为更长的迭代给团队的压力更小,因此有经验的敏捷团队更适合用长期的迭代。我觉得我们不必在迭代规划上花费更多时间, 我认为迭代规划还可以更少些。我支持更短的迭代,如果客户可以采取拉式的方法以单件流 single piece flow)的方式提出需求,这些迭代甚至可能逐渐消弭。
  • "对团队之外的资源或是人员的等待,这会使得工作的完成要跨越多个迭代。"组织上的约束造成了此类状况。如果试图采取的迭代长 度过短,以至于组织不能应 对,这样做并不合适。如果真这么做了,也就不能称之为"迭代"了,因为不可能在那样短的时间内交付工作结果,而组织也无法吸收这样的结果。要想有所进步, 我们必须识别出组织的约束。我并不认为临时的组织约束(它们是临时的,只要你真心愿意改变)就会使得短迭代不可行。简单么?没人会这么想。但如果组织的变 革很容易的话,那就没什么乐趣了,不是么?

相关内容: Extremely Short Iterations as a Catalyst for Effective Prioritization of Work

作者简介

Dave Nicolette 1977年起就从事IT行业了,他在2002年找到了敏捷,并视其为传统IT行业很多内在问题的缓解和去除之道。从那时起,在敏捷和精益的思考和实践上,他就成为了一名尽心竭力的实践者和大力鼓吹的提倡者。他喜欢与IT从业人士分享经验和有益的实践,并积极参与到敏捷社区的活动中。Dave目前是美国 Valtech科技公司的敏捷团队教练。


clock November 24, 2008 17:53 by author Sky Jia (贾超)

作者 Mike Bria译者 郭晓刚 发布于 20081116上午244

表面上看,多数敏捷方法都简单地根据业务价值决定故事的开发顺序。但在很多情况下,更明智的做法是将增加业务价值与有意识的"获取知识"步骤结合起来。Alistair Cockburn介绍了如何有效地进行此种结合,以及如何借助这样的实践在正确的时间交付正确的功能。

Cockburn的阐述从一项基本断言入题——设计活动的关键产出是创造知识:

在任何团队的设计活动中,我们都是在解决一项当前仍未理解通透的问题,建立一种当前仍未理解通透的解决方案,用我们仍未完全领会的语言及技术来表达自身想法——而以上各方面都在我们的眼前不断变化着。 
随着工作进展,我们对问题了解得愈多,对技术了解得愈多,对规划中的方案了解得愈多……

接着Cockburn举出瀑布方法的典型特征——"大爆炸"式的集成作为极端的例子,说明它是如何妨碍任何实质上的知识获取,直到项目的最后阶段,从而必然导致没有时间应对的"大惊喜"。用精益的术语来说,积累起来的未经验证的设计决策,构成了不断增长的"库存(inventory"Cockburn的原话,"从减少风险的角度来说,我们认为该情形直到最后都留有很大风险,在很后的阶段才产生知识,总之不是什么赏心悦目之事。

Cockburn
接着介绍了一种敏捷的处理方式,在其中团队将早期的迭代重点放在"积累知识",也就是学习

团队及早地、经常地集成,可使"大惊喜"分散到许多小的阶段中。这样做,团队可及早发现自身的错误,"学习"到错在何处,并因而减少以后的集成出现重大失败的机会。换言之,"学习"因素对项目的影响越来越小。这是一件好事。

为了促进这种实践,Cockburn建议团队问自己"我们担心/害怕什么?"的问题,并且将开发前期的精力集中在减少那些恐惧因素,而不要盲从"业务价值高的优先"这种教条。他提醒说这一阶段的工作次序可能表现得没什么条理,"但是它会满足在花费同样金钱之下,知识提升速度从高到低的排列次序,和降低项目风险从多到少的次序

这种方法的底线是,一旦减轻了大的风险,就开始按照业务价值的次序安排工作

当知识曲线开始变平坦,那就是转向按照业务价值高低排列的时刻。这时候就与一般的敏捷建议相一致了。请注意,原则上在着力获取知识的阶段,业务价值也总是在提高的;因此并非把业务价值丢到一边,只不过获取业务价值不是主导的推动力。

读者还应该注意,Alistair特别明确警告不要将"获取知识""BDUF Big Design Up Front"的意义相混淆。

Cockburn在最后收尾时解释如何将这种实践与功能疏剪(Feature thinning的一种实际运用相结合,使项目有效地平滑收尾,最终有效地提升团队的敏捷程度:

当知识曲线与业务价值曲线都变平后,资方就处在一种位置,既可以按时交付一组疏剪过的功能(或因竞争对手的动作而提前!),又可以稍后交付完整的功能集合。决定权理所应当地在资方的手上。

一如既往,请把这篇新闻仅仅当作一则提纲挈领的广告,务必阅读Alistair的完整文章。文章中还包括了几幅很有说服力的图,Alistair也介绍了他在两个截然不同的实际项目中采用这种实践的经验。

那么,您的看法如何呢?Alistair的方法符合你的经验吗?假如把这种方法用在你过去的项目中会不会有帮助?现在的项目又如何,以后的呢?如果有帮助,好在哪里?如果没有,又为什么?你会不会觉得这种方法"不是敏捷"?请留下您的想法。

查看英文原文:Iterating To Acquire Knowledge, Not Just 'Business Value'


clock November 19, 2008 19:06 by author War3

原文出处:http://hi.baidu.com/interaction_design/blog/item/2f610b4e7c0fe0ccd1c86ae6.html 

这是一个著名的模型,把UCD过程中的每个工作步骤和内容都完整而流畅的概括进来。很大程度上帮助我理清了UCD相关的混乱头绪。以这个模型为基础,我整理了一个比较可行的UCD流程。

当然迫于条件的限制,我们不可能有机会去做用户研究相关的工作,通常是从竞争对手的分析中来获得关于用户的理解和灵感。用Jesse James Garrett的话说,在相同领域做相似的事情的研发团队,所服务的用户必定具有某种程度的相似性。按照产品分析和设计套路倒推,解剖优秀产品的设计策略,可能是快速建立用户认识的窍门。可能有人觉得理解用户是市场的事,显然这是片面的。其实理解用户能够在以用户为中心的设计过程中帮助设计决策,如果没有这个认识,很可能会在后面的设计决策和讨论中陷入个人英雄主义的表演和政治博弈之中。当然,寻找用户还能使我们收获更多的领域知识,整理对手的优缺点,并能在后续的概念设计、交互设计和原型设计中提供极大的参考价值。

这个流程不是一个快速开发的流程,虽然在用户分析中投机取巧节省了一点时间,但是在交互设计阶段需要消耗相当的努力和创造激情,当然还有时间和成本。在急于看到成果和关心"成本"的队伍中,很容易被一笔带过或敷衍了事,很多人习惯以看到界面设计框线图作为设计成果的标志,呵呵,画框线图其实是很简单的。缺少慎重的交互分析基础的框线图,很容易浮于形式而缺少内涵。

和朋友们交流一下吧!

六个阶段,每个阶段又有关键的工作内容和要求。

第一阶段:基础调研

竞争产品分析
寻找市场上的竞争产品,挑选3-5款进行解剖分析。整理竞争产品的功能规格;并分析规格代表的需求,需求背后的用户和用户目标;分析竞争产品的功能结构和交互设计,从产品设计的角度解释其优点、缺点及其原因,成为我们产品设计的第一手参考资料。

领域调研
结合上述分析基础和资料,纵观领域竞争格局、市场状况,利用网络论坛、关键字搜索等手段获得更多用户反馈、观点、前瞻性需求。

产出物:相应的对比分析文档和领域调研报告


第二阶段:产品分析

产品定位
从软件提供者的角度分析产品推出的意义和重点关注的方面,实际考量、丰满决策层的idea,明确列出产品定位,通过讨论修缮取得决策层的认可;

用户分析
结合竞争产品的分析资料,采用定性分析的方法,获得对产品目标用户在概念层面的认识;

产品概述
以软件提供的身份,以最简短的文字,向用户介绍产品,突出产品对用户的价值。避免功能点的简单罗列,而应该在归纳总结的基础上突出重点;

功能需求规格整理
在归纳关键功能的基础上,结合竞争产品规格整理的领域认识,从逻辑上梳理需求规格列表,重在逻辑关系清楚、组织和层级关系清晰。划定项目(设计和研发)范围;

产出物:用户分析文档和产品概述、功能规格列表


第三阶段:交互设计(功能结构和交互流程设计)

产品概念模型分析
从产品功能逻辑入手,结合对常见软件的经验积累和竞争产品的认识,加上对用户的理解,为产品设计一个尽量接近用户对产品运行方式理解的概念模型,成为产品设计的基础框架;

功能结构图
在产品概念模型的基础上丰富交互组件,并理顺交互组件之间的结构关系;

使用场景分析
模拟典型用户执行关键功能达到其目标的使用场景;

交互流程分析
模拟在上述概念模型和功能结构决定的产品框架之中,支持使用场景的关键操作过程(即鼠标点击步骤和屏幕引导路径);

产出物:产品设计文档的交互设计部分


第四阶段:原型设计(信息架构和界面原型设计)

信息架构和界面原型设计
设计产品界面中应该包含的控件数量和类型、控件之间的逻辑和组织关系,以支持用户对控件或控件组所代表的功能的理解,对用户操作的明确引导;所有界面设计成为一套完整的可模拟的产品原型;

设计要点说明
对界面设计的重点添加说明,帮助涉众对设计的理解;

产出物:产品设计文档的原型设计部分


第五阶段:详细设计(详细设计和交互逻辑表述)

详细设计
完善设计细节、交互文本和信息设计(Message box);

控件和交互逻辑表述
对界面控件/控件组/窗口的属性和行为进行标准化定义,梳理完整的交互逻辑,用状态迁移图或伪代码形式表示;

产出物:产品设计文档的详细设计部分


第六阶段:设计维护(研发跟踪和设计维护)

语言文档整理
设计通过评审之后,把产品中所有的交互文本整理成excel文档,预备研发工作;

研发跟踪维护
进入研发阶段后负责为研发工程师解释设计方案、问题修改、文档完善、Bug跟踪等;

产出物:产品语言文档,设计调整维护


clock October 23, 2008 17:49 by author Sky Jia (贾超)

The nice thing about software development methodologies is that they are just like standards. There are so many to choose from! Come to think of it... some of them are standards (which more or less proves my point). Unfortunately, despite a lot of searching I haven't found any page with a list of all major software development methods. So I decided to create one myself.

Here it is... and I hope you will let me know what you think of it.

Terminology

In the various descriptions of methods on Wikipedia I have noticed many different terms being used, like methodprocessmodelframework, etc.. In an effort to be more consistent than the Wikipedia authors I have tried to redefine the methods using the following definitions:

  • methodology (or method) - one specific collection of principles and/or practices
  • methodology family - a set of alternative methods that exist alongside each other
  • framework - a skeleton (for methods) that must be customized/augmented before use
  • model - a description (for methods) that must be implemented by a method, family or framework

For the software developers among us: A methodology is like a class that can be instantiated for a specific project. A methodology family is like a namespace of different but comparable classes. A methodology framework is like an abstract class that cannot be instantiated itself and must be inherited and extended first. A methodology model is like an interface that is just a description of something that must be implemented by one or more classes.

Methodology Leaders

I consider the following methods to be the "leaders" in the crowd. Each of them has achieved a status as a "standard" in a significant part of the IT industry.

Scrum
Scrum is an agile project management methodology, created by Ken Schwaber andJeff Sutherland. It is a skeleton that includes a small set of practices and predefined roles. Scrum is becoming a de facto standard for managing agile software development projects. One reason for Scrum's popularity is that it consists of only a few common sense practices that can be applied in many situations. This also means that Scrum by itself is never enough, and that development teams have to shop in other methods (usually XP) for additional practices.

Extreme Programming
Extreme Programming (or XP) is an agile software engineering methodology, created by Kent Beck. It is a set of best practices of which some are taken to an "extreme" level. As with other agile methods, XP regards ongoing changes to requirements as a natural and desirable aspect of software development. In the selection of its practices XP leans towards the daily software engineering activities of developers. XP is often seen as complementary to Scrum, filling most of the holes that Scrum leaves wide open.

Lean Software Development
Lean Software Development (LSD ?) is an agile project management framework, translated from lean manufacturing to the software development domain. Originally promoted by Mary Poppendieck and Tom Poppendieck, Lean Software Development is adapted from the Toyota product development system, and it is the embodiment of the "lean" subculture that exists within the agile community (and that has by now become big enough not to be able to call itself lean anymore). It is said that the lean and agile concepts form a perfect match.

Unified Process
The Unified Software Development Process (USDP) is a software engineering framework, created by Ivar JacobsonGrady Booch and James Rumbaugh. The USDP is an extensible framework that should be customized for specific organizations and projects. It aims to be a complete solution, which means that the full framework is far too big for all but a few projects. However, stripping the framework to its bare essentials is like turning a plane into a bicycle. It might be easier simply to select another more lightweight method.

Rational Unified Process
The Rational Unified Process (RUP) is a software engineering framework, created and maintained by the people at Rational Software (now owned by IBM), includingPhilippe Kruchten. It is a commercial product delivered as a more detailed version of the Unified Software Development Process (which is presented as a generic public domain process). This also means that the RUP suffers from the same problem as the USDP, being bloated and too costly to customize for small projects.

Dynamic Systems Development Method
Dynamic Systems Development Method (DSDM) is a agile project management methodology, created and maintained by the UK-based DSDM Consortium, which includes both vendors and experts. It was originally based upon the concepts ofRapid Application Development. DSDM finds itself on the same level as Scrum, meaning that it lists a small number of practices for project management of software development, while leaving the details of the real work (building a product) to be filled in by the development teams.

Prince2
Projects in Controlled Environments (Prince2) is a project management methodology, developed by the UK’s Office of Government Commerce (OGC). Prince2 describes many processes and activities covering the management, control and organization of projects, and is deliberately not restricted to IT projects. Even though Prince2’s popularity makes it a de facto standard for project management (particularly in Europe), it is criticized (by many including me) for being too prescriptive, too big and not easily customizable.

Project Management Body of Knowledge
The Project Management Body of Knowledge (PMBOK) is a project management methodology, developed by the US-based Project Management Institute (PMI). It is an internationally recognized standard providing the fundamentals of project management, not limited to IT-projects. Similar to Prince2, the PMBOK describes many processes and activities, though the PMBOK can be seen as being descriptive (what), while in contrast Prince2 is more prescriptive (how). Their main similarity is that both are criticized for not being agile.

Capability Maturity Model Integration
The Capability Maturity Model Integration (CMMI) is a software engineering model, originally developed by Watts Humphrey. The CMMI aids in the definition and understanding of an organization’s processes and was originally intended as a tool for assessing the maturity of an organization’s processes. These days it is also used as a roadmap for process improvement. The CMMI is heavily criticized for focusing on processes rather than people, and it may lead organizations down the road of bureaucracy.

Methodology Followers

I consider the following methods to be the "followers", because they trail the leaders in their number of references, users and implementations.

Feature Driven Development
Feature Driven Development (FDD) is a software engineering methodology, devised by Jeff De Luca and influenced by Peter Coad’s approach to object modeling. FDD is a model-driven process, distinguishing itself from some other agile methods by explicitly allowing time for the creation of an up-front design. It also applies a refreshingly nonconformist approach to code ownership and several other development practices.

Microsoft Solutions Framework
Microsoft Solutions Framework (MSF) is a software engineering framework, created by Microsoft. As always, Microsoft has its own alternative stance on the subject of developing software. MSF provides a metamodel of descriptive components, and it contains two out-of-the-box templates as prescriptive implementations: MSF for Agile Software Development and MSF for Capability Maturity Model Integration.

Open Unified Process
The Open Unified Process (OpenUP) is a software engineering methodology family. Part of the Eclipse Process Framework (which includes OpenUP/Basic) it embraces a pragmatic and agile philosophy, meaning that the creators have preserved the essential characteristics of the RUP/Unified Process, while having thrown out a lot of stuff to make the original framework actually usable.

Essential Unified Process
The Essential Unified Process (EssUP) is a software engineering framework, invented by Ivar Jacobson. It was created as an improvement on the RUP and identifies practices (most of them borrowed from the RUP and agile development methods) that you can choose and combine to create your own method. This is considered an improvement, because with the RUP all practices are intertwined and cannot be seen in isolation.

Agile Unified Process
The Agile Unified Process (AUP) is a software engineering methodology, created byScott Ambler. It presents yet another attempt at simplifying the RUP, describing an easy to understand approach to developing business application software using agile techniques and concepts. Yet it still aims to remain true to the ideas behind the RUP.

Enterprise Unified Process
The Enterprise Unified Process (EUP) is yet another software engineering methodology, created by Scott Ambler. It is an extension of the Rational Unified Process, adding several new phases and disciplines to a process that was already quite big in the first place.

Crystal
Crystal is a software engineering methodology family, created by Alistair Cockburn. It is called a self-adapting family of human-powered software development methods, of which Crystal Clear is its most prominent member (being the only one with a Wiki entry and its own book).

Evo
Evo is a project management methodology, created by Tom Gilb. Even though Evo is one of the older (and least-known) methodologies, according to some critics it has proven to be one of the most successful evolutionary methods available.

And that's it. I'm sure lots of people will not agree with some of my terminology, classifications or descriptions. And that's good! I love to learn and improve my thinking. So please feel free to add your thoughts...

 转发自: http://www.noop.nl/2008/07/the-definitive-list-of-software-development-methodologies.html


clock October 16, 2008 10:28 by author Sky Jia (贾超)

画流程图是程序设计的基本功,但又似乎属于各有各的高招的一个领域。那么到底用什么标准评价流程图的好坏呢?从事用户体验设计咨询的丁宇在博客上分享了他“画Web流程图的一点心得” 。除了给出他自己的一套形状,还逐一说明注意事项,很有爱心:

作为整张流程图的头和尾,必须标清楚到底具体指哪个页面,以免日后出现歧义。
[……]
所有从形状出来的线条,都具有和此形状边框一样的颜色。这样的做法不仅看起来漂亮,在复杂的流程图中还能轻易地标明各形状的关系。
[……]
几乎总是让‘是’的分支往下流动,让‘否’的分支向右流动。因为流程图一般都是从上向下、从左到右绘制的,遵循上述规则一方面可以让绘制者不用为选择方向操心,另一方面也方便了读者阅读。
[……]
并非所有后台动作都绘入流程图中(否则流程图就会变成庞然大物了),只有需要特别强调的后台动作(和用户体验直接相关的)才使用此形状。
[……]
可以利用跳转点来分割篇幅巨大的流程图
[……]
分割篇幅巨大的流程图,更好的办法是用子流程。
[……]
他还特别强调:
在团队合作中,图例是必须的,否则没人知道你画出来的东西到底是什么。

除了确保别人能看懂你的流程图,评价流程图的好坏,还要谨记“流程图是要指导UI设计的,是UI设计的参照物”,必须“覆盖了各种可能的情况和细节”,“考虑到系统的设计和承受能力”。

支付宝交互设计师Joycce总结得更加扼要:

  1. 简单易懂
  2. 表达正确全面,有重点、有细节
  3. 形像生动

丁宇也发起了一个征集活动,邀请大家一起分享自己的心得,各位达人请不吝赐教,InfoQ中文站将继续跟踪报道。

如果想了解流程图的一般用法,Arky Tan翻译了Jesse James Garrett撰写的“描述信息结构和交互设计的图示词汇表 ”。顺便一提,流程图这东西是有标准的,在发明自己的一套图形之前,不妨先翻一下ISO 5807:1985 。


clock October 13, 2008 10:51 by author Sky Jia (贾超)
  1. 持续的学习成为个人生存和发展的基础。持续学习不一定能带来成功,但不学习一定失败;
  2. 信息和知识爆炸,在一段时间和时期内,学习的内容必须聚焦。起码要在一个领域内成为专家。
  3. 你应该学习的内容取决于你的价值观、特长、个性和目标。
  4. 你必须学会如何有效的评估信息和知识,所以你必须根据你的价值观、特长、个性和目标确立自己对信息和知识的"过滤器";
  5. 人是知识获取的重要渠道,所以你应该知道谁最擅长什么?遇到问题时知道可以向谁学习和请教;
  6. 你牛了你的朋友也一定牛,建立人际资源的基础是自己的知识基础、个性和激情、自己优势的合理展示和帮助别人的意愿;
  7. 人际关系需要维护;捷径是找到那些愿意共享自己朋友资源的人,你也应该做这样的人;
  8. 信息如果不经过处理,不能称为知识。所以你存储的知识起码你应该简单看过、知道是在讲什么;
  9. 信息和知识存储前应该尽可能做规范化的工作,例如你做的摘要、感触、觉得最有价值的部分、将来能做什么用等等;
  10. 建立自己的分类字典,而不是每次想起什么就建立什么样的文件夹或者标签。分类字典,持之以恒坚持,适当调整;
  11. 知识存储中分类不宜过宽,过宽则等于没有分类;分类不宜过深,过深后你就不会再去看;
  12. 充分利用各种工具,尤其是web2.0工具做知识存储和获取工作;
  13. 知识存储时适当共享,听取和收集别人的意见和建议;
  14. 有意识的做知识显性化的工作,既方便知识传播也促进知识学习和建立人际网络;
  15. 知识传播中必须考虑传播的方式和效率;
  16. 不能用简单朴素的语言表述的知识证明你还没有深入理解;
  17. 多用举例子、讲故事的方法传播你的知识、见解。这个过程是你对知识的再深化过程;
  18. 你的知识传播的越广,你的影响力越大;
  19. 你的目的决定了你知识利用的方式。如果目的是要写论文,则你的知识就是明确、简洁的表达;如果是想要在市场上销售,就必须产品化、规范化或者专利化;
  20. 知识本身没有价值,只有被利用时才能展现其价值;
  21. 知识必须跟任务、项目结合起来才能发挥作用;
  22. 单独的一个主题的知识很难被很好的利用,所以你必须将你的知识融入团队中或者找到自己的合作伙伴;
  23. 知识创新最简单的方法是总结和分析;
  24. 知识创新是一种习惯;
  25. 学习或者实践---总结----将总结出来的内容投入实践检验和请行家批评—继续总结和实践;
  26. 不能光做,还要思考;
  27. 个人竞争力的源泉不是你现在知道的或者掌握的,而是你选择方向和快速学习的能力,是你能够将知识用足用好的能力;
  28. 环境造就人,太安逸的环境对个人的发展弊大于利。如果不能找到好的环境,那就自己给自己压力;
  29. 既要会做,也要会展示自己做的,要有树立个人品牌的意识。

Search

Calendar

<<  September 2010  >>
SuMoTuWeThFrSa
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

Categories

Tags