現(xiàn)代軟件工程(在線實(shí)訓(xùn)版)課件匯 0.1 課程概述及學(xué)習(xí)要求-6 分析軟件需求_第1頁(yè)
現(xiàn)代軟件工程(在線實(shí)訓(xùn)版)課件匯 0.1 課程概述及學(xué)習(xí)要求-6 分析軟件需求_第2頁(yè)
現(xiàn)代軟件工程(在線實(shí)訓(xùn)版)課件匯 0.1 課程概述及學(xué)習(xí)要求-6 分析軟件需求_第3頁(yè)
現(xiàn)代軟件工程(在線實(shí)訓(xùn)版)課件匯 0.1 課程概述及學(xué)習(xí)要求-6 分析軟件需求_第4頁(yè)
現(xiàn)代軟件工程(在線實(shí)訓(xùn)版)課件匯 0.1 課程概述及學(xué)習(xí)要求-6 分析軟件需求_第5頁(yè)
已閱讀5頁(yè),還剩830頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

課程概述及學(xué)習(xí)要求內(nèi)容課程的時(shí)代背景軟件定義一切的時(shí)代當(dāng)前軟件系統(tǒng)的特點(diǎn)課程特點(diǎn)和要求課程特點(diǎn)和學(xué)習(xí)要求教學(xué)目標(biāo)和授課內(nèi)容課程的考核方式課程考核要求和方法課程教學(xué)的支撐平臺(tái)1.1軟件不可或缺信息系統(tǒng)組成微電子芯片、計(jì)算機(jī)硬件與體系結(jié)構(gòu)、計(jì)算機(jī)網(wǎng)絡(luò)與通訊計(jì)算(速度)、存儲(chǔ)(容量)、傳輸(帶寬和速率)計(jì)算機(jī)軟件處理數(shù)據(jù)、實(shí)現(xiàn)功能、提供服務(wù)軟件所扮演的角色不可或缺、核心和關(guān)鍵的要素沒(méi)有軟件的手機(jī)和PC會(huì)怎樣?如果你的計(jì)算機(jī)、手機(jī)和Pad上沒(méi)有軟件會(huì)怎樣?軟件的關(guān)鍵性和重要性軟件對(duì)一個(gè)國(guó)家的全球競(jìng)爭(zhēng)力、創(chuàng)新和國(guó)家安全至關(guān)重要世界運(yùn)行在軟件之上,軟件是國(guó)家的關(guān)鍵基礎(chǔ)設(shè)施軟件賦能能力創(chuàng)新軟件是安全攸關(guān)系統(tǒng)的脊梁軟件是生態(tài)系統(tǒng)重要組成部分軟件定義一切時(shí)代的特點(diǎn)地位:無(wú)處不在的軟件形態(tài):人機(jī)物三元融合的軟件復(fù)雜:大規(guī)模、持續(xù)演化的軟件開(kāi)發(fā)數(shù)量越來(lái)越多交付速度越來(lái)越快質(zhì)量要求越來(lái)越高運(yùn)維能力越來(lái)越強(qiáng)滲透到社會(huì)經(jīng)濟(jì)文化生活各行各業(yè),從工業(yè)生產(chǎn)到國(guó)防科技,從衣食住行到娛樂(lè)軟件滲透到了哪些領(lǐng)域?是否有領(lǐng)域沒(méi)有軟件?軟件的持續(xù)創(chuàng)新和積累至今人們已經(jīng)開(kāi)發(fā)出了數(shù)量龐大的軟件系統(tǒng)操作系統(tǒng)Linux、Ubuntu、麒麟、鴻蒙、OpenEuler等數(shù)據(jù)庫(kù)系統(tǒng)MySQL、PostgreSQL、MongoDB、Redis等開(kāi)發(fā)平臺(tái)Eclipse、Junit、SonarQube、Kubernetes等人工智能Tensorflow、Opencv、Caffe、Deeplearning4j等網(wǎng)絡(luò)安全Nmap、curityOnion、Suricata、Bro等開(kāi)源50年積累的代碼總量約100TB,而人類5000年文字藏書(shū)總量約23TB軟件是一種創(chuàng)新形式和賦能工具社會(huì)交流軟件推動(dòng)了各個(gè)行業(yè)的變革和發(fā)展,改變了世界軟件體現(xiàn)了基于數(shù)字化技術(shù)解決問(wèn)題的方式支付方式火車(chē)購(gòu)票軟件帶來(lái)的深刻影響交通出行12306、攜程等代替排隊(duì)等候資料查詢G和B代替調(diào)研在線教育MOOC和騰訊會(huì)議代替課堂教學(xué)網(wǎng)上購(gòu)物淘寶、京東代替逛商場(chǎng)辦公方式Word和PPT代替手寫(xiě)和幻燈片支付手段微信、支付寶代替紙幣和支票軟件給你的學(xué)習(xí)、生活和娛樂(lè)等帶來(lái)什么樣的影響?沒(méi)有軟件你會(huì)怎樣?軟件是軍事裝備和信息系統(tǒng)的核心信息化武器裝備中的嵌入式軟件業(yè)務(wù)信息支援系統(tǒng)中的軟件各類參戰(zhàn)人員作戰(zhàn)部隊(duì)指揮控制系統(tǒng)中的軟件大型復(fù)雜軟件系統(tǒng)部署在各類平臺(tái)和終端提供多樣化功能和服務(wù)連接裝備和人員形成體系和能力成為關(guān)鍵基礎(chǔ)設(shè)施越來(lái)越多的軟件表現(xiàn)為人-機(jī)-物共生的一類復(fù)雜系統(tǒng)示例:機(jī)器人是一類由軟件驅(qū)動(dòng)的物理系統(tǒng)機(jī)器人是由軟件驅(qū)動(dòng)、由軟件來(lái)定義的軟件密集型信息物理系統(tǒng)負(fù)責(zé)底層管理和控制、高層規(guī)劃和決策、全局適應(yīng)和優(yōu)化等軟件是整個(gè)系統(tǒng)的核心和關(guān)鍵高層任務(wù)軟件系統(tǒng)物理和社會(huì)環(huán)境決策產(chǎn)生決策產(chǎn)生規(guī)劃和行為作用與影響感知與反饋閉環(huán)自主機(jī)器人系統(tǒng)控制運(yùn)行物理設(shè)備示例:軟件在武器裝備中的地位和作用80%的裝備功能由軟件來(lái)實(shí)現(xiàn)軟件密集型系統(tǒng)的數(shù)量不斷增長(zhǎng)計(jì)算機(jī)軟件在美軍裝備中的比例以及軍用軟件的規(guī)模DavidF.Rico,PMP,ACP,CSM,Lean&AgileSoftwareMethods,2012.由軟件實(shí)現(xiàn)的裝備功能軟件的規(guī)模(百萬(wàn)代碼行)思考和討論個(gè)人計(jì)算機(jī)你的設(shè)備安裝了哪些軟件?它們提供哪些功能和服務(wù)?手機(jī)iPad哪些行業(yè)和領(lǐng)域需要軟件?它們提供哪些功能和服務(wù)?1.2軟件形態(tài)變化不是單一孤立的系統(tǒng),而是系統(tǒng)之系統(tǒng)諸多系統(tǒng)聯(lián)盟和組合而成不是純粹技術(shù)系統(tǒng),而是社會(huì)技術(shù)系統(tǒng)社會(huì)、信息、物理等要素共存不是同構(gòu)系統(tǒng),而是異構(gòu)多樣系統(tǒng)聯(lián)盟要素異構(gòu),客觀存在,也是必然不是封閉系統(tǒng),而是動(dòng)態(tài)適應(yīng)和持續(xù)演化系統(tǒng)要素、關(guān)系、聯(lián)盟等持續(xù)變化,邊界不明確IanSommerville,etc.,Large-ScaleComplexITSystem,CommunicationofACM,2012.1.3軟件的規(guī)模和復(fù)雜性日趨增長(zhǎng)社會(huì)保障信息系統(tǒng)金融系統(tǒng)智能交通控制指揮控制系統(tǒng)智能電力系統(tǒng)大規(guī)模協(xié)作系統(tǒng)功能數(shù)據(jù)實(shí)體代碼量接入人員連接設(shè)備運(yùn)行進(jìn)程……示例:軟件規(guī)模的快速增長(zhǎng)1960sF-117飛機(jī)程序10萬(wàn)行1970sP-3C飛機(jī)程序50萬(wàn)行1980sB-1B飛機(jī)程序100萬(wàn)行E-3A飛機(jī)程序100萬(wàn)行空間站發(fā)射程序約8000萬(wàn)行現(xiàn)代化作戰(zhàn)飛機(jī)約2500萬(wàn)行宙斯盾驅(qū)逐艦約需5000萬(wàn)行現(xiàn)代汽車(chē)中有數(shù)億行的軟件越來(lái)越多的設(shè)備由軟件加以定義,如軟件定義的汽車(chē)軟件變得越來(lái)越復(fù)雜軟件環(huán)境的復(fù)雜性軟件表現(xiàn)為人機(jī)物三元融合復(fù)雜系統(tǒng)軟件需要與物理環(huán)境、社會(huì)環(huán)境等進(jìn)行持續(xù)交互軟件所在的環(huán)境開(kāi)放、動(dòng)態(tài)、不確定和不可預(yù)測(cè)軟件規(guī)模帶來(lái)的復(fù)雜性大量的軟件實(shí)體、數(shù)據(jù)、交互、進(jìn)程等帶來(lái)的復(fù)雜性軟件需求的復(fù)雜性軟件需求不可知、不確定和動(dòng)態(tài)變化軟件運(yùn)維的復(fù)雜性軟件需要在使用的同時(shí)持續(xù)演化12306軟件、智能交通控制軟件等就是一類復(fù)雜軟件系統(tǒng),具有上述復(fù)雜性特征大規(guī)模和復(fù)雜軟件帶來(lái)的挑戰(zhàn)?用戶方、學(xué)術(shù)界、產(chǎn)業(yè)界共同面臨的問(wèn)題和挑戰(zhàn)!軟件復(fù)雜性表現(xiàn)在哪些方面?如何來(lái)開(kāi)發(fā)復(fù)雜的軟件系統(tǒng)?需要哪些方面的知識(shí)和技能?1.4美國(guó)對(duì)軟件及軟件工程的認(rèn)識(shí)從軟件到軟件工程超大規(guī)模軟件未來(lái)軟件挑戰(zhàn),CMU,2006軟件定義戰(zhàn)爭(zhēng),CSIS,

