軟體工程實踐總結&個人技術部落格
這個作業屬于哪個課程 | 2021春軟體工程實踐S班 |
---|---|
這個作業要求在哪裡 | |
這個作業的目标 | 回顧與總結 |
其他參考文獻 | 軟工寒假作業(2/2) |
目錄
-
- 第一部分:課程回顧與總結
- 回答過往問題
- 每個階段的收獲
- 了解和心得
- 第二部分:個人技術總結
- 技術連結
- 概述
- 第一部分:課程回顧與總結
寒假作業二部落格連結
Q1:
在2.3個人開發流程中,“工程師在‘需求分析’和‘測試’這兩方面明顯地要花更多的時間(多60%以上);但是在具體編碼上,工程師比學生要少花1/3的時間。顯然,從學生到職業程式員,并不是更加沒完沒了地寫程式——花在寫代碼上的時間反而少了許多。”
我認為将學生和職業程式員做這樣的對比有點不合适,因為學生編碼的時間和經驗相對較低,各項能力水準不足,花在編碼上的時間也會更多。而随着程式設計能力的提升,職業程式員能夠更加輕松寫代碼能夠将更多時間花在需求分析與測試上。是以我認為這樣比較不太合适,并不能很有力證明學生到職業程式員寫程式花費時間的差别。
A:通過這學期軟體工程實踐的課程,我更能深刻體會到當一個項目越大,需求分析和測試這倆方面就越重要,自然編碼部分所占比重就相對而言減少。在最後的團隊實踐中,我們小組各成員在需求和測試方面下了更大的功夫,平均每個人具體編碼的時間相對減少。
Q2:
在3.1團隊對個人的期望中,提到了TSP對團隊成員的要求,其中在理性地工作這一點中,“很多人認為自己需要靈感和激情,才能為宏大的目标奮鬥,才能成為專業人士。著名藝術家Chuck Close說:我總覺得靈感是屬于業餘愛好者的。我們職業人士隻是每天持續工作。今天你繼續昨天的工作,明天你繼續今天的工作,最終你會有所成就。”
對于這個觀點,我有不同的看法。我認為在一個團隊中,即使作為一個成熟的團隊成員必須從事實和資料出發,但也不應該失去工作上的靈感和激情。據我所知如今很多公司的程式員每天都做着相同的工作,即使有好的靈感也會因為團隊而做出妥協,日複一日,對工作的激情可能會逐日降低。是以我認為在統籌團隊的要求之後,也需要保持着對工作的靈感和激情。
A:現在我更能了解這一問題,在一個團隊中,一個明确的目标再加上組員每天堅持不懈向目标前進,才是一個團隊真正需要的,也是成功真正需要的。靈感和激情并不能讓你成為專業人士,跟着團隊的目标一起學習一起奮鬥一起前進才能有所成就。
Q3:
在3.4技能的反面中,作者給出了考察一個人是否精通模仿的辦法。
a.給面試者一個打亂顔色的魔方;
b.要求他把六面還原;
c.如果還原了,要求他把魔方恢複成我最初給他的那個混亂的局面,必須一模一樣。
我認為這種方法不能适用于考察一個人是否精通軟工這門學科,就好比一個程式員解決了一些bug,并且以後發現此類bug自己能夠解決,然而卻需要恢複這些bug才能算精通嗎?我認為一個程式員隻要掌握解決bug的能力,就能算是精通,而不需要複原bug。
A:對于那些比較常見、等級相對而言較低的bug,我們确實要能還原它才能算是精通。若能做到還原它,那麼以後碰到這樣的問題便能一眼發現問題的根源所在,做到真正意義上的精通。在最後的團隊實踐作業中,我因一個相同類型的bug犯了好多次錯誤,原因在于我想當然認為解決了一次bug就等于掌握了它,然而并不如此,歸根到底是不夠熟練的原因。
Q4:
在11.4的從Spec到實作中,“寫好代碼後,小飛對照設計文檔和代碼指南進行自我複審,重構代碼。“ 在這段話中,重構是什麼意思?
根據網上查閱的資料,所謂重構是這樣一個過程:在不改善代碼外在行為的前提下,對代碼做出修改,以改程序式的内部結構。本質上說,重構就是在代碼寫好之後改進它的設計。但我對具體如何使用它還不是很了解,重構應該選擇随時進行還是等最後再重構,還有如果發現需要大面積修改,那應該選擇重構還是重寫呢?
A:重構應該随時随地進行,當遇到需要重構的情況,就應當考慮重構!因為通過軟工理論課的學習和實踐課的經曆,使我深刻領會到一個好的且及時的重構,能幫助我們找到bug,使設計的軟體更容易了解。然而有時候代碼太過混亂複雜,重構它不如推翻重寫來的好。當一個項目臨近最後期限,也應該避免重構,先要保證完成項目目标功能。
Q5:
在16.1.1迷思之一:靈光一閃,偉大的創新就緊随其後中,“就像拼圖一樣,很多聰明人都模糊地看出了最終圖像,都在一塊一塊地拼接,往往拼好最後一塊的人得到了最大的榮譽。但是沒有前人的積累,沒有自身紮實的功底,就沒有’最後一塊‘等着大家去拼。”
對于以上作者認為“一個成功的創新,必須要有自身紮實的功底,而對于那些技術水準不足的人,哪怕有了靈光也隻能是空的構想”這點,我有不同的看法。我認為對于現階段的大學生,可能自身的技術和功底沒有那麼成熟紮實,但遇到一個好的創意時,我們仍然可以先從一些比較簡單的東西做起,積攢經驗和能力,盡力向自己的創意靠攏,最終等到能力水準達到後再實作自己的創新。我認為創新也是需要一步步積累,并不是一蹴而就的。
A:現在我對這個問題更有深刻的了解,就算有個好的靈感有了好的規劃,沒有紮實的功底和技術,一切都是空談。在團隊實踐中,因自己一開始對javafx沒有過多的了解,有的僅僅是java的基礎,是以在一開始很多功能無法熟練的去實作它。但在經過一段時間的打磨後,能相對一開始比較熟練地使用javafx。是以我現在認為,一個好的創新确實需要自身紮實的功底和技術。
- 需求階段:了解了需求分析的重要性,學習了如何正确開展需求分析。
- 設計階段:在該階段中收獲最大的是學會了axure原型設計工具,能夠根據需求制作出原型。
- 實作階段:在該階段主要學會了javafx的使用以及團隊之間如何高效協作編碼。
- 測試階段:學會了對一個項目通過黑盒、白盒、系統測試等手段來測試。
- 釋出階段:在該階段體會到軟體是需要不斷維護和根據新的需求進行修改的。
首先這三個項目無論是從技術難度、編碼量和設計人員方面都是有一定程度上不同的。在個人項目中,自己一個人完成各個階段的實施,自己安排計劃,不需要考慮其他人的因素。而在結對項目中,則需要考慮結對隊友這一因素。兩人需要進行任務的配置設定和其他溝通協調,是一次全新的體驗,效果也很好。再到最後團隊項目,由兩個人變成了一群人,就更考驗我們對組内成員的分工配合群組内溝通交流。通過了這三次項目經曆,使我深刻感受到了個人和團隊工作的不同,也讓我體會到了團隊溝通的重要性和一個真正意義上的軟體工程項目。
JavaFX 之 Canvas
javaFX Canvas API提供了一個靈活的畫筆。它可以通過建立canvas對象,擷取其GraphicsContext以及調用繪圖操作以在螢幕上呈現自定義形狀,它可以在JavaFX場景圖中使用。本次項目你畫我猜要求呈現出一個畫闆并且能夠繪制自定義圖形,是以學習此元件來應用于項目中。