2001年2月11日到13日,17位軟件開發(fā)領(lǐng)域的領(lǐng)軍 " /> 鸥美一级黄色片,亚洲视频黄,吉吉av电影

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

敏捷軟件開發(fā) Agile Software Development

  敏捷軟件開發(fā) Agile software Development

  敏捷開發(fā)是一種軟件開發(fā)方法,基于迭代和增量開發(fā),通過自組織,跨團(tuán)隊(duì),溝通協(xié)作完成開發(fā)工作。

Image  敏捷宣言的誕生:
  2001年2月11日到13日,17位軟件開發(fā)領(lǐng)域的領(lǐng)軍人物聚集在美國猶他州的滑雪勝地雪鳥(Snowbird)雪場。經(jīng)過兩天的討論,“敏捷”(Agile)這個(gè)詞為全體聚會(huì)者所接受,用以概括一套全新的軟件開發(fā)價(jià)值觀。這套價(jià)值觀,通過一份簡明扼要的《敏捷宣言》,傳遞給世界,宣告了敏捷開發(fā)運(yùn)動(dòng)的開始。

  敏捷軟件開發(fā)宣言

  我們一直在實(shí)踐中探尋更好的軟件開發(fā)方法,身體力行的同時(shí)也幫助他人。由此我們建立了如下價(jià)值觀:

  個(gè)體和互動(dòng) 高于 流程和工具

  工作的軟件 高于 詳盡的文檔

  客戶合作 高于 合同談判

  響應(yīng)變化 高于 遵循計(jì)劃

  也就是說,盡管右項(xiàng)有其價(jià)值,我們更重視左項(xiàng)的價(jià)值。

  We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
  Individuals and interactions over processes and tools
  Working software over comprehensive documentation
  Customer collaboration over contract negotiation
  Responding to change over following a plan
  That is, while there is value in the items on the right, we value the items on the left more.

  敏捷開發(fā)的12條準(zhǔn)則:
  準(zhǔn)則1:Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  我們的最高目標(biāo)是,通過盡早和持續(xù)地交付有價(jià)值的軟件來滿足客戶。
  準(zhǔn)則2:Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
  歡迎對需求提出變更——即使是在項(xiàng)目開發(fā)后期。要善于利用需求變更,幫助客戶獲得競爭優(yōu)勢。
  準(zhǔn)則3:Deliver working software frequently, from a couple of weeks to a couple of mouths, with a preference for the shorter timescale.
  要不斷交付可用的軟件,周期從幾周到幾個(gè)月不等,且越短越好。
  準(zhǔn)則4:Business people and developers must work together daily throughout the project.
  項(xiàng)目過程中,業(yè)務(wù)人員與開發(fā)人員必須在一起工作。
  準(zhǔn)則5:Build projects around motivated individuals. Give them the environment and support they need, and  trust them to get the job done. 
  要善于激勵(lì)項(xiàng)目人員,給他們以所需要的環(huán)境和支持,并相信他們能夠完成任務(wù)。
  準(zhǔn)則6:The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  無論是團(tuán)隊(duì)內(nèi)還是團(tuán)隊(duì)間,最有效的溝通方法是面對面的交談。
  準(zhǔn)則7:Working software is the primary measure of progress.
  可用的軟件是衡量進(jìn)度的主要指標(biāo)。
  準(zhǔn)則8:Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  敏捷過程提倡可持續(xù)的開發(fā)。項(xiàng)目方、開發(fā)人員和用戶應(yīng)該能夠保持恒久穩(wěn)定的進(jìn)展速度。
  準(zhǔn)則9:Continuous attention to technical excellence and good design enhances agility.
  對技術(shù)的精益求精以及對設(shè)計(jì)的不斷完善將提升敏捷性。
  準(zhǔn)則10:Simplicity -- the art of maximizing the amount of work not done -- is essential.
  要做到簡潔,即盡最大可能減少不必要的工作。這是一門藝術(shù)。
  準(zhǔn)則11:The best architectures, requirements, and designs emerge from self-organizing teams. 
  最佳的架構(gòu)、需求和設(shè)計(jì)出自于自組織的團(tuán)隊(duì)。
  準(zhǔn)則12:At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly. 
  團(tuán)隊(duì)要定期反省如何能夠做到更有效,并相應(yīng)地調(diào)整團(tuán)隊(duì)的行為。

  敏捷方法 Agile

  Scrum:http://zh.wikipedia.org/wiki/Scrum

  Scrum Role 角色

  Product Owner, Team, ScrumMaster, Chicken and the Pig

  產(chǎn)品經(jīng)理,團(tuán)隊(duì),ScrumMaster,雞和豬,有一則小故事

  Scrum Meetings

  Sprint 計(jì)劃會(huì)議 Sprint Planning Meeting

  需求澄清,確定那些用戶故事需要在接下來的迭代里完成

  根據(jù)Product Owner制定的產(chǎn)品或項(xiàng)目計(jì)劃在Sprint的開始時(shí)做準(zhǔn)備工作。

  他要準(zhǔn)備一個(gè)根據(jù)商業(yè)價(jià)值排好序的客戶需求列表。這個(gè)列表就是Prodct Backlog[需求池],一個(gè)最終會(huì)交付給客戶的產(chǎn)品特性列表,它們根據(jù)商業(yè)價(jià)值來排列優(yōu)先級。

  商業(yè)價(jià)值"公式":As a <type of user> I want <some functionality> so that <some benefit>

