天天看點

軟體工程實踐2020_個人作業 —— 軟工實踐課程總結

這個作業屬于哪個課程 <2020春W班 (福州大學)>
這個作業要求在哪裡 <作業要求>
這個作業的目标 <對軟體工程實踐課程的總結>
作業正文 <作業正文>
其他參考文獻 <騰訊IM即時通訊開發文檔>

Part.01 回望

對比開篇部落格你對課程目标和期待,“希望通過實踐鍛煉,增強軟體工程專業的能力和就業競争力”,對比目前的所學所練所得,在哪些方面達到了你的期待和目标,哪些方面還存在哪些不足,為什麼?

即按照本課程一開始的老師給出的工程能力釋義圖為參照,從一下方面開始總結闡述,工程能力釋義圖如下
軟體工程實踐2020_個人作業 —— 軟工實踐課程總結

221701412的工程能力變化圖

軟體工程實踐2020_個人作業 —— 軟工實踐課程總結
  • A-analyze(複雜工程系統分析能力)

    • 達成情況:對于從一開始的熱身疫情資料分析到後面的結對完成疫情統計到最後的團隊作業經過兩階段的沖刺,分析複雜工程系統的能力有一定的提高,可以更好的分析工程的問題關鍵所在
    • 不足:對問題分析時得出的解決方案還需更加的精準,如在熱身疫情資料分析時對指令行參數的解析方案确定不當,導緻最後的導入評測程式運作時報錯
  • D-design&develop(複雜工程系統設計/開發能力)

    • 達成情況:在結對作業中是個人第一次進行了原型的設計工作(以前隻是對原型設計有所了解),對于原型的設計能力有所提升,在團隊作業中作為後端開發主要按照官方的文檔初始架構了一個目錄結構更為規範的後端項目,對于複雜工程的架構設計、構件設計能力有一定的提升
    • 不足:原型的設計能力還隻是初窺門徑,還遠遠登不上大雅之堂,對于複雜工程的架構設計、構件設計,我認為現在設計的項目系統還仍有很多可以優化的地方還需要以時間堆積的學習
  • E-evaluate(評價能力)

    • 達成情況:主要是通過下載下傳騰訊的即時通訊IM的相關demo進行了對應的黑盒測試與相關評測,以及每周的小組答辯時使用線上評審表進行打分互評,對于恰當的評價計算機相關技術和産品的能力有所提升
    • 不足:對于如何能更恰當的評價計算機相關技術和産品,需要的是自身技術的提高與眼界的上升(即多看多學),現在自己的自身積累還遠遠不足,是以認為自己的評價能力還有很大的提升空間
  • C-collaborate&communicate(團隊協作能力)

    • 達成情況:在本次軟體工程實踐中主要有團隊協作的部分為結對程式設計以及後續的團隊合作沖刺完成項目,其中在團隊中擔任組長的角色,發揮了團隊協作精神,參與到了各部分的設計報告與文檔的攥寫工作中,對于團隊協作能力有較大程度的提高
    • 不足:因為本次的協作開發全是以線上合作的方式進行,溝通交流方面出了很多的問題,且對于設計報告與文檔的攥寫還有很多值得學習與提升的地方
  • P-project management(項目管理能力)

    • 達成情況:學習使用了多方工具進行項目管理(teambition等),且在本學期自己選修了項目管理課程的理論前提下,軟體工程實踐則作為了對于項目管理的實踐,項目管理能力有所提升
    • 不足:對應的工程活動還涉及了很多的管理學、經濟學知識,這是離自己專業很遠的知識,還需要更多的學習提高

你在第一次作業的個人履歷中制定的

這門課程結束後,你預期你将增長的能力、技術、技能;

和你針對你的目标繪制的學習路線圖。對比目前你的所學所得,你達到了當時的預期值嗎?

本小節一開始先回顧一下在第一次作業的個人履歷中制定的

這門課程結束後,你預期你将增長的能力、技術、技能

以及針對目标繪制的學習路線圖

