1. 程式人生 > >個人作業——高階軟體工程實踐總結作業

個人作業——高階軟體工程實踐總結作業

一、請回望第一次作業,你對於高階軟體工程課程的想象

1)對比開篇部落格你對課程目標和期待,“希望通過實踐鍛鍊,增強計算機專業的能力和就業競爭力”,對比目前的所學所練所得,在哪些方面達到了你的期待和目標,哪些方面還存在哪些不足,為什麼?

  • 我認為,在開篇部落格寫的對課程的目標和期待都全部實現了,並且還超出了目標和期待,學到了更多,收穫了更多。因為我本科並不是軟體工程專業,但是通過在研究生階段的高階軟體工程課程的所學所
    練,讓我的動手能力有了質的飛躍,理論和實踐相結合的學習方式讓我對專案開發和軟體工程這個專業有了新的認識和理解。
  • 在提升我的專案開發經驗以及個人程式設計能力方面,達到了我的期待和目標,甚至得到了更多。因為我在本科階段很少會去參加這種團隊合作開發的專案,缺少實戰動手開發實踐的機會,所以我的程式設計能力一
    直都很弱,對各種開發工具都不熟悉。而這門課程給我了一個千載難逢的平臺和機會,讓我能夠加入一個專案團隊,跟隨團隊中的大佬學習,和團隊成員一起攻克各種Bug,互相督促進步,使得我的程式設計能力
    更上一層樓。也對專案的整個開發過程有了真正意義上的瞭解。
  • 但是不足的地方也有很多,比如:剛開始的時候做事效率太低,經常拖團隊後腿,缺少開發經驗,開發速度慢等等。而這一切的不足歸根結底還是個人能力的不足。但是多虧隊友的鼓勵和指點,再加上個人
    不輕易言敗的精神。跌跌撞撞中學到了很多技術和經驗。這個專案只能說帶我帶進軟體工程的大門,不可能一個專案就讓我成為一個優秀的程式設計師,只有通過日後的不斷努力,才能慢慢讓自己的程式設計水平更加
    熟練,開發能力更加成熟。通過更多更高強度的實踐,才能大大增強計算機專業的能力和就業競爭力。

2)總結這門課程的實踐總結和給你帶來的提升,包括以下內容:

  • 1、統計一下,你在這門高階軟體工程實踐中,完成了多少行的程式碼;
    一萬行左右。
  • 2、高階軟工實踐的各次作業分別花了多少時間?(做一個列表)
  • 3、哪一次作業讓你印象最深刻?為什麼?
    無疑是Alpha衝刺結束後,開專案“事後諸葛亮”的總結大會,要完成問題總結隨筆那次給我的印象最深。儘管在alpha衝刺階段,我們團隊每天都有開站立式會議,但那是專案開發以來,整個團隊平靜心
    情,大家找了個安靜的地方,一起坐下來回想整個專案開發的過程,並對專案遇到的問題展開頭腦風暴,重新審視整個專案,並提出了許多有建設意義的建議,這為我們在Beta衝刺階段,完善我們的專案
    提供了寶貴的指導思想,這也是我們在Beta階段相對輕鬆,進展也相對順利的重要原因。在那次會議之後,我們團隊幹勁更加十足,隊內氣氛更加融洽。
  • 4、累計花了多少個小時在高階軟工實踐上?平均每週花多少個小時?
    軟工實踐大概花了220小時,衝刺大概持續了三週左右,平均下來每週花費73個小時左右
  • 5、學習和使用的新軟體;
    原型的製作開始,學習使用Justinmind prototyper、Axure RP
    資料庫方面:mysql
    伺服器:Tomact
    程式設計:myeclipse
  • 6、學習和使用的新工具;
    專案的程式碼版本控制上共同使用SVN
    作業要求學習使用在GitHub上面更新程式碼
    單元測試
    uml圖的繪製
  • 7、學習和掌握的新語言、新平臺;
    前端採用 HTML+CSS 進行頁面設計,使用 Javascript 設計頁面動態效果及負責與後臺資料的傳輸。後臺採用 java 開發語言,使用 SSH 三大框架進行架構。
  • 8、學習和掌握的新方法
    學會了各種設計模式,並能將其應用在專案中。還學會了程式設計中一些好的習慣,比如:程式碼要多寫註釋,儘量寫的可讀。
    還有開發平臺一些快捷鍵。
  • 9、其他方面的提升。
    在處理和隊友之間的關係、如何更好的協作程式設計提高團隊效率的經驗,選擇開發模組的主次優先順序更利於效率提高,溝通表達交流能力等個人綜合能力都得到了極大的提升。

