現(xiàn)代軟件工程(在線實訓版)課件 0 課程概述及學習要求;Git介紹及使用_第1頁
現(xiàn)代軟件工程(在線實訓版)課件 0 課程概述及學習要求;Git介紹及使用_第2頁
現(xiàn)代軟件工程(在線實訓版)課件 0 課程概述及學習要求;Git介紹及使用_第3頁
現(xiàn)代軟件工程(在線實訓版)課件 0 課程概述及學習要求;Git介紹及使用_第4頁
現(xiàn)代軟件工程(在線實訓版)課件 0 課程概述及學習要求;Git介紹及使用_第5頁
已閱讀5頁,還剩91頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

注釋行數(shù):

2706;

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

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

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

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

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

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

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

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

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

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

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

Workspace:工作區(qū)Index/Stage:暫存區(qū)Repository:倉庫區(qū)(或本地倉庫)Git的倉庫構成遠端倉庫本地端倉庫本地倉庫暫存區(qū)工作區(qū)Remote:遠程倉庫Git版本管理的基本概念倉庫(Repository)軟件所有文件的完整修訂歷史版本(Revision)代碼庫的編號方案,如Tag0.1分支(Branch)對代碼庫并行修改時的代碼庫副本如master,develop,branch1,…提交(Commit)對分支的一次修訂下拉(Pull)將遠程的一個分支讀取并保存到本地分支推送(Push)將本地分支代碼發(fā)送到遠程某個分支合并(Merge)將對相同文件在不同分支的修改合并到一個分支中沖突(Conflict)當兩個分支中存在對同一文件的不同修改,并試圖合并這兩個分支時,就會發(fā)生沖突Tag0.1Tag0.2Tag1.0Commit#ab892nCommit#lm2671spullpushmaster和develop是標準分支,master是缺省的主分支Git各項操作本地倉庫暫存區(qū)工作區(qū)Git分支的理念和操作使用分支意味著你可以把你的工作從開發(fā)主線上分離開來,以免影響開發(fā)主線masterbranch2branch1createmergecommitcreatemergecommit分支本地操作分支本地操作Git的使用分支管理流程:初始化過程(組長)1創(chuàng)建版本庫(默認master分支),push初始代碼2創(chuàng)建遠程develop分支分支管理流程:基本過程(組員)3克隆代碼,切換到develop分支4新建自己的分支my_branch(各組員分支名不同)5修改my-branch:正常開發(fā),修改完成后將修改的內(nèi)容推送到遠程my_branch分支合并分支:基本過程(組長)6切換develop分支,pull代碼7合并組員的分支(my_branch)到develop分支8解決沖突,然后將合并好的develop分支推送到遠程9將develop分支合并到master分支(這一步可以按實際需求,master上一般為穩(wěn)定版本)組長組員創(chuàng)建版本庫push代碼創(chuàng)建develop分支創(chuàng)建自己分支masterdevelop自己分支自己分支創(chuàng)建自己分支提交、push代碼提交、push代碼合并分支解決沖突合并分支合并developPull最新代碼Pull最新代碼1.創(chuàng)建本地版本庫命令:gitinit在執(zhí)行

溫馨提示

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

最新文檔

評論

0/150

提交評論