個人履歷

基本資訊 姓名:theTuring
軟體工程實踐2020_個人作業 —— 軟工實踐課程總結
興趣愛好;程式設計,moba,單機,健身,旅遊
特長:moba
目前水準 掌握的程式設計語言:C/C++,JAVA,html,php基礎
掌握的開發軟體:VisualStudio,IDEA,Eclipse
掌握的技術架構:springboot,yii,webmagic,vue
累計代碼量:寫過的項目的話代碼行數可能10w+了,不過有效代碼應該5w吧左右
開發過的最大的項目簡介:基于yii2.0開發的個人部落格系統,其中這個項目整合的自己以前寫的一個雲盤的項目進去,寫了部落格園的爬蟲更新當日部落格園首頁文章到自己的部落格的功能。
擁有的工程能力:一定的可快速上手新的項目能力,簡單的面向對象分析
成果和獲獎經曆:無
專業目标 掌握java後端開發能力
實踐預期 工程能力:更好的在開發團隊内做好背景的維護
技術,技能:紮實java基礎程式設計,java EE,對spring全家桶都有一定掌握

學習路線

軟體工程實踐2020_個人作業 —— 軟工實踐課程總結
軟體工程實踐2020_個人作業 —— 軟工實踐課程總結

達成情況

  • 能力、技術、技能

    • java基礎程式設計有變得更紮實,其中在本次實踐中主要是使用了Springboot作為後端開發,對于預期的java EE以及Spring全家桶都有一定掌握隻有部分了解學習
    • 當時預期的學習路線廣度過廣了(因為以前想着會有很多的空閑時間,結果在經曆了多次軟工作業、平日課程與中間一段時間的秋招面試準備發現根本時間不夠),是以後面幾個月好像根本就沒有按照計劃來學

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

統計一下,你在這門軟體工程實踐中,一共完成了多少行的代碼

  • 統計情況

對應作業 代碼行數
軟體工程實踐2020_寒假作業(2/2)—— 疫情統計 1794行
軟體工程實踐2020_結對第二次作業 —— 某次疫情統計可視化的實作 約2500行
團隊作業 約10000行
合計 約14294行

軟工實踐的各次作業分别花了多少時間?(做一個清單)

時間(h)min
個人作業
軟體工程實踐2020_寒假作業(1/2) (12h)720min
(27h)1620min
軟體工程實踐2020_結對第一次 —— 某次疫情統計可視化(原型設計) (約18.3h)1100min
(30h)1800min
軟體工程實踐2020_個人作業 —— 軟體評測 (15h)900min
軟體工程實踐2020_個人作業 —— 軟工實踐課程總結 (8h)480min
團隊作業 —— 選題 (10h)600min
團隊作業 —— GitHub 實訓 (14h)840min
團隊作業 —— 原型設計 (24h)1440min
團隊作業 —— 需求分析 (12h)1200min
團隊作業 —— 系統設計與資料庫設計 (28h)1680min
團隊作業 —— Alpha 沖刺 (64h)3840min
團隊作業 —— Beta 沖刺 (72h)4320min

哪一次作業讓你印象最深刻?為什麼?

  • 現實情況

    • 印象最深刻的作業:GitHub 實訓
    • 原因:真正的極限沖刺,從作業開始時間坐在電腦面前坐到了截止前2分鐘才交上了作業,一個人寫了所有界面+附加功能,太累了。然後那天負責部落格的同學失誤還誤删了前篇部落格,補部落格到了夜間2 3點,深深地體會到了什麼叫做996完還加班。

累計花了多少個小時在軟工實踐上?平均每周花多少個小時?

    • 累計時間:約20540min(約342.3h)
    • 平均每周時間:17h