二、寫下屬於自己的人月神話——個人或結對或團隊專案實踐中的經驗總結+例項/例證結合的分析

  • 通過這個專案我學到許多原來未曾接觸過關於專案開發方面的經驗:
  • 第一,需求理解要透徹,需求關乎專案要做什麼,要達到什麼樣的結果,需要在需求階段理解清楚,做到心中有數。另外需求是工作量評估的基礎,要想工作量評估適當且充分,不出現大幅度偏差,就需要
    客觀理解需求。
  • 第二,工作量評估做到群策群力,我們會把整體計劃拆分成細小的功能點,然後按照組員的特點,分配到具體的開發負責人。由於很多功能點都是互相關聯,單方面評估往往不能反應真實的情況,因此我們
    會召集專門的評估會議,對某一個功能點由對應的開發負責人和相關的人員一起來確定,確保大家的資訊對稱。
  • 第三,程式碼質量控制擺到重中之重,良好的程式碼質量需要工程師付出很多的努力,這些努力都是值得的,為後期測試、BUG診斷、擴充套件等降低了難度,減少不必要的時間花費。
  • 第四,單元測試要完全覆蓋,開發人員做單元測試,一是檢查自己的程式碼是否有缺陷,做到對自己程式碼負責;二是可以站在測試的角度去思考問題,可以減少後期測試不必要的測試點,讓專案進度整體可
    控。
  • 第五,保持團隊成員的積極性,工作都是人做出來的,組員的工作積極性是專案好壞的決定性因素。做好專案,先必須讓團隊氛圍良好。讓每一人都具備主人翁意識,都可以有自己發展的空間,在自己的領
    域裡有所建樹,這也是我們團隊能在中後期趕上進度的根本原因,因為大家整個專案開發過程中都保持了強大的積極性,樂在其中。
  • 第六,專案開發過程中往往是曲折往復的,需要我們的耐心和決心。

三、對下一屆實踐的建議,或者對於開學初的你,對於大一的你,對於開學初的我,你有什麼想建議和告知的呢?

  • 對於下一屆實踐的建議和告知:可能你們在上這門課之前會聽到很多人說這門課作業很多,要做很多的工作,但是請別因為別人的看法就以敷衍或者消極的態度來面對這門課。因為你要知道,任何技術都不
    是隨隨便便簡簡單單就能被掌握,必須要通過大量的實踐以及學習理論知識,二者結合,才能達到熟練的程度。這門課確實有很多作業,要開會,要寫部落格,但是你做的越多,你學到的也就越多,付出和回報
    是成正比,認真的去保質保量完成老師的佈置的每個作業,你會從中學到很多很多,到了期末,你會發現自己煥然一新,今非昔比。在這方面,我是深有感觸,在開學之初,上這門課之初,我對這門課有如此
    多的作業並不理解,但是隨著專案的正式開始,我不僅理解了,同時每次作業都做到保質保量,認真虛心向老師和同學學習,並且不滿足老師佈置的作業,還找來軟體工程相關書籍仔細研讀,並且越來越有幹
    勁,整個軟體工程實踐一直保持著積極主動。在專案結束之際,再回頭看,發現自己各方面能力都得到了極大提升。學長以親身經歷的體會再一次告誡學弟學妹們好好學習這門課,你會得到很多你意想不到的
    東西。

四、分析一下自己所處的團隊。軟體工程實踐是大學裡少有的認真的團隊協作經驗。《構建之法》上說團隊的發展有幾個階段,你的團隊都經歷過麼,最後到達了“創造”階段了麼?(參考《構建執法》第17章 人、績效和職業道德)

  • 團隊發展分為四個階段:萌芽階段、磨合階段、規範階段、創造階段。
  • 到最後專案結束為止,我們團隊也只經歷了前三個階段,還沒有到高深的創造階段,畢竟團隊第一次建立,能走到如今的程度也相當不錯了。團隊剛成立之時,我們就面臨選題的困難,大家都是迷茫的,不
    知所措,不知道我們團隊的能力能承擔多複雜的專案,而且也沒有好的思路。為了能確立主心骨,我們選了團隊中最有經驗的人作為隊長。然後,隊長請教了學長學姐的經驗之後,根據我們每個人的能力給我
    們分配不同的工作,在查閱了大量資料以後,我們成功完成了選題以及開發工具的選擇等前期準備,所有的一切步入正規。這便是我們的萌芽階段;
  • 經過了萌芽階段,一切似乎開始走上了正軌,但是隨著開發的深入,我們團隊中出現了各種問題,不僅有程式設計上的重大阻礙,還有大家相互之間的溝通不好,每個人都提出各種意見,不服從工作分配,各種
    矛盾突然爆發出來,極大影響了專案的開發進度,為了解決這一系列的問題,隊長召開了組內大會,聽取了各方面的意見,並協調解決隊員之間的矛盾。經過這次大會,大家都敞開心扉,消解了誤會,並在之
    後遇到問題都會積極主動溝通,隊內的氣氛有了極大改善,大家配合也更加默契。這是我們的磨合階段;
  • 隨著專案開發重新回到正途,我們根據隊長的指示和要求分工規律完成每天的任務。專案開發進度和開發效率,相比之前有了極大的提升。這應該算團隊正式進入了規範階段,我們會發表自己的個人意見和
    看法,然後由隊長梳理,留下有用合理的想法,最後佈置工作給我們實施。每個人每天要做什麼都非常清晰明瞭。
  • 最後我認為我們還沒有到達創造階段,但隨著未來做更多的專案,我們有很大可能能達到。

五、怎樣證明你學會了軟體工程?

1)研發出符合使用者需求的軟體

  • 必須公開發布,有實際的使用者,一定的使用者量和持續使用量 (3 天后能保持10 - 100個使用者);而不是: 做沒有使用者使用的軟體。

2)通過一系列工具,流程,團隊合作,能夠在預計的時間內釋出 “足夠好” 的軟體

  • 有專案規劃/需求/設計/實現/釋出/維護,有定時的進度釋出 ; 而不是: 通過臨時熬夜,胡亂拼湊,大牛一人代勞,延遲交付等方式糊弄。

3)並且通過資料展現軟體是可以維護和繼續發展的。