<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    OMG,到底在尋找什么..................
    (構(gòu)造一個(gè)完美的J2EE系統(tǒng)所需要的完整知識體系)
    posts - 198,  comments - 37,  trackbacks - 0
    原貼地址:http://blog.csdn.net/mfowler/archive/2006/06/04/772384.aspx

    熊節(jié):我記得大概是在2001年的時(shí)候,我們在《程序員》雜志上做了一次技術(shù)專題叫做重構(gòu)。重構(gòu)這個(gè)思想名詞誰提出來,就是今天坐在這里的 Martin Fowler先生。從01年到05年,我們在中國宣傳敏捷的思想已經(jīng)有好幾年,現(xiàn)在我們終于有機(jī)會(huì)可以面對面的聽到Martin Fowler原汁原味的講"敏捷的思想",現(xiàn)在請掌聲歡迎Martin Fowler先生

    Martin Fowler:謝謝!我喜歡在臺上走來走去,不喜歡站在一個(gè)地方。我現(xiàn)在感覺舒服多了,因?yàn)镾idney Penney已經(jīng)把我在ThoughtWorks的地位建立起來,我不用擔(dān)心以后失業(yè)。今天主要是想和大家探討敏捷式軟件開發(fā)。

    首先我稍微介紹一下這方面的背景。正如我們大家都知道,我們今天所生活的環(huán)境越來越依賴于軟件這些東西。在整個(gè)世界范圍,各種業(yè)務(wù)越來越依賴于軟件 進(jìn)行它日常的運(yùn)營工作。很多這些工作平常你并不一定能夠看得見,但是,如果這里面出現(xiàn)問題的時(shí)候是非常明顯的一件事情。比如說,最近美國有一家航空公司的 訂票系統(tǒng)出現(xiàn)了故障,有一天不能工作,結(jié)果自然造成了極大的混亂和很大的財(cái)產(chǎn)方面的損失。
    現(xiàn)在我們不是說要找出這個(gè)軟件遇到了什么問題,而是把這 個(gè)問題看成軟件成功的一個(gè)現(xiàn)象,就是它對業(yè)務(wù)的支持已經(jīng)到了不可缺少的地步。在更加容易看到的一方面就是國際互聯(lián)網(wǎng)的這些技術(shù)。這種技術(shù)使得信息能夠在網(wǎng) 絡(luò)上不斷的進(jìn)行流動(dòng),對世界本身造成了很多有益的影響。至少在美國,普通的人即使在本地的商店里買一些什么東西,也要先到網(wǎng)上察看一下有關(guān)商品的價(jià)格以及 其他的信息。實(shí)際上在過去三、四十年里,軟件行業(yè)是非常成功的一個(gè)行業(yè)。但同時(shí)業(yè)務(wù)部門對軟件也有很多不滿的地方,至少我自己一次又一次聽到很多的公司談 到他們非常昂貴的軟件失敗的案例。所以,我的意見就是軟件既是非常成功的,也是失敗的一個(gè)行業(yè)。
    對于很多業(yè)務(wù)方面的人員來說也不是非常清楚,將來 軟件到底是走向成功還是走向失敗?這個(gè)問題并不是一個(gè)新的問題。比如說在六十年代末北約組織了一次軟件工程學(xué)的大會(huì),他們在會(huì)議上提出了"軟件危機(jī)"這個(gè) 概念。當(dāng)時(shí)大家的印象,軟件已經(jīng)變得如此的復(fù)雜,以至于不能以十分有效的方式來管理。這次會(huì)議的后來產(chǎn)生的結(jié)果就提出了一種更加有紀(jì)律性的軟件開發(fā)的方 法。這個(gè)會(huì)議的提出,名詞就叫"軟件工程學(xué)"。這個(gè)概念背后的核心就是從傳統(tǒng)的工程學(xué)里面借鑒一些概念,把它應(yīng)用到軟件開發(fā)過程當(dāng)中來。這個(gè)概念背后隨之 而來的很多軟件開發(fā)方面的方法和過程。


    這些方法至少在七十年代、八十年代、九十年代變成了大家全部使用的軟件開發(fā)方法。但是,也是在這段時(shí)間,很多的軟件從業(yè)人員開始懷疑工程學(xué) 為基礎(chǔ)的方法到底適不適合軟件開發(fā)。有很多非常成功的軟件項(xiàng)目,并沒有完全真正的按照軟件工程學(xué)的方法來進(jìn)行開發(fā)的。與此同時(shí),很多非常失敗的軟件項(xiàng)目確 實(shí)是按照這種方法來進(jìn)行的。大概在九十年代開始,我們看到很多人開始使用其他一些不同的方法來開發(fā)軟件,比較有名的方法包括極限編程、SCRUM、 Crystal、FDD等等。雖然這些方法由不同的人、不同的項(xiàng)目來開始開發(fā)實(shí)施,但是他們之間有很多非常相似的地方。敏捷開發(fā)這個(gè)概念就是用來描述這一 系列比較新的軟件開發(fā)方法的。這個(gè)詞就在2001年在猶它的會(huì)議上被選擇出來成為描述的詞匯。


    現(xiàn)在想和大家討論敏捷開發(fā)和軟件工程學(xué)開發(fā)方法的兩點(diǎn)最主要不同。第一個(gè)最大的不同是,敏捷開發(fā)方法以適應(yīng)性為基礎(chǔ),以計(jì)劃傳統(tǒng)的開發(fā)方法 是以預(yù)測性為基礎(chǔ)。第二個(gè)最主要的不同的地方,敏捷開發(fā)是以人為基礎(chǔ),以人為核心,計(jì)劃開發(fā)方法是以過程為核心的。我下面仔細(xì)的介紹一下這兩個(gè)不同的方 法。
    正像我剛才說過的,以計(jì)劃驅(qū)動(dòng)的這些方法是以過去的很多傳統(tǒng)工程學(xué)理面的理念所引導(dǎo)出來的。所有這些傳統(tǒng)的工程學(xué),這些分支里面都有一個(gè)共同 的特點(diǎn),就是非常清晰的區(qū)別設(shè)計(jì)和構(gòu)建這兩個(gè)不同的過程。以計(jì)劃驅(qū)動(dòng)的軟件開發(fā)這些人員通常也喜歡用這種方法來設(shè)計(jì)驅(qū)動(dòng)軟件開發(fā)的過程,他們想到的第一個(gè) 問題,傳統(tǒng)的工程設(shè)計(jì)圖紙?jiān)谲浖袠I(yè)里是什么樣的東西呢?他們認(rèn)為在軟件行業(yè)當(dāng)中,與工程學(xué)對應(yīng)的構(gòu)建的階段就是編程。所以,在軟件行業(yè)就應(yīng)該先用圖象的 方式把整個(gè)設(shè)計(jì)的方案表達(dá)出來,然后交給真正編程的人。
    我經(jīng)常喜歡用一個(gè)建筑學(xué)的例子說這件事情,因?yàn)槲业姆蛉司褪亲鲞@項(xiàng)工作的。比如說如果你想 造一座橋,你開始會(huì)把所有造橋的事情都想情況,想到會(huì)出現(xiàn)什么問題。這項(xiàng)工作由專門的一系列專門的設(shè)計(jì)人員來完成的,他們所做的工作,交付的東西是一系列 圖紙,以圖象為基礎(chǔ)描述橋到底怎么建,既包括建好以后橋是什么樣子,也包括他們是怎么一步一步把橋建起來的,這些圖紙通常會(huì)交給另外一個(gè)完全不同的公司來 具體的建造這座橋梁。這個(gè)設(shè)計(jì)通常是有足夠的細(xì)節(jié)在里面,這樣你可以完全制定一套計(jì)劃,怎么樣一步一步搭建這個(gè)橋梁,花多少時(shí)間、多少成本、需要什么材料 等等。
    現(xiàn)在大家都知道,有很多非常流行的用來圖象性的語言來描述設(shè)計(jì)的,包括Data Flow、Event Driven、UML、事件驅(qū)動(dòng)等等建模語言。我自己在最初開始進(jìn)行軟件開發(fā)的時(shí)候,我也覺得這種方法非常的有效。而且對于如何構(gòu)建和改進(jìn)這些建模方法的 語言,在這方面有很多的心得。這就是為什么我參與了UML方面的工作。但即使我已經(jīng)對UML語言變得非常熟練的時(shí)候,我會(huì)發(fā)現(xiàn)以計(jì)劃驅(qū)動(dòng)的軟件開發(fā)方法還 是有很多的問題。
    我想集中討論有三個(gè)最主要的原因,為什么這種方法有點(diǎn)行不通。第一,是一個(gè)非常簡單的現(xiàn)象。傳統(tǒng)的工程學(xué)里,設(shè)計(jì)這個(gè)階段通 常情況下占有整個(gè)項(xiàng)目的非常短的時(shí)間,比如說只有10%的時(shí)間左右。如果你找到任何一本軟件工程學(xué)的課本,就會(huì)發(fā)現(xiàn)他們通常是整個(gè)設(shè)計(jì)的40%到50%的 時(shí)間,很明顯,有些事情在這里面是不對的。第二,在紙上描畫出的設(shè)計(jì)是非常容易的事情。即使在我自己非常擅長在紙上畫圖形,但是真正的用編程來實(shí)現(xiàn)的時(shí)候 我發(fā)現(xiàn)很多的問題。
    當(dāng)我真正編程實(shí)現(xiàn)這個(gè)工程的時(shí)候,我發(fā)現(xiàn)很多的問題在畫圖設(shè)計(jì)的時(shí)候并沒有真正的想到。正是這種發(fā)現(xiàn),這種認(rèn)識,使很多人開始 來問這樣的問題,設(shè)計(jì)在軟件開發(fā)過程中所處的時(shí)間點(diǎn)到底是對的還是不對的。最后得到的結(jié)論是,唯一一個(gè)能夠準(zhǔn)確描述方案的語言不是圖象,而是源代碼本身。 按照傳統(tǒng)工程學(xué)的比喻來說,設(shè)計(jì)的思想是蘊(yùn)涵在最后真正的建設(shè)和部署的階段。至少我慢慢的認(rèn)識到,把設(shè)計(jì)和編程完全分開來是非常嚴(yán)重、非常根本的錯(cuò)誤,如 果光設(shè)計(jì)不編程或者光編程不設(shè)計(jì)都會(huì)產(chǎn)生各種各樣的問題。
    對我來說,還有一個(gè)更主要的原因,按計(jì)劃驅(qū)動(dòng)的開發(fā)方法不成功的原因就是需求本身的變 化。幾乎我經(jīng)歷過的項(xiàng)目或者訪問過的項(xiàng)目都會(huì)有這樣一個(gè)問題,就是在編程過程中需求還在變化。按計(jì)劃驅(qū)動(dòng)的開發(fā)方法,它花了很多的時(shí)間和精力,在需求階段 盡量把所有的需求確定下來,使他們在開發(fā)以后的階段不會(huì)發(fā)生變化。但是,在很多其他的軟件開發(fā)的項(xiàng)目當(dāng)中,尤其是商業(yè)軟件,就是我一直從事的商業(yè)軟件開 發(fā),這種方法幾乎是不現(xiàn)實(shí)的。在一個(gè)項(xiàng)目的早期,很難真正的想象出來到底軟件的需求會(huì)是什么樣的。
    即使你在項(xiàng)目的開始階段能夠想象出來項(xiàng)目的需求 是什么樣,但是業(yè)務(wù)本身肯定會(huì)變的,在項(xiàng)目需求確定以后還會(huì)繼續(xù)變化,從而導(dǎo)致需求的變化。這種以計(jì)劃驅(qū)動(dòng)的軟件開發(fā)方法是整個(gè)建立在需求不會(huì)更改的基礎(chǔ) 之上的。如果這種基礎(chǔ)、這種假設(shè)是不成立的,整個(gè)開發(fā)方法都會(huì)出現(xiàn)問題。他們的這種方法,我們應(yīng)該在開始明明白白把軟件開發(fā)的過程所有可能出現(xiàn)的問題全部 想清楚,這樣我們可以完全準(zhǔn)確的預(yù)測開發(fā)過程會(huì)有什么樣的問題。
    敏捷開發(fā)的從業(yè)人員覺得,如果我們不能夠完全避免變化,我們就應(yīng)該建立一種新的方 法,能夠使我們有效的處理將來出現(xiàn)的變化。我們在一個(gè)敏捷開發(fā)的項(xiàng)目的全過程當(dāng)中能夠很清楚的看到這一點(diǎn)。以計(jì)劃驅(qū)動(dòng)的開發(fā)方法核心就是在早期建立一個(gè)計(jì) 劃,如果一切都沒有出現(xiàn)任何問題的話,這個(gè)計(jì)劃就是實(shí)際項(xiàng)目當(dāng)中將會(huì)發(fā)生的事情。在這種方法里面,計(jì)劃是在項(xiàng)目開發(fā)過程中非常早期建立起來的。在一個(gè)敏捷 開發(fā)項(xiàng)目當(dāng)中,計(jì)劃這些活動(dòng)是在整個(gè)項(xiàng)目的過程從頭到尾一直不斷的進(jìn)行的。在敏捷開發(fā)里面沒有這樣的計(jì)劃,會(huì)把將來軟件最后的所有的細(xì)節(jié)全部預(yù)測出來,而 這個(gè)計(jì)劃的過程是一個(gè)對變化進(jìn)行反應(yīng)的過程,就是一個(gè)一個(gè)的變化會(huì)不斷的融入到這個(gè)計(jì)劃當(dāng)中,用來進(jìn)行真正實(shí)現(xiàn)這種方式的核心方法就是把整個(gè)項(xiàng)目分割成一 小塊一小塊的迭代。
    這兩種完全不同的開發(fā)方法的第二個(gè)區(qū)別就是:以人為核心,還是以過程方法為核心。以計(jì)劃驅(qū)動(dòng)的核心方法,設(shè)計(jì)一套這樣的方法, 不管什么人,任何人都可以在這套方法中發(fā)揮最大的作用。有了這種非常有效的方法以后,這種方法會(huì)有很多的角色在里面,這樣可以把角色用任何的人放進(jìn)來拿出 去,只要有人做這個(gè)事情就可以保證整個(gè)軟件項(xiàng)目是成功的。敏捷開發(fā)方法對這個(gè)問題的看法最好用艾克·卡文的一個(gè)觀點(diǎn)來解釋?他在軟件開發(fā)的早期是幫助 IBM做關(guān)于OO方面的研究工作。他在做這些工作的時(shí)候,最主要的任務(wù)是訪問不同的開發(fā)項(xiàng)目,發(fā)現(xiàn)成功的項(xiàng)目到底是哪些因素使得這個(gè)項(xiàng)目成功。他發(fā)現(xiàn)最后 得到的結(jié)果非常奇怪,所有的成功的項(xiàng)目他們之間沒有一點(diǎn)在過程方面共通的地方。這些項(xiàng)目所共通的唯有一點(diǎn)共通:他們擁有能力非常強(qiáng)、交流非常好的開發(fā)團(tuán) 隊(duì)。
    這個(gè)問題的核心在于,以計(jì)劃驅(qū)動(dòng)的開發(fā)方法是以過程驅(qū)動(dòng)整個(gè)軟件開發(fā)的工作。在軟件開發(fā)的過程當(dāng)中,其實(shí)最核心的部分應(yīng)該是開發(fā)人員本身。但是,以計(jì)劃驅(qū)動(dòng)這些方法,在這個(gè)過程中喜歡把編程人員本身當(dāng)成計(jì)算機(jī)來對待,有些人甚至認(rèn)為軟件開發(fā)方法也應(yīng)該像編程一樣來對待人。
    計(jì) 算機(jī)和人的區(qū)別主要在于,計(jì)算機(jī)是非常有一致性的,總是不斷的以準(zhǔn)確的方式來重復(fù)同樣的工作。但是,人在這個(gè)過程中沒有持續(xù)性,人總是有各種各樣的變化, 有時(shí)候快,有時(shí)候慢,有時(shí)候做的好,有時(shí)候做的不好。人的優(yōu)勢和計(jì)算機(jī)的優(yōu)勢是不一樣的。這使我們要重新考慮開發(fā)方法和編程這兩件事情。在敏捷開發(fā)社團(tuán) 里,大家都會(huì)覺得,在這個(gè)過程中人應(yīng)該是第一位的,所有的東西都應(yīng)該圍繞著人來做的。一個(gè)項(xiàng)目的開發(fā)過程的有效性,主要決定于項(xiàng)目的人的能力以及這些人互 相進(jìn)行合作的有效性。他們使用的開發(fā)方法以及他們使用的各種不同的工具,和人比起來是次要一級的因素。
    在我們當(dāng)年寫《敏捷開發(fā)宣言》的時(shí)候,我們 把"人比過程重要"這一點(diǎn)放在第一行上面。我們認(rèn)為,人和人之間的交互要比方法和工具要重要得多。這其實(shí)非常具有諷刺意味,因?yàn)槲覀兪且蝗簩iT做方法和工 具的一群人。這造成了很重要的一些結(jié)果,特別重要的一點(diǎn),就是說方法是用來適應(yīng)人的,而不是人來適應(yīng)方法。作為開發(fā)一個(gè)團(tuán)隊(duì)上面的人本身,他們自己應(yīng)該來 選擇所適合的開發(fā)方法。從而就是說,如果真正想建立一個(gè)有效的開發(fā)團(tuán)隊(duì),最主要不是選擇什么方法,而是找到真正合適的、有能力的開發(fā)人員,并且使他們能夠 有效的相互之間一起合作。以這種方式來選擇團(tuán)隊(duì),你所應(yīng)該注意的開發(fā)人員的素質(zhì)和傳統(tǒng)上的以方法為核心的這些人所注重的素質(zhì)通常是不一樣的。
    另外 一個(gè)結(jié)果就是:方法本身并不是固定不變的。一個(gè)敏捷開發(fā)團(tuán)隊(duì)的非常重要的特點(diǎn)就是他們一直在不斷的改進(jìn)他們所使用的方法,直到這個(gè)方法非常適合他們自己的 團(tuán)隊(duì)為止。一種非常有效的方法,就是在每一次迭代開發(fā)完畢以后做一個(gè)回顧式的會(huì)議,專門討論在過去迭代過程中開發(fā)方法哪些需要改變,哪些需要變化來適應(yīng)開 發(fā)團(tuán)隊(duì)本身。這就意味著不光每個(gè)開發(fā)團(tuán)隊(duì)要選擇自己的方法,而且它所選擇的方法會(huì)隨著時(shí)間的變化不斷的改進(jìn)。
    所以,我覺得大家已經(jīng)看到,在這兩種 敏捷開發(fā)和計(jì)劃驅(qū)動(dòng)開發(fā)方法之間,他們背后建立的假設(shè)和基礎(chǔ)完全是不一樣的。我并不想說,敏捷開發(fā)是對所有的項(xiàng)目來說都是最適合的一種方法。我想我們現(xiàn)在 還是在處于一個(gè)探索階段,弄清楚到底哪些開發(fā)方法適于哪些項(xiàng)目。而且應(yīng)該說敏捷式的開發(fā)方法在西方還是屬于少數(shù)的開發(fā)方法。但是,這種方法也是在《敏捷開 發(fā)宣言》提出來以后,在最近幾年越來越得到很多方面重視的一種方法。比如說在ThoughtWorks我們用敏捷開發(fā)方法在項(xiàng)目當(dāng)中獲得了很多的成功。有 效的使用敏捷方法的項(xiàng)目,有些是上百人的大項(xiàng)目,而且項(xiàng)目的團(tuán)隊(duì)分布在不的國家和不同的大洲之間。至少對我來說,這是我最喜歡的一種工作方式。
    對 我個(gè)人來說,我非常有興趣看到越來越多的對敏捷開發(fā)方法的使用,以及它在開發(fā)過程中所帶來的新的挑戰(zhàn),尤其是敏捷式開發(fā)方法對軟件開發(fā)當(dāng)中對設(shè)計(jì)的理解帶 來很大的沖擊。 在敏捷開發(fā)的過程中,一個(gè)應(yīng)用的設(shè)計(jì)在整個(gè)開發(fā)過程中是一個(gè)不斷演變的過程。這也是我們非常有興趣的幫助設(shè)計(jì)演變的程序,比如說重構(gòu)和設(shè)計(jì)開發(fā)。軟件開發(fā) 當(dāng)中一個(gè)非常有趣的現(xiàn)象是,沒有辦法絕對的客觀來衡量開發(fā)方法的有效性。我們唯一能做的就是非常誠懇、非常準(zhǔn)確的描述我們自己的經(jīng)驗(yàn),使得其他有興趣的人 做類似的事情。整個(gè)敏捷開發(fā)社區(qū)所做的很多工作,就是在不斷的探索敏捷開發(fā)的極限在哪里,限度在哪里。我自己非常很高興能處在整個(gè)發(fā)現(xiàn)的過程中。 我準(zhǔn)備講的就這些。謝謝!

    熊節(jié):我們現(xiàn)在先來向Martin Fowler先生提一點(diǎn)問題,我相信大家也會(huì)有很多的問題想要馬上請教。不過在大家開始請教之前,我希望把這個(gè)機(jī)會(huì)讓給我們CSDN聊天網(wǎng)上的200多的在線用戶,看看他們有什么問題。

    網(wǎng)友:希望Martin Fowler先生能夠解釋一下XP、Scrum、Crystal、FDD等等這些敏捷方法之間有什么區(qū)別和聯(lián)系?

    Martin Fowler:所有的這些都是在敏捷開發(fā)里,大家經(jīng)常會(huì)使用各種不同的方法,在很短的時(shí)間里真的沒有辦法把所有的都介紹一遍,如果你去我的網(wǎng)頁叫 Martin Fowler.COM有一篇文章叫《新方法》。在那篇文章里,基本上把我剛才講的已經(jīng)總結(jié)一遍,而且有很多剛才提到的不同的具體方法當(dāng)中。


    現(xiàn)場提問:很榮幸聆聽您的教誨。您剛才說,人在整個(gè)軟件開發(fā)過程中起著決定性的作用。我以前做過開發(fā),現(xiàn)在也做開發(fā),也參加過設(shè)計(jì)。設(shè)計(jì)和 開發(fā)很容易脫節(jié),Martin Fowler先生說過,設(shè)計(jì)和開發(fā)之間的結(jié)合是通過迭代,我想問一個(gè)問題,迭代的過程怎樣做才更合適一些?

    Martin Fowler:首先在你頭腦中想象軟件是一種什么樣的方式。你可以用各種不同的方法來嘗試或者描述這種設(shè)計(jì)本身。比如說你可以用UML的方式在白板上和把 它描述出來,和你的同事討論這個(gè)設(shè)計(jì)到底是怎么樣的。你可以用不同的方法來嘗試各種不同的編程,你也可以采用測試的方法來開發(fā)這個(gè)程序。設(shè)計(jì)并不只是簡單 的畫圖的過程,要在腦子中想象,怎么樣把這個(gè)軟件做出來,做決定的過程就是設(shè)計(jì)的過程。只有你真正的嘗試的時(shí)候,才能夠真正的做到你剛才做的決定到底是正 確的還是不正確的,應(yīng)該做什么樣的決定。

    posted on 2006-06-06 21:36 OMG 閱讀(249) 評論(0)  編輯  收藏 所屬分類: <項(xiàng)目>系統(tǒng)構(gòu)架

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     

    <2006年6月>
    28293031123
    45678910
    11121314151617
    18192021222324
    2526272829301
    2345678

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    IT風(fēng)云人物

    文檔

    朋友

    相冊

    經(jīng)典網(wǎng)站

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费无码又爽又刺激高潮软件 | 亚洲黄片手机免费观看| 亚洲国产精品免费视频| 免费观看四虎精品成人| 精品亚洲AV无码一区二区| 亚洲精品色午夜无码专区日韩| 国产精品免费综合一区视频| 国产成人yy免费视频| 国产白丝无码免费视频| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 在线精品一卡乱码免费| 日本一区二区免费看| 一个人看的免费高清视频日本| 亚洲av纯肉无码精品动漫| 亚洲人成影院午夜网站| 一区二区三区亚洲| 久久精品国产亚洲av麻| 伊人久久大香线蕉亚洲| 亚洲国产午夜福利在线播放| 免费大黄网站在线观看| 国产日产成人免费视频在线观看| 九九九精品成人免费视频| 91青青青国产在观免费影视| 国产精品视频白浆免费视频| 在线观看免费黄色网址| 在线看片免费人成视频久网下载| 亚洲黄片手机免费观看| 无遮挡免费一区二区三区| 免费VA在线观看无码| 成人在线免费视频| 免费无码午夜福利片69| 色费女人18女人毛片免费视频 | 国产香蕉九九久久精品免费| 青青青国产在线观看免费| aa级一级天堂片免费观看| 最近中文字幕无吗高清免费视频| 99久久综合国产精品免费| 夭天干天天做天天免费看| 暖暖在线日本免费中文| 国产又长又粗又爽免费视频| 免费成人黄色大片|