軟體開發與程式設計

瀏覽數:5318
關鍵字:


  對於「軟體開發」與「程式設計」這兩個名詞在涵義上有很大的不同的,軟體開發包含了專案的規劃,人力、資源的配置、工作項目執行與時程的掌控,最後還有品質測試與軟體部署,程式設計只能算是其中一個工作項目而已。但是在大多數人的眼中,大多都會認為「軟體開發就是程式設計」,「程式設計就是軟體開發」,甚至許多從事軟體開發行業的人也都對這兩者有著「這兩個是一樣的」,這樣的誤解。因此,便會認為在開發團隊中,只要找了一些知道如何寫程式、或是很擅長寫程式的人,就可以順利地,把軟體開發出來。即使軟體開發中的各個環節需要其他的角色,也不過只是跑龍套的角色而已。真正的主角還是撰寫程式,其他環節其實並不重要,只要搞定程式撰寫,就大概可以搞定整個軟體的開發了。
 

  會有這樣的想法,大多是因為看到程式設計產出了實際的原始碼,而這些原始碼就是軟體運作的根本,因此產生了「做好程式設計,就是軟體開發的全部」這樣的迷思。如果把軟體開發比喻成籃球賽,程式設計就是球員把球投入籃框。但是要把球投入籃框,除了球員本身的天賦和不斷地練習之外,還需要球探先收集對手的資料、習性等,然後教練針對這些資訊來設計相對應的戰術,看是要投三分球,還是切入禁區投籃,而這些戰術也需要其他隊友的配合,幫忙阻擋或是吸引防守球員,紀錄員要記下每次投籃的命中與否,作為日後訓練的統計資料依據,全部綜合起來,才能在每一次的進攻中得分,進而贏得比賽。如果在籃球場上有五位明星球員,每個都是投籃高手,但是彼此之間沒有任何默契,不懂得傳球,卡位掩護隊友,執行教練下達的戰術,只知道自己拼命投籃,這樣的球隊是不可能獲勝的。想打好一場籃球賽,個別球員的球技固然扮演重要的角色,但是像是作戰策略的擬定、或是融入於比賽之中的各種觀念,默契搭配方式,其重要性也不亞於球技,甚至更在那之上。
 

  軟體開發的工作包含許多流程、步驟,首先收集使用者需求,接著進行需求分析,再根據分析的結果,設計使用者操作畫面,資料儲存的方式等等,然後才進入程式設計階段,最後,軟體產生出來了,還要經過測試工作的檢查,確認無誤後,才能算是完成軟體開發。如果我們把籃球比賽對比到軟體開發整個過程中,就可以發現,收集需求就像是球探收集資訊,需求分析與設計就是教練根據收集到的資訊設計戰術,程式設計就是球員們協力執行戰術,將球投入籃框中,測試工作則像是場邊的紀錄員一樣,紀錄並檢視整個戰術執行過程是否有不妥之處。因此,若是把軟體開發認為是只要做好程式設計的工作,而對於使用者的需求,並沒有做好明確的劃分,訂立階段性目標,依序的完成它,而是把所有想做的事都混在一起,在沒有明確的需求的情況下,就開始撰寫程式,同時,又放任需求不時地改變、調整,沒有任何管控需求變更的程序或手段。如此一來,就很容易導致需求不斷地擴大,無法收斂、或是持續變化的需求,進而影響到整個開發。
 

  過去在學校時有一門課是系統專題,由同學們組成一個4~5人的小組,共同來完成一套專案系統。當時的指導教授告訴我們:「沒有寫不出來的系統,系統寫不出來,是因為系統分析沒有做好」。當時剛剛開始接觸程式設計,在技術至上的觀念下,總認為系統寫不出來是因為自己寫程式的功力不夠,所以系統寫不出來,再加上指導教授的專長是系統分析,並非程式設計,對教授的能力有所質疑,想當然對教授所講的話是嗤之以鼻。等到進入了職場後才發現,收集需求與系統分析是程式設計的根本,沒有做好這兩件事該做的事,就算是寫程式的功力再高強,也會因為不知要從何寫起,而變得毫無用武之地。所以,軟體開發應該是一門獨立的學問,和程式設計相關,雖然程式設計是最直接產出軟體的手段,但是兩者之間不能畫上等號。
 

  球員不論是投籃或是切入上籃,都是得分重要手段,但是配合戰術,協調隊友來選擇出手的時機與方式也是不可忽視的。
 

更多資訊請參考...
{{item.title}}
生產力中心提供的活動資訊
{{item.title}}
相關出版品...