国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
現(xiàn)代軟件工程講義 源代碼管理

現(xiàn)代軟件工程課件


源代碼管理   -- 以實(shí)踐促進(jìn)學(xué)習(xí)


移山軟件學(xué)院的學(xué)生果凍問老師: 為啥需要源代碼管理? 我自己寫代碼多爽,別人要,就用QQ 傳過去好了。


老師問:原始人怎么建房子?


果凍:或者找一個(gè)洞,或者自己挖一個(gè)洞,上面搭個(gè)棚子擋雨...


老師問:現(xiàn)代人怎么建房子?


果凍:那就要有樓房,當(dāng)然還要搭腳手架,還要升降機(jī),起重機(jī),等等工具。


老師問:如果原始人穿越到現(xiàn)在,要蓋房,是否可以不要腳手架,大家直接搬磚從一樓砌墻,然后站在一樓砌二樓,然后站在二樓砌三樓... 砌到十樓么?


果凍:這有很多問題:


  - 人力搬磚效率底下,人的體力有限,必須有工具幫忙。


  - 如果墻砌歪了,沒有人來看,砌到五樓才發(fā)現(xiàn)從二樓開始就歪了,怎么辦?


  - 現(xiàn)代房屋有各種成型的模塊(門框,窗框,各種預(yù)制板,各種管道線路),沒有工具,光憑人力根本搞不定。


老師:對(duì),我們需要腳手架,升降機(jī),起重機(jī),水泥攪拌車,各種檢測(cè)工具來保證一個(gè)大樓能順利建好。 我們說過,


  軟件 = 程序 + 軟件工程


  軟件的質(zhì)量 = 程序的質(zhì)量  + 軟件工程的質(zhì)量 


軟件工程的質(zhì)量要靠軟件工具和軟件流程來保證, 大家看過正在建設(shè)中的高樓, 半完工的樓頂上矗立著巨大的塔吊。這個(gè)塔吊不是用戶需求的一部分 (用戶希望完工的樓房上面沒有塔吊?。?,但是,這是建筑工程上不可缺少的環(huán)節(jié),那么怎么把塔吊順利地安裝上,隨著樓房的增高而增高動(dòng)畫,  迪拜塔的建設(shè)),讓塔吊高質(zhì)量地工作,怎么做安全檢查,防止它倒下來? 這就是工程的要求。


軟件工程中,也有類似腳手架,塔吊這樣的工程系統(tǒng),工具和流程。 軟件的源代碼管理工具(source code control system),加上構(gòu)建系統(tǒng) (build system), 能保證一個(gè)復(fù)雜軟件能在多個(gè)角色,多個(gè)團(tuán)隊(duì)的合作下,按時(shí)以合適的質(zhì)量發(fā)布。 如果你寫一個(gè)Hello World 程序, 當(dāng)然不需要這些工具, 就像你用兒童積木搭房子過家家,你自己高興,但這不是建筑工程。



源代碼管理的10 個(gè)實(shí)踐問題:





源代碼管理的重要性無需贅述,但是在實(shí)際中,  很多團(tuán)隊(duì)都是小和尚念經(jīng) - 有口無心。  嘴上說重要,但是實(shí)際上還是通過QQ 傳遞源代碼,或者演示一結(jié)束, 源代碼立刻沒有可以工作的版本。  我們請(qǐng)各個(gè)團(tuán)隊(duì)舉出例子,說明自己是用什么樣的源代碼系統(tǒng) (subversionCVS, github, TFS, etc) ,如何處理團(tuán)隊(duì)開發(fā)中可能會(huì)遇到的各種問題。如果團(tuán)隊(duì)還是用QQ 傳遞代碼,請(qǐng)說明QQ 如何解決下列的問題。


每個(gè)團(tuán)隊(duì)寫一個(gè)博客,回答下列問題,(每個(gè)回答要加上截屏顯示):


0. 在吹牛之前,先回答這個(gè)問題: 如果你的團(tuán)隊(duì)來了一個(gè)新隊(duì)員,有一臺(tái)全新的機(jī)器, 你們是否有一個(gè)文檔,只要設(shè)置了相應(yīng)的權(quán)限,她就可以根據(jù)文檔,從頭開始搭建環(huán)境,并成功地把最新、最穩(wěn)定版本的軟件編譯出來,并運(yùn)行必要的單元測(cè)試? (在這過程中,不需要和老隊(duì)員做任何交流)



