這個作業屬於哪個課程 | 2021春軟件工程實踐S班 (福州大學) |
---|---|
這個作業要求在哪里 | 軟件工程實踐總結&個人技術博客 |
這個作業的目標 | 完成個人實踐總結以及個人技術博客 |
其他參考文獻 |
火車駛向雲外,夢安魂於九霄 —— 軟件工程實踐總結&個人技術博客
目錄
課程回顧與總結
以前提問題的博客鏈接
對自己曾經提出的問題進行解答
問題一:在非常小規模的代碼時是否還需要在單元測試上花費大量的時間提高覆蓋率呢?
- 對問題一的解釋和闡明:對我困惑的解釋是,我認為即使是小規模的代碼,任然需要花費時間去提高覆蓋率,實踐中小規模的代碼提高覆蓋率其實花不了太多時間,而且這樣的時間花費所獲得的的收益是很大的,大規模的代碼更加需要花大量時間測試了,不然bug難以發現,越遲發現問題對項目帶來的代價越大。而在軟件開發中,測試所占的時間本來就應該比開發時間長。這學期不僅通過實踐和軟工理論課程的學習,還開設了專門一科“軟件質量和測試”這門課程,從中我了解更多關於測試的知識,對這個問題不再有疑惑,從實踐中因為一個小bug搞得自己焦頭爛額的情況也有發生過,所以在今后的學習工作生活中,我會對軟件測試更加重視。
問題二:就像之前提出的團隊模式的選擇一樣,既然PM的作用十分重要,我們在小組實踐時需不需要注重PM能力的培養呢?
- 對問題二的解釋和闡明:我認為對PM能力的培養真的非常重要。因為我在這次實踐中也是第一次擔任了組長只有的身份,本身對於管理能力和交流能力是有欠缺的,但是團隊就是需要這么一個角色,能夠明白所有人的需求,能夠幫所有人之間進行溝通協調,能夠對整個項目的進步有一個把控。在這次實踐中有的小組和對以前學長學姐的實踐博文瀏覽學習過程中發現,確實有發生由於各種各樣的原因導致alpha沖刺原定計划沒有實現,沒有一個可以運行起來的成品交付這樣的情況。有好的PM能力,在團隊中把控着進度還是非常重要的。
問題三:在以后的從業生涯中,如果想創新是把握機會還是刻苦攻堅技術突破呢?
- 對問題三的解釋和闡明:我認為,要在把握機會的同時,刻苦掌握技術。對於這個問題,我還是沒有實際的從業經驗,只能從對現在的社會現狀的了解上來解釋,機會的把握與技術攻堅並不沖突,了解了新技術也可以有更多機會,而機會也需要很多技術的支持。不要盲目地追求技術,而要更好地將技術利用在合適的地方才是王道。
問題四:該當一馬當先尋求技術創新突破的人,還是腳踏實地從已經有的東西中尋求創新呢?
- 對問題四的解釋和闡明:該問題的回答我覺得和對問題三的理解類似,從實踐中能感覺到自己大部分是站在巨人的肩膀上在做事,技術的用法有很多前人已經做了詳細的闡述,我要做的是先學好怎么用,再把它用到我的項目中,通過學習形成我自己的東西,腳踏實地的從已經的東西中尋求創新是基礎,如果有能力能夠進行一馬當先的技術創新突破,抓住機會,那就再好不過了。
問題五:在二人合作時是要互相了解並介入對方的工作時刻監督對方還是完全信任,注重反饋互相鼓勵呢?
- 對問題五的解釋和闡明:我認為,雙人合作中信任是至關重要的,你要相信你的隊友和你一樣在努力解決問題。同樣,是在課程實踐的結對作業實踐中,我對這個問題有了這樣的理解,在你工作時,如果有個人在以居高臨下的姿態在監督着你,會覺得非常不自在,如果卡在了什么難點上,有個人盯着自己會有更大的壓力。所以信任能讓兩人之間的合作更加順暢,必要的反饋和鼓勵也不能少,要有反饋讓對方明白自己的進度,明白自己需不需要對方的幫助,這樣可以加深兩人之間的信任,從而得到有利的循環。
是否原來的問題還不明白?如果有,請分析。
- 對原來提出的問題解釋和理解如上,沒有什么不明白的了。
是否產生了新的問題?如果有,請提出。
- 在整個實踐流程結束后,我有些疑惑的地方,我們是要用軟工實踐來鞏固理論課中所學習到的知識嗎?還是更加注重利用實踐來對各種能力進行培養?在准備着手對理論課復習時發現實踐了這么久反而對理論的印象很淺,回想起來在實踐過程中總是在不斷地接觸新知識,學習新技術。是不是我的着重點出現了偏差,最后對技術的掌握反而比軟工理論的印象更加深刻。
軟件工程這門學問有很多 “知識點”, 這門課強調 “做中學”——在實踐中學習知識點。
每個階段收獲最大的知識或能力如下:
- 需求階段:首先是首次對需求分析有了概念,明白了課本教材中需求模型的三大目標:描述客戶需要什么、為軟件設計奠定基礎、定義軟件完成后可以被確認的一組需求。光靠自己想是沒有用的,我們在答辯后也進一步完善了需求,比如老師提出的導出功能,和助教提出的賬單鏈接日記的功能。需求分析對客戶的了解和市場的調查十分重要,畢竟開發者並不一定是使用者。收獲的能力比如溝通交流能力得到了很好的鍛煉。
- 設計階段:對接口的設計有了更深的理解,多人共同協作時,前后端接口的設計和按照設計來嚴格執行是非常重要的。還學會了黃金規則,並嘗試運用在原型設計上,統一原型顏色和icon風格,運用大眾習慣的默認操作按鍵。
- 實現階段:在alpha和beta階段中運用到了對敏捷開發的一些知識,每天的站立式會議對開發進度的推進有着很好的督促作用,也學會了對於微信小程序開發的各項前端知識以及比較新穎的微信雲開發技術。
- 測試階段:學會了利用JUnit進行單元測試,懂得如何運用node.js的本地雲調試對雲開發的各個函數進行測試。在實踐中對測試的重要性有了更深刻的理解,以及學習到了白盒測試和黑盒測試的理論知識。
- 發布階段:學會了雲開發中函數部署到服務器,也嘗試將整個程序上傳,並了解了整個微信官方審核小程序的流程。
心得
- 這學期也寫過好多次心得了,從小黃衫到CSDN紀念T恤,再到這次總結心得,總像是有說不盡道不完的感受一樣,也許是因為切身實際地去做了一些事學了一些東西才會有這么感受。從個人項目由於自己對JDK版本的疏忽導致了最后程序結果不盡人意,也從中吸取了很多教訓,之后的學習實踐中不敢再馬虎,對測試工作做了又做,擔心遺漏了哪些點。結對編程時,時間很短,當時對那些技術也不是很熟悉,無從下手。回想起來自己和隊友能夠按時完成確實也付出了挺多努力的,從0開始學習一個php框架,再到將當初設計的原型實現出來,個人的編碼能力也得到了提升。團隊項目可以說是准備的最充足的一次了,從需求分析到設計再到編碼,對編碼沖刺的時間安排,每天做了什么,都一一記錄下來,“做中學”確實十分形象,一邊做一邊學習wx小程序的開發知識,學習組件怎么用,怎么把自己自定義的內容變成組件供大家一起復用。只有做了才會發現自己的技術知識薄弱點。總結一下,像是一個學期做了好幾個學期的事,也學到了好幾個學期的內容,不虧,付出總有收獲。
個人技術總結
在准備篇中我為自己定制了學習java后端的學習路線,通過寒假的第二次個人作業,對java的基礎知識點做了復習,在后續的三月份的github實踐中,也對Springboot框架有了初步的了解和學習。但是最后的應用階段沒有實現。是由於團隊開發與java沒有關系,我在團隊中擔任了開發角色,進行小程序的前端開發,並完成自己所需要的的雲開發的雲函數。在開發中,我解決了如何在小程序中引入ECharts並根據我們的原型設計,自定義我們的數據分析可視化。並開發了我們原型中的自定義的額度提醒進度條組件。獲得了對wxml、wxss、js和雲開發技術的進展。
概述:
- 介紹:Echarts技術是用來可視化數據的,提供直觀,生動,可交互,可高度個性化定制的數據可視化圖表。
- 用到的情況:在需要數據分析和展示時可以使用該技術來給人更好的體驗。
- 學習該技術的原因:團隊項目中使用小程序進行開發,賬單數據需要可視化分析展示給用戶。
- 難點:ECahrts本身是純JS的技術,微信小程序也不支持DOM操作,Canvas接口也和瀏覽器的不同,所以想在小程序中用圖表可視化數據的話要學習如何在小程序中使用,也比Web端引用JS文件來的困難。