精华内容
下载资源
问答
  • 未知 4.1 问题以及spike解决方案 首先我们来看个小问题,这个问题中包含了一些很关键的依赖。我们要创建一个带有Locate Me按钮的HTML页面。当用户点击该按钮时,一个JavaScript函数会调用定位API来获取用户的位置。...
  • 非常感谢FB社区的反馈和支持,尤其是Robotmak3rs :)不同解决方案列出了特别荣誉和作者。 开放世界: 通讯:无线(在其他设备上使用开源第三方软件) Prog语言:块,Python 复杂度:低(适合教室使用) 档案: ...
  • 首先开发spike解决方案——这是我早期敏捷/极限编程所养成的习惯之一。spike解决方案是一次性原型,可以帮助你在投入大量时间和精力之前验证你是否走对路。 区别就在于原型,因为你遵循这样一个规则,在你完成研究...

    首先开发spike解决方案——这是我早期敏捷/极限编程所养成的习惯之一。spike解决方案是一次性原型,可以帮助你在投入大量时间和精力之前验证你是否走对路。

    区别就在于原型,因为你遵循这样一个规则,在你完成研究之后,你最终会扔掉“spike”代码。所以允许你偷工减料,迅速行动,因为它不会出现在产品或代码审查中。

    此方法有助于迅速发现设计的哪些部位尚不明确,而不必过早地尝试架构或设计决策。

    致力于小而连贯代码块的版本控制——通过类似CVS/Subversion,每次提交都直接发送到服务器。做部分文件的提交并不简单。

    随着Git的出现,只提交较大文件的若干行代码变得很容易,并且可以在push到远程代码仓库之前先本地rebase/merge提交。

    有一次,我在工作于更大功能的时候,采用了小型增量提交,我的工作效率直线上升。这样做能够清空我的大脑以便于面对更重要的事情。

    经常写代码——最近,我正工作于:一个基于Web的企业协作和自动化平台(PHP / MySQL),一个基于云的实时指标聚合器和使用循环哈希(Node.js/ Redis)的API,一个面向iOS app商店(Swift/ SpriteKit)的棋盘游戏,专门的基于URL的cron job可替代基于web的SaaS服务(JAVA),等等。

    用过大量框架和语言有助于我的抽象和算法思维。

    我从工具,如Eclipse RCP、Tapestry和Hibernate中学到了很多伟大的经验教训,并用到我的PHP项目里。尤其是在2000年初,在有Java特征的企业生态系统用于PHP存在之前。我从Unity3d/C#学到了很多关于网络和面向消息的架构。

    如果我只坚持单一平台和社区的话,就永远不会知道这些概念。

    编写简单的代码——我以前习惯于写复杂的代码以作为对自己的挑战。而现在的挑战是要编写优雅且简单的代码——到一种每个人都觉得他们也能做到的地步(即使他们不能)。简单代码通常来自于若干次复杂代码的迭代。

    引用Antoine de Saint Exupéry的话就是:“不是没有什么可添加,而是没有什么可消减的时候,才算是达到了完美。”

    这也使得我们在长时间休止之后返回项目,以及鼓励其他人参与进来变得容易多了。

    最后优化——我们很容易掉入试图比用户或计算机更聪明,并且预优化各种边缘情况的陷阱。关注帕累托法则(80%的效果来自于20%的工作)。写代码,运行代码,当必要的时候专注于最大的瓶颈。这也支持保持代码库的简单。

    说“不要首先优化代码”并不意味着“编写粗糙的代码”。代码总是应该精益和优雅,没有必要画蛇添足,不要将一整天的时间用在挤压剩下的10%,但其实已经能够工作良好的一些东西上。不但工作效率会下降,而且还会引进更多复杂性,解决方案变得不那么可归纳,等等。

    着眼于“最重要的事情优先”——总是有一些项目领域比其他的更有趣或更具挑战性。工作于那些有趣的东西总是比工作于那些必要的东西更有诱惑。

    在攻克重要部分时,将有趣部分作为一种调剂,也就是说,两者都做一点也是可以。

    因此,光从这一点上说,将大的问题分解成小问题的理念是不言自明的。每个人都懂。所以,我会通过计分若干“quick wins”来开启我的一天,这能让我更有冲劲和更专注(“quick wins”可以是任何东西,包括有趣又小型的挑战),然后我会首先冲向“最重要的事情”。

    了解全栈——当我刚开始干这一行的时候,没有什么比等别人做完他们那部分东西,然后我才能继续我那部分工作更糟糕的了(设计师,后端人员,前端人员,数据库人员,服务器人员,等等)。

    于是,当我2000年创办自己的软件开发公司的时候,我做了一个明智的决定,那就是涉猎全栈。我知道我不可能擅长所有东西,也不可能是最后唯一对所有一切负责的人,但我想要做终端到终端的原型,因为我没有耐心看过程。

    每当我需要的东西触碰到我不懂的领域时,我会研究它。于是乎,我学会了服务器管理,数据库管理,设计,前端/后端开发,云架构等。

    通过了解其他领域是做什么的,我才能写出包含它们需要的代码。

    当然,其中的一些要点似乎并不是所谓的“小习惯”,但我向你保证,它们是小变化历经20年时间导致的结果。重要的行为变化并没有意义,更多的是关于我是如何频繁地练习这门技术(在过去10年时间中每年大概4000-5000个小时)。

    所以,我的做法更像是去回答这个问题:“什么样的小习惯会导致更糟糕的软件和低效的生产力?”,然后反过来。

    最后,给大家推荐一个前端学习进阶内推交流群685910553前端资料分享),不管你在地球哪个方位,
    不管你参加工作几年都欢迎你的入驻!(群内会定期免费提供一些群主收藏的免费学习书籍资料以及整理好的面试题和答案文档!)

    如果您对这个文章有任何异议,那么请在文章评论处写上你的评论。

    如果您觉得这个文章有意思,那么请分享并转发,或者也可以关注一下表示您对我们文章的认可与鼓励。

    愿大家都能在编程这条路,越走越远。

    展开全文
  • 【笔记】敏捷开发

    2017-10-26 00:39:20
    实现并评估设计原型被称为spike解决方案。其目的是在真正实现开始时就降低风险,对可能存在设计问题的故事确认其最初的估计。   XP鼓励鼓励的 重构 既是构建技术又是设计技术。   重构是以不改变代码...

      敏捷软件工程是哲学理念和一系列开发指南的综合。这种哲学理念推崇:让客户满意且尽早的增量发布;小而高度自主的项目团队;非正式的方法;最小化软件工程工作产品以及整体精简开发。开发的指导方针强调超越分析和设计(尽管并不排斥这类活动)的发布,以及开发人员和客户之间主动和持续的沟通。
      敏捷开发可以带来多方面的好处,但它并不适用于所有的项目、所有的产品、所有的人和所有的情况。它并不完全对立与传统软件工程实践,也不能作为超越一切的哲学理念而用于所有软件工作。

    一、什么是敏捷

      敏捷不仅仅是有效地响应变更,它还包含着对本章开头的宣言中提及哲学观念的信奉。它鼓励能够使沟通(团队成员之间、技术和商务人员之间、软件工程师和经理之间)更便利的团队结构和协作态度。它强调和运行软件的快速交付而不那么看重中间产品;它将客户作为开发团队的一部分开展工作,以消除持续、普遍存在于多数软件项目中的“区分我们和他们”的态度;它意识到在不确定的世界里计划是有局限性的,项目计划必须是可以灵活调整的。

    二、敏捷及变更成本

      软件开发的传统方法中(有几十年的开发经验作支持),变更成本随着计划的进展成非线性增长。而敏捷的拥护者认为,一个设计良好的敏捷过程“拉平”了变更曲线,似的软件开发团队在没有超常规的时间和费用影响的情况下, 在软件项目后期能够适应各种变更。


    这里写图片描述

    三、什么是敏捷过程

      任何敏捷软件过程的特征都是以某种方式提出若干关键假设,这些假设可适用于大多数软件项目。

    1. 提前预测哪些需求是稳定的以及哪些需求会变更是非常困难的。同样,预测项目进行中客户优先级的变更也很困难。
    2. 对很多软件来说,设计和构建是交错进行的。也就是两种活动应当顺序开展以保证构建实施来验证设计模型,而在通过构建验证之前很难估计应该设计到什么程度。
    3. 分析、设计、构建和测试并不像我们所设想的那么容易预测。

      这三个假设提出了一个重要的问题:如何剪力能解决不可预测性的过程?答案就在于过程的可适应性。故敏捷过程必须具有可适应性。

      应当使用增量式开发策略,必须在很短的时间间隔内教辅软件增量(可执行原型或部分实现的可运行系统)来适应(不可预测的)变更的步伐。这种迭代方法允许客户:周期性地评价软件增量,向软件项目组提出必要的反馈,影响为适应反馈而对过程进行的适应性修改。

    • 敏捷原则

      敏捷联盟定义了12条原则:

    1. 我们最优先要做的是通过尽早、持续交付有价值的软件来使客户满意。
    2. 即使在开发的后期,也欢迎需求变更。敏捷过程利用变更为客户创造竞争优势。
    3. 经常交付可运行的软件,交付的间隔可以从几个星期到几个月, 交付的时间间隔越短越好。
    4. 在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。
    5. 围绕有积极性的个人构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。
    6. 在团队内部,最富有效果和效率的信息传递方法是面对面交谈。
    7. 可运行软件是进度的首要度量标准。
    8. 敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够长期保持稳定的开发速度。
    9. 不断地关注优秀的技能和好的设计会增强敏捷能力。
    10. 简单——使不必做的工作最大化的艺术——是必要的。
    11. 最好的架构、需求和设计出自自组织团队。
    12. 每隔一定时间,团队会反省如何才能更有效地工作,并相应调整自己的行为。

      并不是每一个敏捷过程模型都同等使用这12项原则,一些模型可以选择忽略(或至少淡化)一项或多项原则的重要性。然而, 上述原则定义了一种敏捷精神,这种精神贯穿与本文中的每一个过程模型。

    四、极限编程

      极限编程(XP)是敏捷软件开发中使用的最广泛的一种方法。

    1.极限编程过程

      XP使用面向对象方法作为推荐的开发范型,它包含了策划、设计、编码和测试4个框架活动的规则和实践。

      策划。策划活动开始与倾听,这是一个需求收集活动,该活动要使XP团队技术成员理解软件的商业背景,充分感受要求的输出和主要特性及主要功能。倾听产生一些列“故事”(又称为用户故事)描述将要开发的软件所需要的输出、特性以及功能。每个故事由客户书写并置于一张索引卡上,客户根据对应特征或功能的综合业务价值标明故事的权值(即优先级)。XP团队成员评估每一个故事,并给出以开发周数为度量单位的成本。如果某个故事的成本超过了3个开发周,则将请客户把该故事进一步细分,重新赋予权值并计算成本。重要的是应注意到新故事可以在任何时刻书写。
      客户和XP团队共同决定如何将故事分组,并置于XP团队将要开发的下一个发行版本(软件增量)中。一旦认可对想一个发布版本的基本承诺(就包括的故事、 交付日期和其他项目事项),XP团队将以下述三种方式之一对有待开发的故事进行排序:(1)所有选定故事将尽快实现;(2)具有最高价值的故事将移到项目进度表的前面并首先实现;(3)高风险故事将首先实现。
      项目速度是第一个发行版本中是i西安的客户故事个数。项目速度将用于:(1)帮助估计后续发行版本的发布日期和进度安排;(2)确定是否对整个开发项目中的所有故事有过分承诺。一旦发生过分承诺,则调整软件发行版本内容或者改变最终交付日期。
      在开发过程中,客户可以增加故事、改变故事的权值、分解或者去掉故事。接下来由XP团队重新考虑所有剩余的发行版本并相应修改计划。

      设计。XP设计严格遵循KIS原则,即使用简单的设计,而不是复杂的表述。设计为故事提供恰好可实现的指导,而不鼓励额外功能性设计。
      XP鼓励使用CRC卡作为在面向对象环境中考虑软件的有效机制。CRC(类-职责-协作者)卡确定和组织与当前软件增量相关的面向对象的类。CRC卡也是作为XP过程一部分的唯一设计工作产品。
      如果在某个故事设计中碰到困难,XP推荐立即建立这部分设计的可执行原型。实现并评估设计原型被称为spike解决方案。其目的是在真正实现开始时就降低风险,对可能存在设计问题的故事确认其最初的估计。
      XP鼓励鼓励的重构既是构建技术又是设计技术。

      重构是以不改变代码外部行为而改进其内部结构的方式来修改软件系统的过程。这是一种净化代码(并修改或简化内部设计)以尽可能减少引入错误的严格方法。实质上,重构就是在编码完成之后改进代码设计。

      重构的目的是控制那些“可以根本改进设计”的小的设计变更所要进行的修改。重构所需的工作量随着应用软件规模的增长而急剧增长。
      XP的中心观念是设计可以在编码开始前后同时进行,重构意味着设计随着系统的构建而连续进行。实际上,构建活动本身将给XP团队提供关于如何改进设计的指导。

      编码。XP推荐在故事开发和初步设计完成后,团队不是直接开始编码,而是开发一系列用于检测本次(软件增量)发布的包括所有故事的单元测试,一旦建立起单元测试,开发者就更能够集中精力于必须实现的内容以通过单元测试。不需要加任何额外的东西(KIS,保持简洁)。一旦编码完成,就可以立即完成单元测试,从而向开发者提供及时反馈。

      编码活动中的关键概念是结对编程。XP建议两个人面对同一台计算机共同为一个故事开发代码。这一方案提供了实时解决问题和实时质量保证的机制,同时也使得开发者能集中精力于手头的问题。
      当结对的两人完成其工作后,他们所开发代码将于其他人的工作集成起来。

      测试。所建立的单元测试应当使用一个自动实施的框架,这种方式支持每当代码修改之后即时的回归测试策略。
      一旦将个人的单元测试组织到一个“通用测试集”,便每天都可以进行系统的集成和单元测试。这可以为XP团队提供连续的进展指,也可在一旦发生问题的时候及早提出预警。

      每几个小时修改一些小问题,要比仅仅在最后截止期之前修正大问题要节省时间。 ——Wells

      XP验收测试也称为客户测试,由客户规定技术条件, 并且着眼于客户可见的、可评审的系统级的特性和功能,验收测试根据本次软件发布中所实现的该用户故事而确定。

    2.工业极限编程

      工业极限编程(IXP):IXP是XP的一种有机进化,它由XP的最低限要求、y以客户为中心和测试驱动精神组成。IXP与原来的XP主要差别在于其管理具有更大的包容性,它扩大了用户角色,升级了技术实践。

      准备评估。 IXP团队确定该项目社区的所有成员(例如利益相关者、开发者、管理者)是否都准备就绪,是否建立了合适的环境,以及是否理解所涉及的技术水平。
      项目社区。 IXP团队确定人员及其所具有的技能是否合适,是否针对该项目已进行了阶段性培训。该“社区”包括技术专家和其他利益相关者。
      项目特许。 IXP团队通过对项目本身进行评估来确定对于项目的合适的商业调整是否存在,以及是否可以进一步深化组织机构的整体目标和目的。
      测试驱动管理。 IXP团队建立一系列可测量的“目标”以评估迄今为止的进展情况,然后定义一些机制来确定是否已经实现了这些目标。
      *回顾。**IXP团队在一个软件增量交付之后要实施特定的技术评审。这种评审称为回顾*,评审通过软件增量或者全部软件的发布过程复查“问题、事件以及经验教训”。
      持续学习。鼓励XP团队的成员去学习新的方法和技术,从而获得高质量的软件产品。

    五、其他敏捷过程模型

      四种常见的敏捷方法:Scrum、DSSD、敏捷建模(AM)以及敏捷统一过程(AUP)。

    1.Scrum

      Scrum原则与敏捷宣言是一致的,应用Scrum原则指导过程中的开发活动,过程由“需求、分析、设计、演化和交付”等框架性活动组成。每一个框架活动中,发生于一个过程模式中的工作任务称为一个冲刺。冲刺中进行的工作(每一个框架活动中冲刺的数目根据产品复杂度和规模大小而有所不同)适用于当前的问题,由Scrum团队规定并常常进行实时修改。
      Scrum强调使用一组“软件过程模式”,这些过程模式被证实在时间紧张的需求变更的业务关键的项目中是有效的。每一个过程模式定义一系列开发活动。

      待定项——一个能为用户提供商业价值的项目需求或特性的优先级列表。待定项中可以随时加入新项。产品经理根据需要评估待定项并修改优先级。
      冲刺——由一些工作单元组成,这些工作单元是达到待定项中定义的需求所必需的,并且必须能在预定的时间段内完成。冲刺过程中不允许有变更。因此,冲刺给开发团队的工作提供了短期但稳定的环境。
      Scrum例会——Scrum团队每天召开的短会,会上所有成员都要回答三个问题:

    • 上次例会后做了什么?
    • 遇到了什么困难?
    • 下次例会前计划做什么?

      团队领导(也称为Scrum主持人)主持回忆并评价每个团队成员的表现。Scrum会议帮助团队尽早发现潜在的问题。同时,每日例会能够促进“知识社会化交流”以及自我组织团队的建设。
      演示——向客户交付软件增量,为客户演示所实现的功能并由客户对其进行评价。演示不需要包含计划内的所有功能,但那是规定该时间段内的可交付功能必须完成。

    2.动态系统开发方法

      动态系统开发方法(DSDM)是一种敏捷软件开方法,该方法提供一种框架, 使其“通过在可控仙姑环境中使用增量原型开发模式以完全满足对事件有约时的系统的构建和维护”。
      DSDM使用迭代软件过程, 每一个迭代都遵循80%原则,即每个增量只完成能够保证顺利进入下一增量的工作,剩余的细节则可以在知道更多业务需求或者提出并同意变更之后完成。
      DSDM定义了一下3个不同迭代周期:

      功能模型迭代——为客户开发一系列可证明其功能的增量原型(注意:所有DSDM原型都倾向于逐渐演化为可交付的应用系统)。这一迭代周期的意图是在用户使用原型系统时引导出反馈信息以获取补充的需求。
      设计和构建迭代——在功能模型中,重新构建原型以确保每一个原型都以工程化方式实现,并能为最终用户提供可操作的业务价值。有些情况下, 功能模型迭代、设计和构建迭代可同步进行。
      实现——将最终软件增量(一个可操作的原型)置于运行环境中。应当注意:(1)增量不见得100%完成;(2)增量置于运行环境以后可能需要变更。在这两种情况,DSDM开发转向功能模型迭代活动继续进行。

    3.敏捷建模

      AM是一种基于实践的方法学, 用于对基于软件的系统实施有效建模和文档编制。在软件开发项目中,AM是可以有效并以轻量级方式用于软件建模的标准、原则和实践。由于敏捷模型只是大致完善,而不要求完美,因此敏捷模型比传统的模型更有效。
      AM采纳了与敏捷宣言一致的全部标准。敏捷建模的指导思想认为,敏捷团队必须又做出决定的勇气,哪怕这些决定可能否决的当前的设计并导致重新构建。敏捷团队也必须保持奇拿需作风,应当意识到技术并不能解决所有问题,要虚心尊重并采纳业务专家或其他利益相关者的意见。

      有目的的模型。在构建模型之前,使用AM的开发者心中应当有明确的目标(如与客户沟通信息,或有助于更好的理解软件的某些方面),一旦确定模型的目标,则该用哪种类型的表达方式以及所需要的具体细节程度都是显而易见的。
      使用多个模型。 AM建议从需要的角度看,每一种模型应当表达系统的不同侧面,并且应使用能够为预期读者提供价值的那些模型。
      轻装上阵。只保留那些能提供长期有价值的模型,抛弃其余的模型。每次决定保留一个模型,你都要在以抽象方式使用信息的便利性和敏捷性方面做权衡(即团队内部、团队与利益相关者增强沟通)。
      内容重于表述形式。建模应当向预期的读者分享重要的信息。一个有用内容很少到哪语法完美的模型不如一个带有缺陷但能向读者提供有用内容的模型更有价值。
      理解模型及工具。理解每一个模型及其构建工具的优缺点。
      适应本地需要。建模方法应该适应敏捷团队的需要。

    4.敏捷统一过程

      敏捷统一过程(AUP)采用了一个“在大型上连续”以及“在小型上迭代”的原理来构建基于计算机的系统。采用经典UP阶段性活动——起始、细化、构建和转换——AUP提供了一系列活动(例如软件工程活动的一个线性序列),能够使团队为软件项目构想出一个全面的过程流。每个AUP迭代执行以下活动:

    • 建模。建立对商业和问题域的UML表述。
    • 实现。将模型翻译成源代码。
    • 测试。像XP一样,团队设计和执行一系列的测试来发现错误以保证源代码满足需求。
    • 部署。重点仍然是对软件增量的交付以及获取最终用户的反馈信息。
    • 配置及项目管理。配置管理着眼于变更管理、风险管理以及对开发团队的任意产品的控制。项目管理追踪和空盒子开发团队的工作进展并协调团队活动。
    • 环境管理环境管理协调过程基础设施,包括标准、工具以及适用于开发团队的支持技术。

    5.敏捷过程工具集

      敏捷开发工具的目标是辅助敏捷开发的一个或多个方面,强调便利地快速构建可执行软件。敏婕工具集包括项目计划、用例和需求收集、快速设计、代码生成和测试的自动支持。代表性工具有OnTime、Ideogramic UML、Together Tool Set。

      自动软件工具应当被看作是对开发团队活动的小小的补充,而不是团队成功的关键。敏捷团队强调使用工具可以达到快速理解的目的。有些工具是社会性的,甚至开始于租赁阶段。有些工具是技术性的,可以帮助使用者团队模拟物理现状。很多工具是物理性的,允许人们在工作场所操作这些工具。

    展开全文
  • 什么是敏捷开发中的SpikeSpike,如果需要翻译的话,中文可以翻译成“探针”,但是一般不会翻译而直接使用Spike这个词。 Spike可以理解为:以回答问题或收集信息为目的的任务,而不是生产非专业产品的任务。有时...

    什么是敏捷开发中的Spike?

    Spike,如果需要翻译的话,中文可以翻译成“探针”,但是一般不会翻译而直接使用Spike这个词。

    Spike可以理解为:以回答问题或收集信息为目的的任务,而不是生产非专业产品的任务。有时编写User Story时,无法很好地对其进行估算User Story Point,直到开发团队做一些实际工作来解决技术问题或设计问题为止。解决这一问题的方法是创建一个“Spike”,这代表要做一些工作,其目的是提供解决问题的方法或者寻找解决问题的答案。

    英文解释:

    A task aimed at answering a question or gathering information, rather than at producing shippable product. Sometimes a user story is generated that cannot be well estimated until the development team does some actual work to resolve a technical question or a design problem. The solution is to create a “spike,” which is some work whose purpose is to provide the answer or solution.

    Spike这个术语来自极限编程(XP)。一个Spike指的是一个用来探索/寻找潜在的解决问题的方法(探针)。XP大师Ward Cunningham 解释了这个术语是如何在C2.com的wiki上被创造的。

    Ward Cunningham说:“我经常问Kent[Beck],我们能做的最简单的事情是什么,它能让我们相信我们在正确的轨道上?” 这种走出目前困难的做法常常使我们能够找到更简单和更有说服力的解决办法。Kent称之为Spike。“我发现这种做法在维护大型框架时特别有用。”

    其实在Scrum中,常常会用到下面的三个术语(或者其中的一个):

    • Spike – a quick and dirty implementation, designed to be thrown away, to gain knowledge – indicator: unable to estimate a user story effectively
    • Research – broad, foundational knowledge-gaining to decide what to spike or give the ability to estimate – indicator: don’t know a potential solution
    • Tracer Bullet – very narrow implementation in production quality of an epic/large user story – indicator: user story is too large in estimation

    了解了什么是Spike,Research和Tracer Bullet之后,我们在Scrum中就可以使客户和团队能够确定何时以及如何实施这些活动。我们决定与客户一起开展一个有时间限制的Spike和Research活动。这些是在一次迭代中完成的,用于帮助定义即将到来的User Story 的估算和在下一次迭代中开始的起点。

    虽然估算是Spike和Research的指标(indicator),但它们不是最终目标。Spike或Research还包括:

    • 了解“如何”实现业务价值(Understand “how” to implement a piece of business value)
    • 提出帮助客户做出商业价值决策的解决方案(Propose a solution to help the customer make business value decisions)
    • 最小化实现业务价值的成本中隐藏的风险 (Minimize risk hidden in the cost of implementing a piece of business value)
    • 运用投资模型控制研发成本 (Control the cost of R&D through the use of an “investment” model)

    Tracer Bullet用于将Epic或大的User Story拆分成较小的Epic或者User Story,并对软件产品的Backlog或者New Features产生一定的影响。假设团队在讨论一个User Story时,引入了新的架构元素,那么Tracer Bullet可以实现引入这种新的架构元素到软件产品中,而不需要过度详细的用户接口/UI。例如,如果与我们的Peoplesoft和Siebel 实例,并且希望显示来自两个系统的客户信息,那么我们可以有Tracer Bullet类型的User Story,例如:

    • 作为客户服务代表,我想查看客户的姓名和多个系统的标识符

    在实现这个用户故事时,我们可能还有许多其他的Backlog/User Story,这些User Story必须从其中一个或两个系统中检索额外的客户信息。这个团队把这些定义和指标放在墙上,作为一个大而漂亮的信息共享单元以供团队成员参考。其他团队也开始在自己的项目中使用这些描述,以帮助阐明与客户的基本工作。

    可能有人会写下这样的User Story:

    • 作为客户服务代表,我想查看客户的姓名和账号ID
    • 作为客户服务代表,我想查看客户的姓名和所在区域、电子邮件、联系电话等
    • ……

    虽然在前端,每个“作为客户服务代表”的角色希望查看到客户的姓名和其它多种不同的信息;但是在系统设计和实现的后端,可以通过良好的设计(或者接口设计)来实现功能。这就是Tracer Bullet的作用。

     

     

    展开全文
  • Centos7系统安装riscv-spike 1. 官方网址为 ...2. 官方提供的安装方案 但是在Centos系统中安装device-tree-compiler时却提示没有该安装包 3. 解决方案 yum install dtc 使用该指令后可继续执行。 ...

    Centos7系统安装riscv-spike

    1. 官方网址为

    https://github.com/riscv/riscv-isa-sim

    2. 官方提供的安装方案

    在这里插入图片描述
    但是在Centos系统中安装device-tree-compiler时却提示没有该安装包

    3. 解决方案

    yum install dtc
    使用该指令后可继续执行。

    展开全文
  • 四、问题解决方案 由上面分析可知,问题产生的废弃的数据库连接对象堆积,最终导致 full gc 时间过长。所以我们可以从以下方面思考解决方案: 1、减少废弃的数据连接对象的产生和堆积。 2、优化full gc时间. 【调整...
  • 我自己的解决方案(勉强使用) 使用场景 事先说明,我这个解决方案的使用场景极为有限,而且并不能解决全部的问题,瑕疵较多。但总体而言,这算是”总的来说还行吧“这种感觉的解决方案。 需求:图表加载大量数据,...
  • 梯度下降学习算法同时解决了信用分配问题:空间信用分配由导数的链式规则在空间上将误差分布到所有层,而时间上的信用分配是通过在时间上展开网络并使用相同的导数链规则进行时间反向传播(BPTT)来完成的(Werbos...
  • 原标题:数据库连接池内存泄漏问题的分析和解决方案一、问题描述上周五晚上主营出现部分设备掉线,经过查看日志发现是由于缓存系统出现长时间gc导致的。这里的gc日志的特点是:1.gc时间都在2s以上,部分节点甚至...
  • 昨天新买了个mac本子,第一件事配个idea+spring环境,别的都很简单,就是到了最后一步,死活找不到spring initializer的... 也不介绍踩坑的过程了,直接讲解决方案: 1.网上找一个spring initializer插件包,csdn...
  • 引言 ... 在上一篇博客《淘东电商项目(73) -秒杀系统(前端优化)》主要讲解了秒杀系统的前端优化,本文开始讲解后端的秒杀系统设计。...l________ 2.1 解决方案 l________ 2.2 数据库表设计 l________
  • 有幸在项目中用到了slf4j,来解决一个稍微复杂点的日志记录需求。于是便深入研究了下,下边将自己的研究成果与大家分享: 首先描述下需要解决的问题: 比如有如下包:  com.spike.test.a  com.spike.test.b  ...
  • id="@+id/cl_home_spike" android:layout_width=“match_parent” android:layout_height=“120dp” android:layout_marginHorizontal=“16dp” android:layout_marginTop=“10dp” android:background="@drawable/...
  • LEGO® Education SPIKE™ Prime科创套装于今日亮相,将乐高®积木和数字化学习体验相结合,成为乐高教育K12可延续性STEAM学习方案中的新成员,并提出了如何提高学生STEAM学习信心的新见解。 丹麦比隆--(美国商业...
  • 4、问题解决方案 由上面分析可知,问题产生的废弃的数据库链接对象堆积,最终致使 full gc 时间过长。因此咱们能够从如下方面思考解决方案: 一、减小废弃的数据链接对象的产生和堆积。 二、优化full gc时间. ...
  • slf4j是原来log4j的作者写的一个新的日志组件,意思是简单日志门面接口,可以跟其他日志组件配合使用,常用的配合是slf4j+...有幸在项目中用到了slf4j,来解决一个稍微复杂点的日志记录需求。于是便深入研究了...
  • 大家都知道,slf4j是原来log4j的作者写的一个新的日志组件,意思是简单日志门面接口,可以跟其他日志组件配合使用,常用的配合是slf4j+logback,...有幸在项目中用到了slf4j,来解决一个稍微复杂点的日志记录需求。于...
  • 解决方案的可重用部分已放置在模块内(可以打包到其自己的NPM库中),从而允许使用很少的代码行编写自定义订户动作,例如: import { createSubscription } from '../utils/subscriber.js' ; export default ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,516
精华内容 606
关键字:

spike解决方案