1. 你的團(tuán)隊(duì)的源代碼控制在哪里?用的是什么系統(tǒng)?如何處理文件的鎖定問題?

   場景: 程序員果凍正在對(duì)幾個(gè)文件進(jìn)行修改,實(shí)現(xiàn)一個(gè)大的功能, 這時(shí)候,程序員小飛也要改其中一個(gè)文件,快速修復(fù)一個(gè)問題。怎么辦?

    一個(gè)代碼文件被簽出 (check out) 之后,另一個(gè)團(tuán)隊(duì)成員可以簽出這個(gè)文件,并修改,然后簽入么?

   有幾種設(shè)計(jì),各有什么優(yōu)缺點(diǎn)?

   例如,簽出文件后,此文件就加鎖,別人無法簽出;  或者, 所有人都可以自由簽出文件



2. 如何看到這個(gè)文件和之前版本的差異? 如何看到代碼修改和工作項(xiàng) (work item),缺陷修復(fù) (bug fix) 的關(guān)系。

   場景: 程序員果凍看到某個(gè)文件被修改了,他怎么看到這個(gè)文件在最近的修改究竟改了哪些地方? (例子

   場景: 程序員果凍看到某個(gè)文件在最新版本被改動(dòng)了100 多行, 那么和這100多行對(duì)應(yīng)的其他修改在什么文件中呢? 這個(gè)修改是為了解決哪些問題而作的呢? 那些問題有工作項(xiàng) (work item,issue),或者bug 來跟蹤么?


3. 如果某個(gè)文件在你簽出之后已經(jīng)被別人修改,并且簽入了,那么你在簽入你的修改的時(shí)候, 如何合并不同的修改(merge)? 你用了什么工具來幫助你?


4. 你有20個(gè)文件都是關(guān)于同一個(gè)功能的修改,你要如何保證這些文件都同時(shí)簽入成功(修改的原子性),或者同時(shí)簽入不成功?

    場景: 程序員果凍要簽入 20 個(gè)文件,他一個(gè)一個(gè)地簽入, 在簽入完5 個(gè) .h 文件之后, 他發(fā)現(xiàn)一些 .cpp 文件和最新的版本有沖突,他正在花時(shí)間琢磨如何合并... 這時(shí)候, 程序員小飛從客戶端同步了所有最新代碼, 開始編譯, 但是編譯不成功 - 因?yàn)橛胁煌降?.h 文件和 .cpp 文件!  這時(shí)候, 別的程序員也來抱怨同樣的問題,果凍應(yīng)該怎么辦?


5. 你的PC 上有關(guān)于三個(gè)功能的修改, 但是都沒有完成,有很多文件處于半完工的狀態(tài),這時(shí)你要緊急修改一個(gè)新的 bug,如何把本地修改放一邊,保證在干凈的環(huán)境中修改這個(gè) bug, 并成功地簽入你的修改 --- changelist management。


6. 規(guī)范操作和自動(dòng)化

    你的團(tuán)隊(duì)規(guī)定開發(fā)者簽入的時(shí)候要做這些事情:

    - 運(yùn)行單元測(cè)試,相關(guān)的代碼質(zhì)量測(cè)試。

    - 代碼復(fù)審 (要有別的員工的名字)

    - 和這次簽入相關(guān)的issue 編號(hào), 任務(wù)/task, 缺陷/bug 編號(hào),等等, 以備查詢。

    請(qǐng)問你的團(tuán)隊(duì)有這樣的自動(dòng)化工具讓開發(fā)者方便地一次性填入所有信息然后提交么?  (高級(jí)功能, 代碼提交之后, 相關(guān)bug 的狀態(tài)會(huì)改動(dòng)為  “fixed”, 并且有鏈接指向這次簽入。)

    例子。