Sprint Planning Meeting  每日站立會(huì) Daliy Meeting

  在會(huì)議上每個(gè)團(tuán)隊(duì)成員回答三個(gè)問題(During the meeting, each team member answers three questions)

  1. 昨天你完成了那些工作?(What have you done since yesterday?)

  2. 今天天你打算做什么?(What are you planning to do today?)

  3. 完成你的目標(biāo)是否存在障礙?(Do you have any problems that would prevent you from accomplishing your goal?)

  會(huì)議準(zhǔn)時(shí)舉行(The meeting starts precisely on time.)

  任何人都可以參加,,但只有團(tuán)隊(duì)內(nèi)部人員發(fā)言(All are welcome, but normally only the core roles speak.)

  會(huì)議時(shí)長限制為15分鐘(The meeting is timeboxed to 15 minutes.)

  會(huì)議時(shí)間地點(diǎn)應(yīng)該固定(The meeting should happen at the same location and same time every day)

Image  評審會(huì)議(Sprint Review Meeting
  評審會(huì)議在每個(gè)迭代結(jié)束后舉行,在會(huì)議上團(tuán)隊(duì)演示此次迭代中完成了那些工作,一般會(huì)有相關(guān)的DEMO演示。
  At the end of each sprint a sprint review meeting is held. During this meeting the Scrum team shows what they accomplished during the sprint. Typically this takes the form of a demo of the new features.

  這個(gè)會(huì)議演示的內(nèi)容應(yīng)該是啟動(dòng)會(huì)議上確定的那些內(nèi)容

  During the sprint review the project is assessed against the sprint goal determined during the Sprint planning meeting

Image(3)  回顧會(huì)議(Sprint Retrospective Meeting)
  沖刺回顧會(huì)議一般限時(shí)為3個(gè)小時(shí)(The sprint retrospective meeting is timeboxed to 3 hours.)

  僅團(tuán)隊(duì)成員參加,產(chǎn)品經(jīng)理和ScrumMaster,產(chǎn)品經(jīng)理選擇性參加(It is attended only by the team, the scrum master and the product owner. The product owner is optional.)。

  會(huì)議上團(tuán)隊(duì)中每個(gè)成員需要回答兩個(gè)問題(Start the meeting by having all team members answer two questions):

  1. 此次沖刺中那些地方做得好?(What went well during the sprint?)

  2. 下個(gè)迭代中那些地方可以改進(jìn)? (What could be improved in the next sprint?)

  scrum master記錄每個(gè)成員的答案(The scrum master writes down the team’s answers in summary form)。

  團(tuán)隊(duì)為這些改進(jìn)意見評定優(yōu)先級(The team prioritizes in which order it wants to talk about the potential improvements)。

  scrum master在回顧會(huì)議中不允許給出答案,但要鼓勵(lì)成員自己找到較好的辦法(The scrum master is not in this meeting to provide answers, but to facilitate the team’s search for better ways for the scrum process to work for it)。

  這些改進(jìn)工作可以添加至下個(gè)迭代中,作為一個(gè)非功能性工作,回顧會(huì)議最不擔(dān)心的就是變化(Actionable items that can be added to the next sprint should be devised as high-priority non functional product backlog. Retrospectives that dont result in change are sterile and frustrating.)。

Image(4)  測試驅(qū)動(dòng)開發(fā)(TDD/Test-Driven Development)

  測試驅(qū)動(dòng)開發(fā)不是指測試人員驅(qū)動(dòng)開發(fā)人員搞開發(fā),一開始我真這么認(rèn)為了,實(shí)際上測試驅(qū)動(dòng)開發(fā)指以測試用例為出發(fā)點(diǎn),不寫一行代碼的情況下,編寫單元測試,從而無法通過,然后開始編寫代碼使之通過測試。這樣做的好處是直指目標(biāo),達(dá)到目標(biāo)被視為最高優(yōu)先級,TDD的執(zhí)行離不開重構(gòu),因?yàn)檫@種開發(fā)方式完全漠視設(shè)計(jì)。所以設(shè)計(jì)在開始時(shí)一定很差,通過不斷的重構(gòu)達(dá)到最優(yōu)的代碼,絕不會(huì)過度設(shè)計(jì),也不會(huì)做偏。網(wǎng)上多半會(huì)說實(shí)踐后你會(huì)喜歡上它,它的大概流程如下圖所示:

