现在再来看迭代和递增类别。很明显,团队协作类别的实践支持该类的实践,由于团队的参与,针对目前的情况选用正确artifact的机会就增大了,你就可以根据需要来切换使用不同的artifact。验证类实践能够赋予你使用递增方法的勇气,特别是在你用代码验证的时候。保证你想法的易测性,你就更有把握同时操作多个artifact,并在它们之间切换,因为测试问题要求你从多个方面来看待它。文档类实践同样可以促进递增方法,特别是非到万不得已不更新。但是合同模型要正式这个实践抑止了递增方法的应用,因为你总是希望能够尽早的建立和其他系统间的接口标准。切换到另外的artifact和丢弃临时模型之间也能产生正面的效果,因为一个模型完成目的之后就把工作切换到另一个模型上去。简单类实践对这个类别也很重要,通过使用最简单的工具,你在不同的artifact间来回切换就变得更容易了,你节省了熟悉工具的时间,只把精力集中在简单的内容和描述上,你也可以较容易记住模型要传达的信息。最后,动机类实践可以令你同时进行多个建模工作,因为对于复杂的系统,你需要从多个方面去沟通,去理解,因此你需要在适当的artifact间来回切换,这样才能有效的做到这一点。
验证类实践可由简单类实践来支持--创建简单的内容和简单地建模能使你更容易进行测试性思维。迭代和渐增类实践也能提高验证类实践。例如,在你切换到另外的Artifact时,就可能切换到源代码,这样你就可以看到模型确实可以运行。
简单类实践可以推进生产力类实践。当你使用简单模型工作时,逐渐应用模式就更容易一些;当你简单地建模时,使用建模标准也会容易一些,而模型的简单、易懂,也会使你比较容易的重用现有的资源,例如企业需求模型或通用的架构模型。
简单类实践以及迭代和渐增类实践可以支持文档类实践的进行。文档越简单就越容易使用--如果你的文档容易理解,这样你就有把握万不得已才更新你的文档,因为你知道做到这一点很简单;文档如果很复杂,你的项目风险就很大,因为没有把握什么时候文档需要更新。很明显,非到万不得已不更新和丢弃临时模型的运作环境可以其它的实践来改善,例如切换到另外的artifact、小增量建模。
那,你想成为一个敏捷建模者吗?
个性通才还是专才?
敏捷建模者的个性
Alistair Cockburn指出:很多的方法学都定义了软件开发项目中开发人员所担任的角色,同时还定义个各个角色执行的任务,尽管入席,这些方法并没有定义这些角色最适合的人选。一个人要想成功的担任某个角色,他应当很好的适应它--虽然这并不需要人们掌握所有的技能,但人们必须要慢慢的熟悉这些技术。我的经验告诉我,要成为一个成功的敏捷建模者,下面的列出的个性是必要的:
团队竞赛 第一点,也是最重要的一点,敏捷建模者总是积极的寻求协作,因为他们意识到他们不是万事通,他们需要不同的观点,这样才能做到最好。软件开发可不是游泳,单干是非常危险的。在敏捷的字典中没有“我”这个词。
畅所欲言 敏捷建模者都有良好的沟通技巧--他们能够表达出他们想法,能够倾听,能够主动获取反馈,并且能够把需要的写出来。
脚踏实地敏捷建模者应当脚踏实地。他们的精力都集中在满足用户的需求上,他们不会在模型上画蛇添足,即便那双足是多么的好看。他们满足于提供可能的方案中最简单的一种,当然,前提是要能够完成工作。
好奇 敏捷建模者乐衷于研究问题,解决问题。
凡是都问个为什么 敏捷建模者看问题从不会至于表面,而是会打破沙锅问到底。他们从不会就想当然的认为一个产品或一项技术和它们的广告上说的那样,他们会自己试一试。
实事求是 敏捷建模者都非常的谦逊,他们从不认为自己是个万事通,所以他们会在建立好模型之后,用代码来小心的证明模型的正确。
勇气 敏捷建模者应当愿意去计划一个想法,然后做出模型,再想办法用代码来验证。如果结果不理想,他们就会返工,检查他们的方法,或是放弃原先的想法。把你的想法告诉你的同伴,再来验证它的正确,这是需要很大的勇气的。
根据实验 敏捷建模者应当愿意尝试新的方法,例如一项新的(或是已有的)建模技术。一般而言,他们也会接受敏捷建模开发技术,必要时,为了验证想法,他们愿意同传统的思想做斗争,例如在一个项目中减少文档数量。
有纪律 要坚持不懈的遵循敏捷建模的实践。对你来说,你可能会在不经意间说,“加上这个功能吧,无伤大雅。”或是,“我比project stakeholder更了解。”在AM的道路上要想不偏离方向,是需要一定的纪律性的。
如果你不具有上面列出的所有个性,那该怎么办呢,你是不是还想成为一个敏捷建模者呢?不用担心,你只需要少量的努力就能够胜任。相信我,我也没有办法做到100%的脚踏实地和实事求是,我也经常遇到沟通问题。没有人能够拥有所有的个性,大部分人都只能拥有一些个性。每个人都有不同点,这些不同点正是敏捷团队力量的源泉。某些人可能生来就好奇,另一些人的工作积极性可能比较强。人无完人嘛。
通才还是专才?
当你要增加团队成员时,所要处理的一个至关重要的问题是你希望保持的通才和专才的比率。要回答这个问题,你需要考虑现代软件开发环境。图1是企业统一过程(Enterprise Unified Process EUP) 的生命周期。(译注:原文中并没有提供这副图,根据我的猜测,应该就是RUP的概述部分的那张生命周期图,但是因为没有取得瑞理公司的授权,所以我暂时也不便引用这张图,大家可以参阅RUP的相关资料。)图左边的EUP的工作流程暗示着软件开发的复杂--你需要进行业务建模,收集需求,分析和设计系统等等--而这还只是冰山一角。就像图中列出的那样,从先启到产品化的各个阶段,预示着在项目的过程中,不同的时间需要你集中于不同的地方,这需要不同的技能。有一个观点是很明确的,软件开发非常的复杂,任何一项工作都需要高超的技能和丰富的经验。首要的,要认识到这种复杂性是软件开发与身俱来的,而不是EUP使然的,即便你的团队采用的是XP方法,抑或是DSDM(Stapleton, 1997)方法,或是SCRUM (Beedle & Schwaber, 2001)方法,这种复杂性也还是存在的。尽管这些方法的生命周期看上去并不像EUP那样的复杂,但它们仍然需要配置管理活动,需要管理活动等等,只是它们处理问题的态度不同而已。
很多的组织对此的第一反应就是建立一个专才的团队。专才的最基本的含义是指那些特别精通某一项任务的人,因此他们的效率也特别的高。这样一支团队,要想高效率的运作,你需要组合这些专才,让每人负责一块任务,解决之后就把手头的工作传给另一个人。这个概念就类似于“流水线”的想法,如果你是在大量的生产汽车,这种方式会非常的有效,但是以我的经验,在手工的软件中采用这种方式并不是太合适。而且,这种方式需要一个大团队的支持--如果软件开发中有N中不同的任务,你至少就需要N位专才才能满足这种方法的要求。但N是多大?20?50?100?这取决于你对专业定义的细节程度,是吧?如果你倾向于每位开发人员只处理一种artifact,那单单处理建模工作,就需要20多位的专才,在modeling artifacts essay列出了各种的artifact。如果你倾向于每位开发人员只负责一种角色,那再一个EUP的项目中也需要11中角色才能完成所有的工作流程。专才通常都很难同人合作,他们缺少谦逊的品质,意识不到其它人的专项技能能够为他的工作增添价值,他们也意识不到他们的所作所为可能为给后续的工作造成麻烦,也许他们需要返工,也许他们现在的努力会白费。关于专才的另一个问题是,即使是在他们擅长的领域,他们的技能也可能根本就没有那么精熟。IT产业的技术高变动率,导致了开发人员使用了几个月的新技术,开始熟悉它,就声称自己已经是这方面的专家了,因为和他具有同样层次经验的人毕竟不多。要建立一个专才组成的团队,这也是一个很明显的问题。
文章来源于领测软件测试网 https://www.ltesting.net/