7. 如何給你的源代碼建立分支?

    場景:你們需要做一個(gè)演示,所以在演示版本的分支中對(duì)各處的代碼做了一個(gè)臨時(shí)的修改, 同時(shí),主要的分支還保持原來的計(jì)劃開發(fā)。 你們?cè)趺醋龅降模?在演示之后,演示版本的有些修改應(yīng)該合并到主分支中,有些則不用,你們是怎么做到的?

    場景: 你們的軟件發(fā)布了,有很多用戶,一天,一個(gè)用戶報(bào)告了一個(gè)問題,但是他們是用某個(gè)老版本,而且沒有條件更新到最新版本。 這時(shí)候,你如何在本地構(gòu)建一個(gè)老版本的軟件,并試圖重現(xiàn)那個(gè)問題?


8. 一個(gè)源文件,如何知道它的每一行都是什么時(shí)候簽入的,為了什么目的簽入的 (解決了哪個(gè)任務(wù),或者哪個(gè)bug)?

   場景: 一個(gè)重要的軟件歷經(jīng)幾年,幾個(gè)團(tuán)隊(duì)的開發(fā)和維護(hù),忽然出現(xiàn)在某個(gè)條件下崩潰的事故, 程序員果凍經(jīng)過各種debug手段,發(fā)現(xiàn)問題是在某一個(gè)文件中有一行代碼似乎顯然出了問題, 但是這個(gè)模塊被很多其他模塊調(diào)用,  這行代碼是什么時(shí)候,為了什么目的,經(jīng)過誰簽入的呢?  如果貿(mào)然修改, 會(huì)不會(huì)導(dǎo)致其他問題呢?  怎么辦?


9. 如何給一個(gè)系統(tǒng)的所有源文件都打上標(biāo)簽,這樣別人可以同步所有有這個(gè)標(biāo)簽的文件版本?

   代碼每天都在變, 有時(shí)質(zhì)量變好,有時(shí)變差,我們需要一個(gè) Last Known Good (最后穩(wěn)定的好版本) 版本, 這樣新員工就可以同步這個(gè)版本, 我們?nèi)绻枰l(fā)布,也是從這個(gè)版本開始。  那么如何標(biāo)記這個(gè) Last Known Good 版本呢? 


10. 你的項(xiàng)目的源代碼和測(cè)試這些代碼的單元測(cè)試,以及其他測(cè)試腳本都是放在一起的么? 修改源代碼會(huì)確保相應(yīng)的測(cè)試也更新么?你的團(tuán)隊(duì)是否能部署自動(dòng)構(gòu)建的任務(wù)?

    在簽入之前,程序員能否自動(dòng)在自己的機(jī)器上運(yùn)行自動(dòng)測(cè)試,以保證本地修改不會(huì)影響整個(gè)軟件的質(zhì)量?

    在程序員提交簽入之后,服務(wù)器上是否有自動(dòng)測(cè)試程序, 完成編譯,測(cè)試,如果成功,就簽入,否則,就取消簽入?

    團(tuán)隊(duì)是否配置了服務(wù)器,它自動(dòng)同步所有文件,自動(dòng)構(gòu)建,自動(dòng)運(yùn)行相關(guān)的單元測(cè)試,碰到錯(cuò)誤能自動(dòng)發(fā)郵件給團(tuán)隊(duì)


作業(yè)題,分析比較各種軟件構(gòu)建環(huán)境:

就像一個(gè)廚師要分析各種廚房用具,挑選適合自己的工具組合, 一個(gè)軟件團(tuán)隊(duì)也要挑選適合自己的源代碼管理和其他配套工具,請(qǐng)選擇至少三種,比較各自的優(yōu)點(diǎn)缺點(diǎn),成本:



  • github

  • https://gitee.com/education 

  • coding.net 

  • code.csdn.net

  • gitcafe.com

  • www.visualstudio.com

  • code.taobao.org

  • Visual Studio Team Foundation Server

  • gitblit, 在Windows系統(tǒng)下構(gòu)建 git 服務(wù),帶網(wǎng)頁端管理…

  • Visual Source Safe (VSS)

  • 自己搭建系統(tǒng)




本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
我的天!史上最爛的項(xiàng)目:苦撐12年,600多萬行代碼
600萬行代碼!計(jì)劃兩年結(jié)果做了十二年,直到負(fù)責(zé)人被丟進(jìn)監(jiān)獄
TFS源代碼管理的8大注意事項(xiàng)
源代碼管理十誡
給自己辛苦編寫的Python源代碼帶個(gè)保護(hù)套,避免泄露!
國外|老外的 12 條測(cè)試讓你更好地編程
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服