學習和使用的新軟體

  • 新軟體

    • JProfiler:JProfiler 是一個商業授權的 Java 剖析工具,由 EJ 技術有限公司,針對的 Java EE 和 Java SE 應用程式開發的,可模拟多種正常、峰值以及異常負載條件來對系統的各項性能名額進行測試
    • Axure:Axure RP是美國Axure Software Solution公司旗艦産品,是一個專業的快速原型設計工具,讓負責定義需求和規格、設計功能和界面的專家能夠快速建立應用軟體或Web網站的線框圖、流程圖、原型和規格說明文檔。作為專業的原型設計工具,它能快速、高效的建立原型,同時支援多人協作設計和版本控制管理
    • 墨刀:墨刀是一款線上原型設計與協同工具,借助墨刀,産品經理、設計師、開發、銷售、營運及創業者等使用者群體,能夠搭建為産品原型,示範項目效果。墨刀同時也是協作平台,項目成員可以協作編輯、審閱,不管是産品想法展示,還是向客戶收集産品回報,向投資人進行Demo展示,或是在團隊内部協作溝通、項目管理

學習和使用的新工具

  • 新工具

    • Junit:JUnit 是一個 Java 語言的單元測試架構。它由 Kent Beck 和 Erich Gamma 建立,逐漸成為源于 Kent Beck 的 sUnit 的 xUnit 家族中最為成功的一個。 JUnit 有它自己的 JUnit 擴充生态圈。多數 Java 的開發環境都已經內建了 JUnit 作為單元測試的工具
    • spring-boot-starter-test:Spring Boot 內建的 pring-boot-starter-test 是基于 JUnit 的單元測試工具
    • JWT:英文名是 Json Web Token ,是一種用于通信雙方之間傳遞安全資訊的簡潔的、URL安全的表述性聲明規範,經常用在跨域身份驗證
    • PageHelper:來源于第三方的快速分頁插件

學習和掌握的新語言、新平台

  • 新語言

    • go語言入門
  • 新平台

    • 部落格園:一個面向開發者的知識分享社群,用于完成作業部落格的編寫
    • Teambition:阿裡巴巴旗下團隊協作工具,面向企業和團隊提供數字化協同辦公工具,滿足項目管理、任務協同、文檔協作、日程共享、知識管理等各種協作需求。用于在團隊作業中進行項目管理

學習和掌握的新方法

  • 新方法

    • 單元測試:了解并嘗試進行單元測試
    • 性能測試:了解并嘗試進行性能測試
    • 項目管理:了解并嘗試進行項目管理
    • 線上文檔:在團隊合作中線上文檔的靈活應用
    • 部落格:開設和撰寫部落格

工程能力的提升

    • 提升情況:對于從一開始的熱身疫情資料分析到後面的結對完成疫情統計到最後的團隊作業經過兩階段的沖刺,分析複雜工程系統的能力有一定的提高,可以更好的分析工程的問題關鍵所在
    • 提升情況:在結對作業中是個人第一次進行了原型的設計工作(以前隻是對原型設計有所了解),對于原型的設計能力有所提升,在團隊作業中作為後端開發主要按照官方的文檔初始架構了一個目錄結構更為規範的後端項目,對于複雜工程的架構設計、構件設計能力有一定的提升
    • 提升情況:主要是通過下載下傳騰訊的即時通訊IM的相關demo進行了對應的黑盒測試與相關評測,以及每周的小組答辯時使用線上評審表進行打分互評,對于恰當的評價計算機相關技術和産品的能力有所提升
    • 提升情況:在本次軟體工程實踐中主要有團隊協作的部分為結對程式設計以及後續的團隊合作沖刺完成項目,其中在團隊中擔任組長的角色,發揮了團隊協作精神,參與到了各部分的設計報告與文檔的攥寫工作中,對于團隊協作能力有較大程度的提高
    • 提升情況:學習使用了多方工具進行項目管理(teambition等),且在本學期自己選修了項目管理課程的理論前提下,軟體工程實踐則作為了對于項目管理的實踐,項目管理能力有所提升