2022構(gòu)筑未來(lái)軟件工程CMU,2021軟件現(xiàn)代化戰(zhàn)略DoD,2022認(rèn)識(shí)到軟件變得越來(lái)越重要、越來(lái)越復(fù)雜和難控,需要尋求有效的軟件工程美國(guó)政府對(duì)軟件的認(rèn)識(shí)美國(guó)總統(tǒng)信息技術(shù)顧問(wèn)委員會(huì)軟件是最迫切的需求,因?yàn)椋簩?duì)軟件的需求:超出了我們現(xiàn)有的開(kāi)發(fā)能力;現(xiàn)有軟件是脆弱、不可靠,且很難進(jìn)行設(shè)計(jì)、測(cè)試、維護(hù)和升級(jí)所以:軟件是當(dāng)前社會(huì)核心產(chǎn)品與核心問(wèn)題應(yīng)絕對(duì)優(yōu)先發(fā)展超大規(guī)模軟件未來(lái)軟件挑戰(zhàn),CMU,2006美國(guó)軍方對(duì)軟件的認(rèn)識(shí)美國(guó)軍方向軟件工程學(xué)術(shù)和產(chǎn)業(yè)界提出的問(wèn)題我們的士兵依賴軟件并且將越來(lái)越多的依賴軟件軍隊(duì)的成功依賴于軟件以及軟件企業(yè)我們需要更好的工具來(lái)滿足未來(lái)的挑戰(zhàn),我們的政府和企業(yè)并沒(méi)有致力于如何讓事情做的快速和廉價(jià)如果我們不能解決今天的問(wèn)題,我們?nèi)绾文芸煽康貥?gòu)建未來(lái)可能具有十億行代碼的系統(tǒng)面臨具有十億行代碼規(guī)模的軟件,這樣的系統(tǒng)今天的技術(shù)力所不能及超大規(guī)模軟件未來(lái)軟件挑戰(zhàn),CMU,2006國(guó)際上軟件工程研究重要機(jī)構(gòu)-CMUSEI軟件工程領(lǐng)域的著名研究機(jī)構(gòu)軟件生產(chǎn)線、體系結(jié)構(gòu)、管理等美軍軟件工程方面的智囊軍方資助,解決美軍提出的問(wèn)題為軍方提供戰(zhàn)略性和前瞻性的解決方案許多著名的研究成果E.g.,軟件生產(chǎn)線E.g.,能力成熟度模型CMM應(yīng)該引起我們的高度關(guān)注已有成果、關(guān)注問(wèn)題、前瞻研究URL:CMUSEI開(kāi)展的工作關(guān)注CMU的研究與實(shí)踐學(xué)術(shù)界對(duì)計(jì)算機(jī)軟件的認(rèn)識(shí)計(jì)算機(jī)軟件是一種邏輯產(chǎn)品,有其特殊性不同于硬件,非常復(fù)雜、成本高、風(fēng)險(xiǎn)大、維護(hù)困難與很多的內(nèi)在規(guī)律和邏輯尚不清楚缺乏相關(guān)的理論,基于統(tǒng)計(jì)分析的結(jié)果軟件開(kāi)發(fā)是一項(xiàng)由多人參與、基于智力的協(xié)同活動(dòng)多人、智力、協(xié)同采用工程化的方法和途徑似乎是有效的不能采用硬件開(kāi)發(fā)的方法不能采用手工、作坊式的方法過(guò)程和步驟、工具、產(chǎn)品、評(píng)審和檢查、質(zhì)量、進(jìn)度…工業(yè)界對(duì)計(jì)算機(jī)軟件的認(rèn)識(shí)計(jì)算機(jī)軟件的開(kāi)發(fā)效率、速度、質(zhì)量遠(yuǎn)遠(yuǎn)無(wú)法滿足用戶日益增長(zhǎng)的需求需求多變性、易變性、不明確性成本難以估算、質(zhì)量達(dá)不到要求、進(jìn)度無(wú)法按期推進(jìn)也稱“軟件危機(jī)”在不斷摸索中進(jìn)行總結(jié)、在持續(xù)實(shí)踐中發(fā)現(xiàn)規(guī)律實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)實(shí)踐先于理論,尋求最佳實(shí)踐不同的企業(yè)有不同的手段和實(shí)踐1.4成功的軟件項(xiàng)目和產(chǎn)品比爾蓋茨的Microsoft系列產(chǎn)品

從Windows到Office系列,從VisualStudio到CopilotXInstagram(abbr.Instanttelegram)軟件:基于移動(dòng)設(shè)備的照片和視頻共享、在線服務(wù)軟件成立于2010年10月,2012年被Facebook以10億美元收購(gòu)社交軟件微信、TikTok、QQ、Facebook、Twitter等失敗的軟件項(xiàng)目失敗軟件項(xiàng)目的特點(diǎn)沒(méi)能按時(shí)交付成本超出預(yù)算軟件缺陷太多,無(wú)法按照當(dāng)初的設(shè)計(jì)正常運(yùn)行產(chǎn)品沒(méi)有得到市場(chǎng)認(rèn)可,沒(méi)有人使用失敗軟件項(xiàng)目的案例美國(guó)銀行規(guī)劃研發(fā)信托軟件系統(tǒng),項(xiàng)目預(yù)算2千萬(wàn)美元,開(kāi)發(fā)時(shí)長(zhǎng)9個(gè)月;進(jìn)度超出2年,投入6千萬(wàn)美元,仍然未能投入使用英國(guó)銀行軟件系統(tǒng)的建設(shè),投入大量的經(jīng)費(fèi),最終軟件項(xiàng)目失敗,導(dǎo)致整個(gè)銀行倒閉,成為軟件開(kāi)發(fā)的“爛尾樓”思考和討論現(xiàn)代軟件有何復(fù)雜性和形態(tài)特點(diǎn)?如何理解人機(jī)物三元融合系統(tǒng)?如何來(lái)開(kāi)發(fā)軟件系統(tǒng)?軟件開(kāi)發(fā)難在哪里?軟件工程課程就是要回答這些問(wèn)題!內(nèi)容課程的時(shí)代背景軟件滲透性和復(fù)雜性當(dāng)前軟件系統(tǒng)的特點(diǎn)課程學(xué)習(xí)要求課程特點(diǎn)和學(xué)習(xí)要求教學(xué)目標(biāo)和授課內(nèi)容課程考核要求課程考核要求和方法課程教學(xué)的支撐平臺(tái)*2.1軟件工程是一門(mén)特殊課程一門(mén)課程一個(gè)專業(yè)一個(gè)學(xué)科“軟件工程”這門(mén)課程有其特殊性!(1970s)(1980s)(2011)軟件工程既是一門(mén)課程,也是一項(xiàng)專業(yè),還是一個(gè)學(xué)科被賦予更多內(nèi)涵和知識(shí)的課程具有“工程”性質(zhì)和要求課程“實(shí)踐性要求”非常高的課程面向“復(fù)雜問(wèn)題求解”的課程適合多種能力和素質(zhì)培養(yǎng)課程不同于“離散數(shù)學(xué)”、“編譯原理”、“操作系統(tǒng)”等課程軟件工程課程的特點(diǎn)內(nèi)容“虛”和“廣”思想性和抽象教學(xué)內(nèi)容廣域和交叉的課程知識(shí)發(fā)展“快”和“新”產(chǎn)業(yè)界開(kāi)發(fā)實(shí)踐進(jìn)步快多維度、全方位的發(fā)展要求“實(shí)”和“高”能用工程方法開(kāi)發(fā)軟件解決工程開(kāi)發(fā)復(fù)雜問(wèn)題計(jì)算機(jī)科學(xué)、管理學(xué)、數(shù)學(xué)等多學(xué)科知識(shí)實(shí)踐經(jīng)驗(yàn)的總結(jié)軟件開(kāi)發(fā)的實(shí)踐教學(xué)是課程教學(xué)的關(guān)鍵實(shí)踐要體現(xiàn)工程化的要求和水平各種新技術(shù)、新方法、新工具不斷出現(xiàn)如DevOps、智能化開(kāi)發(fā)、Copilot等軟件工程課程教學(xué)的難點(diǎn)難講透(教)知識(shí)點(diǎn)內(nèi)容抽象難以講清和講明教學(xué)成效難保證,課程教學(xué)需要適應(yīng)課程特點(diǎn),解決教學(xué)難點(diǎn)難學(xué)好(學(xué))理解知識(shí)點(diǎn)不易知其所以然困難做更難(做)開(kāi)展軟件開(kāi)發(fā)難達(dá)成工程要求難不僅要知其然,更要知其所以然不僅要講授是什么(What),更要詮釋為什么(Why),如何做(How)不僅要做的出,更要做的好(質(zhì)量)軟件工程課程學(xué)習(xí)的重點(diǎn)“工程”意味著要開(kāi)展實(shí)踐,并且要采用”工程化”方法系統(tǒng)化、規(guī)范化和可量化“工程”意味著要實(shí)踐對(duì)象要有規(guī)模,要關(guān)注質(zhì)量等因素上規(guī)模、一定復(fù)雜度、高質(zhì)量“實(shí)踐教學(xué)”是課程教學(xué)的重點(diǎn),也是上好這門(mén)課的關(guān)鍵教學(xué)不能停留于知識(shí)講授,不能紙上談兵學(xué)好課程的關(guān)鍵在于做好課程實(shí)踐2.2軟件工程課程教學(xué)的目標(biāo)和定位理解軟件開(kāi)發(fā)問(wèn)題,軟件工程思想、原則和方法運(yùn)用運(yùn)用軟件工程過(guò)程、方法和工具來(lái)開(kāi)發(fā)分析分解、組合、建模、設(shè)計(jì)和驗(yàn)證軟件評(píng)價(jià)評(píng)估評(píng)價(jià)軟件質(zhì)量、評(píng)估方法等創(chuàng)新運(yùn)用軟件工具來(lái)解決實(shí)際問(wèn)題BLOOM模型培養(yǎng)學(xué)生多方面的能力和素質(zhì)達(dá)成高階的教學(xué)目標(biāo)如何學(xué)好這門(mén)課:課堂要認(rèn)真聽(tīng)講交流與討論內(nèi)容基于教材但不局限于教材內(nèi)容組織不完全對(duì)應(yīng)于教材認(rèn)真聽(tīng)講勤于思考參與討論經(jīng)常提問(wèn)如何學(xué)好這門(mén)課:做好課程實(shí)踐是關(guān)鍵講授分析實(shí)踐講評(píng)講授分析實(shí)踐講評(píng)講授分析實(shí)踐講評(píng)講授分析實(shí)踐講評(píng)講授-老師實(shí)踐-學(xué)生實(shí)踐、實(shí)踐、再實(shí)踐!課程實(shí)踐將貫穿于課程學(xué)習(xí)的全過(guò)程如何學(xué)好這門(mén)課:持續(xù)投入、獨(dú)立解決和不斷總結(jié)利用課內(nèi)和課后時(shí)間,持續(xù)實(shí)踐投入開(kāi)發(fā)、討論、演示、總結(jié)、匯報(bào)、撰寫(xiě)參加和貢獻(xiàn)務(wù)必自己動(dòng)手去做務(wù)必獨(dú)立解決問(wèn)題務(wù)必開(kāi)展交流合作務(wù)必做到精益求精務(wù)必要不斷的總結(jié)要收獲必須要投入如何學(xué)好這門(mén)課:追求卓越持續(xù)改進(jìn)講評(píng)考評(píng)持續(xù)改進(jìn)、提升質(zhì)量精益求精、追求卓越匯報(bào)和講評(píng)根據(jù)老師的講評(píng)不斷改進(jìn)你的實(shí)踐成果,提升實(shí)踐的質(zhì)量如何學(xué)好這門(mén)課:不斷進(jìn)行總結(jié)、交流和討論在知士薈上進(jìn)行提問(wèn)、回答、評(píng)論、分享和總結(jié)/#/spaces/146要求每周1篇技術(shù)博客,要在學(xué)習(xí)社區(qū)進(jìn)行交流和分享看看往屆學(xué)生的學(xué)習(xí)心得、體會(huì)、感受和成果2.3對(duì)學(xué)生提出的基本要求課上要聽(tīng)懂知其然且知其所以然下課做的了運(yùn)用所學(xué)知識(shí)來(lái)開(kāi)展軟件開(kāi)發(fā)實(shí)踐課后有交流問(wèn)題、回答、評(píng)論、經(jīng)驗(yàn)投入有保障投入足夠的時(shí)間,迎難而上,勇氣和信心目標(biāo)要遠(yuǎn)大工程能力:規(guī)范、文檔、設(shè)計(jì)、質(zhì)量、……職業(yè)素養(yǎng):嚴(yán)謹(jǐn)、專業(yè)、交流、討論、……2.4本課程將讓你學(xué)到…認(rèn)識(shí)軟件系統(tǒng)及復(fù)雜性特點(diǎn)理解軟件系統(tǒng)開(kāi)發(fā)面臨挑戰(zhàn)領(lǐng)會(huì)軟件工程的思想和方法掌握軟件開(kāi)發(fā)的技術(shù)和工具基于團(tuán)隊(duì)來(lái)組織和開(kāi)發(fā)軟件獨(dú)立解決軟件開(kāi)發(fā)中的問(wèn)題獲得和積累軟件開(kāi)發(fā)的經(jīng)驗(yàn)……2.5課程教學(xué)目標(biāo)深入理解和認(rèn)識(shí)“軟件”概念及其特點(diǎn)系統(tǒng)掌握軟件工程的原則、方法和思想熟練運(yùn)用各種技術(shù)、工具以及管理手段持續(xù)開(kāi)展軟件開(kāi)發(fā)實(shí)踐以積累相關(guān)經(jīng)驗(yàn)深刻認(rèn)識(shí)軟件工程方法及開(kāi)發(fā)存在問(wèn)題不斷培養(yǎng)多方面的能力和軟件工程素養(yǎng)2.6課程教學(xué)組織與實(shí)踐安排軟件工程(48學(xué)時(shí))軟件體系結(jié)構(gòu)與設(shè)計(jì)(48學(xué)時(shí))春季學(xué)期秋季學(xué)期貫穿二個(gè)學(xué)期和二門(mén)課程的綜合實(shí)踐課程教學(xué)內(nèi)容程序及質(zhì)量保證方法軟件及其特點(diǎn)軟件工程概述軟件過(guò)程模型敏捷軟件開(kāi)發(fā)方法群體化軟件開(kāi)發(fā)方法需求分析基礎(chǔ)獲取軟件需求面向?qū)ο筌浖枨蠓治鲕浖O(shè)計(jì)基礎(chǔ)軟件體系結(jié)構(gòu)設(shè)計(jì)用戶界面設(shè)計(jì)軟件詳細(xì)設(shè)計(jì)編寫(xiě)程序代碼軟件測(cè)試軟件部署軟件維護(hù)與演化軟件項(xiàng)目管理完成二項(xiàng)課程綜合實(shí)踐閱讀、分析和維護(hù)開(kāi)源軟件(10000行代碼)2人組成一個(gè)實(shí)踐團(tuán)隊(duì)秋季學(xué)期《軟件工程》課程開(kāi)發(fā)上規(guī)模、有創(chuàng)意和高質(zhì)量的軟件(10000行代碼)4人組成一個(gè)實(shí)踐團(tuán)隊(duì)春季學(xué)期《軟件體系結(jié)構(gòu)與設(shè)計(jì)》課程課程綜合實(shí)踐1:閱讀、分析和維護(hù)開(kāi)源軟件學(xué)習(xí)對(duì)象:高質(zhì)量開(kāi)源軟件學(xué)習(xí)內(nèi)容:高質(zhì)量代碼,高水平設(shè)計(jì)、開(kāi)發(fā)技能和經(jīng)驗(yàn)學(xué)習(xí)方式:閱讀、標(biāo)注、分析、模仿和應(yīng)用以維護(hù)軟件學(xué)習(xí)開(kāi)源代碼,要求學(xué)以致用!閱讀標(biāo)注分析維護(hù)設(shè)計(jì)模型代碼標(biāo)注質(zhì)量報(bào)告高質(zhì)量代碼高質(zhì)量開(kāi)源代碼往屆學(xué)生的實(shí)踐情況

