個人作業收官——軟體工程實踐總結
一、課程回望
1.對比現在的你和開學初部落格開篇的課程目标和期待。
目标回顧
- 找到自己喜歡的方向(純小白一隻),學到真正适合自己的技術,與他人合作的過程中不拖後腿。
- 合理的安排時間(重度拖延症患者),希望能夠改掉這個壞毛病,能夠平衡大三這麼多門課之間花費的時間。
- 學會和他人合作,隻有大家一起成功才是真的成功。
- 自己可以編寫一些小小的軟體
期望回顧
- 希望我們的項目可以有條不紊的進行,而不是一直拖到最後開始熬夜趕工,慢工才能出細活。在項目的編寫過程中,自己可以為整個團隊注入一股洪荒之力。
- 學會修改bug,最頭疼bug這個大惡魔了,消滅他,才能前進。
- 開擴自己的思維,學習别人的思考方式,學會團隊合作。
我與目标的距離
- 沒有達成做app的小目标(我們組做的是服務端的web)
- 之前就有稍微學習過html的内容,這次我還是負責的是前端的部分,不過與之前相比,懂得了更多,現在算是會了一丢丢的js,還知道如何和背景編碼人員共同合作。
- 關于時間拖延症問題,實際上還是有的,但是沒有拖團隊的進度,感覺自己棒棒哒。
期望值,我做到了嗎?
- 在我們的PM的合理安排下,我們的項目一直都在前進,沒有出現直到最後一刻才開始趕工,我也按照PM的安排,有條不紊的進行着程式設計
- 在實踐的過程中遇到了,各種各樣的bug,查找原因,有很大的一部分都是對知識的不熟悉,掌握的不全面,但是在隊友的幫助下,更牢固的掌握了知識,正在逐漸的能夠自己修複一些bug
- 團隊合作,不得不說,我加入了一個完美的團隊,大家分工明确,互相配合,沒有怨言,PM更為值得表揚,為我們團隊付出了很多的心血。
2.軟體工程實踐帶來的提升
第一次接觸php,對php完全不知的我,剛開始完全不知道應該如何入手,在掌握php工具的隊友幫助下,get到了很多工具和軟體
學習和使用的新軟體
-
關于部落格
> a.部落格園的了解
>
好處:
多了一個可以查找資訊的管道,而且可以記錄自己的成長曆程
> b.markdown編輯器的用法
Typora軟體推薦:
- 關于php
知道了php的作用
php編寫程式的軟體
sublime編輯器
phpstorm
- gif的制作軟體
gifCam.exe
學習和使用的新工具
- Github的使用
- shadowsocks
這個軟體真是太便利了,打不開github,打開它,神奇的事情就出現了,秒進github
- php的知識
php代碼,看懂一丢丢
php代碼如何測試
- 單元測試
Qunit
QUnit是一個強大的JavaScript單元測試架構,該架構是由jQuery團隊的成員所開發,并且是jQuery的官方測試套件。Qunit是Jquery的單元測試架構,并且被廣泛使用在各個項目中。
學習和掌握的新語言、新平台
- javascript,ajax還是半吊子,還有很多值得學習的
- 浏覽器的控制台,可以快速的找出問題所在之處
軟體工程實踐中,完成了多少行的代碼
-檢視了github上面commit記錄,再根據很多都是照着學長的模闆進行更改的原因,大概寫了3500行的代碼。
學習和掌握的新方法
- 檢視同班同學的部落格,發現各種有趣的事情,看到别人的想法,對比自己的想法,感覺又進步了一點點了呢。
- github很好用哦,在上面可以找到很多你想要的東西
其他的提升
- 不得不說,做軟工項目,真是培養耐心的好方式,遇到各種各樣的bug,都要嘗試各種方式去解決。
- 找到了興趣,結束了軟工實踐之後,偶爾還是想要敲一敲代碼,程式設計能力得到了提高
- 和隊友有了革命情誼了呢
二、寫下屬于自己的人月神話——項目實踐中的經驗總結+執行個體/例證結合的分析
關于文檔
在真正的開始編碼之前,軟工的很多作業都是關于文檔類的,需求說明書(包含了各種流程圖)等等,但是在真正的編碼過程中,我完全沒有再次去翻看文檔,但是也編碼的好好的,是以我沒有體會到文檔的重要性。
增量式開發
我們共有兩輪開發,我們組在Alapha版本釋出的時候,其實已經實作了畢設導師互選系統的實作,是以整個隊伍都是很有信心的,這對我們Beta版本的沖刺帶來了動力,大家一起程式設計,一起為我們的系統完善,都是充滿幹勁的。
關于溝通
前期的時候,團隊作業都是大家一人負責一個内容,沒有進行足夠的溝通,經常出現各種牛頭不對馬嘴,PM對任務完成情況的不滿意,但在alapah沖刺的最後一天,大家一起在活動室程式設計了整整一天,面對面的交流,那天的效率是整個alapha沖刺過程中最高的,是以,隻有足夠的溝通,才能實作創造。
關于進度
- 站立式會議第一天,我:“還在學習php,還沒有開始編碼”,初學前端隊友:“正在學習html,還沒開始編碼”
- 站立式會議第二天,我:“還在學習php,還沒開始編碼”,初學前端隊友:“正在開始學着編碼”
- 站立式會議第三天,我:“還在學習php,還沒開始編碼”,初學前端隊友:“一個頁面快要完成了。”這個時候,我才發現我這幾天完全都沒有進度,再這樣下去,沖刺十天的時間,都快要結束了,而我還是一點進度都沒有。
以上,我覺得團隊開發項目,必不可少的就是要進行站立式會議,不僅是溝通的一個好方法,在會上可以進行的提出自己在編碼過程中遇到的各種問題,尋求隊友的幫助;還是督促自己抓緊進度的動力,當你發現隊友都已經完成了不少東西,而你卻還在原地踏步,會産生一種羞愧感,看到别人一直在前進,難道會讓自己成為最後一名嗎?
三、對下一屆實踐的建議。
無論你是喜歡程式設計或是讨厭,我都推薦你要選擇軟工實踐,軟工實踐是一門很神奇的課程,如果你選擇了張棟的軟工實踐,那麼你會發現這真的上的是軟工實踐課,而不是寫部落格的課?
剛開始,你應該會很讨厭寫部落格,畢竟我們是理科生,文采沒有那麼的好,你常常會發現不知該怎麼入手,但是随着時間的推移,你開始覺得得心應手,每次寫部落格,都可以寫上幾千個字,當你回顧你所寫過的部落格,才會發現原來我做過這麼多的事情,記憶是會忘卻的,但是文字是留存的。當你回首部落格,你會因寫部落格而感到欣慰。
接下來,來說說程式設計吧。很多人會說,我程式設計能力不好,我不要選擇軟工實踐課,那為何不提高自己的程式設計能力呢?這絕對不是一門純技術的課程,上面說了,這是一門專業寫部落格,記錄生活的課程,等到真正需要程式設計的時候,實際上,這門課也快要結束了。那麼,你完全可以利用前半學期的時間,來學一門技術。
也許你會聽說,這是一門很坑的課,你會不得不熬夜,時常見到福大的日出,時常翹課?不,這個課并沒有那麼可怕,很多時候通宵達旦是因為拖延惹的鍋,隻要做好合理的規劃,完全不用如此。
人生因為挑戰而精彩,快來體驗軟工實踐的魅力。
四、分析一下自己所處的團隊。軟體工程實踐是大學裡少有的認真的團隊協作經驗。《建構之法》上說團隊的發展有幾個階段,你的團隊都經曆過麼,最後到達了“創造”階段了麼?
萌芽階段
剛開始,我們的隊伍就隻是互相知道對方,但在之前的過程中沒有什麼接觸,但是大家可能都是自來熟吧,在開會的時候,氣氛總是很歡樂,但是說實話,那時候都是在聊天,并沒有在做什麼跟軟工有關系的話題,哈哈哈。
磨合階段
在我看來,我們的磨合階段,應該是長時間的。
1.确定軟體産品的過程,一開始的時候,男生想要做比較教務性的系統,但是組裡有一個成員,覺得這種東西真是太無聊了,她想要做比較有趣味性的産品,例如:寵物養成,但是男生可能沒有辦法了解這種女生的小遊戲,最後通過投票,還是确定了,教務性産品。但是在散會之後,由于種種原因,PM緊急又召開了會議,其中各種分歧,就不一一說明了,最後采用的是澤中的方式,就是我們的賞金獵人,既有動漫元素,又有校園氣息的app,令我印象尤為深刻的就是那天的夜晚,活動室通明的燈光。
2.确定原型,系統設計也是種種分歧和沖突不斷,首先,就是粗心的隊員和強迫症的PM,隊員覺得差不多了,可以了,但是PM總是會挑出各種毛病,要求隊員進行更改。//好像變成了吐槽
規範階段
自從确定了我們的産品,大家就開始有條不紊的開展自己的進度,剛開始的時候,還有拖延症的我,時常被PM催促進度,後來慢慢的就變成了主動編碼,雖然沒有提前完成任務,但是至少沒有拖延進度。遇到問題,大家也會在群裡互相提問,回答,還會發各種連結分享大家一起學習。
創造階段
應該說從Alapha版本的後半階段開始,我們就進入了創造階段,應該大家開始進度快了起來,尤其是得到了一起程式設計的樂趣,在Beta版本沖刺階段,我們有四天一起在活動室裡面程式設計,每天的時間都有6個小時以上,往往到後面大家沉迷程式設計,不願意回去,PM就開始詢問我們要什麼時候回去,看到大家專心緻志程式設計,PM也不忍心督促我們早點回去,這才是讓我們能夠在Beta版本後階段輕松的原因。
總結
可能大概很多人都會覺得我們組的成員多數都是有過項目經驗的人,或者是西二的成員,但是事實上我們這次做的系統都是之前沒有接觸過的東西,我們組裡隻有兩個人是會php的,其他人都是比較擅長安卓的,而我更是小白一名,畢設導師系統的成功實作,其實是因為我們都有一個目标(自助餐),即使是從0開始學習,也是充滿幹勁,其中也尋求了各個方面的幫助,是以我覺得技術強并不是軟體産品成功釋出的原因,更重要的是熱情,一個團隊因為同一個目标走到一起,因為同一個目标,一起成長,因為同一個目标,一起奮鬥。
五、論文讀後感
Code quality analysis in open source software development
代碼開源
現在很多代碼都是開源的,對前端來說,當你看到一個感覺不錯的網站,都可以檢視它的源代碼,試着自己寫出類似的網站。還有很多代碼可以通過Github上找到,雖然很多下載下傳下來都是不能用的,但是可以從中找到解決自己問題的方法,我覺得代碼的開源是幫助程式員進步的一大裡程碑。但是在這種便利的條件下,我們要做的就是如何提高源代碼的品質。
代碼的規範性
通過一學期的學習,我覺得我的代碼規範性有了一定的提高,從當初結對程式設計,寫的代碼都是要親自告訴隊友哪個變量是什麼,到後面團隊程式設計,隊友可以看懂自己代碼,我覺得代碼規範性,作為一個程式員必須要注意的事情,畢竟你不可能一個人完成項目的所有工作,隻有通過代碼規範性,對自己進行限制,才能成為更好的程式員。
六、學會軟體工程?
1.研發出符合使用者需求的軟體
我們做的是畢設導師互選系統,這個系統是由真正的客戶提出的,面向數計全體師生,每個學生都要選擇畢設導師,那麼以前的方式都是通過人工收集的過程,耗用了大量的人力,而且學生對導師的了解度不夠,很多都是随便選擇,另外導師沒有自主選擇學生的權利,都是通過系負責人通過一個神奇的算法進行配置設定,這是很不智能的,是以我們這個軟體充分考慮了客戶的需求,将所有線下的步驟,全都提到線上來進行,充分展現了客戶的需求,簡便了整個畢設導師選擇的過程,更加的公平公正公開。
隻要學院願意使用,整個學院的師生都将是這個系統的使用者。
2.通過一系列工具,流程,團隊合作,能夠在預計的時間内釋出 “足夠好” 的軟體
- 與客戶面對面的交談,充分了解客戶的需求,進行多次的需求确認
- 編寫需求分析說明書,再次與客戶确認需求
- 确認無誤,進行原型的設計(Axure)
- 體系結構的設計(代碼規範性,程式設計軟體的統一)
- 正式開始編碼
a.制定項目時間計劃表
b.人員分工明細
c.站立式會議
d.代碼的整合(github)
3.通過資料展現軟體是可以維護和繼續發展的。
寫代碼的大部分時候都是想到什麼寫什麼,也沒有前後端分離很明确,接口就隻是使用了一點點,接觸接口是在編碼快要結束的時候開始學習的,發現使用接口增加了軟體的可擴充性,修改的時候就不用重構,可惜前面的大部分代碼都不是使用接口,雖然對前端來說,寫接口很多時候會比不寫接口增加了很多的代碼量,但是要修改功能的時候,可是非常好用的,隻需要修改一點點地方就可以了。
附上我們團隊項目的github連結
畢設導師互選系統
七、我是誰?我在做什麼?我在哪兒?
滿滿宇宙星空,人人都是宇宙裡渺小的一顆,時間轉瞬即逝,我是誰并不重要,重要的是我在哪兒,我在做什麼,而我身邊的人又是誰。兩年半的時間,才讓我找到了計算機的樂趣,大概知道了程式員為什麼喜歡程式設計的原因。通過程式設計,能夠做出有用的軟體,看到别人在用自己的軟體,心中滿滿的自豪感。軟工實踐結束了,但是我的程式設計之路才正要開始。
八、我身邊的人
結對程式設計小夥伴
林錦大佬
當一個懶癌晚期患者,碰上一個行動派,碰撞出的火花就是:懶癌治療術。看到她那麼認真的完成作業,我怎麼忍心自己在一旁玩耍,跟上她的腳步,前進,前進,前進。
團隊夥伴
我說的都隊
這是一個集各類大腿于一隊的隊伍,我們有事無巨細的PM--
男神(陳燊)
,php大腿--
齊民
,算法大腿--
揚濤
//這次終于寫對了名字,全能選手--偉炜,顔值擔當--
婷婷
,嫌棄擔當--
胡學霸(心穎)
,我就勉為其難的擔任吃貨一枚吧。
那些燈火通明的晚上,那間熟悉的活動室,那些PM請客的宵夜,那些熬夜的困倦,在活動室睡覺的民大腿還有燊大腿,都是因為我們有着同一個目标,他們的熱情帶動了我的成長,說到成長,最要感謝的一個人就是我們隊的大佬:偉炜,精通前端,php,安卓,遇到任何問題都可以問他哦,在程式設計的過程中,他幫助我解決了各種各樣的bug。“偉炜,你過來幫我一下。” “偉炜還沒幫我解決完這個bug”的情景曆曆在目。
項目結束了,我們的情誼還在繼續。。。
聽說要圖文并茂,害怕被打死的我還是不要貼圖了,想看的人私聊找我(老司機帶你飛)。