團隊合作上的提升

    • 我們組建了一個相對高效的團隊,能夠把任務進行合理的配置設定、高品質地完成,在團隊合作上的提升主要表現在了本次實踐了解到了站立式會議的意義,第一次使用了項目管理工具(teambition)與線上文檔等工具輔助與團隊合作與項目管理

其他方面的提升

    • 抗壓能力:在團隊沖刺時壓力還是挺大的,來源于多方,抗壓能力有所提升
    • 上司能力:在團隊合作中作為組長參與開發,還是提升了不少管理團隊的能力
    • 文檔攥寫能力:在團隊合作中負責了大部分的文檔與部落格的攥寫,文檔攥寫能力提升了
    • 熬夜能力???:确實熬了很多夜,現在結束可以好好休息了~

Part.02 團隊總結

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

你在團隊中擔任了什麼角色?你是否完成了該角色的任務?現在你覺得你适合該角色嗎?

如果你是組長,你覺得你有哪些地方做的不夠好的?有哪些地方做的好的?你覺得該怎麼改進?(較長的描述)

  • 我的感想

    • 經過了Alpha沖刺、Beta沖刺,作為組長,我覺得我們整個小組,從團隊氛圍,到組員關系,到整體的團隊協作能力,都有了很大的提高,一路走來,我很感謝我的小組成員,他們有實力也願意為團隊做貢獻。一直以來雖然大大小小的項目都寫過一些,但以往的都僅僅隻是局限于完成代碼層面上的。通過這次的軟體工程實踐,我才可以說是真真實實的體會了一個什麼叫做相對完整的軟體項目,從一開始的團隊組建選題開始,成員有所劃分,一個完整團隊開發需要的有人擔任産品經理、項目經理來完成項目的管理;需要開發人員分别負責前後端開發、測試等對應的開發工作。從選題過後的原型設計,需求分析、系統設計、資料庫設計再到後面的兩階段的沖刺,可以說這次的時間教給我的不僅僅是代碼開發,還有更多的是如何進行團隊協作,一個系統的開發流程應該完成的分析與設計,測試在開發中的意義,文檔對與開發的幫助,團隊以及項目的管理方式,面臨成員變動的處理等等。

      在這長達接近一個學期的開發中,談談我的隊友們吧,414一直以來都是中流砥柱,很有耐心也很穩,尤其文檔真的寫的很棒;418作為離隊成員,在團隊合作期間,願意聽取隊友的意見,前端的界面一如既往的很美觀;420話少靠譜,在beta階段一人扛起了兩個web前端的工作;429同學可能是本次實踐中收獲最多的幾人之一,從最開始的從未接觸過前後端分離式的開發,幾乎沒有經驗,到現在相對熟練的掌握了部分後端架構的開發使用;428是後來的新隊友,積極樂觀,在負責測試工作的時候為衆人還是提供了不少中肯的建議;417、439基礎相對較差,在沖刺的最後仍沒有參與到真正的代碼開發中,參與了部分測試,确實是個遺憾,他們主要負責了本團隊的項目管理工作,誠然,我們小隊做的還是不錯的項目管理(這部分是我覺得我們組在實踐中做得最好的一部分)離不開他們的付出。

      整個軟工實踐下來,我學到了很多,也遇到了很多困難。明白了一個道理,有些東西不是一蹴而就的,就像我們軟體開發,你得先讓它能跑起來,然後再去做相應的優化;就像我們的學習,我們先要有對全局的把握,然後再去逐個深入。 對于目前我們一起完成的校園芥子空間有一些亮點,也還有着不少未完成的遺憾,還不是一個可以獨當一面發行的項目。希望日後還能繼續完善!

      雖然軟工實踐就要結束了,但希望我們旗山的驕傲不散!👍