每個(gè)結(jié)對(duì)平均最多最少每周課外投入(小時(shí)/周)10204編寫(xiě)代碼量(行)5001000200復(fù)用開(kāi)源代碼(行)120020000添加注釋量(行)8002000200Git提交次數(shù)(次)142153131小米便簽開(kāi)源代碼代碼總量:8887LOC;文件數(shù):39注釋總數(shù):5627LOC;

注釋行數(shù):

2706;

注釋率:30.4%問(wèn)題數(shù)量:

1654LOC涵蓋從需求分析、軟件設(shè)計(jì)、編碼實(shí)現(xiàn)、軟件測(cè)試等方面的實(shí)踐內(nèi)容及要求課程綜合實(shí)踐2:軟件開(kāi)發(fā)實(shí)踐任務(wù)開(kāi)發(fā)有創(chuàng)意、上規(guī)模和高質(zhì)量軟件要求創(chuàng)意、規(guī)模、質(zhì)量、綜合、系統(tǒng)結(jié)果模型文檔代碼演示等創(chuàng)意性問(wèn)題、需求、解決方法系統(tǒng)性集成物理系統(tǒng)、遺留系統(tǒng)、開(kāi)源軟件規(guī)模性>15000行程序代碼綜合性運(yùn)用多種技術(shù)、語(yǔ)言、工具和平臺(tái)高質(zhì)量模型、文檔和代碼等實(shí)踐成果質(zhì)量高實(shí)踐教學(xué)是關(guān)鍵,要為“軟件工程”這把牛刀準(zhǔn)備相適應(yīng)的“實(shí)踐內(nèi)容”往屆學(xué)生的實(shí)踐示例(1/3)創(chuàng)意性:?jiǎn)栴}及基于機(jī)器人的解決方法集成性:機(jī)器人、APP及4個(gè)開(kāi)源軟件系統(tǒng)綜合性:3種語(yǔ)言及多種技術(shù)與平臺(tái)規(guī)模性:66000(開(kāi)源50000+)LOC分布性:部署在手機(jī)、機(jī)器人、服務(wù)器等高質(zhì)量:模型、代碼和文檔質(zhì)量?jī)?yōu)SE+PL+Robotics+網(wǎng)絡(luò)傳輸+模式識(shí)別等

往屆學(xué)生的實(shí)踐示例(2/3)開(kāi)發(fā)技術(shù)機(jī)器人操作系統(tǒng)ROS、AndroidAPP開(kāi)發(fā)、網(wǎng)絡(luò)編程程序語(yǔ)言Java、Python、C開(kāi)發(fā)工具AndroidStudio、SonarQube、Junit開(kāi)源社區(qū)CSDN、GitHub、StackOverflow、OSChina開(kāi)源軟件Roconremocon科大訊飛智能語(yǔ)音包OpenNILinphone軟件文檔UML模型程序代碼宣傳彩頁(yè)演示視頻總結(jié)PPT技術(shù)博客創(chuàng)意構(gòu)思+知識(shí)學(xué)習(xí)+開(kāi)發(fā)實(shí)踐+解決問(wèn)題+成果展示+語(yǔ)言/文字表達(dá)

iCAN國(guó)際創(chuàng)新創(chuàng)業(yè)大賽總決賽一等獎(jiǎng)中國(guó)高校計(jì)算機(jī)大賽全國(guó)總決賽一等獎(jiǎng)泛珠三角計(jì)算機(jī)作品賽總決賽金銀獎(jiǎng)網(wǎng)絡(luò)技術(shù)挑戰(zhàn)總決賽一等二等獎(jiǎng)珠三角計(jì)算機(jī)作品賽總決賽最佳實(shí)用獎(jiǎng)計(jì)算機(jī)作品賽湖南省賽區(qū)特等和一等獎(jiǎng)長(zhǎng)沙市創(chuàng)新創(chuàng)業(yè)比賽二等獎(jiǎng)……開(kāi)發(fā)許多有創(chuàng)意的課程實(shí)踐作品,近5年獲30項(xiàng)競(jìng)賽獎(jiǎng)項(xiàng)往屆學(xué)生的實(shí)踐示例(3/3)內(nèi)容課程時(shí)代背景軟件滲透性和復(fù)雜性當(dāng)前軟件系統(tǒng)的特點(diǎn)課程學(xué)習(xí)要求課程特點(diǎn)和學(xué)習(xí)要求教學(xué)目標(biāo)和授課內(nèi)容課程考核要求課程考核要求和方法課程教學(xué)的支撐平臺(tái)*3.1課程考核形式考核組成成績(jī)比例考核方式課程考試50%開(kāi)卷考試,個(gè)人綜合實(shí)踐40%團(tuán)隊(duì)+個(gè)人技術(shù)博客5%個(gè)人交流討論5%個(gè)人課程試卷開(kāi)題設(shè)計(jì)原則不考“死記硬背”的內(nèi)容(what)概念是什么,方法是什么如軟件有何特點(diǎn)要考對(duì)知識(shí)點(diǎn)的理解、認(rèn)識(shí)和運(yùn)用為什么(Why)、如何(How)需要建立在課程實(shí)踐的基礎(chǔ)之上課程實(shí)踐考評(píng)原則課程實(shí)踐的質(zhì)量(文檔、模型和代碼)課程實(shí)踐的規(guī)模(如功能點(diǎn)、代碼量)課程實(shí)踐的創(chuàng)意(如新增功能的創(chuàng)意)泛讀代碼代碼標(biāo)注質(zhì)量代碼開(kāi)源維護(hù)10%20%30%40%平時(shí)成績(jī)考評(píng)原則每周提交技術(shù)博客的質(zhì)量(5%)在知士薈平臺(tái)上參與交流和討論情況(5%)3.2課后實(shí)踐要求知士薈平臺(tái):交流和討論/#/spaces/146,交流、討論、分享等每周一篇技術(shù)博客,加入到本班級(jí)的學(xué)習(xí)群組EduCoder平臺(tái):實(shí)訓(xùn)和實(shí)踐/paths/1944,線上實(shí)訓(xùn),相關(guān)內(nèi)容講完后頭歌上實(shí)踐課堂及作業(yè),創(chuàng)建和關(guān)聯(lián)項(xiàng)目、協(xié)同開(kāi)發(fā)、提交作業(yè)課程學(xué)習(xí)的教學(xué)資源

課件、視頻、試卷、案例等內(nèi)容往屆學(xué)生對(duì)課程的評(píng)價(jià)學(xué)習(xí)過(guò)程很艱難,學(xué)完之后成果超預(yù)期,學(xué)到了許多超出書(shū)本、真正有用的東西,受益匪淺、收獲很大,有成就感大學(xué)學(xué)習(xí)期間收獲最大的一門(mén)課程,我們本科階段最有挑戰(zhàn)性最有收獲的課程軟工這門(mén)課真正意義上激發(fā)了我作為一個(gè)計(jì)算機(jī)專業(yè)學(xué)生的專業(yè)思維。這門(mén)課對(duì)我來(lái)說(shuō)意義匪淺,不僅讓我自己有機(jī)會(huì)證明自己的能力,同時(shí)開(kāi)拓了我的視野,拓展了我的知識(shí)域,讓我更加有一名計(jì)算機(jī)專業(yè)學(xué)生的樣子了。這門(mén)課程是切實(shí)值得認(rèn)真學(xué)習(xí)的一門(mén)課程,絕不是簡(jiǎn)單的代碼編寫(xiě),更多的是提供了一種工程化的思維,我認(rèn)為這種思維對(duì)于指導(dǎo)實(shí)踐是非常有價(jià)值的。這門(mén)課程我收獲很大,提高了實(shí)踐能力,鍛煉了敢于解決困難的精神。這一年地軟件工程課程學(xué)習(xí)收獲還是很大吧,可以說(shuō)是最精彩的一門(mén)課。訪問(wèn)/#/spaces/146/resources,了解往屆學(xué)生學(xué)習(xí)心得和收獲學(xué)生的認(rèn)識(shí)(1/3)軟件工程重在“工程”而非“軟件”,這就決定了它的本質(zhì)要求是實(shí)踐。只有動(dòng)手實(shí)踐,即自己寫(xiě)代碼、寫(xiě)博客、查資料、讀源碼,才能把別人的東西轉(zhuǎn)化為自己的理解與經(jīng)驗(yàn),真正學(xué)進(jìn)去并為自己所用不能過(guò)于害怕實(shí)踐,一定要放心大膽地去做這一年的磨練全方面、大幅度提高個(gè)人的能力水平,這是讓一門(mén)真正體會(huì)到“大學(xué)”二字的課程團(tuán)隊(duì)協(xié)作與按時(shí)完成非常重要學(xué)生的認(rèn)識(shí)(2/3)學(xué)習(xí)了這門(mén)課我漸漸的改變了自己的編程習(xí)慣,按照編程規(guī)范寫(xiě)代碼,寫(xiě)注釋,檢測(cè)代碼質(zhì)量,我認(rèn)為這是我從了解編程轉(zhuǎn)變?yōu)殚_(kāi)始懂編程這門(mén)課教會(huì)了很多東西,不管是技術(shù)上,管理上,還是精神上,我相信在這門(mén)課中的學(xué)習(xí)實(shí)踐會(huì)影響我之后的學(xué)習(xí)在上課之前就有學(xué)長(zhǎng)跟我說(shuō),在科大學(xué)的最有用的一門(mén)課就是毛新軍教員的軟件工程,現(xiàn)在想想確實(shí)如此不論遇到多大的困難,都要盡自己最大的努力去克服,只有堅(jiān)持不懈的努力才能戰(zhàn)勝苦難,成就最好的自己學(xué)生的認(rèn)識(shí)(3/3)這一年的學(xué)習(xí)真的是受益匪淺,雖然飽受痛苦,但也在不斷地學(xué)習(xí)中戰(zhàn)勝困難,不斷成長(zhǎng)

一年前,從17級(jí)學(xué)長(zhǎng)那里傳出一句話:大三有一門(mén)課叫軟件工程,一門(mén)頂三門(mén)經(jīng)過(guò)課程實(shí)踐一以后,自己對(duì)課程的知識(shí)才有了一點(diǎn)朦朧的感覺(jué)在這一學(xué)年的學(xué)習(xí)中,實(shí)踐一直是重中之重,也只有通過(guò)實(shí)踐,我們才能深入地把知識(shí)吃透。在整個(gè)實(shí)踐過(guò)程中,遇到了數(shù)不清的困難,每一步都走得很艱難軟件工程課程教材毛新軍等,軟件工程:理論與實(shí)踐,高等教育出版社,2024年1月,ISBN:978-7-04-061010-9.