Image(8)  極限編程XP

  XP是一個(gè)輕量級的、靈巧的軟件開發(fā)方法;同時(shí)它也是一個(gè)非常嚴(yán)謹(jǐn)和周密的方法。它的基礎(chǔ)和價(jià)值觀是交流、樸素、反饋和勇氣。即任何一個(gè)軟件項(xiàng)目都可以從四個(gè)方面入手進(jìn)行改善:加強(qiáng)交流;從簡單做起;尋求反饋;勇于實(shí)事求是。XP是一種近螺旋式的開發(fā)方法,它將復(fù)雜的開發(fā)過程分解為一個(gè)個(gè)相對比較簡單的小周期;通過積極的交流、反饋以及其它一系列的方法,開發(fā)人員和客戶可以非常清楚開發(fā)進(jìn)度、變化、待解決的問題和潛在的困難等,并根據(jù)實(shí)際情況及時(shí)地調(diào)整開發(fā)過程。

  結(jié)隊(duì)編程Paring Program -即時(shí)反饋

  http://kb.cnblogs.com/page/91650/

  http://www.blogJava.NET/moxie/archive/2006/09/14/69714.html

  流模式(Flow)——兩個(gè)程序員共同從事一個(gè)有趣又有挑戰(zhàn)性的問題。

  指導(dǎo)模式(Coaching)——老練的程序員在解決問題方面有經(jīng)驗(yàn)和知識,可以與其他不能有效地獨(dú)自解決問題的程序員分享。

Image(9)  看板Kanban - 工作可視化,專注于當(dāng)下

  非常軟的軟廣告:國產(chǎn)開源敏捷工具 - fKanban

  http://www.cnblogs.com/a311300/archive/2010/11/18/1880776.html

  ToDo, OnGoing, Done, Impediment

Image(5)

  敏捷估算撲克 - 合理的任務(wù)分解
  http://community.techexcel.com.cn/010DevSuite/070Agile_Scrum/010Posts/010Agile_Poker

  http://www.csaipm.com/cost/201005101141211188.htm

  敏捷方法中的估算應(yīng)該是由團(tuán)隊(duì)成員共同進(jìn)行,而不是由項(xiàng)目經(jīng)理“閉門造車”式地得出。這樣做的原因之一是因?yàn)殚_發(fā)團(tuán)隊(duì)是由不同經(jīng)驗(yàn)的同事組成,對于同一個(gè)問題,經(jīng)驗(yàn)不同的人往往會(huì)給出不一樣的解決方案。如果可以將所有人的能力集中到一起,那么最后對問題的求解也就八九不離十了。

Image(6)  持續(xù)集成(Continuous Integration)- 團(tuán)隊(duì)協(xié)作的基礎(chǔ)

  http://blog.csdn.NET/tony1130/article/details/1876819

  http://www.hansky.com.cn/cn/dokuwiki/doku.php/corp/case/digitalchina

  什么是持續(xù)集成(Continuous Integration)?

  這個(gè)名詞已經(jīng)在軟件開發(fā)領(lǐng)域持續(xù)了N年,一個(gè)比較簡單的定義如下:

  持續(xù)集成(CI)是一種實(shí)踐,可以讓團(tuán)隊(duì)在持續(xù)發(fā)布的基礎(chǔ)上收到反饋并進(jìn)行改進(jìn),不必等到開發(fā)周期后期才尋找和修復(fù)缺陷。