你這學期經曆過換組嗎?你對換組有哪些看法?談談你在這個過程中的感受。

    • 沒有經曆過換組,我認為不論是在現在還是未來工作的開發中,一個團隊出現人員調動是很正常的一件事情,一個真正優秀的團隊也不應該被成員的調動而影響到,适應以最快的速度繼續投入到接下來的工作才是該幹的事情。正如我認為的我們小組無論是我還是其他的任何一位成員被進行了調換都不會太大的影響整體的開發進度,對于換組後,我希望新組員能盡快融入隊伍,走了的老隊友也依然能在其他小組大放異彩。

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

    • 對于萌芽/磨合/規範/創造的四個階段階段,我認為現在的團隊處于磨合-規範階段,因為整個開發還是基于原型中設計的功能來實作,部分代碼可能還有潛在的重構規範必要性,與預期功能還有小部分差距。

Part.03 人月神話

怎樣證明你學會了軟體工程?以下要求你們的團隊達到了哪幾個?請在随筆中用資料證明上述内容或側重選擇之一

(1)研發出符合使用者需求的軟體
    必須公開釋出,有實際的使用者,一定的使用者量和持續使用量 (3 天後能保持10 - 100個使用者);而不是: 做沒有使用者使用的軟體
    
(2)通過一系列工具,流程,團隊合作,能夠在預計的時間内釋出 “足夠好” 的軟體
    有項目規劃/需求/設計/實作/釋出/維護,有定時的進度釋出 ; 而不是: 通過臨時熬夜,胡亂拼湊,大牛一人代勞,延遲傳遞等方式糊弄
    
(3)并且通過資料展現軟體是可以維護和繼續發展的。
    而不是 找不到源代碼,代碼無文檔,代碼不能編譯,沒有task/bug 等項目的發展資料
           
  • 研發出符合使用者需求的軟體

    • 校園芥子空間,在初步發行使用者調研使用人數為31人,預計3天後能保持10人左右的使用者
  • 通過一系列工具,流程,團隊合作,能夠在預計的時間内釋出 “足夠好” 的軟體

    • 使用teambition進行了項目管理,在預期時間内燃盡圖基本燃盡,經曆了需求分析、原型設計、系統設計及資料庫設計與兩階段的沖刺(alpha、beta階段),團隊通過騰訊會議每日scrum會議與線上文檔進行團隊合作,釋出軟體大部分符合驗收标準
    • 線上文檔彙總:<點選進入>
    • 前端回報:<點選進入>
    • 接口文檔連結:<點選進入>
    • 每日會議記錄:<點選進入>
    • 任務量化:<點選進入>
    • alpha階段燃盡圖、beta階段燃盡圖及teambition截圖
軟體工程實踐2020_個人作業 —— 軟工實踐課程總結
軟體工程實踐2020_個人作業 —— 軟工實踐課程總結
  • 并且通過資料展現軟體是可以維護和繼續發展的

    • 源代碼使用GitHub倉庫托管,代碼有詳細文檔,有提供編譯的指導readme,對項目的完成情況及bug在對應部落格中有記錄
    • Github團隊倉庫位址:<點選進入>
    • 截圖展示(TEAM-DOC為團隊文檔包含設計報告等、TEAM-CODE-STANDARD為團隊代碼規範)
      軟體工程實踐2020_個人作業 —— 軟工實踐課程總結