101計(jì)劃核心教材毛新軍等,軟件工程實(shí)踐教程:基于開(kāi)源和群智的方法(第二版),高等教育出版社,ISBN978-7-04-052423-9.2024年10月,101計(jì)劃核心實(shí)踐教材主教材實(shí)踐教材軟件工程主教材軟件工程:理論與實(shí)踐,高等教育出版社,ISBN:978-7-04-061010-9,2024年1月.教育部101計(jì)劃核心教材.內(nèi)容先進(jìn)引入新技術(shù)新方法新實(shí)踐連接專業(yè)教育與產(chǎn)業(yè)實(shí)踐融合工程范式與群智范式組織科學(xué)從程序及其質(zhì)量保證入手重新組織知識(shí)章節(jié)和內(nèi)容由易到難、由具體到抽象詮釋深入利用身邊軟件和思政案例完整深入人機(jī)物融合案例模板、模型、文檔、代碼強(qiáng)化實(shí)踐設(shè)計(jì)二類綜合性課程實(shí)踐明確綜合實(shí)踐任務(wù)和要求綜合性實(shí)踐具有可操作性軟件工程實(shí)踐教材軟件工程實(shí)踐教程:基于開(kāi)源和群智的方法,高等教育出版社,2019.8,ISBN978-7-04-052423-9.明確實(shí)踐要求規(guī)模性、系統(tǒng)性、綜合性、創(chuàng)意性、高質(zhì)量二類實(shí)踐任務(wù)閱讀、分析和維護(hù)開(kāi)源軟件開(kāi)發(fā)有創(chuàng)意、上規(guī)模和高質(zhì)量軟件系統(tǒng)完整實(shí)踐案例小米便簽開(kāi)源軟件空巢老人看護(hù)軟件新穎實(shí)踐方法學(xué)開(kāi)源、用開(kāi)源、利用群智有效考評(píng)方法考為輔、評(píng)為主、以評(píng)促改、持續(xù)改進(jìn)3.4往屆課程學(xué)生實(shí)踐作品的視頻演示無(wú)人值守圖書(shū)館空巢老人看護(hù)系統(tǒng)多無(wú)人機(jī)聯(lián)合搜救系統(tǒng)基于增強(qiáng)現(xiàn)實(shí)的導(dǎo)航軟件Arnavigator基于語(yǔ)音交互的老人看護(hù)機(jī)器人系統(tǒng)DrivingAssitant……問(wèn)題和討論Git使用介紹內(nèi)容分布式版本管理概述分布式版本控制的基本思想何為Git?Git的基本理念、功能和服務(wù)Git使用Git的操作問(wèn)題提出如何將多人開(kāi)發(fā)的不同代碼管理起來(lái)程序代碼存儲(chǔ)代碼沖突處理代碼版本變更程序代碼追蹤工作量的統(tǒng)計(jì)……需要對(duì)代碼進(jìn)行版本控制(RevisionControl)張三李四王五版本控制的重要性版本控制是有效管理程序文檔、提高協(xié)作效率的重要手段多人協(xié)作(橫向視角)版本迭代(縱向視角)開(kāi)發(fā)者1開(kāi)發(fā)者2開(kāi)發(fā)者3開(kāi)發(fā)者4項(xiàng)目管理者v1v2v3v4版本控制概念版本控制是對(duì)軟件制品(程序、文檔、數(shù)據(jù)等)的更改和管理,它是軟件配置管理的重要組成部分組織和保護(hù)軟件制品:源代碼和文檔實(shí)現(xiàn)跨區(qū)域、多人的協(xié)同開(kāi)發(fā)

記載和追蹤一個(gè)或者多個(gè)文件的歷史記錄跟蹤記錄軟件開(kāi)發(fā)過(guò)程統(tǒng)計(jì)軟件開(kāi)發(fā)工作量版本控制的二種方式集中式與

分布式集中式版本控制集中式版本控制版本庫(kù)集中存放在中央服務(wù)器之中開(kāi)發(fā)前先從中央服務(wù)器取得最新版本開(kāi)發(fā)完再把自己的工作推送給中央服務(wù)器中央服務(wù)器就好比是一個(gè)圖書(shū)館,你要改一本書(shū),必須先從圖書(shū)館借出來(lái),然后回到家自己改,改完后再放回圖書(shū)館特點(diǎn)高度集中、難以有效支持協(xié)同開(kāi)發(fā)典型系統(tǒng):CVS、SVN、ClearCase版本庫(kù)開(kāi)發(fā)者開(kāi)發(fā)者開(kāi)發(fā)者分布式版本管理分布式版本控制有一個(gè)中央倉(cāng)庫(kù)開(kāi)發(fā)前在本機(jī)上拷貝一個(gè)完整軟件倉(cāng)庫(kù)開(kāi)發(fā)完把自己工作提交到本地倉(cāng)庫(kù)中需要同步給協(xié)作者時(shí)再遞交到中央倉(cāng)庫(kù)版本庫(kù)分步存儲(chǔ)于各協(xié)作者電腦中優(yōu)點(diǎn)不依賴中央服務(wù)器、可在本地開(kāi)發(fā)、有效支持協(xié)同開(kāi)發(fā)典型系統(tǒng):Git中央倉(cāng)庫(kù)本地倉(cāng)庫(kù)本地倉(cāng)庫(kù)本地倉(cāng)庫(kù)本地倉(cāng)庫(kù)版本控制的發(fā)展RCS(1982)CVS(1990),SVN(2001)Git(2005)BitKeeper(1999)何為Git?Git是一種分布式的版本控制系統(tǒng)支持存儲(chǔ)代碼、跟蹤修訂歷史記錄、合并代碼更改等,可在需要時(shí)恢復(fù)較早的代碼版本,可實(shí)現(xiàn)團(tuán)隊(duì)的高效協(xié)作LinusTorvalds研制和開(kāi)發(fā)為了幫助管理Linux內(nèi)核開(kāi)發(fā)而開(kāi)發(fā)的一個(gè)開(kāi)源的版本控制軟件成為行業(yè)標(biāo)準(zhǔn)Git是目前世界上最先進(jìn)的分布式版本控制LinusTorvaldsGit采用分部式管理模式分布式版本管理本地?fù)碛型暾姹編?kù),支持離線操作有效應(yīng)對(duì)了中心服務(wù)器崩潰帶來(lái)的影響有效支持代碼審查、持續(xù)集成等開(kāi)發(fā)活動(dòng)Git的基本功能

版本管理管理各種源代碼和文檔、切換不同版本等

過(guò)程管理跟蹤開(kāi)發(fā)過(guò)程、查閱歷史記錄等代碼評(píng)審可視化評(píng)估代碼質(zhì)量,決斷是否合并代碼等;擴(kuò)展功能企業(yè)DevOps自動(dòng)化、代碼Issue聯(lián)動(dòng)管理;……

Workspace:工作區(qū)Index/Stage:暫存區(qū)Repository:倉(cāng)庫(kù)區(qū)(或本地倉(cāng)庫(kù))Git的倉(cāng)庫(kù)構(gòu)成遠(yuǎn)端倉(cāng)庫(kù)本地端倉(cāng)庫(kù)本地倉(cāng)庫(kù)暫存區(qū)工作區(qū)Remote:遠(yuǎn)程倉(cāng)庫(kù)Git版本管理的基本概念倉(cāng)庫(kù)(Repository)軟件所有文件的完整修訂歷史版本(Revision)代碼庫(kù)的編號(hào)方案,如Tag0.1分支(Branch)對(duì)代碼庫(kù)并行修改時(shí)的代碼庫(kù)副本如master,develop,branch1,…提交(Commit)對(duì)分支的一次修訂下拉(Pull)將遠(yuǎn)程的一個(gè)分支讀取并保存到本地分支推送(Push)將本地分支代碼發(fā)送到遠(yuǎn)程某個(gè)分支合并(Merge)將對(duì)相同文件在不同分支的修改合并到一個(gè)分支中沖突(Conflict)當(dāng)兩個(gè)分支中存在對(duì)同一文件的不同修改,并試圖合并這兩個(gè)分支時(shí),就會(huì)發(fā)生沖突Tag0.1Tag0.2Tag1.0Commit#ab892nCommit#lm2671spullpushmaster和develop是標(biāo)準(zhǔn)分支,master是缺省的主分支Git各項(xiàng)操作本地倉(cāng)庫(kù)暫存區(qū)工作區(qū)Git分支的理念和操作使用分支意味著你可以把你的工作從開(kāi)發(fā)主線上分離開(kāi)來(lái),以免影響開(kāi)發(fā)主線masterbranch2branch1createmergecommitcreatemergecommit分支本地操作分支本地操作Git的使用分支管理流程:初始化過(guò)程(組長(zhǎng))1創(chuàng)建版本庫(kù)(默認(rèn)master分支),push初始代碼2創(chuàng)建遠(yuǎn)程develop分支分支管理流程:基本過(guò)程(組員)3克隆代碼,切換到develop分支4新建自己的分支my_branch(各組員分支名不同)5修改my-branch:正常開(kāi)發(fā),修改完成后將修改的內(nèi)容推送到遠(yuǎn)程my_branch分支合并分支:基本過(guò)程(組長(zhǎng))6切換develop分支,pull代碼7合并組員的分支(my_branch)到develop分支8解決沖突,然后將合并好的develop分支推送到遠(yuǎn)程9將develop分支合并到master分支(這一步可以按實(shí)際需求,master上一般為穩(wěn)定版本)組長(zhǎng)組員創(chuàng)建版本庫(kù)push代碼創(chuàng)建develop分支創(chuàng)建自己分支masterdevelop自己分支自己分支創(chuàng)建自己分支提交、push代碼提交、push代碼合并分支解決沖突合并分支合并developPull最新代碼Pull最新代碼1.創(chuàng)建本地版本庫(kù)命令:gitinit在執(zhí)行完成gitinit命令后,Git倉(cāng)庫(kù)會(huì)生成一個(gè).git目錄,該目錄包含了資源的所有元數(shù)據(jù)使用當(dāng)前目錄作為git倉(cāng)庫(kù),直接在當(dāng)前目錄進(jìn)行初始化使用指定目錄作為git倉(cāng)庫(kù),在初始化命令之后加上指定目錄路徑,如gitinitnewrepo2.克隆遠(yuǎn)程版本庫(kù)gitclone<repo><directory>將遠(yuǎn)程倉(cāng)庫(kù)中的代碼拷貝項(xiàng)目到本地倉(cāng)庫(kù)其中repo表示遠(yuǎn)程倉(cāng)庫(kù)目錄,directory代表本地倉(cāng)庫(kù)目錄3.在暫存區(qū)添加/撤銷文件gitadd

[file1][file2]...or

[dir] 將文件添加到暫存區(qū)gitcheckout[file1]撤銷不需要的修改 4.提交修改到本地倉(cāng)庫(kù)gitcommit-m[message]gitcommit[file1][file2]...-m[message]將暫存區(qū)內(nèi)容添加到本地倉(cāng)庫(kù)中g(shù)itlog查看commit提交日志5.添加遠(yuǎn)程版本庫(kù)gitremoteadd“遠(yuǎn)程倉(cāng)庫(kù)名”“遠(yuǎn)程倉(cāng)庫(kù)地址”添加遠(yuǎn)程版本庫(kù)6.推送本地內(nèi)容到遠(yuǎn)程倉(cāng)庫(kù)

gitpush遠(yuǎn)程倉(cāng)庫(kù)名本地分支名遠(yuǎn)程分支名將你的修改推送到遠(yuǎn)程倉(cāng)庫(kù),便于測(cè)試或者和團(tuán)隊(duì)中其他人協(xié)作推送本地內(nèi)容時(shí),會(huì)將所有未推送至遠(yuǎn)程倉(cāng)庫(kù)的內(nèi)容,都提交到遠(yuǎn)程倉(cāng)庫(kù)7.拉取遠(yuǎn)程分支到本地gitpull遠(yuǎn)程主機(jī)名遠(yuǎn)程分支名:本地分支名在團(tuán)隊(duì)協(xié)作中,如果別人對(duì)項(xiàng)目做了修改,而你需要將這些修改合并到你本地時(shí),需要使用gitpull命令gitpull遠(yuǎn)程主機(jī)名遠(yuǎn)程分支名:本地分支名-f如果遠(yuǎn)程分支和本地分支對(duì)同一內(nèi)容做了修改,這將導(dǎo)致將遠(yuǎn)程分支修改合并到本地分支時(shí)會(huì)發(fā)生沖突可以選擇直接強(qiáng)制拉取,使用遠(yuǎn)程分支的修改,覆蓋本地分支的修改。強(qiáng)制拉取需要用到-f參數(shù)

