天天看點

【軟體工程】提問回顧與個人總結

内容說明

項目 内容
這個作業屬于哪個課程 羅傑
這個作業的要求在哪裡 提問回顧與個人總結

之前提問的部落格連結

【軟體工程】第一次閱讀作業

對之前提出問題的解答

  1. 使用機率是百萬分之一的需求,是否需要去實作它?

    學期初的這個問題,我是認為是不需要去實作的,老師在部落格評論中反問我有哪些可以不用去實作的例子,我想了好久,也查了一些資料,可确實是舉不出十分具有說服力的工業中的例子,可是我還是不願放棄自己的想法,也許在日後不斷的實踐過程中一切就明了了吧。

  2. 靈活開發的流程

    在課程的實踐中逐漸了解了靈活開發的基本流程。首次釋出,需求改動,快速疊代,再次釋出。開發流程需要跟上時代的快節奏,但是在快速疊代過程中也應重視後續的可擴充性,這樣才能實作真正的靈活。

  3. TDD

    通過看書和學長的解答了解了關于TDD的基本知識。

  4. 沒有風險就是最大的風險

    學期初我對這句話的了解是:

    在項目中可能會遇到各種各樣的風險,很多情況下PM都是在盡可能的減少這些風險的存在,但是這些風險有時候也代表了一些機遇。這裡的“沒有風險”其實并不是真正的不存在風險,我認為有兩層意思:
    1. 項目人員沒有風險意識,是以才會說沒有風險,這種沒有意識到風險的風險才是一個項目中最大的風險。
    2. 對于已知的風險,我們是可以去應對的,但是對于未知的風險(也就是沒有風險的狀态),我們是無法做準備的,是以這才是最大的風險。
    實踐過程中,遇到過網站被黑客攻擊的情況,之前我們并沒有想到過項目可能會有什麼風險因素,經過這次的經曆,我們開始開始去重視軟體中的風險問題,安全穩健的軟體項目是十分重要且必要的。
  5. 結對程式設計
    看完書上對結對程式設計的介紹,我發現其實在之前的程式設計實踐中自己有踐行過這種方案的,現在也是十分認同這種方式。書上給的結對程式設計的方式是領航員和駕駛員模型,在網上檢視的結對程式設計和書上的觀點也基本一緻,這裡我想問的是:
    1. 結對程式設計一定要兩個人保持這樣的方式工作,直到項目完成嗎?是否可以在大多數關鍵代碼上實行這種方式,而在簡單的部分采用分開編碼,進而提高編碼效率,這裡分開編碼隻是意味着不同的電腦,還要會保證及時的面對面交流的。
    結對程式設計可以很大程度上減少BUG的數量,并且将程式設計這一過程變得相對輕松,簡單,在确定了詳細設計之後,可以很大程度上提高程式設計的速度和效率,但是,結對程式設計也确實是需要兩人的默契配合,起初的磨合階段其實效率還是比較低的,并且對于過于簡單的程式編寫,不如兩人分開的效率高。總的來說結對程式設計還是有其獨特的優勢的,值得體驗和學習。

在實踐中不同階段的學習與總結

需求階段

需求階段是項目的起始階段,也是項目的意義所在,是以是十分關鍵的。首先是根據已有的初步想法,去做大量而全面的使用者調查,分析調查結果,得出具體需求,并且将不同的需求分優先級,這樣在後續的實作過程中會有的放矢。

設計階段

設計是根據需求做進一步的實作,将現實的問題轉換為可代碼實作的方法。在這次的團隊項目中,感覺我們的設計就有些不足,導緻後續開發的時候可能面臨推到重來的情況,有些棘手。

靈活開發強調不要過分細化設計,因為後續還會進行疊代,可是它并不是不重視設計,我們都是初次開發,感覺對設計的度把握的不太好,導緻設計不夠充分,後續發現問題的時候,想改也面臨很大的工作量。工程上的度需要在不斷的實踐中去總結和把握。

實作階段

實作主要是按照設計去寫代碼,不過在具體實作之前,還需解決在實作中可能面臨的技術難題,所有問題都解決了,便可以進行快速的代碼實作了。良好的代碼風格是十分重要的,其次也要滿足一定的代碼規範。

測試階段

測試階段和實作階段可以互動進行,及時進行測試會減少開發人員後續修改的成本。測試需要全面,是保證項目品質的最後一道關卡,至關重要。

釋出階段

當項目的一個版本的開發結束後,就将面臨這釋出,釋出階段需要做好宣傳工作,剛開始釋出的一段時間是項目的緊張階段,因為會面臨使用者提出的各種問題,需要能及時的進行修改、更新、再釋出。

維護階段

維護階段主要根據使用者的回報,進行部分的更新,以及資料庫和伺服器的維護。

了解和心得

實踐是檢驗真理的唯一标準。

  1. 在本次團隊項目中,我擔任的是輔助開發人員的角色,主要是打雜的工作,核心技術難點都是團隊中另兩個夥伴攻克的,整體上來說還算順利,在這裡先感謝一下大家。
  2. 這次團隊合作過程中,我發現核心開發人員還是十分重要的,開發工作需要有個能力強的帶領着其他開發人員去做,在宏觀上對開發任務有較好的把握,了解開發任務的難易,以及相關技術難點,不知道稱之為開發中的PM是否合适😄。
  3. (接着2)在這次體驗中,我有一個想法不知道是否合适:團隊人員組成中, 需要PM,但是在開發組中還需要有一個總體的規劃人員,這個角色也許并不需要十分明确的指定是誰,但是感覺一定要有這麼一個站出來的人來統籌規劃,去更細緻的劃分任務,做技術難點分析,去組織開發人員之間的溝通交流,但這也對這個人的能力做出了較高的要求,如果有機會,還是想去試驗一下這樣的模式。

總的來說,開發人員除了良好的技術能力之外,還需要較好的溝通和表達能力,良好的溝通總是能夠帶來意想不到的效果。最後,感謝團隊成員一個學期的努力,感謝課程組助教和老師們,祝軟工課越來越好。