寫下屬于你自己的人月神話——個人或結對或團隊項目實踐中的經驗總結+執行個體/例證結合的分析,文字部分字數要求在100字以上,可以使用你自己喜歡的方式表達(如圖文結合、視訊)

  • 個人部落格的建立->

    • 讓我重新的回顧了一下不知在這大學到目前為止這快三年以來可能有時随波逐流可能都快要忘掉了的初心,整理了自己的現有的知識體系,為自己也制定了目标與學習路線。
  • 編碼實作疫情統計->

    • 記一次看似簡單,卻被我搞砸了的作業。看似簡單的解析指令行+一個簡單的邏輯處理後的檔案讀寫,卻因為我滿心都隻想去當那個第一個交作業的人因為沒有考慮到周全而導緻有很多問題,也讓我明白了, 讀書人 寫代碼的人要戒驕戒躁,靜心~
  • 結對的原型設計->

    • 第二次見到原型,第一次設計原型,從墨刀的放棄到對axure的使用(主要是在做了較高的互動,使用墨刀真的不是很友好),最大的收獲竟然是因為本人偷懶反而學會了兩款原型設計軟體的基本使用???!!!
  • 編碼實作原型->

    • 很開心在這次作業取得最高分,和自己的老隊友程偉行同學的再次合作,可以說是最舒服的一次程式設計,前後端分離,順暢完成了編碼實作原型。
  • 團隊的組建->

    • 旗山的驕傲再次集結!!隊伍中的黎家澤同學、鄭斯彬同學、程偉行同學還有王肅南同學等其實一直以來我們都是在在不同的實踐裡的隊友,也許我們分開的每個人并不是最出衆的,但是我相信隻有我們在一起,才是旗山的驕傲!
  • 團隊極限程式設計->

    • 記一次從早上一直到半夜的程式設計實踐,在那天建立的團隊github倉庫,開了短會,分好工,一直連着qq電話,到最後代碼的發行以及部落格的編寫,馬不停蹄的忙碌,在有一成員住院有一成員線上援助(因為不知道第二天有這樣的沖刺,而回了老家無電腦,用手機為提供整體思路做出不可或缺的幫助,設計了流程)的情況下成功的拿下了這次團隊作業的第一,其中我還記得我還與鄭斯彬同學關于是否使用架構進行了不小的争執(我認為上架構是來不及的,但他認為我們的後端隊員可以做到),最後也證明了他是對的,能行!
  • 團隊選題、原型設計、系統設計、資料庫設計->

    • 可以說我們的小隊還是勢如破竹,在前三次的答辯中一舉全部拿下了答辯的最高分,這是大家努力的結果,但我們認為在系統設計部分,我們的成果卻有一些不盡人意,是有所松懈的症狀,我們小組在後面重新開了例會,我們會在下一階段重整旗鼓,旗山的驕傲!回歸!
  • 團隊alpha、beta的沖刺->

    • 經曆了兩個階段合計長達一個多月的沖刺,校園芥子空間終于上線,有一些亮點,也還有着不少未完成的遺憾,還不是一個可以獨當一面發行的項目,希望日後還能繼續完善。

Part.04 建議

對下一屆同學的建議,或者對于開學初的你,對于大一的你,對于開學初的我,你有什麼想建議和告知的呢?請寫下你對後來人的期許

  • 我的建議

    • 這門課不僅僅是一門簡單的實踐課(與以往的實踐課相比,因為以前對于實踐課的我認為就隻是要完成好代碼即可),重要的是《建構之法》的落實和應用,學習的應該是一套完整的軟體開發流程
    • 制定的學習路線與計劃要盡早落實,提前的學習能為你後續的開發省下不少的煩心,大機率在實踐過程中是沒有很多時間去學習一個完整的新的知識體系的

對于軟工實踐課程,你有哪些建議?

    • 建議可以學習北航的軟工實踐的模式,在後幾屆的實踐中共同疊代完成一個項目,這樣相比現在的隻是完成一個相對“完整”的項目不同,而是去完成一個可用性更高,可以持續發行擁有一定使用者基數的“成熟“項目
    • 建議對教學計劃有一定調整,我認為在後續沖刺階段的時間較緊,因為如果不是本學期的疫情,正常來說beta沖刺已經接近期末周了,在本學期我beta沖刺不需要準備期末的前提下,我認為時間都是比較緊的,那如果是正常上課可能情況會更糟

對于助教工作,你有哪些建議?

    • 建議還可以更加深一點與同學們的交流,分享經驗也好,聊聊天也不錯,像最近樂助教建立的交流群(我已加入),我認為挺好的。建議可以在下次軟工一開始就采取這樣的方式

對于自己今後,你有哪些建言?

  • 對自己的建議

    • 不驕不躁,不卑不亢,細緻入微,自信不疑,窮則思變

Part.05 個人技術總結

  • 個人技術總結部落格(webmagic的使用說明):<點選進入>