北航2022软件工程第一次作业——阅读、思考、调研、实践
軟件工程第一次閱讀作業
| 這個作業屬于哪個課程 | 北京航空航天大學2022春季軟件工程(羅杰 任健) |
| 這個作業的要求在哪里 | 個人閱讀作業-閱讀和調研 |
| 我在這個課程的目標是 | 學習軟件工程的基礎知識和基本流程,通過團隊合作開發一個較大型的軟件工程項目并爭取能夠上線 |
| 這個作業在哪個具體方面幫助我實現目標 | 1、通過閱讀《構建之法》來了解軟件工程的全部流程和一些基本概念;2、調研git、持續集成/部署工具來幫助以后更好地開展協作 |
閱讀《構建之法》后的思考與疑問
1、證明軟件可繼續發展
能證明所開發的軟件是可以維護和繼續發展的。例如,對用戶需求的分析有詳細的文檔說明,包括對將來發展的分析和計劃。
——P17
? 我贊同軟件開發需要有長遠規劃的觀點,因為一個產品不可能永遠停留在一個階段,要想成功一定需要緊跟時代的步伐。
? 但是在最初開發的階段“證明”一個軟件是可以繼續發展的似乎不太容易。也許在當前的社會背景下,某種應用能夠取得不錯的市場,但是當社會的風向標轉變時,一個比較龐大的軟件很難做到迅速轉型,而其最初指定的持續發展的目標方案在這時候就不一定行得通了。所以我對書中的這段描述有些疑惑。
2、軟件工程師的成長
初級軟件工程師如何成長呢?我認為有下面幾種成長:
1、積累軟件開發相關的知識,提升技術職能。
2、積累問題領域的知識和經驗。
3、對通用的軟件設計思想和軟件工程思想的理解。
4、提升職業技能。
5、實際成果。
——P45
? 作者在文中提到的軟件工程師的這幾種成長,側重了不同的維度,有專業技能、職業技能、思維技能等,那請問這幾種維度是否有主次之分?哪一種或哪幾種顯得更為重要?
? 另外,像第四點的職業技能,似乎比較抽象,這方面的能力的提升有時候并不容易(相比于技術上的能力通過一般的學習和理解能夠掌握來說),那請問這應該如何快速提升呢?
3、爵士樂模式與敏捷開發
爵士樂模式有以下特點:
- 不靠譜(演奏時沒有譜子)
- 沒有現場指揮
- 也有模式
- 人數較少
這看上去跟“敏捷的開發模式”有點類似。
——P94
? 首先,我不認為這和敏捷的開發模式類似,在書中的第六章詳細介紹了敏捷流程,其中一開始就介紹的敏捷開發的原則中有許多方面與爵士樂模式相違背。
? 其一,敏捷開發中,文檔還是非常重要的,并不是像爵士樂模式中的即興發揮就可以;另外,爵士樂模式的沒有指揮似乎在敏捷開發中也行不太通,一個開發團隊還是需要一個leader的。因此我認為這兩者并不是“類似”的關系。
4、敏捷流程與28定律
程序員寫完功能的時候,我們感覺好像項目完成了80%,殊不知后面的20%往往要花費80%的時間,敏捷流程沒有明確表明到底何人何時以何種優先級來完成這20%的任務。
——P115
? 我們的課程采用的是敏捷開發流程,那么如果在開發過程中遇到了這20%的任務,應該如何處理呢?如果我是項目負責人的話,當開發時間有限時,我也許不會去考慮那20%;如果還有時間,我可能也會選擇去提升優化產品的其他方面(如推廣等)而不是死磕這20%。不知道我這樣的做法在敏捷開發中是否合理?
5、PM所需要的的能力
成為一個合格的PM,需要哪些能力呢?
——P188
? 結合文中這段話后面提到的PM的具體任務,我認為PM所需要的的能力還應該包括“溝通與號召”能力,PM作為項目經理,需要得到成員和客戶的支持,如何得到支持,那就是經常與成員和客戶溝通,了解雙方的需求,同時有一定的號召力能讓項目成員一起向著目標前進。因此,我認為文中這部分的介紹還有上面這些可以補充的地方。
源代碼版本管理軟件的調研
GitHub
GitHub是世界上最大的代碼存放網站和開源社區,是通過Git進行版本控制的軟件源代碼托管服務平臺,用戶可以創建公開或私有的代碼倉庫,此外,還支持文檔、問題追蹤系統、Wiki、任務列表、創建靜態網站或博客等功能。
GitLab
與GitHub相似,GitLab是一款基于 Git 的完全集成的軟件開發平臺,通常用于企業團隊內部協作開發。GitLab也具有wiki以及在線編輯、issue跟蹤功能、CI/CD 等功能。
Gitee
Gitee(碼云)是開源中國于2013年推出的基于Git的代碼托管和協作開發平臺,提供中國本土化的代碼托管服務,是中國境內規模最大的代碼托管平臺。
Bitbucket
Bitbucket是Atlassian公司提供的一個基于web的版本庫托管服務,支持Mercurial和Git版本控制系統,它提供的服務類似于GitHub(僅支持Git),目標用戶是開發專有軟件的專業開發者。
相同點
作為git版本控制管理軟件,他們的功能都有一定的相似之處,具體來說,都會提供一下幾種服務:
- 代碼的儲存、克隆和復制
- 拉取請求
- 文檔系統
- 內聯編輯
- 問題跟蹤
- 安全性保障
- ……
不同點
| 導入種類 | Git、SVN、HG等 | Git | Git、SVN | Git、CodePlex、SVN、HG等 |
| 收費情況 | 私有倉庫和企業版收費 | 企業內部,收費 | 企業版先試用再收費 | 免費和付費服務都有 |
| 倉庫容量 | 不超過1GB | 可以自定義 | 社區版500M | 沒有限制 |
| 使用人數 | 7300萬+(截至2021年) | 未知 | 800萬+(截至2021年) | 500萬+(截至2020年) |
持續集成/部署工具的調研
GitLab CI
將一份生成全排列的python代碼上傳至GitLab倉庫,并編寫 .gitlab-ci.yml ,進行CI測試。
代碼倉庫為:
GitLab CI Demo By GCY
測試結果為:
編譯成功
Job通過
GitHub Action
將同樣的一份代碼上傳至GitHub倉庫,并編寫 python-package.yml ,進行測試。
代碼倉庫為:
GitHub Action Demo By GCY
測試結果為:
正確輸出
workflow成功運行
使用過后的看法
1、工具的特點
GitLab的CI/CD可將每次運行分為多個Job進行處理,并且對每個job能夠反饋成功(passed)或失敗(failed)的標志,進入每一個job后可以看到運行的詳細信息,用戶可以根據給出的信息找到錯誤的位置。
GitHub的Action更為便捷,許多Action可以復用(可以找到其他開發者編寫的Action,稍加改動以適應自己的項目),其可以在云端或者本地運行,并且進入job的詳情頁面也能看到運行的信息。
2、使用場景
當前,GitLab CI/CD的關注度較高,但GitHub Action的開源性更好。由于GitLab CI/CD的管理更加簡便,因此對于中小型項目或較簡單的項目更推薦使用。而GitHub Action的插件較多,更為復雜,因此對于大型項目或是功能較為復雜的項目更為合適。
總結
以上是生活随笔為你收集整理的北航2022软件工程第一次作业——阅读、思考、调研、实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GNU操作系统和操作系统内核和MinGW
- 下一篇: 重要的GMaps对象与接口