Git關(guān)鍵操作的總結(jié)本地倉(cāng)庫(kù)遠(yuǎn)程倉(cāng)庫(kù)pushpullcommitcommitswitch合并請(qǐng)求TortoiseGit軟件工具一種開(kāi)源的Git版本控制系統(tǒng)客戶端軟件采用Windows圖形化界面,使用Git變得更加簡(jiǎn)便和易于操作安裝訪問(wèn)TortoiseGit官網(wǎng)()供閱讀的相關(guān)技術(shù)博客git入門(mén)/#/spaces/146/resources-docs/6423實(shí)操視頻知士薈->學(xué)習(xí)空間:軟件工程課程教改及培訓(xùn)【教師】/#/spaces/402/resources/21291拓展閱讀【技術(shù)博客干貨】一篇文章讓你入門(mén)git/#/spaces/146/resources-docs/6423相關(guān)書(shū)籍課后作業(yè)和課程實(shí)訓(xùn)訪問(wèn)/paths/1944完成第一章“軟件工程概述”的實(shí)訓(xùn)闖關(guān)任務(wù)小結(jié)Git是一個(gè)分布式版本控制軟件工具提供了倉(cāng)庫(kù)、分支、Pull/Push等基本功能和服務(wù)Github、頭歌等提供了Git的功能和服務(wù)軟件項(xiàng)目的分布式版本管理TortoiseGit是一個(gè)支持Git的可視化軟件工具為開(kāi)發(fā)者提供友好的界面操作問(wèn)題和討論程序及其質(zhì)量保證和分析方法軟件工程內(nèi)容程序及質(zhì)量要求程序及其內(nèi)部和外部質(zhì)量程序質(zhì)量保證方法編碼規(guī)范、設(shè)計(jì)方法、代碼重用、結(jié)對(duì)編程程序質(zhì)量的分析方法人工審查、自動(dòng)化分析、代碼測(cè)試編寫(xiě)程序需要解決的問(wèn)題需要工程化的方法支持配套教材毛新軍等,軟件工程:理論與實(shí)踐,高等教育出版社,ISBN:978-7-04-061010-9,2024年1月,教育部101計(jì)劃核心教材毛新軍等,軟件工程實(shí)踐教程-基于開(kāi)源和群智的方法,高等教育出版社,ISBN978-7-04-052423-9,2019年8月1.1何為程序?程序(Program)是由程序設(shè)計(jì)語(yǔ)言所描述的、能為計(jì)算機(jī)所理解和處理的一組語(yǔ)句序列用程序設(shè)計(jì)語(yǔ)言(ProgrammingLanguage)來(lái)描述的如Java、C、C++、Python程序嚴(yán)格遵循程序設(shè)計(jì)語(yǔ)言的各項(xiàng)語(yǔ)法和語(yǔ)義規(guī)定確保程序代碼能為程序設(shè)計(jì)語(yǔ)言的編譯器所理解,進(jìn)而編譯生成相應(yīng)的可運(yùn)行代碼程序代碼可表現(xiàn)為二種形式源代碼(SourceCode):用程序設(shè)計(jì)語(yǔ)言所描述的代碼可執(zhí)行代碼(ExecutableCode):可執(zhí)行的二進(jìn)制或中間碼程序代碼示例用Java語(yǔ)言編寫(xiě)的代碼1.2程序組成-語(yǔ)句程序中的語(yǔ)句聲明、定義、控制、計(jì)算等實(shí)現(xiàn)特定的功能用程序設(shè)計(jì)語(yǔ)言來(lái)描述計(jì)算機(jī)可以理解可編譯成二進(jìn)制代碼代碼在計(jì)算機(jī)上可執(zhí)行程序組成-模塊由諸多相互交互的模塊組成包(Package)類(Class)方法(Method)每個(gè)模塊實(shí)現(xiàn)特定功能示例:小米便簽中的模塊170個(gè)文件、471個(gè)方法程序模塊包示例:小米便簽開(kāi)源軟件模塊結(jié)構(gòu)1.3程序如何編寫(xiě)?編寫(xiě)程序要實(shí)現(xiàn)的功能采用編程語(yǔ)言邏輯思考推理程序設(shè)計(jì)經(jīng)驗(yàn)程序代碼邏輯思考、認(rèn)知和推理的過(guò)程你是如何編寫(xiě)程序的?程序的編碼、編譯、部署和運(yùn)行編碼編譯部署與運(yùn)行源代碼可執(zhí)行代碼編程語(yǔ)言編譯器運(yùn)行平臺(tái)基于用戶需求產(chǎn)生運(yùn)行結(jié)果如何保證質(zhì)量問(wèn)題?!確保程序質(zhì)量是編碼的首要工作!產(chǎn)品的質(zhì)量問(wèn)題外在:用戶直接可以感覺(jué)到的使用用戶:圓滑、手感好、美觀、不死機(jī)、操作便捷內(nèi)在:用戶無(wú)法直接感觸到的維修人員:易于維護(hù)、易于更換內(nèi)在外在1.4程序的利益相關(guān)者及其質(zhì)量要求用戶程序的運(yùn)行展示功能和性能滿足和實(shí)現(xiàn)用戶的需求程序員編寫(xiě)、閱讀和維護(hù)程序發(fā)現(xiàn)和修改程序中的缺陷程序編碼編譯用戶程序員程序使用編寫(xiě)和維護(hù)對(duì)程序的不同質(zhì)量需求正確性高效性可靠性友好性……用戶角度程序員角度可理解易修改可維護(hù)可重用……用戶和程序員會(huì)對(duì)程序質(zhì)量分別提出什么樣的要求?為什么?使用編寫(xiě)和維護(hù)程序質(zhì)量的內(nèi)在和外在體現(xiàn)外在質(zhì)量(ExternalQuality)

–用戶的視角對(duì)外可展示,用戶可直接感觸到、所關(guān)心的使用流暢性、響應(yīng)速度、界面美觀、操作簡(jiǎn)易性、運(yùn)行可靠性等正確性、友好性、可靠性、易用性、高效性等內(nèi)在質(zhì)量(InternalQuality)

–程序員的視角體現(xiàn)在程序的內(nèi)在方面,程序員可以感觸到的、所關(guān)心的易于理解、結(jié)構(gòu)清晰、易于修改、可重用好等可理解性、可維護(hù)性、可擴(kuò)展性、可重用性等你是否對(duì)你或他人編寫(xiě)的程序有質(zhì)量方面的要求和抱怨?示例:從用戶和程序員視角看程序質(zhì)量這段代碼如何?易于理解嗎?易于修改嗎?結(jié)構(gòu)清晰嗎?……運(yùn)行效果如何?可靠嗎?易于操作和使用嗎?……用戶角度程序員角度討論:程序的質(zhì)量這段程序?qū)懙娜绾??正確嗎?易于理解嗎?結(jié)構(gòu)清晰嗎?易于修改嗎?……思考和討論你覺(jué)得什么樣的程序是高質(zhì)量?你編寫(xiě)程序時(shí)是否考慮了質(zhì)量問(wèn)題?你所寫(xiě)的程序質(zhì)量如何?如何才能編寫(xiě)出高質(zhì)量的程序??jī)?nèi)容程序及質(zhì)量要求程序及其內(nèi)部和外部質(zhì)量程序質(zhì)量保證方法編碼規(guī)范、設(shè)計(jì)方法、代碼重用、結(jié)對(duì)編程程序質(zhì)量的分析方法人工審查、自動(dòng)化分析、代碼測(cè)試編寫(xiě)程序需要解決的問(wèn)題需要工程化的方法支持2.1程序質(zhì)量的語(yǔ)法和語(yǔ)義體現(xiàn)代碼風(fēng)格規(guī)范-語(yǔ)法語(yǔ)法和結(jié)構(gòu)層次明確如何來(lái)規(guī)范程序的書(shū)寫(xiě)表現(xiàn)為是否易于閱讀和理解代碼設(shè)計(jì)規(guī)范-語(yǔ)義語(yǔ)義和內(nèi)涵層次明確如何來(lái)組織和封裝程序語(yǔ)句表現(xiàn)為良好的結(jié)構(gòu)和易于重用程序質(zhì)量保證方法遵循編碼風(fēng)格采用程序設(shè)計(jì)方法開(kāi)展代碼重用進(jìn)行結(jié)對(duì)編程2.2遵循編碼風(fēng)格良好的編程行為在編碼過(guò)程中,程序員對(duì)代碼符號(hào)進(jìn)行良好的組織、合理的命名、提供必要的注釋,那么將可增強(qiáng)代碼的可讀性和可理解性,進(jìn)而提高代碼的可維護(hù)性和可重用性,提升代碼的內(nèi)部質(zhì)量何為編碼風(fēng)格程序員在編碼時(shí)要遵循特定的樣式及要求,以規(guī)范程序員的編程行為以及所產(chǎn)生程序代碼的樣式示例:遵循編碼風(fēng)格沒(méi)有遵循編碼風(fēng)格遵循編碼風(fēng)格編寫(xiě)代碼的基本原則易讀,一看就懂理解代碼的內(nèi)涵和意圖望文生義的符號(hào)、縮進(jìn)和括號(hào)、代碼注釋,遵循編碼風(fēng)格簡(jiǎn)明,減低復(fù)雜度避繁就簡(jiǎn)、不用goto語(yǔ)句、減少嵌套層數(shù)、簡(jiǎn)單算法易改,便于維護(hù)便于修改程序代碼、增加新的代碼封裝、參數(shù)化、模塊化、隱藏、常元無(wú)二義,不產(chǎn)生歧義不要讓人產(chǎn)生誤解編碼風(fēng)格-代碼布局縮進(jìn),用好Tab鍵用括號(hào)來(lái)表示優(yōu)先級(jí)斷行處的{}if(condition){ DoSomething();}else{ DoSomething();}一行至多只一條語(yǔ)句不要在一行定義多個(gè)變量編碼風(fēng)格-代碼組織按一定次序來(lái)說(shuō)明數(shù)據(jù)按字母順序說(shuō)明對(duì)象盡可能避免使用嵌套結(jié)構(gòu)采用統(tǒng)一的縮進(jìn)規(guī)則單入口單出口編碼風(fēng)格-命名規(guī)范采用有意義、一目了然的命名方式變/常/函數(shù)/方法/類/包一看就懂,望文生義無(wú)意義的命名i,j,x,y有意義的命名szPathvPrintName()bReturn編碼風(fēng)格-命名命名通則使用英文單詞或縮寫(xiě),不要使用拼音望文知義原則,含義清晰、明確命名不要過(guò)長(zhǎng)盡量使用全稱,少用縮寫(xiě)不規(guī)范的命名DaYinWenJian與PrintFile編碼風(fēng)格-命名命名和大小寫(xiě)類/類型/變量:用名詞和名詞短語(yǔ),所有單詞第一個(gè)字母大寫(xiě)函數(shù)/方法:動(dòng)詞或者動(dòng)詞短語(yǔ),第一個(gè)單詞小寫(xiě),隨后單詞第一個(gè)字母大寫(xiě)示例:Member,ProductInfo,getName(),setName(),renderPage()不規(guī)范的命名變量:print;方法:Print()編碼風(fēng)格-代碼注釋幫助理解程序注釋要說(shuō)明程序:(1)做什么;(2)為什么這么做;(3)注意事項(xiàng)無(wú)需解釋程序如何做注解位置類頭、函數(shù)/函數(shù)頭、關(guān)鍵語(yǔ)句塊頭、關(guān)鍵語(yǔ)句尾有效、必要、簡(jiǎn)潔的注釋太少和過(guò)多均不可取注釋要可理解、準(zhǔn)確、無(wú)二義隨代碼的修改而修改編碼風(fēng)格示例注釋命名布局結(jié)構(gòu)編碼風(fēng)格的相關(guān)書(shū)籍C++編程風(fēng)格Java編程風(fēng)格代碼整潔之道推崇CleanCode不同程序設(shè)計(jì)語(yǔ)言有不同的編碼風(fēng)格要求討論:編碼風(fēng)格這二段代碼風(fēng)格如何?哪些做的好,還存在哪些問(wèn)題?你編寫(xiě)代碼時(shí)注意風(fēng)格了嗎?2.3采用程序設(shè)計(jì)方法語(yǔ)句設(shè)計(jì)模塊化設(shè)計(jì)高內(nèi)聚度、低耦合度原則代碼設(shè)計(jì)規(guī)范-語(yǔ)句設(shè)計(jì)單入口單出口少用goto語(yǔ)句加強(qiáng)對(duì)異常處理分析和驗(yàn)證輸入?yún)?shù)正確性,如名字不為空,年齡大于0少于150執(zhí)行結(jié)果處理,設(shè)置必要斷言來(lái)分析

