SA17225237 駱禎梓
原創(chuàng)作品轉(zhuǎn)載請注明出處
《軟件工程(C編碼實踐篇)》MOOC課程
http://mooc.study.163.com/course/USTC-1000002006
學(xué)習(xí)心得
本學(xué)期非常榮幸的選上了孟寧老師的高級軟件工程,相比于之前上過的課,本門課程配套了這一個線上課程,并且還有實驗,覺得這種模式才是大部分計算機(jī)專業(yè)課應(yīng)該效仿的,就像老師課上說過的,如果是傳統(tǒng)的課堂授課模式,那跟上政治課沒什么區(qū)別。
在這次線上課程中,我熟悉了 Linux 開發(fā)環(huán)境以及 git 的使用,了解了代碼規(guī)范的意義以及具體規(guī)范,學(xué)習(xí)了模塊化、接口化、回調(diào)函數(shù)、線程安全、可重用設(shè)計等豐富的內(nèi)容,課程時間雖然不長,但內(nèi)容確實是干貨滿滿的。
歷次實驗
實驗一:寫一個 hello world 小程序
- 實驗報告:https://www.shiyanlou.com/courses/reports/1290236
- 實驗代碼:https://github.com/LuoZhenzi/SE/tree/master/lab1
- 實驗收獲:在本次實驗熟悉了 Linux 命令行環(huán)境下的操作,以及 git 的基本操作,這些在以后的學(xué)習(xí)工作中都會有很大的用處。
實驗二:命令行菜單小程序 V1.0
- 實驗報告:https://www.shiyanlou.com/courses/reports/1291798
- 實驗代碼:https://github.com/LuoZhenzi/SE/tree/master/lab2
- 實驗收獲:本次實驗規(guī)范了自己的代碼風(fēng)格,進(jìn)一步熟悉了 git 操作和 Linux 命令行環(huán)境。
實驗三:內(nèi)部模塊化的命令行菜單小程序 V2.0
- 實驗報告:https://www.shiyanlou.com/courses/reports/1293030
- 實驗代碼:https://github.com/LuoZhenzi/SE/tree/master/lab3
- 實驗收獲:通過本次實驗,學(xué)習(xí)到了代碼的業(yè)務(wù)邏輯和數(shù)據(jù)存儲之間的分離,即將系統(tǒng)抽象為兩個層級:菜單業(yè)務(wù)邏輯和菜單數(shù)據(jù)存儲。
實驗四:用可重用的鏈表模塊來實現(xiàn)命令行菜單小程序 V2.5
- 實驗報告:https://www.shiyanlou.com/courses/reports/1295855
- 實驗代碼:https://github.com/LuoZhenzi/SE/tree/master/lab4
- 實驗收獲:這次實驗中,我們設(shè)計了一個接口規(guī)范、通用的模塊,并將它集成到我們的程序中,使得程序更加的模塊化。
實驗五:用 callback 增強鏈表模塊來實現(xiàn)命令行菜單小程序 V2.8
- 實驗報告:https://www.shiyanlou.com/courses/reports/1298572
- 實驗代碼:https://github.com/LuoZhenzi/SE/tree/master/lab5
- 實驗收獲:這次實驗中,我們學(xué)到了如何使用 callback 函數(shù)使得接口更加的通用。
實驗六
- 這一周的課程學(xué)習(xí)的是函數(shù)的可重入性和線程安全的內(nèi)容,只有一次隨堂測驗,沒有進(jìn)行實驗。
實驗七:將 menu 設(shè)計為可重用的子系統(tǒng)
- 實驗報告:https://www.shiyanlou.com/courses/reports/1303767
- 實驗代碼:https://github.com/LuoZhenzi/SE/tree/master/lab7
- 實驗收獲:在這次實驗中,我們?yōu)?menu 子系統(tǒng)設(shè)計接口,并編輯了 test.c 文件來實現(xiàn)原來的功能,在編譯過程中,我們使用 make 和 make clean 來編譯程序和清理自動生成的文件,避免輸入冗長的編譯命令,提高效率,在 test.c 中,我們自定義了帶參數(shù)的命令,學(xué)習(xí)到了命令行參數(shù)的用法。
學(xué)習(xí)總結(jié)
時間過得很快,短短幾周的學(xué)習(xí)馬上就要結(jié)束了,作為本科非計算機(jī)方向的學(xué)生,這門課程對我的幫助非常大。
在這幾周的課程中,我感覺自己真正開始入門了軟件工程這一學(xué)科,在之前的學(xué)習(xí)中,我關(guān)注的僅僅是怎么樣編寫代碼來實現(xiàn)某一目的,殊不知這種程度距離軟件工程的要求還離得很遠(yuǎn),在學(xué)習(xí)了這門課程之后,我明白了軟件開發(fā)不僅僅是要實現(xiàn)某一功能,還要求我們在編寫代碼時注意代碼的規(guī)范,在軟件設(shè)計的過程中注意模塊化、接口、信息隱藏、增量開發(fā)、抽象、一般化等原則,這對于今后的學(xué)習(xí)工作都有著深遠(yuǎn)的意義。
然而,課程時間確實也太短了,再加上自己并非科班出身,感覺自己對軟件工程這一學(xué)科的了解只是冰山一角,自身基礎(chǔ)的薄弱也導(dǎo)致了自己對很多東西學(xué)習(xí)的并不透徹,希望在今后的學(xué)習(xí)工作中能夠繼續(xù)加強自己的能力。
最后,感謝孟寧老師在本學(xué)期對我的幫助。