敏捷开发过程的几个关键点


Test-Driven Development,测试驱动开发。-------------------不现实,开发的代码,也需要维护的。增加了工作量。

  它是敏捷开发的最重要的部分。在ThoughtWorks,我们实现任何一个功能都是从测试开始,首先对业务需求进行分析,分解为一个一个的Story,记录在Story Card上。然后两个人同时坐在电脑前面,一个人依照Story,从业务需求的角度来编写测试代码,另一个人看着他并且进行思考,如果有不同的意见就会提出来进行讨论,直到达成共识,这样写出来的测试代码就真实反映了业务功能需求。接着由另一个人控制键盘,编写该测试代码的实现。如果没有测试代码,就不能编写功能的实现代码。先写测试代码,能够让开发人员明确目标,就是让测试通过。

  Continuous Integration,持续集成。---------使用Jenkins来实现,能够带来很多的便利。

  在以往的软件开发过程中,集成是一件很痛苦的事情,通常很长时间才会做一次集成,这样的话,会引发很多问题,比如 build未通过或者单元测试失败。敏捷开发中提倡持续集成,一天之内集成十几次甚至几十次,如此频繁的集成能尽量减少冲突,由于集成很频繁,每一次集成的改变也很少,即使集成失败也容易定位错误。一次集成要做哪些事情呢?它至少包括:获得所有源代码、编译源代码、运行所有测试,包括单元测试、功能测试等;确认编译和测试是否通过,最后发送报告。当然也会做一些其它的任务,比如说代码分析、测试覆盖率分析等等。在我们公司里,开发人员的桌上有一个火山灯用来标志集成的状态,如果是黄灯,表示正在集成;如果是绿灯,表示上一次集成通过,开发人员在这时候获得的代码是可用而可靠的;如果显示为红灯,就要小心了,上一次集成未通过,需要尽快定位失败原因从而让灯变绿。在持续集成上,我们公司使用的是自己开发的产品CruiseControl。

  Refactoring,重构。-------有风险,有代码。一般在一次大的版本发布的时候,做这件事。但是,主要是针对比较混乱的代码来做。一般的细小问题,由开发自己修改。

  相信大家对它都很熟悉了,有很多很多的书用来介绍重构,最著名的是Martin的《重构》,Joshua的《从重构到模式》等。重构是在不改变系统外部行为下,对内部结构进行整理优化,使得代码尽量简单、优美、可扩展。在以往开发中,通常是在有需求过来,现在的系统架构不容易实现,从而对原有系统进行重构;或者在开发过程中有剩余时间了,对现在代码进行重构整理。但是在敏捷开发中,重构贯穿于整个开发流程,每一次开发者check in代码之前,都要对所写代码进行重构,让代码达到clean code that works。值得注意的是,在重构时,每一次改变要尽可能小,用单元测试来保证重构是否引起冲突,并且不只是对实现代码进行重构,如果测试代码中有重复,也要对它进行重构。

  Pair-Programming,结对编程。 ----- 这个方式很好。但是,需要团队中的人,能够有好的沟通能力,和工作经验。带领初级的人员来做。让他们进步更快。而高级能力的人,可以互相学习。

  在敏捷开发中,做任何事情都是Pair的,包括分析、写测试、写实现代码或者重构。Pair做事有很多好处,两个人在一起探讨很容易产生思想的火花,也不容易走上偏路。在我们公司,还有很多事都是Pair来做,比如Pair学习,Pair翻译,Pair做PPT,关于这个话题,钱钱同学有一篇很有名的文章对它进行介绍,名为Pair Programming (结对编程)。

  Stand up,站立会议。---- 很好,坚持做就会有效果。让工作的进度可控。问题可控。

  每天早上,项目组的所有成员都会站立进行一次会议,由于是站立的,所以时间不会很长,一般来说是15-20分钟。会议的内容并不是需求分析、任务分配等,而是每个人都回答三个问题:1. 你昨天做了什么?2. 你今天要做什么? 3. 你遇到了哪些困难?站立会议让团队进行交流,彼此相互熟悉工作内容,如果有人曾经遇到过和你类似的问题,那么在站立会议后,他就会和你进行讨论。

  Frequent Releases,小版本发布。------需要定义发布时间。将产品发布给相关人员,比如产品经理,及早的发现问题,是小版本发布的核心。减少返工,和需求遗漏和误解。

  在敏捷开发中,不会出现这种情况,拿到需求以后就闭门造车,直到最后才将产品交付给客户,而是尽量多的产品发布,一般以周、月为单位。这样,客户每隔一段时间就会拿到发布的产品进行试用,而我们可以从客户那得到更多的反馈来改进产品。正因为发布频繁,每一个版本新增的功能简单,不需要复杂的设计,这样文档和设计就在很大程度上简化了。又因为简单设计,没有复杂的架构,所以客户有新的需求或者需求进行变动,也能很快的适应。

  Minimal Documentation,较少的文档。 ---- 并不是没有文档。而是核心是有架构的文档。代码自己会说话。

  其实敏捷开发中并不是没有文档,而是有大量的文档,即测试。这些测试代码真实的反应了客户的需求以及系统API 的用法,如果有新人加入团队,最快的熟悉项目的方法就是给他看测试代码,而比一边看着文档一边进行debug要高效。如果用书面文档或者注释,某天代码变化了,需要对这些文档进行更新。一旦忘记更新文档,就会出现代码和文档不匹配的情况,这更加会让人迷惑。而在敏捷中并不会出现,因为只有测试变化了,代码才会变化,测试是真实反应代码的。这时有人会问:代码不写注释行吗?一般来说好的代码不是需要大量的注释吗?其实简单可读的代码才是好的代码,既然简单可读了,别人一看就能够看懂,这时候根本不需要对代码进行任何注释。若你觉得这段代码不加注释的话别人可能看不懂,就表示设计还不够简单,需要对它进行重构。

  Collaborative Focus,以合作为中心,表现为代码共享。 ------这个在团队中,需要推行。因为人都喜欢守着自己的东西,不管别人的代码。而代码共享,不仅是让代码可以互相修改,而且,激发开发人员的责任心。对整个产品负责,而不是对自己的功能负责。

  在敏捷开发中,代码是归团队所有而不是哪些模块的代码属于哪些人,每个人都有权利获得系统任何一部分的代码然后修改它,如果有人看到某些代码不爽的话,那他能够对这部分代码重构而不需要征求代码作者的同意,很可能也不知道是谁写的这部分代码。这样每个人都能熟悉系统的代码,即使团队的人员变动,也没有风险。

  Customer Engagement ,现场客户。------这里的客户,可能是真正的客户,也可能是产品经理。

  敏捷开发中,客户是与开发团队一起工作的,团队到客户现场进行开发或者邀请客户到团队公司里来开发。如果开发过程中有什么问题或者产品经过一个迭代后,能够以最快速度得到客户的反馈。

  Automated Testing ,自动化测试。-----难,主要是人力缺少。

  为了减小人力或者重复劳动,所有的测试包括单元测试、功能测试或集成测试等都是自动化的,这对QA人员提出了更高的要求。他们要熟悉开发语言、自动化测试工具,能够编写自动化测试脚本或者用工具录制。我们公司在自动化测试上做了大量的工作,包括Selenium开源项目。

  Adaptive Planning,可调整计划。-----

  敏捷开发中计划是可调整的,并不是像以往的开发过程中,需求分析->概要设计->详细设计->开发 ->测试->交付,每一个阶段都是有计划的进行,一个阶段结束便开始下一个阶段。而敏捷开发中只有一次一次的迭代,小版本的发布,根据客户反馈随时作出相应的调整和变化。

  敏捷开发过程与传统的开发过程有很大不同,在这过程中,团队是有激情有活力的,能够适应更大的变化,做出更高质量的软件。


阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第六章 智能设计关键技术 6.1 智能制造系统的设计 智能制造系统是基于人工智能研究,为应对不断增长的设计信息和工艺信息,以及随 之带来的生产线和生产设备内部信息的增加而出现的先进制造系统。通过借助计算机模 拟的人类专家的智能活动,智能制造系统可以进行分析、判断、推理、构思和决策,取 代或延伸制造环境中人的部分脑力劳动。同时,通过收集、存储、完善、共享、继承和 发展人类专家的制造智能,将其融入感知、决策、执行等制造活动中,赋予产品制造在 线学习和知识进化的能力。制造系统的智能化提高了其对于爆炸性增长的制造信息的处 理能力、效率及规模,表现出高度灵活、敏捷、智能的特征,使得制造系统由原先的能 量驱动型转变为信息驱动型。智能制造系统代表着制造业数字化、网络化、智能化的主 导趋势和必然结果,蕴含着丰富的科学内涵,汇聚了广泛的产业链和产业集群,是高新 技术的制高点。 6.1.1 智能制造系统的构成 一般而言,制造系统在概念上认为是一个复杂的相互关联的子系统的整体集成,从制 造系统的功能角度,可将智能制造系统细分为设计、计划、生产和系统活动四个子系统 。 在设计子系统中,智能制定突出了产品的概念设计过程中消费需求的影响;功能设计 关注了产品可制造性、可装配性和可维护及保障性。另外,模拟测试也广泛应用智能技 术。 在计划子系统中,数据库构造将从简单信息型发展到知识密集型。在排序和制造资源 计划管理中,模糊推理等多类的专家系统将集成应用。 智能制造的生产系统将是自治或半自治系统。在监测生产过程、生产状态获取和故障 诊断、检验装配中,将广泛应用智能技术。 从系统活动角度,神经网络技术在系统控制中已开始应用,同时应用分布技术和多元 代理技术、全能技术,并采用开放式系统结构,使系统活动并行,解决系统集成。 6.1.2 智能制造系统的设计要素 智能制造系统的设计是基于人机一体作业研究,通过信息整合与分析,优化制造系统 内部作业模式,提高作业效率及可靠性,以达到智能化制造的目的的设计活动。智能制 造系统所处的环境以及对其功能要求决定了在设计时要注意三个方面的要求,即要满足 可靠性,适应性和可扩充性,因此应采用开放式体系结构,包括功能的开放性、结构的 开放性和软硬件的开放性。此外,智能制造系统的设计必须考虑到其与智能制造技术、 智能制造装备、智能制造服务的配合与衔接。与传统制造系统相比,智能制造系统的设 计应关注以下几类要素: 1) 自律能力 智能制造系统的设计应通过建立强有力的知识库和基于知识的模型,使系统自主 搜集与理解环境信息和自身的信息,进行分析、判断并规划自身行为,表现出独 立性、自主性和个性,促使各组成单元协调运作与竞争。 2) 学习能力 智能制造系统的设计应保证其能够不断地充实知识库,具有自学习功能。可以在 作业过程中自主地进行故障诊断、故障排除、自我维护。这种特征使智能制造系 统能够自我优化并适应各种复杂的环境。 3) 人机一体化 智能制造系统的设计不是建立单纯的"人工智能"系统,而是建立一种混合智能, 即人机一体化智能系统,通过这种混合智能,制造系统不仅能进行逻辑思维,还 能进行形象思维和顿悟思维。 4) 智能交互界面 以计算机为基础,融信号处理、动画技术、智能推理、预测、仿真和多媒体技术 为一体,通过虚拟现实技术的应用,借助各种音像和传感装置拟实制造过程和未 来的产品,实现虚拟制造,从感官和视觉上使人获得完全如同真实的感受,进而 实现高水平人机一体化作业。 5) 自组织与超柔性 智能制造系统的设计使各组成单元能够依据工作任务的需要,自行组成一种最佳 结构,其柔性不仅表现在运行方式上,而且表现在结构形式上,所以称这种柔性 为超柔性,如同一群人类专家组成的群体,具有生物特征。 6.1.3 智能制造系统的相关技术 1. 智能无线传感网络的应用使智能制造系统具有较强的识别和通信能力,大大拓展了智能 制造系统的作业效率和适应能力,为系统内协同作业搭建了良好的平台。它由部署在监 测区域的无线传感节点组成,传感节点间以无线通信方式组成监控网络,能够实时地感 知和采集网络监测区域内的环境或监测对象的相关信息,并对信息进行协作处理和网络 传送。智能无线传感网络具有快速部署、自组织成网、较强的抗毁和协同工作能力等优 点。 2. 云计算的兴起为智能制造系统的设计带来了新的突破。它一种基于互联网的计算方式, 通过这种方式,系统内部各环节的数据和信息无需分别进行存储和处理,而是由云端系 统集中完成,系统内部共享的软硬件资源和信息可以按需求提供给各级子系统,从而提 升信息存储、加工、共享和分配的效率。 3. 大数据是由数量巨大、结构复杂、类型众多数据构成的数据集合,能用于帮助智能制造 系统进行分析决策、故障诊断,对作业流程进行规划,引导自主开发系统的能力。并可
第六章 智能设计关键技术 6.1 智能制造系统的设计 智能制造系统是基于人工智能研究,为应对不断增长的设计信息和工艺信息,以及随之 带来的生产线和生产设备内部信息的增加而出现的先进制造系统。通过借助计算机模拟 的人类专家的智能活动,智能制造系统可以进行分析、判断、推理、构思和决策,取代 或延伸制造环境中人的部分脑力劳动。同时,通过收集、存储、完善、共享、继承和发 展人类专家的制造智能,将其融入感知、决策、执行等制造活动中,赋予产品制造在线学 习和知识进化的能力.制造系统的智能化提高了其对于爆炸性增长的制造信息的处理能力 、效率及规模,表现出高度灵活、敏捷、智能的特征,使得制造系统由原先的能量驱动型 转变为信息驱动型。智能制造系统代表着制造业数字化、网络化、智能化的主导趋势和 必然结果,蕴含着丰富的科学内涵,汇聚了广泛的产业链和产业集群,是高新技术的制高 点. 6。1。1 智能制造系统的构成 一般而言,制造系统在概念上认为是一个复杂的相互关联的子系统的整体集成,从制 造系统的功能角度,可将智能制造系统细分为设计、计划、生产和系统活动四个子系统 。 在设计子系统中,智能制定突出了产品的概念设计过程中消费需求的影响;功能设计 关注了产品可制造性、可装配性和可维护及保障性。另外,模拟测试也广泛应用智能技 术。 在计划子系统中,数据库构造将从简单信息型发展到知识密集型。在排序和制造资源 计划管理中,模糊推理等多类的专家系统将集成应用. 智能制造的生产系统将是自治或半自治系统。在监测生产过程、生产状态获取和故障 诊断、检验装配中,将广泛应用智能技术. 从系统活动角度,神经网络技术在系统控制中已开始应用,同时应用分布技术和多元代 理技术、全能技术,并采用开放式系统结构,使系统活动并行,解决系统集成。 6。1.2 智能制造系统的设计要素 智能制造系统的设计是基于人机一体作业研究,通过信息整合与分析,优化制造系统 内部作业模式,提高作业效率及可靠性,以达到智能化制造的目的的设计活动。智能制 造系统所处的环境以及对其功能要求决定了在设计时要注意三个方面的要求,即要满足 可靠性,适应性和可扩充性,因此应采用开放式体系结构,包括功能的开放性、结构的 开放性和软硬件的开放性。此外,智能制造系统的设计必须考虑到其与智能制造技术、 智能制造装备、智能制造服务的配合与衔接.与传统制造系统相比,智能制造系统的设计 应关注以下几类要素: 1) 自律能力 智能制造系统的设计应通过建立强有力的知识库和基于知识的模型,使系统自主 搜集与理解环境信息和自身的信息,进行分析、判断并规划自身行为,表现出独 立性、自主性和个性,促使各组成单元协调运作与竞争. 2) 学习能力 智能制造系统的设计应保证其能够不断地充实知识库,具有自学习功能。可以在 作业过程中自主地进行故障诊断、故障排除、自我维护.这种特征使智能制造系 统能够自我优化并适应各种复杂的环境。 3) 人机一体化 智能制造系统的设计不是建立单纯的"人工智能"系统,而是建立一种混合智能, 即人机一体化智能系统,通过这种混合智能,制造系统不仅能进行逻辑思维,还 能进行形象思维和顿悟思维。 4) 智能交互界面 以计算机为基础,融信号处理、动画技术、智能推理、预测、仿真和多媒体技术 为一体,通过虚拟现实技术的应用,借助各种音像和传感装置拟实制造过程和未 来的产品,实现虚拟制造,从感官和视觉上使人获得完全如同真实的感受,进而 实现高水平人机一体化作业。 5) 自组织与超柔性 智能制造系统的设计使各组成单元能够依据工作任务的需要,自行组成一种最佳 结构,其柔性不仅表现在运行方式上,而且表现在结构形式上,所以称这种柔性为 超柔性,如同一群人类专家组成的群体,具有生物特征. 6.1。3 智能制造系统的相关技术 1。 智能无线传感网络的应用使智能制造系统具有较强的识别和通信能力,大大拓展了智能 制造系统的作业效率和适应能力,为系统内协同作业搭建了良好的平台.它由部署在监测 区域的无线传感节点组成,传感节点间以无线通信方式组成监控网络,能够实时地感知和 采集网络监测区域内的环境或监测对象的相关信息,并对信息进行协作处理和网络传送 。智能无线传感网络具有快速部署、自组织成网、较强的抗毁和协同工作能力等优点。 2. 云计算的兴起为智能制造系统的设计带来了新的突破.它一种基于互联网的计算方式,通 过这种方式,系统内部各环节的数据和信息无需分别进行存储和处理,而是由云端系统 集中完成,系统内部共享的软硬件资源和信息可以按需求提供给各级子系统,从而提升 信息存储、加工、共享和分配的效率。 3. 大数据是由数量巨大、结构复杂、类型众多数据构成的数据集合,能用于帮助智能制造系 统进行分析决策、故障诊断,对作业流程进行规划,引导自主开发系统的能力。并可以
### 回答1: 敏捷开发流程是一种快速、灵活的软件开发方法,它通过迭代的方式来开发项目,并且重视通过持续的交流、协作和调整来满足客户的需求。 Scrum 是一种敏捷开发流程的具体实现方法。它是由三种角色组成的:产品负责人、Scrum 团队和 Scrum 经理。产品负责人负责确定项目的目标和范围,Scrum 团队负责执行项目并交付可用的产品,而 Scrum 经理则负责协调团队的工作并确保项目的进度。 Scrum 流程通常分为以下几个步骤: 1. 冲刺计划会议:在开始新的冲刺(迭代周期)之前,团队会进行冲刺计划会议,确定在本次冲刺中要完成的工作。 2. 每日站立会议:每天举行的短暂会议,用于更新团队成员的工作进度、讨论任何问题并寻求解决方案。 3. 冲刺审查会议:在冲刺结束时举行的会议,用于回顾本次冲刺的成果、讨论改进方法并确定下一步工作。 4. 冲刺总结会议:在冲刺结束后举行的会议,用于回顾 ### 回答2: 敏捷开发流程是一种迭代、增量式的软件开发方法。它强调通过紧密合作和快速响应变化来提高团队的效率和产品的质量。敏捷开发流程主要包括需求分析、计划、设计、编码测试和发布等阶段,每个阶段都是迭代进行的。团队成员在每个迭代期间都要进行会议讨论、交流以及及时地调整开发计划和需求。敏捷开发流程注重客户需求的积极响应,团队与客户之间的密切合作和及时反馈是其关键。 Scrum是一种敏捷开发框架,它是通过在开发过程中强调团队合作、迭代开发和持续改进来实现项目管理的。Scrum流程包括三个关键角色: 产品负责人、Scrum团队和Scrum大师。产品负责人负责所有关于产品的决策和需求管理,包括产品待办事项的整理和优先级排序。Scrum团队由开发人员组成,他们承担编码、测试和提交可交付的工作成果。Scrum大师负责支持团队高效完成工作,并确保Scrum流程的正确执行。 Scrum流程由一系列时间盒(time-boxed)的活动组成,例如每日站会、Sprint计划会议、Sprint评审和Sprint回顾会议。每个时间盒内的工作是固定的,活动的目标必须在规定的时间内完成。这种时间限制鼓励团队高效工作,并提供了一个持续改进的机会。 总结来说,敏捷开发和Scrum流程都强调迭代开发、团队协作和持续改进。它们通过灵活的方法和强调人际间的互动,帮助团队更好地应对需求变化和提高工作效率,从而保证项目的成功。 ### 回答3: 敏捷开发流程是一种迭代与增量的软件开发方法,它强调通过频繁的沟通、快速回应变化以及高度协作的方式来适应需求的变化。敏捷开发流程可以提高团队的灵活性和适应性,同时也能够减少开发中的风险。 Scrum 流程是敏捷开发流程中的一种常见方法,它侧重于团队合作和自组织。Scrum 流程将工作分为若干个可以在短时间内完成的时间段,称为“冲刺”。每个冲刺通常持续一至四个周,在冲刺开始前,团队确定要完成的任务和目标。在每个冲刺期间,团队会每天进行短暂的会议,称为“每日站会”,以便了解进展情况和解决问题。 Scrum 流程中的关键角色包括产品负责人、Scrum Master 和开发团队。产品负责人负责定义产品需求和优先级,并在每个冲刺中确定需要完成的任务。Scrum Master 负责确保团队能够按照 Scrum 流程进行工作,并协调团队内外的事务。开发团队是负责实际开发任务的成员,他们通过自组织的方式进行工作,并在每个冲刺期间交付可用的软件。 Scrum 流程强调快速的反馈和可视化,通过可见的工作看板和冲刺回顾会议,团队能够及时了解项目的进展和问题,并做出相应的调整。Scrum 还鼓励团队进行定期的迭代回顾和持续改进,以提高团队的工作效率和建设质量。 总之,敏捷开发流程和 Scrum 流程都是遵循快速响应变化,并通过高度协作的方式进行工作的软件开发方法。它们能够提高团队的灵活性和适应性,同时也能够加速项目的交付进度,提高客户满意度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值