如p=AllocateNewSpace(); Assert(p!=NULL); if(p!=NULL){ …… }處理異常語(yǔ)句Try{…}catch(Exceptione){…}將更多的時(shí)間、精力和代碼放在處理異常上代碼設(shè)計(jì)規(guī)范-模塊化設(shè)計(jì)模塊是邏輯上相對(duì)獨(dú)立、具有良定義接口的編程單位模塊可表現(xiàn)為函數(shù)、過(guò)程、方法、類、程序包等將程序代碼封裝為一個(gè)個(gè)獨(dú)立的模塊代碼設(shè)計(jì)規(guī)范-高內(nèi)聚度模塊內(nèi)各要素緊密相關(guān),僅實(shí)現(xiàn)單一功能如果模塊內(nèi)多個(gè)要素關(guān)系不密切,需分解產(chǎn)生多個(gè)模塊ABCABCD分解模塊D內(nèi)部包含若干關(guān)系松散的要素經(jīng)過(guò)分解得到若干松耦合的模塊代碼設(shè)計(jì)規(guī)范-低耦合度模塊間的關(guān)系應(yīng)設(shè)計(jì)的非常松散如果多個(gè)模塊間的關(guān)系非常密切,可將這些模塊合并為一個(gè)模塊BACABC經(jīng)過(guò)合并得到內(nèi)聚度高的模塊D若干關(guān)系緊密的模塊示例:采用程序設(shè)計(jì)方法語(yǔ)句設(shè)計(jì)模塊化高內(nèi)聚度低耦合度2.4代碼重用何為代碼重用在編寫(xiě)代碼過(guò)程中,充分利用已有和現(xiàn)成的代碼,并將其集成到程序之中,從而來(lái)實(shí)現(xiàn)程序功能代碼重用有何好處由于被重用的代碼經(jīng)過(guò)多次反復(fù)的使用,代碼質(zhì)量得到充分檢驗(yàn),因而代碼重用不僅可提高編程效率,而且還可有效提升程序質(zhì)量為什么代碼重用可以提高代碼的質(zhì)量?示例:函數(shù)、類和軟構(gòu)件重用C函數(shù)庫(kù)MFC類庫(kù)(MicrosoftFoundationClasses)Java軟件開(kāi)發(fā)包機(jī)器人操作系統(tǒng)(ROS)的節(jié)點(diǎn)軟構(gòu)件MFC類庫(kù)示例:代碼片段重用尋找他人實(shí)現(xiàn)某些子功能的代碼片段可在StackOverflow上尋找到有價(jià)值的代碼片段,并加以重用開(kāi)源代碼重用到Github中找到粗粒度的代碼開(kāi)源幾萬(wàn)、甚至幾十萬(wàn)的程序代碼重用開(kāi)源代碼來(lái)實(shí)現(xiàn)粗粒度的功能完成諸如數(shù)據(jù)庫(kù)管理、圖像識(shí)別、語(yǔ)音分析等功能思考和討論你在編程時(shí)是否有軟件重用?你開(kāi)展了那些方面和粒度的軟件重用?2.5結(jié)對(duì)編程(Pair-Programming)兩位程序員(或智能體)坐在同一工作臺(tái)前一起開(kāi)發(fā)軟件一人扮演“領(lǐng)航員”角色,負(fù)責(zé)具體編寫(xiě)工作,如寫(xiě)程序一人扮演“觀察者”角色,負(fù)責(zé)觀察行為及結(jié)果,如看程序,發(fā)現(xiàn)問(wèn)題二者相互討論,共同完成編程任務(wù)大模型時(shí)代基于智能體的結(jié)對(duì)編程軟件開(kāi)發(fā)智能體軟件工程師人機(jī)協(xié)同開(kāi)發(fā)Copilot等基于智能化的編程助手(如CopilotX),人機(jī)協(xié)同編程會(huì)成為趨勢(shì)越來(lái)越多程序員使用CopilotX等智能化工具進(jìn)行軟件開(kāi)發(fā),AIPair編程正在成為新的編程范式,幫助程序員編代碼、單元測(cè)試、調(diào)試、寫(xiě)文檔等個(gè)體開(kāi)發(fā)的局限性個(gè)體知識(shí)和技能的局限性沒(méi)有人無(wú)所不能有專長(zhǎng),但很難做到面面俱到總會(huì)有不懂、不會(huì)的個(gè)體開(kāi)發(fā)行為的局限性人總是會(huì)犯錯(cuò)誤的,錯(cuò)誤很難避免老虎也有打旽的時(shí)候,注意力不集中就會(huì)犯錯(cuò)誤很難看到或者看清自身的錯(cuò)誤軟件開(kāi)發(fā)是集體性/群體性行為團(tuán)隊(duì)開(kāi)發(fā)多人參與、具有共同目的、明確任務(wù)分工合作開(kāi)發(fā)相互支持、互相配合、共同解決問(wèn)題群體開(kāi)發(fā)利用大眾的力量、借助大眾的智慧和成果拋棄個(gè)人主義/英雄主義單槍匹馬難成大事、單干/蠻干容易出事現(xiàn)實(shí)世界的結(jié)對(duì)示例駕駛員作戰(zhàn)員駕駛員領(lǐng)航員如何實(shí)現(xiàn)結(jié)對(duì)編程職責(zé)明確一人寫(xiě)設(shè)計(jì)文檔、編寫(xiě)程序和單元測(cè)試等等一人審閱文檔、復(fù)審程序代碼、考慮單元測(cè)試的覆蓋率、是否需要重構(gòu)、解決具體的技術(shù)問(wèn)題等等互換角色不要連續(xù)超過(guò)工作1小時(shí),提高效率主動(dòng)參與開(kāi)展討論、解決問(wèn)題、做出貢獻(xiàn)編程行為及其特點(diǎn)快速完成盡快得到可運(yùn)行軟件系統(tǒng)、盡早交付給用戶、快速應(yīng)對(duì)需求變化多種技能工具和環(huán)境程序設(shè)計(jì)語(yǔ)言業(yè)務(wù)領(lǐng)域知識(shí)編碼規(guī)范和設(shè)計(jì)規(guī)范質(zhì)量要求正確性、可讀性、可維護(hù)性等編程包袱:效率和質(zhì)量問(wèn)題結(jié)對(duì)寫(xiě)程序任務(wù)編寫(xiě)程序代碼方式一人寫(xiě)一人復(fù)審規(guī)范性、正確性、可讀性等討論改進(jìn)與提高如增加注釋、更改名稱等結(jié)對(duì)編程中的代碼復(fù)審結(jié)對(duì)編程是一個(gè)不斷“復(fù)審”代碼的過(guò)程每一行代碼都被二雙眼睛看過(guò),被二個(gè)腦子思考過(guò)代碼隨著改動(dòng)不斷地被復(fù)審每個(gè)人的一舉一動(dòng)(編碼行為)不斷地被另一個(gè)人審查,確保過(guò)程和活動(dòng)置于監(jiān)督之下,迫使認(rèn)真工作,防止隨意行為促進(jìn)“頻繁”交流,提高個(gè)人能力和素養(yǎng)結(jié)對(duì)寫(xiě)文檔任務(wù)撰寫(xiě)計(jì)文檔方式一人寫(xiě)一人復(fù)審規(guī)范、正確、合理性等討論改進(jìn)和完善如文檔格式、語(yǔ)言表達(dá)、圖表、錯(cuò)別字結(jié)對(duì)做測(cè)試任務(wù)軟件測(cè)試方式運(yùn)行測(cè)試用例,收集測(cè)試結(jié)果一人寫(xiě)一人復(fù)審和幫助完整性、代表性、適當(dāng)性等討論完善和提升結(jié)對(duì)編程帶來(lái)的好處提高程序質(zhì)量提供更好的設(shè)計(jì)質(zhì)量和代碼質(zhì)量合作解決問(wèn)題能力強(qiáng),1+1>2提升開(kāi)發(fā)效率開(kāi)發(fā)人員更加信心有效地避免了閉門(mén)造車(chē)更易于發(fā)現(xiàn)問(wèn)題和糾正問(wèn)題促進(jìn)學(xué)習(xí)交流有效的學(xué)習(xí),做中學(xué)效果更好相互學(xué)習(xí)和分享經(jīng)驗(yàn)更好應(yīng)對(duì)人員流動(dòng),一個(gè)走了另一個(gè)人可以替換上結(jié)對(duì)編程可以獲得更高的投入/產(chǎn)出比思考和討論如何在閱讀、分析和維護(hù)開(kāi)源軟件實(shí)踐中應(yīng)用結(jié)對(duì)編程的方法?有何實(shí)踐經(jīng)驗(yàn)可供分享??jī)?nèi)容程序及質(zhì)量要求程序及其內(nèi)部和外部質(zhì)量程序質(zhì)量保證方法編碼規(guī)范、設(shè)計(jì)方法、代碼重用、結(jié)對(duì)編程程序質(zhì)量的分析方法人工審查、自動(dòng)化分析、代碼測(cè)試編寫(xiě)程序需要解決的問(wèn)題需要工程化的方法支持3.1程序代碼中潛在的質(zhì)量問(wèn)題質(zhì)量問(wèn)題編寫(xiě)不合理

–沒(méi)有遵循編碼規(guī)范設(shè)計(jì)不合理

–沒(méi)有遵循設(shè)計(jì)規(guī)范代碼有錯(cuò)誤–代碼編寫(xiě)的不正確

原因受軟件開(kāi)發(fā)人員經(jīng)驗(yàn)和水平的限制人可能會(huì)犯錯(cuò)誤,人為引入錯(cuò)誤

你編寫(xiě)的代碼是否存在問(wèn)題?存在哪些方面的問(wèn)題?代碼質(zhì)量分析的常用方法人工審查(CodeReview)方法自動(dòng)化分析方法(AutomatedAnalysis)程序測(cè)試(Test)方法3.2人工審查代碼方法描述閱讀和理解代碼發(fā)現(xiàn)缺陷和問(wèn)題提出改進(jìn)的建議方法特點(diǎn)人工審查效率低難以發(fā)現(xiàn)一些深層次問(wèn)題難以全面地進(jìn)行系統(tǒng)分析人工審查些什么?代碼是否符合編程規(guī)范代碼中是否存在缺陷邏輯錯(cuò)誤,“+”寫(xiě)成“-”算法錯(cuò)誤,不夠優(yōu)化、邊界條件沒(méi)有處理好潛在錯(cuò)誤,當(dāng)前修改導(dǎo)致以前修復(fù)的錯(cuò)誤重現(xiàn)從質(zhì)量的角度哪些代碼需要改進(jìn)包括內(nèi)部質(zhì)量和外部質(zhì)量讀別人編寫(xiě)的高質(zhì)量代碼能讓你受益匪淺讀低質(zhì)量的代碼能讓你非常痛苦人工審查-誰(shuí)負(fù)責(zé)審查自我復(fù)審,效果不一定好同伴復(fù)審,常用方法

結(jié)對(duì)編程團(tuán)隊(duì)復(fù)審,團(tuán)隊(duì)成員參加3.3自動(dòng)化工具審查-代碼靜態(tài)分析由計(jì)算機(jī)軟件來(lái)自動(dòng)完成代碼審查無(wú)需運(yùn)行被測(cè)代碼,僅通過(guò)分析或檢查程序的語(yǔ)法、結(jié)構(gòu)、過(guò)程、接口等來(lái)檢查程序30%-

