軟件工程提問回顧與我的總結

學期初提問博客

傳送門html

對當時的提問進行回答

結對編程

在結對編程的模式下,一對程序員肩並肩、平等地、互補地進行開發工做。他們並排地坐在一臺電腦前,面對同一個顯示器,使用過同一個鍵盤、同一個鼠標一塊兒工做。前端

回答:程序員

親自體會告終對編程以後纔會真實的體會到,溝通與交流的重要性,這其中主要的一點就是一塊兒編程的過程當中的交流。固然,在寫代碼以前的溝通也很重要,那關乎結對項目的整個問題,因此確實像書中所說的,在一塊兒編程能夠溝通起來方便不少。數據庫

產品的週期

隨着時間的推移,這幾類功能也會發生變化,例如手機的多點觸摸曾經是「驚喜」的功能,後來是全部廠家競爭的核心功能,再後來已是最基本的功能了。編程

回答:後端

這個問題我這個學期學習了經濟管理中的產品設計以後有了一些本身的見解,對於客戶來講,興奮需求是永遠沒法知足的。因此開發者不斷地瞭解客戶,客戶也會在潛移默化中將興奮需求轉變爲指望需求,開發者應該從指望需求的角度來設計與管理產品的週期。服務器

關於 goto 語句的使用

函數最好有單一的出口,爲了達到這一目的,可使用goto。網絡

回答:框架

這個問題是一個同窗給我解答的:書中寫的是「函數最好有單一的出口」,在函數退出以前,可能還須要作一些清理工做。若是不用goto,在每一個return語句前都須要把作清理工做的代碼加上,這樣就會出現重複的代碼,而且比較繁瑣,容易出錯。函數

用戶的體驗

咱們的軟件要爲新手和專家提供可定製化的設計。一些操做方式,如快捷操做,用戶能夠自行調整。咱們還應該爲存在某些障礙的用戶(色弱、色盲、盲人、聽力有缺陷的用戶、操做鍵盤鼠標不方便的用戶等)提供必定程度的便利。對於長期使用某個軟件的用戶,軟件應該能適應用戶的使用習慣,讓用戶越用越順手,最後產生感情上的好感和忠誠度。

回答:

這個問題仍是從經濟管理中獲得一些啓示,若是咱們從經濟管理的供應鏈的角度看這個問題(一個不是很恰當的比較),那麼咱們考慮的就是產品的縱向與橫向的設計。在產品的市場競爭優點中有一種優點是集中化的策略,顧客的集中化也是重要的一方面。可是在這個問題上仍是要作到權衡,因此最直接與有效的方法就是經過使用者的反饋。

項目經理

軟件團隊裏除了能寫代碼、測試代碼和畫圖作設計的成員,還有一類角色,不作上面這些事情但也很重要,咱們叫他們項目經理——PM。

回答:

一個優秀的項目經理徹底是能夠承擔一部分的開發的任務的,不過這是相對於一個小的團隊來講,好比說我以前所在的的那個 PureMan 的兼任項目經理與開發的吳昊同窗就很優秀,參與到開發中還能夠更好的把控整個項目的進度。

IT行業的創新

這個想法看起來沒什麼錯,咱們不就是爲了成爲某個領域的專家,纔來上學,拿學位,但願拿到學位以後成爲專家,而後再開始這個領域的創新?可是統計數據代表,70%的創新者說,他們最成功的創新,是在他們的拿手領域以外發現的。

回答:

這個問題我是在讀了吳軍老師的浪潮之巔以後,有了一些本身的看法,也算是解決了本身的當時的困惑吧,IT行業的創新,不只僅是行業內技術的創新,還能夠是與外界技術的結合的創新,還能夠是商業模式的創新。

在實踐中各個階段學到的知識點我學到的知識點

需求階段

軟件開發是一個過程,我但願他是一個螺旋

需求階段更多的瞭解客戶,畢竟一切都是爲了使用者,咱們的目標就是提供更好的服務,因此要撤離知道需求是什麼,就必須去了解客戶,去了解市場。

設計階段

這一階段除了要考慮到客戶以外,咱們還要從開發者的角度看這個問題。從客戶的角度,設計的目的就是盡最大的可能去知足客戶的需求,這一階段還能夠達到使用者的興奮需求,也就是需求者意料以外的驚喜,可是考慮到開發者的角度,以及其它因素,時間成本,人力成本等等,因此須要作出一些權衡。

實現階段

實現階段主要就是工程的推動,這個過程當中,開發者要對本身的時間把握以及過程的推動有必定的掌控,既要保證質量,又不能開發的太慢,致使整個過程都滯後,這個過程也須要開發者本身權衡與考慮。同時要注重團隊開發之間的合做與交流性,好比接口這些關鍵的地方。

測試階段

開發的過程很重要,可是測試的過程一樣很重要。由於沒有人可以寫出徹底沒有bug的代碼,更況且是團隊合做。測試的過程是對項目的進一步保證。測試不只僅要從產品的需求的角度來看待成品,還有不少須要測試的地方,不是一個客戶的需求,可是當客戶組成一個羣體的時候,它就變成了一種需求。

發佈階段

發佈階段,發佈階段主要的問題是平臺的選擇。若是不借助宣傳以及平臺的影響力的話,很難實現大規模的推廣產品。因此平臺的選擇很重要,因此在開發的階段還要考慮到以後平臺的需求,也就是推廣的需求。

維護階段

維護階段,主要是後期階段,有一些項目只有前端沒有數據庫的維護起來就很簡單,好比 PureMan 的博客園手機 APP,可是我以後參與的葫蘆娃的神經網絡可視化的,就遭遇過服務器被攻擊的狀況,不過還好當時沒什麼重要的數據,代碼也使用 GitHub 管理,只好從新部署。

心得

學習方面的心得體會

我在軟件工程開發的過程當中,擔任的角色是測試者的角色。我在博客園手機 APP 開發度過了 \(\alpha\) 階段,而後在生成深度學習代碼的網站小組度過了 \(\beta\) 與 $\gamma $ 階段,這兩段的測試分別是安卓軟件的測試,與網頁的測試。這兩個階段的測試,有些相同又有些不一樣。

相同之處

  1. 前端的測試都是以組件爲基礎測試,組件之間的相互做用是實現功能的基本方式
  2. 須要對接口進行測試
  3. 均可以使用自動化的方式進行功能測試

不一樣之處:

  1. 第一個不一樣是使用的軟件不一樣,可是測試方法類似
  2. 對網站的測試,須要對後端的服務器測試,博客園APP原本也須要測試,只不過他調用的是博客園官方的API,
  3. 對 Django 框架下的代碼作單元測試,

在功能方面,很難作到萬無一失,可是天網恢恢,疏而不漏,我採用的是使用bug樹的方式進行測試,可是這個方式也有侷限性,那就是在咱們這種產品功能較少的狀況下,可以完整的覆蓋功能,可是對於狀況複雜的軟件,使用的話,就會過於冗餘。而對後端的測試,本身的體會就是,須要注意開發的代碼是否過於冗餘,這樣不只僅會下降效率,接口之間的相互調用也容易出錯。

其它的心得體會

除了在學習技術上獲得的知識外,在團隊開發中也有一些體會。我經歷了兩個團隊的兩個不一樣的開發的過程。從一個隊伍融入另外一個隊伍,而後一塊兒學習,一塊兒工做,一塊兒將本身的事情作好,我以爲是一件很可貴事情,還有就是,溝通真的很重要,進入葫蘆娃的時候,有些地方感受仍是沒法適應的那麼塊,與開發者之間的溝通,使本身的效率大大的提升了。

相關文章
相關標籤/搜索