亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        以實(shí)踐能力為中心的軟件工程教學(xué)方法探索

        2024-01-02 08:35:14沈立煒
        軟件導(dǎo)刊 2023年12期
        關(guān)鍵詞:代碼工具軟件

        沈立煒,彭 鑫

        (復(fù)旦大學(xué) 計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,上海 200433)

        0 引言

        軟件工程是一門關(guān)注復(fù)雜軟件系統(tǒng)開(kāi)發(fā)、維護(hù)與運(yùn)行相關(guān)方法與技術(shù)的基礎(chǔ)性課程,在新工科建設(shè)中具有重要地位,其教學(xué)方法與模式改革受到了廣泛關(guān)注[1-3]。軟件工程課程涉及的理論知識(shí)和概念眾多,學(xué)生由于缺少相關(guān)實(shí)踐經(jīng)驗(yàn)和背景知識(shí)導(dǎo)致理解上存在困難。因此,如何借助課程實(shí)踐幫助學(xué)生理解軟件工程相關(guān)概念和理論并掌握相關(guān)實(shí)踐能力,成為軟件工程課程教學(xué)的一個(gè)關(guān)鍵問(wèn)題[4-5]。

        作者所在教學(xué)團(tuán)隊(duì)早期的軟件工程教學(xué)模式普遍圍繞軟件生命周期,并以瀑布模型等經(jīng)典軟件開(kāi)發(fā)模型為主線,按照需求分析、軟件設(shè)計(jì)、實(shí)現(xiàn)與測(cè)試、軟件維護(hù)幾個(gè)部分展開(kāi)。整個(gè)課程以結(jié)構(gòu)化方法和面向?qū)ο蠓椒楹诵膬?nèi)容,在教學(xué)過(guò)程中穿插與各部分內(nèi)容相關(guān)的習(xí)題,最后以一個(gè)面向特定項(xiàng)目的軟件開(kāi)發(fā)文檔作為主要課程實(shí)踐提交物??傮w而言,這種教學(xué)方法較為注重經(jīng)典軟件工程方法以及軟件開(kāi)發(fā)過(guò)程與文檔,弱化了軟件構(gòu)造與維護(hù)等實(shí)踐內(nèi)容,導(dǎo)致學(xué)生難以獲得關(guān)于軟件工程方法與技術(shù)的切身體會(huì)和深刻理解,遑論軟件工程實(shí)踐能力,在課程教學(xué)中經(jīng)常會(huì)獲得諸如“教材和教學(xué)內(nèi)容過(guò)于抽象”“照本宣科、條條框框”“缺少實(shí)踐能力培養(yǎng)”等評(píng)價(jià)。

        近年來(lái),企業(yè)軟件開(kāi)發(fā)實(shí)踐圍繞云原生(Cloud Native)與開(kāi)發(fā)運(yùn)維一體化(DevOps)已經(jīng)取得了長(zhǎng)足的發(fā)展和進(jìn)步,敏捷開(kāi)發(fā)、持續(xù)集成、持續(xù)部署、微服務(wù)、演化式設(shè)計(jì)等開(kāi)發(fā)實(shí)踐得到了廣泛應(yīng)用,同時(shí)軟件開(kāi)發(fā)工具與環(huán)境也在面向基于云的一體化開(kāi)發(fā)平臺(tái)遷移。以上對(duì)軟件工程課程教學(xué)提出了新的要求:一方面課程教學(xué)內(nèi)容需要反映軟件工程實(shí)踐最新發(fā)展;另一方面課程教學(xué)方式與方法需要突出相關(guān)實(shí)踐能力培養(yǎng)。

        針對(duì)以上問(wèn)題,教學(xué)團(tuán)隊(duì)圍繞以實(shí)踐能力為中心的軟件工程教學(xué)方法持續(xù)開(kāi)展探索與實(shí)踐,以交付可運(yùn)行軟件的構(gòu)造活動(dòng)為中心開(kāi)展實(shí)踐化教學(xué),同時(shí)通過(guò)一種增量、迭代的過(guò)程融入軟件開(kāi)發(fā)與交付過(guò)程中關(guān)鍵能力的培養(yǎng)。與傳統(tǒng)軟件工程教學(xué)方法相比,這種方法更注重以代碼為載體的軟件工程實(shí)踐能力培養(yǎng),同時(shí)按照編碼、設(shè)計(jì)、需求的順序從低到高逐步融入不同層次的軟件工程能力要求。這種新的教學(xué)方法已經(jīng)在復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)以及軟件工程專業(yè)的軟件工程課程教學(xué)中進(jìn)行了實(shí)踐,其效果已經(jīng)得到初步驗(yàn)證。

        1 以實(shí)踐能力為中心的教學(xué)設(shè)計(jì)

        選修軟件工程課程的本科生一般對(duì)Java、C++等程序設(shè)計(jì)語(yǔ)言和基本數(shù)據(jù)結(jié)構(gòu)有一定了解,但這些基礎(chǔ)能力還不足以使其完成一個(gè)相對(duì)復(fù)雜的、具有完整需求的軟件開(kāi)發(fā)項(xiàng)目。軟件工程課程的目標(biāo)是培養(yǎng)學(xué)生解決復(fù)雜工程問(wèn)題的能力[6],因此要在前序課程內(nèi)容的基礎(chǔ)上從一個(gè)相對(duì)完整的工程實(shí)踐視角組織課程教學(xué)與實(shí)踐[7]。首先需要讓學(xué)生理解和思考軟件開(kāi)發(fā)所面臨的各方面挑戰(zhàn),因此除理論知識(shí)講授外還需通過(guò)課程實(shí)踐項(xiàng)目使學(xué)生切身體驗(yàn)開(kāi)發(fā)過(guò)程中與軟件質(zhì)量、運(yùn)維演化等相關(guān)問(wèn)題的解決方法;其次針對(duì)這些實(shí)際問(wèn)題引導(dǎo)學(xué)生強(qiáng)化具體實(shí)踐能力,從而在實(shí)踐項(xiàng)目中解決各種突發(fā)問(wèn)題;最后通過(guò)實(shí)踐項(xiàng)目中開(kāi)展的測(cè)試、度量等手段評(píng)估學(xué)生理解問(wèn)題和應(yīng)用相關(guān)能力解決問(wèn)題的能力。

        基于以上對(duì)教學(xué)內(nèi)容和體系的規(guī)劃,教學(xué)團(tuán)隊(duì)與華為公司共同編寫了一本新的軟件工程教材——《現(xiàn)代軟件工程基礎(chǔ)》[8]。其在經(jīng)典教學(xué)內(nèi)容的基礎(chǔ)上結(jié)合現(xiàn)代軟件工程廣泛涉及的基于云的軟件開(kāi)發(fā)及運(yùn)維等領(lǐng)域知識(shí),同時(shí)將華為多年來(lái)在信息通信技術(shù)領(lǐng)域積累的軟件開(kāi)發(fā)實(shí)踐與相關(guān)工具使用經(jīng)驗(yàn)合理融入其中。該教材的一大特點(diǎn)是從一個(gè)具備基礎(chǔ)開(kāi)發(fā)技術(shù)的初級(jí)程序員視角出發(fā),按照軟件工程師的學(xué)習(xí)和成長(zhǎng)過(guò)程對(duì)教學(xué)內(nèi)容進(jìn)行了編排,具體如表1 所示?;谠摻滩牡慕虒W(xué)方案優(yōu)先培養(yǎng)學(xué)生的團(tuán)隊(duì)開(kāi)發(fā)意識(shí),使其理解個(gè)人在軟件開(kāi)發(fā)過(guò)程中的角色定位,以及團(tuán)隊(duì)協(xié)作的各個(gè)環(huán)節(jié)、協(xié)作方式與可用工具;隨后著重訓(xùn)練個(gè)人開(kāi)發(fā)技能,強(qiáng)調(diào)從開(kāi)發(fā)小的軟件模塊起步,從而使學(xué)生深刻理解高質(zhì)量軟件編碼應(yīng)達(dá)到的細(xì)節(jié)要求;接著放大視野,使學(xué)生考慮軟件的整體設(shè)計(jì),合理應(yīng)用面向?qū)ο笤O(shè)計(jì)模式,重復(fù)利用開(kāi)發(fā)框架,并持續(xù)考慮軟件重構(gòu);最后培養(yǎng)學(xué)生把握全局需求的能力,培養(yǎng)其需求分析、系統(tǒng)測(cè)試、發(fā)布部署的高層次能力。

        Table 1 Teaching content arrangement表1 教學(xué)內(nèi)容編排

        圍繞以上知識(shí)點(diǎn),相應(yīng)的工程實(shí)踐安排如表2 所示。不同階段的任務(wù)循序漸進(jìn),使學(xué)生從基本的團(tuán)隊(duì)協(xié)作技能出發(fā),逐步掌握前后端分離軟件的開(kāi)發(fā)、測(cè)試、發(fā)布和部署等能力。同時(shí)依托華為云軟件開(kāi)發(fā)生產(chǎn)線CodeArts(原華為軟件開(kāi)發(fā)云DevCloud)構(gòu)建開(kāi)發(fā)流水線,使學(xué)生體驗(yàn)復(fù)雜軟件系統(tǒng)的開(kāi)發(fā)過(guò)程并掌握相關(guān)工具的使用方法。整個(gè)實(shí)踐方案強(qiáng)調(diào)對(duì)學(xué)生高質(zhì)量編碼能力的訓(xùn)練,培養(yǎng)其代碼檢查、缺陷管理、構(gòu)建部署、設(shè)計(jì)重構(gòu)等進(jìn)階能力。最后從需求分析和系統(tǒng)測(cè)試兩方面評(píng)價(jià)學(xué)生對(duì)目標(biāo)軟件需求的理解情況。

        Table 2 Arrangement of engineering practice表2 工程實(shí)踐安排

        2 實(shí)踐化教學(xué)內(nèi)容實(shí)施

        2.1 實(shí)踐內(nèi)容與工具應(yīng)用要求

        以在線Web 購(gòu)物系統(tǒng)的實(shí)踐項(xiàng)目為例,要求學(xué)生設(shè)計(jì)一款簡(jiǎn)易的、采用前后端分離架構(gòu)的購(gòu)物系統(tǒng),涵蓋商戶開(kāi)設(shè)店鋪、設(shè)置店面、商品管理,用戶購(gòu)買商品、資金管理、訂單管理,系統(tǒng)管理員審批開(kāi)店、商品上架請(qǐng)求等學(xué)生較為熟知的系統(tǒng)功能。學(xué)生以4 人為一組自由成團(tuán),在實(shí)現(xiàn)商戶、用戶和系統(tǒng)管理員3 個(gè)角色功能的過(guò)程中,重點(diǎn)強(qiáng)調(diào)編碼能力以及團(tuán)隊(duì)協(xié)作能力的訓(xùn)練。

        表3 列舉了該實(shí)踐項(xiàng)目的分階段任務(wù)及相應(yīng)要求。在團(tuán)隊(duì)開(kāi)發(fā)過(guò)程中,學(xué)生需逐步熟悉并使用代碼托管平臺(tái)完成分支開(kāi)發(fā)與合并,并解決可能出現(xiàn)的合并沖突問(wèn)題;需確保開(kāi)發(fā)代碼的質(zhì)量,包括代碼風(fēng)格、注釋、各類可靠性編程細(xì)節(jié)。此外,團(tuán)隊(duì)同學(xué)間需要進(jìn)行持續(xù)性討論,共同設(shè)計(jì)系統(tǒng)架構(gòu)、后端接口,梳理系統(tǒng)需求,完成核心模塊測(cè)試。教師通過(guò)項(xiàng)目演示以及在CodeArts 等工具中留存的開(kāi)發(fā)過(guò)程記錄對(duì)小組完成情況進(jìn)行評(píng)價(jià),并根據(jù)個(gè)人貢獻(xiàn)程度給出成員的具體實(shí)踐得分。

        Table 3 Project phased tasks and corresponding requirements表3 項(xiàng)目分階段任務(wù)及相應(yīng)要求

        應(yīng)用于項(xiàng)目實(shí)踐的工具主要分為兩個(gè)部分:①開(kāi)發(fā)環(huán)境與相關(guān)技術(shù)棧工具。該部分工具可由學(xué)生自主選擇。通常情況下,學(xué)生會(huì)根據(jù)所使用的編程語(yǔ)言選擇VSCode、IntelliJIDEA 或PyCharm 作為開(kāi)發(fā)環(huán)境,選擇Vue.js 作為前端框架,Spring Boot 或Flask 作為后端框架,并使用MySQL進(jìn)行數(shù)據(jù)存儲(chǔ);②應(yīng)用于團(tuán)隊(duì)協(xié)作、代碼質(zhì)量管理、設(shè)計(jì)、測(cè)試等環(huán)節(jié)的工具。要求學(xué)生依托CodeArts 相關(guān)工具進(jìn)行代碼托管、版本管理、代碼檢查和缺陷管理等;應(yīng)用主流UML 建模工具完成對(duì)設(shè)計(jì)與需求的描述,應(yīng)用單元測(cè)試和接口測(cè)試工具進(jìn)行系統(tǒng)驗(yàn)證。

        2.2 實(shí)踐過(guò)程

        以下通過(guò)案例的形式介紹某小組的軟件開(kāi)發(fā)過(guò)程以及對(duì)相關(guān)工具的使用情況。

        2.2.1 制定開(kāi)發(fā)規(guī)范

        在實(shí)踐項(xiàng)目啟動(dòng)階段,安排助教參與實(shí)踐小組關(guān)于開(kāi)發(fā)規(guī)范的討論,共同制定團(tuán)隊(duì)協(xié)作與編程規(guī)范,具體包括團(tuán)隊(duì)分工與工作流程、分支與合并工作規(guī)范、代碼提交規(guī)范等,其中對(duì)代碼提交信息的規(guī)定能使團(tuán)隊(duì)通過(guò)統(tǒng)一的詞句規(guī)則解釋所提交代碼的意圖[9-10]。圖1 為實(shí)踐小組借鑒其他成熟項(xiàng)目并經(jīng)過(guò)內(nèi)部討論后形成的代碼提交信息格式范例。

        Fig.1 Format specification example of code submission message圖1 代碼提交信息格式范例

        2.2.2 使用CodeArts代碼托管平臺(tái)支持團(tuán)隊(duì)協(xié)作

        CodeArts 的在線代碼托管平臺(tái)能使學(xué)生體驗(yàn)團(tuán)隊(duì)協(xié)作的工作模式。學(xué)生分別在本地進(jìn)行代碼開(kāi)發(fā)并將代碼提交至倉(cāng)庫(kù),從而提高協(xié)同開(kāi)發(fā)效率。實(shí)踐小組則在預(yù)先定義的時(shí)間節(jié)點(diǎn)通過(guò)分支合并對(duì)不同成員編寫的代碼進(jìn)行整合。圖2 展示了CodeArts 代碼托管平臺(tái)中的分支界面 與提交記錄界面。

        Fig.2 Branch and record submitting interface in CodeArts code hosting platform圖2 CodeArts代碼托管平臺(tái)中的分支與提交記錄界面

        2.2.3 高質(zhì)量軟件編碼

        高質(zhì)量軟件編碼是項(xiàng)目實(shí)踐的重點(diǎn)[11-12]。學(xué)生通過(guò)學(xué)習(xí)課堂理論知識(shí)以及代碼案例理解存在問(wèn)題的編碼方式以及保證代碼質(zhì)量的編碼技術(shù)。圖3 為代碼命名與注釋規(guī)范、防御式編程以及異常處理方面的實(shí)踐示例。首先,實(shí)踐小組自定義后端接口開(kāi)發(fā)時(shí)的注釋規(guī)范,例如要求每個(gè)函數(shù)都要在開(kāi)頭使用""" 3 個(gè)引號(hào)的形式注明函數(shù)功能、參數(shù)類型及返回值類型;其次,在編寫具體方法代碼時(shí)需考慮方法的各種可能輸入,并在代碼中進(jìn)行必要的數(shù)據(jù)驗(yàn)證,從而提高方法的可靠性;最后,建立并封裝ServiceException 類來(lái)負(fù)責(zé)集中構(gòu)造具有不同含義的異常,從而提高可擴(kuò)展性。

        Fig.3 Examples of high-quality software coding practice圖3 高質(zhì)量軟件編碼實(shí)踐示例

        2.2.4 使用CodeArts代碼檢查工具支持代碼質(zhì)量控制

        使用CodeArts 的代碼檢查工具能夠發(fā)現(xiàn)代碼中存在的缺陷,并獲得相應(yīng)的質(zhì)量報(bào)告。實(shí)踐小組能根據(jù)缺陷位置及修改建議進(jìn)行修復(fù),從而提高代碼質(zhì)量。圖4 為CodeArts代碼檢查工具的缺陷詳細(xì)信息界面。

        Fig.4 Defect details interface of CodeArts code inspection tool圖4 CodeArts代碼檢查工具的缺陷詳細(xì)信息界面

        2.2.5 使用CodeArts缺陷管理平臺(tái)記錄缺陷處理流程

        CodeArts 的缺陷管理平臺(tái)能夠記錄和跟蹤實(shí)踐小組在開(kāi)發(fā)過(guò)程中發(fā)現(xiàn)的缺陷以及缺陷的后續(xù)處理情況。圖5為CodeArts 缺陷管理平臺(tái)界面。

        2.2.6 軟件設(shè)計(jì)與測(cè)試

        實(shí)踐小組采用面向?qū)ο蟮脑O(shè)計(jì)方法定義購(gòu)物系統(tǒng)的實(shí)現(xiàn)類,規(guī)劃其屬性和操作。基于此,將后端服務(wù)操作封裝為RESTful 接口,以實(shí)現(xiàn)前后端交互。此外,實(shí)踐小組主要采用單元測(cè)試工具(如Junit、PyUnit 等)對(duì)類方法進(jìn)行測(cè)試,使用接口測(cè)試工具(如APIFox、Postman 等)對(duì)RESTful接口進(jìn)行功能性驗(yàn)證。

        2.3 實(shí)踐效果及存在的主要問(wèn)題

        為考察實(shí)踐效果,將以實(shí)踐能力為中心的教學(xué)方式與前期課程采用的圍繞軟件生命周期的教學(xué)方式進(jìn)行比較(布置類似項(xiàng)目目標(biāo)),結(jié)果如表4 所示。在文檔維度,早期圍繞軟件生命周期的教學(xué)與實(shí)踐注重文檔規(guī)模,涵蓋需求分析和系統(tǒng)設(shè)計(jì)兩階段內(nèi)容,學(xué)生撰寫的文檔內(nèi)容細(xì)致、頁(yè)數(shù)較多;而以實(shí)踐能力為中心的項(xiàng)目更強(qiáng)調(diào)文檔的精簡(jiǎn)性,重視系統(tǒng)核心模塊的設(shè)計(jì)與需求建模,以及接口的詳細(xì)定義,平均文檔規(guī)模較小。在代碼維度,早期實(shí)踐方式并不強(qiáng)制要求系統(tǒng)實(shí)現(xiàn),部分小組實(shí)現(xiàn)的代碼規(guī)模較小,且不關(guān)注代碼質(zhì)量;以實(shí)踐能力為中心的項(xiàng)目要求團(tuán)隊(duì)持續(xù)開(kāi)發(fā),完成階段性布置,并需在開(kāi)發(fā)過(guò)程中基于自動(dòng)化工具發(fā)現(xiàn)、記錄并修正代碼bug。在過(guò)程維度,早期實(shí)踐中學(xué)生花費(fèi)較少時(shí)間完成文檔編撰;而以實(shí)踐能力為中心的項(xiàng)目貫穿整個(gè)學(xué)期,學(xué)生充分發(fā)揮代碼提交、合并等協(xié)作能力??傮w而言,以實(shí)踐能力為中心的教學(xué)與實(shí)踐能使學(xué)生體驗(yàn)到較為完整的復(fù)雜軟件系統(tǒng)開(kāi)發(fā)過(guò)程,培養(yǎng)其利用成熟工具輔助開(kāi)發(fā)軟件以及團(tuán)隊(duì)協(xié)作的能力。此外,以實(shí)踐能力為中心的教學(xué)方式將高質(zhì)量軟件編碼貫穿項(xiàng)目各個(gè)環(huán)節(jié),著重鍛煉學(xué)生開(kāi)發(fā)可讀、可靠、可信代碼的能力。

        誠(chéng)然,不同實(shí)踐小組的技術(shù)背景和成員能力各不相同,因此在實(shí)踐過(guò)程中也存在進(jìn)度落后、遇到較大阻力的小組。具體問(wèn)題主要體現(xiàn)在以下兩個(gè)方面:首先,課程主要面向計(jì)算機(jī)專業(yè)具有初級(jí)開(kāi)發(fā)能力的學(xué)生。對(duì)于部分學(xué)生而言,他們第一次接觸前后端分離的Web 應(yīng)用開(kāi)發(fā)項(xiàng)目,第一次嘗試前端代碼開(kāi)發(fā),更是第一次通過(guò)團(tuán)隊(duì)協(xié)同完成項(xiàng)目開(kāi)發(fā)。這些“第一次”使其無(wú)法迅速融入實(shí)踐節(jié)奏,需要教師和助教提供主流開(kāi)發(fā)框架與技術(shù)棧的講解與指導(dǎo),引導(dǎo)學(xué)生以最小代價(jià)快速入門;其次,部分小組在項(xiàng)目初期溝通并不順暢。由于分工原因,實(shí)踐項(xiàng)目起步時(shí)負(fù)責(zé)后端的同學(xué)可能不了解前端同學(xué)的需求,且其對(duì)同一接口功能和命名規(guī)范的理解尚未統(tǒng)一,可能會(huì)造成前后端之間接口頻繁修改等問(wèn)題。因此,在實(shí)踐過(guò)程中教師和助教需及時(shí)了解小組工作進(jìn)度,及時(shí)發(fā)現(xiàn)問(wèn)題,協(xié)助學(xué)生間溝通。

        3 結(jié)語(yǔ)

        本文介紹了以實(shí)踐能力為中心的軟件工程教學(xué)方法,將學(xué)生視為初級(jí)軟件工程師,從成長(zhǎng)路徑的視角教授其從低到高不同層次的軟件工程知識(shí)要點(diǎn),并強(qiáng)化以交付高質(zhì)量軟件代碼為核心的增量、迭代、團(tuán)隊(duì)式實(shí)踐訓(xùn)練,使學(xué)生切身體驗(yàn)團(tuán)隊(duì)軟件開(kāi)發(fā)流程。在未來(lái)的教學(xué)工作中,首先需要跟蹤軟件工程實(shí)踐最新進(jìn)展持續(xù)探索并優(yōu)化教學(xué)設(shè)計(jì),同步調(diào)整教學(xué)內(nèi)容和項(xiàng)目實(shí)踐側(cè)重點(diǎn);其次需要不斷鞏固教師個(gè)人實(shí)踐能力,敦促其掌握主流軟件開(kāi)發(fā)環(huán)境和工具的使用方法,沉淀具有特色的實(shí)踐案例。

        猜你喜歡
        代碼工具軟件
        禪宗軟件
        波比的工具
        波比的工具
        軟件對(duì)對(duì)碰
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        “巧用”工具
        讀者(2017年18期)2017-08-29 21:22:03
        談軟件的破解與保護(hù)
        精品(2015年9期)2015-01-23 01:36:01
        麻豆精品导航| 人妻av一区二区三区高| 最近中文字幕一区二区三区| 国产av一区二区三区在线播放| 久久不见久久见免费影院国语| 精品一区二区三区在线观看| 欧美亚洲国产精品久久久久| 久久精品国产自产对白一区| 乱人伦中文视频在线| 女人夜夜春高潮爽a∨片传媒| 日本中文字幕一区二区高清在线| 在线观看的a站免费完整版| 国产a√无码专区亚洲av| 嫩草影院未满十八岁禁止入内| 日本一区免费喷水| 日本在线一区二区三区视频观看| 国模无码一区二区三区| 可以免费观看的毛片| 久久这里只有精品黄色| 手机在线观看日韩不卡av| 亚洲熟妇无码八av在线播放| 国产精品网站夜色| 极品少妇一区二区三区四区视频| 国产私人尤物无码不卡| 青青青国产精品一区二区| 精品久久久久久国产潘金莲| 日韩一区二区av极品| 一本久久伊人热热精品中文字幕| 亚洲精品第一国产麻豆| 人妖系列在线免费观看| 欧美性高清另类videosex| 国产在线精品一区二区三区不卡 | 午夜福利影院不卡影院| 亚洲成人av大片在线观看| 国产动作大片中文字幕| 麻豆国产成人精品午夜视频| 亚洲午夜精品国产一区二区三区| 免费的日本一区二区三区视频| 九九99久久精品国产| 国产亚洲欧洲三级片A级| 最新中文字幕亚洲一区|