70%的代碼缺陷可通過(guò)靜態(tài)分析發(fā)現(xiàn)分析什么找出代碼隱藏的錯(cuò)誤和缺陷,如參數(shù)不匹配,有歧義的嵌套語(yǔ)句,錯(cuò)誤的遞歸,非法計(jì)算,可能出現(xiàn)的空指針引用等等程序遵循編碼規(guī)范的程度特點(diǎn)快速定位、有效發(fā)現(xiàn)隱藏的錯(cuò)誤和缺陷自動(dòng)化代碼分析工具SonarQubeCheckStyleFindBugsPMDJtestCodeArtsCheck(華為)SonarQube概述基于Web、用于管理程序代碼質(zhì)量的代碼靜態(tài)分析工具可以插件的形式集成到眾多的軟件開(kāi)發(fā)環(huán)境(如Eclipse)支持二十多種程序設(shè)計(jì)語(yǔ)言代碼的質(zhì)量分析SonarQube可分析的質(zhì)量問(wèn)題是否違反編碼規(guī)則是否存在靜態(tài)常規(guī)缺陷模塊、方法、類的復(fù)雜度是否過(guò)高是否存在重復(fù)的代碼代碼的注釋是否恰當(dāng)和充分統(tǒng)計(jì)和分析代碼的單元測(cè)試覆蓋率判斷軟件體系結(jié)構(gòu)設(shè)計(jì)是否合理SonarQube分析發(fā)現(xiàn)的問(wèn)題類別Bug(錯(cuò)誤)中等影響如參數(shù)不夠Vulnerability(脆弱點(diǎn))影響大如漏洞CodeSmell(代碼異味)影響小如風(fēng)格SonarQube分析報(bào)告代碼審查后要做的工作理解發(fā)現(xiàn)和指出的問(wèn)題修改和更正有問(wèn)題代碼對(duì)于無(wú)法很快更正的錯(cuò)誤,要把錯(cuò)誤的信息記錄下來(lái),以便適當(dāng)?shù)臅r(shí)候能夠更正3.4軟件測(cè)試技術(shù)程序本質(zhì)上是對(duì)數(shù)據(jù)的處理設(shè)計(jì)數(shù)據(jù)(測(cè)試用例)

運(yùn)行測(cè)試用例(程序來(lái)處理數(shù)據(jù))

判斷運(yùn)行結(jié)果(是否符合預(yù)期結(jié)果)運(yùn)行代碼程序代碼等設(shè)計(jì)測(cè)試數(shù)據(jù)結(jié)果評(píng)價(jià)預(yù)期結(jié)果軟件缺陷為軟件測(cè)試而設(shè)計(jì)的數(shù)據(jù)稱為測(cè)試用例(TestCase)測(cè)試用例實(shí)際結(jié)果軟件測(cè)試的目的和任務(wù)2356417缺陷盡可能多找出軟件中缺陷軟件系統(tǒng)軟件缺陷可能隱藏的比較深,難以發(fā)現(xiàn)軟件測(cè)試示例一個(gè)加法器程序功能:給定二個(gè)數(shù)字,將其相加,然后輸出設(shè)計(jì)測(cè)試數(shù)據(jù)<1,2,3><-1,1,0><0,0,0>運(yùn)行測(cè)試程序輸入數(shù)據(jù),查看運(yùn)行結(jié)果,判斷是否與預(yù)期結(jié)果一致如果不一致就意味著有錯(cuò)誤思考和討論在你的編程實(shí)踐中,你是采用何種方式來(lái)檢查代碼質(zhì)量、發(fā)現(xiàn)代碼問(wèn)題的??jī)?nèi)容程序及質(zhì)量要求程序及其內(nèi)部和外部質(zhì)量程序質(zhì)量保證方法編碼規(guī)范、設(shè)計(jì)方法、代碼重用、結(jié)對(duì)編程程序質(zhì)量的分析方法人工審查、自動(dòng)化分析、代碼測(cè)試編寫(xiě)程序需要解決的問(wèn)題需要工程化的方法支持程序編寫(xiě)面臨的挑戰(zhàn)!程序功能從何而來(lái)?誰(shuí)以及如何來(lái)確定軟件功能?軟件規(guī)模很大怎么辦?500LOCvs1MLOC軟件功能變化如何改寫(xiě)代碼?在哪里改、如何改?如何保證程序質(zhì)量?能否想到代碼的質(zhì)量問(wèn)題,如何保證光靠腦子思考能解決程序編寫(xiě)的問(wèn)題嗎?思考和討論如何明確功能、劃分模塊?如何編寫(xiě)代碼、確保質(zhì)量?對(duì)于規(guī)模較大應(yīng)用能行嗎?面臨什么樣的困難和問(wèn)題?需要尋找系統(tǒng)化、工程化的方法指導(dǎo)!

軟件工程拓展閱讀軟件科學(xué)與工程-學(xué)科發(fā)展戰(zhàn)略,梅宏等著,高等教育出版社,2021.人月神話(40周年中文紀(jì)念版,F(xiàn)rederick,P.Brooks[美],清華大學(xué)出版社,2015.課后作業(yè)和課程實(shí)訓(xùn)訪問(wèn)/paths/1944完成第二章“從程序到軟件”的實(shí)訓(xùn)闖關(guān)任務(wù)本章知識(shí)圖譜小結(jié)程序的多種質(zhì)量要求外在和內(nèi)在、語(yǔ)法和語(yǔ)義確保代碼質(zhì)量的方法編碼規(guī)范、設(shè)計(jì)方法、代碼重用、結(jié)對(duì)編程分析、發(fā)現(xiàn)和審查代碼人工審查、靜態(tài)分析、程序測(cè)試學(xué)會(huì)編寫(xiě)高質(zhì)量的程序代碼需要借助行之有效的、系統(tǒng)化方法的指導(dǎo)課后的實(shí)踐任務(wù)開(kāi)展基于結(jié)對(duì)的代碼分析和維護(hù)實(shí)踐閱讀和掌握編碼風(fēng)格Java、C/C++編程風(fēng)格,要求學(xué)以致用熟練掌握SonarQube工具安裝和使用,分析開(kāi)源軟件的代碼質(zhì)量開(kāi)展課程實(shí)踐閱讀、理解和分析開(kāi)源軟件的代碼質(zhì)量提交代碼的質(zhì)量分析報(bào)告思考:如何編寫(xiě)高質(zhì)量的程序代碼綜合實(shí)踐一任務(wù):選取或指定待閱讀、分析和維護(hù)的開(kāi)源軟件。方法訪問(wèn)Github、碼云Gitee、SourceForge等開(kāi)源軟件托管平臺(tái),從中檢索到符合上述要求的開(kāi)源軟件,下載或克隆開(kāi)源軟件代碼,閱讀開(kāi)源軟件的相關(guān)文檔來(lái)安裝、部署和運(yùn)行開(kāi)源軟件。以二人為一組、采用結(jié)對(duì)方式來(lái)開(kāi)展本綜合實(shí)踐要求所選取或指定的開(kāi)源軟件要求功能易于理解、代碼質(zhì)量高、規(guī)模適中(5000-20000行代碼量),也可以直接指定“MiNote”便簽管理開(kāi)源軟件作為閱讀、分析和維護(hù)的對(duì)象。結(jié)果:獲得開(kāi)源軟件源代碼,并可運(yùn)行和操作該開(kāi)源軟件。綜合實(shí)踐二任務(wù):查看和分析開(kāi)源軟件方法訪問(wèn)Github、SourceForge、Gitee等開(kāi)源軟件托管平臺(tái)或Apache、Eclipse等開(kāi)源軟件基金會(huì)平臺(tái),從中檢索自己感興趣的開(kāi)源軟件,閱讀相關(guān)的軟件文檔,下載安裝開(kāi)源軟件要求結(jié)合自己的興趣,查看有那些開(kāi)源軟件,分析這些軟件的功能和定位、存在的缺陷和不足結(jié)果:掌握開(kāi)源軟件托管平臺(tái)的使用方法,大致了解感興趣的開(kāi)源軟件情況思考和討論你是否意識(shí)到程序質(zhì)量的重要性?你認(rèn)為高質(zhì)量的程序應(yīng)該是什么樣的?怎樣才能得到高質(zhì)量的程序代碼?問(wèn)題和討論軟件及其特點(diǎn)軟件工程內(nèi)容軟件軟件的概念、特點(diǎn)、組成及生命周期開(kāi)源軟件開(kāi)源軟件實(shí)踐,托管平臺(tái)和社區(qū),開(kāi)源許可證軟件質(zhì)量軟件質(zhì)量要素及模型軟件特征的變化地位、運(yùn)行環(huán)境、形態(tài)、復(fù)雜性建設(shè)狗窩和建設(shè)大廈的區(qū)別建設(shè)狗窩的特點(diǎn)簡(jiǎn)單質(zhì)量要求不高一個(gè)人就可完成建設(shè)大廈的特點(diǎn)復(fù)雜質(zhì)量高要求很高需要團(tuán)隊(duì)合作才能完成簡(jiǎn)單、小規(guī)模程序規(guī)模在萬(wàn)行代碼量復(fù)雜、大規(guī)模程序數(shù)十萬(wàn)行以上代碼量1.1從程序到軟件-工程開(kāi)發(fā)的啟發(fā)應(yīng)用(如火車(chē)票購(gòu)買(mǎi)、酒店預(yù)訂、網(wǎng)上購(gòu)物)編寫(xiě)程序通過(guò)一個(gè)步驟就將程序?qū)懗鰜?lái)不現(xiàn)實(shí)了解需求設(shè)計(jì)圖紙進(jìn)場(chǎng)施工采用工程化的方法來(lái)解決工程開(kāi)發(fā)的問(wèn)題編寫(xiě)出程序需要經(jīng)歷諸多的步驟應(yīng)用(如火車(chē)票購(gòu)買(mǎi)、酒店預(yù)訂、網(wǎng)上購(gòu)物)分析軟件需求設(shè)計(jì)軟件系統(tǒng)編寫(xiě)程序代碼文檔數(shù)據(jù)代碼不可或缺相互依存要編寫(xiě)出高質(zhì)量的程序需要循序漸進(jìn)地開(kāi)展工作運(yùn)行維護(hù)程序1.2何為軟件?軟件(Software)是指在計(jì)算機(jī)系統(tǒng)的支持下,能夠完成特定功能與性能的程序(Program)、數(shù)據(jù)(Data)和相關(guān)文檔(Document)

