软件工程实践总结——程序员的自我修养
| 這個作業要求在哪里 | 軟件工程實踐總結&個人技術博客 |
| 這個作業的目標 | 課程回顧與總結 個人技術總結 |
| 其他參考文獻 |
文章目錄
- 課程回顧與總結
- 寒假博客鏈接
- 問題回顧
- 問題一
- 問題二
- 問題三
- 問題四
- 問題五
- 每個階段的收獲
- 需求階段
- 設計階段
- 實現階段
- 測試階段
- 發布階段
- 心得
- 自我評估
- 個人技術總結
課程回顧與總結
寒假博客鏈接
軟件工程寒假作業博客
問題回顧
問題一
2.3 學生與職業程序員的區別?
我認為學生在項目開發中,主要專注于代碼編寫,不必考慮外在因素,而職業程序員需要知道自己的東西最終將被許多用戶使用,并且需要注意其健壯性,易用性,各種性能指標,甚至是代碼的后續可維護性。軟件開發的過程需要經過設計、評審、編碼、測試一系列完整的工作流程,才能確保開發的項目符合預期,不喜歡停留在過去的技術,而是更喜歡鉆研前沿的新技術,因此有如機器學習,計算機視覺等前沿領域,更多的是學生和學術界在研究。職業程序員需要遵守嚴格的代碼規范,并且需要與其同事一起合力完成項目,相互要求自己,以共同提高代碼質量和產品質量。
問題二
3.1 對于一名工程師而言,究竟應該是更”專“一點好,還是更”廣“一點好呢
我認為應該在保持“廣”的前提下,努力地找到自己“專”的地方。廣泛的技術面和知識體系可以為工程師在遇到問題時提供更多的解決方案,而在這種前提之下,專業的技術則可以迅速的定位問題的所在之處,畢竟不是所有問題都有對應的文檔來解決,而專業的工程師人才可以在這種情況中脫穎而出。
問題三
5.3 在團隊項目中,個人應該如何選擇或者接受團隊的工作分配?
首先個人應該了解項目的大體結構,同時要了解各工作分配的模塊結構,大致了解各模塊需要的技術棧,并與自身已學技術相比較,如果大多符合,則可納入自身選擇的候選項中。在自身能力足夠完成多個模塊的內容,要依據各模塊所需技術棧中自己所缺的部分,盡量選擇需要學習新技術的模塊,以增強自己的硬實力,但模塊的所缺技能不可過多,以免拖慢團隊項目的工作進度。
問題四
11.5.4 關于多人合作中的代碼如何同步?
多人合作時首先得先注意代碼規范的問題。其次,在用git等協同軟件時,先把各個子模塊的工作分配給指定的成員,分模塊進行開發,以減少合并時產生沖突的次數,同時在開發一個全新的功能時創建一個全新的分支,這樣可以保證自己的功能分支在開發時,不會被其他人影響到,在開發完成后進行合并或變基,每次push到遠程倉庫之前,都先拉取最新的代碼,然后再進行合并和推送。
問題五
3.4 低層次的問題能依賴工具解決么?
我認為在剛剛入門的時候,可以先使用工具進行解決,但一定要清楚低層次的問題發生的原因,不可完全依賴于工具,因為工具底層也是封裝了一些解決方案,優質的程序員一定要清楚問題真正的解決方案,才可能舉一反三,否則當工具停止維護或工具本身出現兼容性問題,問題就不能解決了。
每個階段的收獲
需求階段
? 需求階段需要明確產品的功能和界面,需要討論完備,避免對于功能的理解產生偏差,對于一些復雜的業務邏輯,不能只停留在腦海中進行推演,應該將完整的業務邏輯通過流程圖的形式表現出來,否則在開發中期就會因為業務邏輯順序問題導致前后端出現分歧,不停的確認對方的需求,影響后續開發的速度,通過本次軟工實踐,意識到了需求分析的重要性,也學會了需求分析的基本流程。
設計階段
?學習到了軟件工程開發中必需的原型設計和接口設計流程。接口設計階段主要就是進行系統設計和數據庫設計了,根據需求階段提出的產品功能,分析其必需的接口,然后再進行對應的數據庫設計和系統設計,這樣在接口設計階段也能夠更加深入地了解產品的功能,在原型設計階段就需要根據業務邏輯流程圖和設計的接口對各種UI和交互事件做詳細的描述,這樣不僅減少了前端在開發時推倒重做,也明確了后端對接口的詳細設計。設計階段的完善與否,直接導致了后面開發的效率高低,經歷過一個優秀的設計階段,確實能夠加快后續開發的速度。
實現階段
?構建了一個小型的后端開發腳手架,在多人協同開發的過程中,很明顯的感到了優秀的架構顯著地提高了后端的開發效率,代碼的合并以及任務的分配都十分和諧,沒有遇到什么異常情況,同時也加深了對一些后端中間件的理解,接觸了一些其中很少用但是很好用的接口。項目的后期也深刻體會到了與前端聯調時遇到的困難,認識到成員之間的交流真的很重要。
測試階段
?了解到了測試的重要性,不論是模塊開發時的單元測試,還是聯調時的系統測試,都是發現問題的重要階段,好的測試可以減少不必要的軟件缺陷,同時在此次實踐中,我還學會了使用postman、jmeter等測試工具,測試要貫穿軟件開發的整個生命周期,越早測試越早發現軟件的缺陷,修復起來就越輕松。
發布階段
?學習了打包部署的基本步驟,知道了項目部署到服務器的流程,以及問卷調查用戶的使用反饋。
心得
個人項目:深入學習了 Java 的輸入輸出流和管道相關的知識,以及多線程的使用,也認識到了多線程編程的困難,很容易忘記需要保證變量的可見性。掌握了對JSON數據的解析以及一些測試方法,但是編碼能力還有待提高。
結對編程:學會了原型設計的流程,感受到了溝通的重要性,以及在項目的計劃階段就要考慮到工作量、個人能力以及時間的安排和管理,收獲主要就是學習了原型設計工具的使用以及vue2的深入學習。
團隊項目:第一次參與多人的團隊開發,也是第一次參與了一款軟件從設計、編碼到發布的全過程。了解了團隊如何分工、軟件的開發流程、也逐漸理解了軟件工程。自己的知識永遠是不夠用的,任何時候都需要不斷學習和向他人學習,積累了不少開發經驗。
自我評估
| 1 | 理解軟件工程師的職業道德規范和實踐要求,了解國情社情民情,理解軟件產品對社會、健康文化等影響,樹立積極向上的軟件開發理念 | 80 | 關于軟件產品對社會、健康文化等方面的影響可能沒法考慮的十分全面。 |
| 2 | 掌握需求分析的全過程,能辨別客戶表述的多樣化要求,熟練使用需求表達工具,能夠規范、準確地表達客戶的需求,構建需求分析模型。 | 90 | 需求分析階段是經歷數次會議共同討論后確定產品的需求,最終我們成功地確定了需求,繪制出了原型界面。 |
| 3 | 掌握軟件開發的全過程,遵循體系結構設計方法和基本設計原則,通過正式的技術評審,完成從體系結構設計模型、數據設計模型和構件級設計模型,形成面向高效可靠的服務組件設計方案或軟件系統設計方案。 | 90 | 設計開發階段,由我進行后端項目架構的設計和編碼,提高了后端小組開發人員的開發效率。 |
| 4 | 能夠執行從組件到軟件系統的技術評測,具備設計模型的評判能力,具有創新設計意識,能夠優選設計方案。 | 85 | 軟件系統的技術評測主要是通過軟件評測作業,基本了解了軟件系統相關的技術評測方式 |
| 5 | 遵循軟件開發各階段文檔標準,采用規范的表達,掌握需求規格說明書、系統設計說明書、系統測試報告等文檔撰寫方法,具備與業界同行交流能力。 | 85 | 團隊項目中,參與了后端單元測試、系統設計部分,系統測試部分的文檔編寫,但是因為沒有對比參照,不能確定是否與業界同行進行交流。 |
| 6 | 具有良好的團隊意識和合作技能,能夠與其他成員開展有效的溝通和協作;能夠組織、協調或指揮團隊開展工作。 | 90 | 在此次團隊項目中,作為后端開發組組長,給開發成員進行任務的分配、代碼的復審、協調各模塊開發進度,積極與其他成員進行交流和協作。 |
| 7 | 能夠辨別具體軟件項目管理中涉及的構成要素,掌握軟件規模和工作量的估算方法,能夠選擇合適的工具規劃軟件進度并對項目管理過程進行配置,具備初步的管理復雜軟件工程項目的能力。 | 90 | 進一步學習了git中的合并變基等功能進行協同開發,還使用了teambition進行任務的分配和管理。 |
個人技術總結
個人技術總結——SpringSecurity基于JWT的動態權限驗證
概述:絕大多數的軟件應用都離不開權限安全,但是權限安全相關的代碼在每個項目中又十分類似,因此我就編寫了一個基于SpringSecurity的支持動態權限驗證的權限安全模塊的腳手架,并應用在我們的項目之中。
總結
以上是生活随笔為你收集整理的软件工程实践总结——程序员的自我修养的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汉字拼音相互转化(QT)
- 下一篇: 计算机网络中 mac地址的二进制位数,《