[上一篇在這]what's going on??
----------承上----------
【Part 3. 程式島上的建設】
建築需要建築、土木等工程,那程式呢?
開始講這個部分之前,學長問了我們一個問題「程式設計==軟體開發」,這是一個問句,true or false?
答案是False,程式設計只是軟體開發的一環。而整個軟體開發除了寫程式,還包含架構、方法、時程、品質、維護等等工作。
要開發一個軟體、一項專案,這種浩大的工程通常絕非一人能力所及,所以多人時要如何分工、合作就變成一個很重要的課題。
一個軟體開發團隊中的角色,由上到下包含主程式設計->專案管理師&系統架構師->程式設計師&測試工程師&資料庫管理師&IT
主程式設計師就是團隊中一個leader或manager的概念;專案管理師則負責與工程師溝通協調、追蹤進度,維基百科中將它細分為領導、組織、用人、計畫、控制這五項工作;系統架構師則是在開發之前,負責先構思、設計整個軟體的架構與流程;程式設計師,顧名思義就是真正開發系統的技術人員囉;測試工程師,是軟體質量的把關者,包含軟/硬體測試、歸化測試計畫、撰寫測試報告、尋找問題、協助改善品質等等;資料庫管理師則負責資料庫的日常管理、維護和運行;IT則是指幫忙準備好工作環境、開發環境的人員。
在《人月神話》這本書中說到「在一個時程已經落後的軟體專案中增加人手,只會讓它更加落後」。為什麼呢?其實不難想像,要讓一個全新的人手加入一個專案團體,除了該人力需要花時間熟悉、了解這個環境和工作,此外多一個人,就得多花一些時間溝通、協調、討論。在一個時程已經落後的專案中,還要再播出時間、精力在對於專案進度沒有直接幫助的事情上面,通常是沒有效率的。而關於軟體工程的開發,相關的模型包含瀑布模型、快速原型模型、增量模型、螺旋模型等等。這裡就不一一介紹...
最後,要討論的是「框架/架構」這兩個我在之前也一直亂用的詞。
「框架是可以通過某種回呼機制進行擴展的軟體系統或子系統的半成品;軟體系統的架構將系統描述為計算元件及元件之間的相互關係」。
用簡單一點的說法:在網路程式中,常用的組件套件,稱之為框架;而架構指的是物件與物件之間交互影響的一套模式,它並不是軟體,與程式語言也沒有絕對的關係。
這樣說好像還是有點抽象,有個例子可以幫助理解:要用樂高拼湊出一個城市街景的作品,需要花費很大的功夫。但是,如果已經先將一些物件準備好並重複使用,在製作作品時就可以省去很多時間,這就是框架;而架構則是一套有效率、方便後續建設修改的方法,將相關的步驟事先設計好,在實際建構時也可以省下許多心力。
====================================================
【每日一句】想開始一件偉大的事,就閉上嘴、動手去做。 by華特‧迪士尼
[下一篇在這]keep going on...