Image(7)  單元測試Unit Test - 重構(gòu)的保障

  http://www.hudong.com/wiki/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95
  單元測試(模塊測試)是開發(fā)者編寫的一小段代碼,用于檢驗(yàn)被測代碼的一個(gè)很小的、很明確的功能是否正確。通常而言,一個(gè)單元測試是用于判斷某個(gè)特定條件(或者場景)下某個(gè)特定函數(shù)的行為。

  敏捷測試 Agile Test

  http://subject.csdn.NET/agile-testing.htm
  所謂敏捷測試,就是指測試遵循敏捷宣言進(jìn)行,把開發(fā)作為顧客看待。與敏捷宣言中的“個(gè)體和交互比過程和工具更有價(jià)值”一樣強(qiáng)調(diào)人的作用。

  代碼重構(gòu)(Reconstruction)

  Duplicated Code(重復(fù)代碼)

  Long Method(過長函數(shù))

  Large Class(過大的類)

  Long Parameter List(過長參數(shù)列)

  Divergent Change(發(fā)散式變化)

  Shotgun Surgery(霰彈式修改)

  Feature Envy(依戀情結(jié))

  Data Clumps(數(shù)據(jù)泥團(tuán))

  Primitive Obsession(基本類型偏執(zhí))

  Switch Statements(switch驚悚現(xiàn)身)

  Parallel InheritanceHierarchies(平行繼承體系)

  Lazy Class(冗贅類)

  Speculative Generality(夸夸其談未來性)

  Temporary Field(令人迷惑的暫時(shí)字段)

  Message Chains(過度耦合的消息鏈)

  Middle Man(中間人)

  Inappropriate Intimacy(狎昵關(guān)系)

  Alternative Classes with Different Interfaces(異曲同工的類)

  Incomplete Library Class(不完美的庫類)

  Data Class(純稚的數(shù)據(jù)類)

  Refused Bequest(被拒絕的遺贈(zèng))

  Comments(過多的注釋)

  Extract Method(提煉函數(shù))

  Inline Method(內(nèi)聯(lián)函數(shù))

  Inline Temp(內(nèi)聯(lián)臨時(shí)變量)

  Replace Temp with Query(以查詢?nèi)〈R時(shí)變量)

  Introduce Explaining Variable(引入解釋性變量)

  Split Temporary Variable(分解臨時(shí)變量)

  Remove Assignments to Parameters(移除對參數(shù)的賦值)

  Replace Method with Method Object(以函數(shù)對象取代函數(shù))

  Substitute Algorithm(替換算法)

  Move Method(搬移函數(shù))

  Move Field(搬移字段)

  Extract Class(提煉類)

  Inline Class(將類內(nèi)聯(lián)化)

  Hide Delegate(隱藏"委托關(guān)系")

  Remove Middle Man(移除中間人)

  Introduce Foreign Method(引入外加函數(shù))

  Introduce Local Extension(引入本地?cái)U(kuò)展)

  Self Encapsulate Field(自封裝字段)

  Replace Data Value with Object(以對象取代數(shù)據(jù)值)

  Change Value to Reference(將值對象改為引用對象)

  Change Reference to Value(將引用對象改為值對象)

  Replace Array with Object(以對象取代數(shù)組)

  Duplicate Observed Data(復(fù)制"被監(jiān)視數(shù)據(jù)")

  Change Unidirectional Association to Bidirectional(將單向關(guān)聯(lián)改為雙向關(guān)聯(lián))

  Change Bidirectional Association to Unidirectional(將雙向關(guān)聯(lián)改為單向關(guān)聯(lián))

  Replace Magic Number with Symbolic Constant(以字面常量取代魔法數(shù))

  Encapsulate Field(封裝字段)

  Encapsulate Collection(封裝集合)

  Replace Record with Data Class(以數(shù)據(jù)類取代記錄)

  Replace Type Code with Class(以類取代類型碼)

  Replace Type Code with Subclasses(以子類取代類型碼)

  Replace Type Code with State/Strategy(以State/Strategy取代類型碼)

  Replace Subclass with Fields(以字段取代子類)

  Decompose Conditional(分解條件表達(dá)式)

  Consolidate Conditional Expression(合并條件表達(dá)式)

  Consolidate Duplicate Conditional Fragments(合并重復(fù)的條件片段)

  Remove Control Flag(移除控制標(biāo)記)

  Replace Nested Conditional with Guard Clauses(以衛(wèi)語句取代嵌套條件表達(dá)式)

  Replace Conditional with Polymorphism(以多態(tài)取代條件表達(dá)式)

  Introduce Null Object(引入Null對象)

  Introduce Assertion(引入斷言)

  Rename Method(函數(shù)改名)

  Add Parameter(添加參數(shù))

  Remove Parameter(移除參數(shù))

  Separate Query from Modifier(將查詢函數(shù)和修改函數(shù)分離)

  Parameterize Method(令函數(shù)攜帶參數(shù))

  Replace Parameter with Explicit Methods(以明確函數(shù)取代參數(shù))

  Preserve Whole Object(保持對象完整)

  Replace Parameter with Methods(以函數(shù)取代參數(shù))

  Introduce Parameter Object(引入?yún)?shù)對象)

  Remove Setting Method(移除設(shè)值函數(shù))

  Hide Method(隱藏函數(shù))

  Replace Constructor with Factory Method(以工廠函數(shù)取代構(gòu)造函數(shù))

  Encapsulate Downcast(封裝向下轉(zhuǎn)型)

  Replace Error Code with Exception(以異常取代錯(cuò)誤碼)

  Replace Exception with Test(以測試取代異常)

  Pull Up Field(字段上移)

  Pull Up Method(函數(shù)上移)

  Pull Up Constructor Body(構(gòu)造函數(shù)本體上移)

  Push Down Method(函數(shù)下移)

  Push Down Field(字段下移)

  Extract Subclass(提煉子類)

  Extract Superclass(提煉超類)

  Extract Interface(提煉接口)

  Collapse Hierarchy(折疊繼承體系)

  Form Tem Plate Method(塑造模板函數(shù))

  Replace Inheritance with Delegation(以委托取代繼承)

  Replace Delegation with Inheritance(以繼承取代委托)

  Tease Apart Inheritance(梳理并分解繼承體系)

  Convert Procedural Design to Objects(將過程化設(shè)計(jì)轉(zhuǎn)化為對象設(shè)計(jì))

  Separate Domain from Presentation(將領(lǐng)域和表述/顯示分離)

  Extract Hierarchy(提煉繼承體系)

  代碼Review

  不想重復(fù)說了,同單元測試一樣重要。