文檔數(shù)據(jù)代碼++從開(kāi)發(fā)的角度看軟件的構(gòu)成軟件制品(SoftwareArtifact)何為文檔?記錄軟件開(kāi)發(fā)活動(dòng)和階段性成果、軟件配置及變更的闡述性資料定義和理解軟件記錄軟件開(kāi)發(fā)成果輔助不同人員間的交流有哪些方面的文檔軟件需求文檔–記錄需求軟件設(shè)計(jì)文檔–記錄設(shè)計(jì)軟件測(cè)試文檔–記錄測(cè)試軟件用戶手冊(cè)–記錄使用……闡述性資料為什么需要文檔?原因軟件開(kāi)發(fā)牽涉多方面的工作,需要記錄下來(lái)任何事都記在腦子里,記不住,不便于保存任何事都放在腦子里,理不清,不便于分析任何事都存在腦子里,講不明,不便于交流編寫(xiě)文檔目的闡述清楚:內(nèi)容、邏輯性、條理性發(fā)現(xiàn)問(wèn)題:完整、一致、矛盾開(kāi)展交流:便于各種人員的交流促進(jìn)管理:管理軟件開(kāi)發(fā)成果編碼活動(dòng)的成果記錄為程序代碼其他活動(dòng)的成果記錄為軟件文檔示例:軟件設(shè)計(jì)文檔空巢老人智能看護(hù)系統(tǒng)設(shè)計(jì)文檔何為數(shù)據(jù)?數(shù)據(jù)是程序的加工處理對(duì)象和結(jié)果需要處理哪些數(shù)據(jù)如何來(lái)獲得這些數(shù)據(jù)如何來(lái)表示這些數(shù)據(jù)如何來(lái)存儲(chǔ)和檢索數(shù)據(jù)如何來(lái)傳輸數(shù)據(jù)網(wǎng)上商城中的手機(jī)及其數(shù)據(jù)數(shù)據(jù)示例數(shù)據(jù)形式用戶、訂單、交易、日志數(shù)據(jù)數(shù)據(jù)處理表示、獲取、存儲(chǔ)、檢索、分析軟件運(yùn)行的本質(zhì)就是對(duì)數(shù)據(jù)的處理,有些數(shù)據(jù)是用戶提供的,有些數(shù)據(jù)是軟件產(chǎn)生的思考和討論:12306軟件的數(shù)據(jù)哪些數(shù)據(jù)是由用戶提供的?以用戶注冊(cè)和購(gòu)票為例哪些數(shù)據(jù)是由軟件產(chǎn)生的?以用戶注冊(cè)和購(gòu)票為例沒(méi)有數(shù)據(jù)軟件會(huì)怎么樣?從開(kāi)發(fā)者的角度看軟件的構(gòu)成可執(zhí)行部分不可執(zhí)行部分文檔數(shù)據(jù)數(shù)據(jù)文檔程序構(gòu)成軟件的三類成分作用不同,但都不可或缺1.3軟件概念給我們的啟示軟件程序軟件涉及更多制品這些制品間有關(guān)聯(lián)、相互依賴開(kāi)發(fā)軟件編寫(xiě)程序軟件開(kāi)發(fā)需要做更多事情對(duì)軟件提出更高的要求軟件開(kāi)發(fā)的再認(rèn)識(shí)開(kāi)發(fā)具有一定規(guī)模和復(fù)雜性的軟件系統(tǒng)與編寫(xiě)一個(gè)簡(jiǎn)單的程序不一樣建設(shè)簡(jiǎn)單平房vs建設(shè)高樓大廈挖一條小溝vs建設(shè)一條南水北調(diào)渠道軟件的規(guī)模和復(fù)雜性意味著要采用行之有效的方法—工程方法何為工程化方法?開(kāi)發(fā)軟件vs編寫(xiě)程序1.4軟件生命周期萬(wàn)物均有生命周期(Lifecycle)人:嬰兒、幼兒、兒童、少年、…樹(shù):發(fā)芽、育苗、結(jié)果、枯萎、死亡、….青蛙:受精卵、蝌蚪、去掉尾巴的青蛙…軟件生命周期(SoftwareLifecycle)軟件從提出開(kāi)發(fā)開(kāi)始到最終滅亡所經(jīng)歷的時(shí)期不同階段具有不同的特征?CopyrightXinjunMao198軟件生命周期(1/2)從提出開(kāi)發(fā)開(kāi)始到開(kāi)發(fā)出系統(tǒng)、運(yùn)行維護(hù)以及最終退役的全過(guò)程軟件的生命周期(2/2)每個(gè)階段會(huì)產(chǎn)生不同的軟件制品What軟件需求是什么How如何構(gòu)造出軟件How編寫(xiě)程序代碼軟件是否缺陷部署軟件運(yùn)行軟件的本質(zhì)軟件的目的性:服務(wù)于客戶或用戶,滿足他們的要求軟件的組成性:程序+文檔+數(shù)據(jù)軟件的系統(tǒng)性:軟件是一類系統(tǒng),有諸多相關(guān)聯(lián)的要素軟件的駐留性:依賴于計(jì)算系統(tǒng)的軟硬件設(shè)施來(lái)支撐運(yùn)行示例:軟件的駐留性和系統(tǒng)性1.5軟件特點(diǎn)邏輯性邏輯產(chǎn)品,思維活動(dòng)(而非物理活動(dòng))的結(jié)果、不會(huì)磨損和老化設(shè)計(jì)開(kāi)發(fā)是設(shè)計(jì)開(kāi)發(fā)而成的,不是生產(chǎn)制造而成的易變性需求經(jīng)常變、難以把控,影響軟件的制品即開(kāi)發(fā)過(guò)程復(fù)雜性規(guī)模大:代碼行、模塊、介入人員、進(jìn)程、數(shù)據(jù)等數(shù)量非常大運(yùn)行復(fù)雜:狀態(tài)很難追蹤和復(fù)現(xiàn)缺陷的隱蔽性缺陷隱藏在邏輯代碼中,不像硬件系統(tǒng)那樣直觀顯現(xiàn),很難被人們所發(fā)現(xiàn)和排除討論:對(duì)比軟件和硬件對(duì)比軟件和硬件的特點(diǎn)表現(xiàn)形式開(kāi)發(fā)范式需求變化復(fù)雜性系統(tǒng)缺陷軟件系統(tǒng)硬件系統(tǒng)vs軍用軟件的特殊性運(yùn)行環(huán)境更復(fù)雜和多樣與物理系統(tǒng)(如飛機(jī))緊密聯(lián)系在一起對(duì)實(shí)時(shí)性和質(zhì)量(如可靠性)提出更高要求對(duì)自身防護(hù)能力(如安全性)提出更高要求需具備更強(qiáng)的靈活性、適應(yīng)性和健壯性軍用軟件:導(dǎo)彈中的飛行控制軟件、指揮信息系統(tǒng)、后勤保障軟件等1.6軟件的分類應(yīng)用軟件面向特定應(yīng)用領(lǐng)域的專用軟件。它們針對(duì)相關(guān)行業(yè)和領(lǐng)域的特定問(wèn)題,為其提供基于計(jì)算的新穎解決方案。示例:淘寶、12306、攜程、微信、QQ等軟件系統(tǒng)軟件對(duì)計(jì)算機(jī)資源進(jìn)行管理,為應(yīng)用軟件的運(yùn)行提供基礎(chǔ)設(shè)施和服務(wù)的一類軟件。從計(jì)算服務(wù)的視角,系統(tǒng)軟件介于計(jì)算機(jī)硬件和應(yīng)用軟件之間。示例:操作系統(tǒng)、數(shù)據(jù)庫(kù)管理系統(tǒng)、編譯軟件、軟件中間件等支撐軟件輔助軟件開(kāi)發(fā)和運(yùn)維,幫助開(kāi)發(fā)人員完成軟件開(kāi)發(fā)和維護(hù)工作的一類軟件示例:SonarQube、VisualStudio、Eclipse等軟件的分類類別服務(wù)對(duì)象軟件的功能發(fā)揮的作用應(yīng)用軟件行業(yè)和領(lǐng)域應(yīng)用的用戶為特定行業(yè)和領(lǐng)域問(wèn)題解決提供基于軟件解決方案,創(chuàng)新應(yīng)用領(lǐng)域的問(wèn)題解決模式提供更為便捷、快速、高效的服務(wù)系統(tǒng)軟件各類應(yīng)用軟件為應(yīng)用軟件運(yùn)行和維護(hù)提供基礎(chǔ)設(shè)施和服務(wù),如加載、通訊、互操作、管理等作為應(yīng)用軟件的運(yùn)行環(huán)境支撐軟件軟件開(kāi)發(fā)者和維護(hù)者為軟件系統(tǒng)的開(kāi)發(fā)和維護(hù)提供自動(dòng)和半自動(dòng)的支持提高軟件開(kāi)發(fā)效率和質(zhì)量討論:你所知道的各類軟件系統(tǒng)系統(tǒng)軟件應(yīng)用軟件支撐軟件內(nèi)容軟件軟件的概念、特點(diǎn)、組成及生命周期開(kāi)源軟件開(kāi)源軟件實(shí)踐,托管平臺(tái)和社區(qū),開(kāi)源許可證軟件質(zhì)量軟件質(zhì)量要素及模型當(dāng)前軟件特征的變化地位、運(yùn)行環(huán)境、形態(tài)、復(fù)雜性*2.1閉源軟件何為閉源軟件軟件代碼不對(duì)用戶開(kāi)放的一類軟件,購(gòu)買(mǎi)軟件時(shí)只提供可運(yùn)行軟件或服務(wù),沒(méi)有提供源代碼以許可證(License)的方式授權(quán)用戶使用軟件閉源軟件帶來(lái)的問(wèn)題無(wú)法掌握軟件內(nèi)部實(shí)現(xiàn)情況(如是否存在安全漏洞和惡意代碼),也無(wú)法對(duì)軟件進(jìn)行修改和完善,極大影響了開(kāi)發(fā)者的創(chuàng)新自由示例微軟的Windows、Office軟件,典型企業(yè):微軟、IBM、Oracle等2.2開(kāi)源軟件何為開(kāi)源軟件一種源代碼可以自由獲取和傳播的計(jì)算機(jī)軟件,其擁有者通過(guò)開(kāi)源許可證賦予被許可人對(duì)軟件進(jìn)行使用、修改和傳播海量、高質(zhì)量和有影響力的開(kāi)源軟件操作系統(tǒng)Linux、Ubuntu、麒麟、鴻蒙、OpenEuler等數(shù)據(jù)庫(kù)系統(tǒng)MySQL、PostgreSQL、MongoDB、Redis等開(kāi)發(fā)平臺(tái)Eclipse、Junit、SonarQube、Kubernetes等人工智能Tensorflow、Opencv、Caffe、Deeplearning4j等網(wǎng)絡(luò)安全Nmap、curityOnion、Suricata、Bro等……你能枚舉出其他的開(kāi)源軟件嗎?開(kāi)源軟件正逐步替代閉源軟件服務(wù)器操作系統(tǒng)領(lǐng)域Linux、FreeBSD等==》Unix桌面操作系統(tǒng)領(lǐng)域Linux、麒麟等==》Windows操作系統(tǒng)數(shù)據(jù)庫(kù)領(lǐng)域MySql、PostgreSQL等==》Oracle、DB2瀏覽器領(lǐng)域Chrome、Firefox等==》IE、開(kāi)發(fā)工具領(lǐng)域Eclipse、Sonar等

==》VisualStudio開(kāi)源軟件與閉源軟件的對(duì)決你能枚舉出其他方向的開(kāi)源軟件與閉源軟件的對(duì)決快速增長(zhǎng)的開(kāi)源軟件數(shù)量Github上的開(kāi)源軟件倉(cāng)庫(kù)()2023年Github上有3億多的開(kāi)源軟件倉(cāng)庫(kù)開(kāi)源軟件帶來(lái)的好處源代碼可自由傳播免費(fèi)使用降低成本激發(fā)創(chuàng)作者的熱情快速開(kāi)發(fā)搭建系統(tǒng)開(kāi)源軟件的推動(dòng)者政府組織NASA開(kāi)源200多軟件項(xiàng)目,美國(guó)和印度等政府鼓勵(lì)采用開(kāi)源軟件我國(guó)政府將開(kāi)源列入十四五國(guó)民經(jīng)濟(jì)和社會(huì)發(fā)展五年規(guī)劃綱要開(kāi)源組織Apache基金會(huì)、Linux基金會(huì)、Eclipse基金會(huì)、OpenSourceInitiative開(kāi)放原子開(kāi)源基金會(huì)(

)IT企業(yè)Google、Microsoft、IBM、Oracle等國(guó)外企業(yè)以及華為、騰訊、阿里巴巴、百度、浪潮、聯(lián)想等國(guó)內(nèi)企業(yè)軟件開(kāi)發(fā)者LinusTorvalds,Github上有6500多萬(wàn)的程序員Apache軟件基金會(huì)組織特點(diǎn)成立于1999年的非盈利性組織所管理的開(kāi)源軟件項(xiàng)目都遵循Apache許可證組織構(gòu)成管理有約2.27億行代碼和350多個(gè)開(kāi)源軟件項(xiàng)目擁有800多名基金會(huì)成員,4萬(wàn)多代碼貢獻(xiàn)者,48萬(wàn)個(gè)體代表性開(kāi)源軟件ApacheHTTPServer、Derby、Hadoop、Lucene、Tomcat、Ant、Maven等Google主導(dǎo)的開(kāi)源軟件項(xiàng)目移動(dòng)操作系統(tǒng)Android機(jī)器學(xué)習(xí)系統(tǒng)TensorFlow容器集群管理系統(tǒng)Kubernetes網(wǎng)站前端開(kāi)發(fā)工具集MDLWeb前端框架Angular基于Chrome瀏覽器的開(kāi)發(fā)環(huán)境SparkJava常用庫(kù)Guava、Java編譯器Traceur…..開(kāi)放原子開(kāi)源基金會(huì)

2020年6月在北京成立,由阿里巴巴、百度、華為、浪潮、360、騰訊等多家龍頭科技企業(yè)聯(lián)合發(fā)起開(kāi)源項(xiàng)目孵化平臺(tái)科技公益性服務(wù)機(jī)構(gòu)打造開(kāi)源開(kāi)放框架搭建國(guó)際開(kāi)源社區(qū)典型的開(kāi)源項(xiàng)目OpenHarmony(華為)TencentOSTiny(騰訊)……

/思考和討論開(kāi)源軟件會(huì)帶來(lái)什么好處?為什么那么多的企業(yè)和個(gè)人關(guān)注和參與開(kāi)源軟件?開(kāi)源軟件是如何開(kāi)發(fā)出來(lái)的?2.3開(kāi)源軟件托管平臺(tái)托管服務(wù)創(chuàng)建軟件倉(cāng)庫(kù)支持協(xié)同開(kāi)發(fā)軟件質(zhì)量保證……

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論