Image(10)  總結(jié)

  以上是個(gè)人經(jīng)過理論學(xué)習(xí),實(shí)踐檢驗(yàn)后總結(jié)的一篇文章,其中大部分觀點(diǎn)、素材皆來自網(wǎng)絡(luò)和公司敏捷活動(dòng)中所得。我想要說的是,我是支持這些觀點(diǎn)的,我認(rèn)為這些方法論可以很好的指導(dǎo)日常開發(fā)工作,能夠解決實(shí)際問題,That's All。

it知識庫敏捷軟件開發(fā) Agile Software Development,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 中文字幕不卡在线视频 | 国产精品成人A蜜柚在线观看 | 成人免费精品视频 | 欧美顶级情欲片免费看 | 国产麻豆福利AV在线观看 | 动漫女主被扒开双腿羞辱 | 3acg同人漫画禁图h | 国产激情视频在线 | 国产超碰精久久久久久无码AV | 国产AV国片精品无套内谢无码 | 我强进了老师身体在线观看 | 亚洲一区二区三区91 | 亚洲国产精品免费线观看视频 | 俄罗斯大白屁股 | 三级黄色视屏 | 一二三四在线观看高清电视剧 | 亚洲精品久久一区二区三区四区 | abp-146 | a级男女性高爱潮高清试看 A级毛片无码久久精品免费 | 成人在线观看播放 | 日韩一区二区三区视频在线观看 | 高清欧美一区二区三区 | 国产精品亚洲视频在线观看 | 日夜啪啪一区二区三区 | 国产传媒精品1区2区3区 | 少妇第一次交换 | 蜜桃臀无码内射一区二区三区 | 国产精品久久久久久影院 | 国产免费69成人精品视频 | 亚洲福利精品电影在线观看 | 亚洲国产成人精品无码区99 | 诱咪视频免费 | 精品水蜜桃久久久久久久 | 抽插妇女疯狂视频 | 国产三级在线精品男人的天堂 | 动漫美女3d被爆漫画 | 蜜臀久久99精品久久久久久做爰 | 亚洲精品国偷拍自产在线观看蜜臀 | 亚洲国产cao | 噜噜噜狠狠夜夜躁精品 | 吃奶啃奶玩乳漫画 |