教學教材


Teaching Material
1、資訊系統開發概論-問題




1、資訊系統開發概論-答案


A1-1.開發資訊系統為什麼要先做系統分析與設計?
資訊系統是由使用者、軟體、硬體及資料等元素所組成,用來幫助企業解決問題、正確決策。大型資訊系統的開發工作不只是程式內部邏輯的設計活動,還包括資料庫設計、使用者介面設計、介面設計、通信協定設計和複雜的系統配置過程,開發是否能成功其因素包含人、工具、技術、資源、時程等。為了資訊系統的能在認可的時間與資源內,開發出高品質的資訊系統,因此需要一套開發過程中必須按步就班的作業程序,包括需求分析、分析、設計、實施與測試等階段,按照這些程序所制定的計劃逐步執行。因此系統開發必須先做系統分析與設計至少包含下列的優點:
(1)降低系統開發發生錯誤的機會。
(2)使系統功能符合使用者所需。
(3)使得專案人員之間較易合作、較有效率的完成工作。



A1-2.參與資訊系統的開發包含哪些重要人員?這些人員的主要貢獻為何?
(1)專案經理(Project Manager)

專案經理執行專案管理,確保專案的進行時程、控管專案的資源使用與分配,使系統開發專案能如期如質完成。
(2)系統分析師(Systems Analyst/Designer)

系統分析師必須理解使用者的需求,並將使用者需求歸納分析轉化成明確的系統規格書,規範資訊系統開發的標準程式語言、程式的基本架構、撰寫程式的標準作業程序,並且詳細說明程式的處理邏輯、限制條件以及異常情況的處理程序。
(3)程式設計師(Programmer)

程式設計師主要工作是將系統規格書轉換成電腦可執行的程式、建立資料庫、測試與安裝系統等。
(4)使用者(End User)

提供使用者需求,同時分析師藉由終端使用者擁有的企業工作領域之專業知識,轉換成可支持其工作的資訊系統,使用者參與系統開發的過程,能提高使用者對於該系統的認知與認同,並且降低對於新的資訊系統的抗拒。
(5)企業主管

企業主管擁有決策權與企業的專業知識,能對資訊系統專案發展設定一般性的需求與限制,並且能決定系統的發展方向,系統分析師必須經由與企業主管人員的溝通,以便瞭解他們的期望、企業組織內的限制和資源等。
[參考]

參與系統開發的人員包含使用者、專案經理、系統分析師、程式設計師、…等,開發過程中各方人員必須保持良好的溝通,當系統開發之參與人數越來越多時,溝通的複雜度將越來越高,下圖描繪系統開發過程中因成員沒有良好的溝通時,可能會發生的情況,由左至右、由上而下的順序分別講述:
(1)客戶解釋他們想要的
(2)專案經理對客戶需求的認知
(3)系統分析師所設計的
(4)程式設計師寫出來的程式
(5)銷售業務員所描述的系統
(6)專案的文件
(7)最後安裝完成的系統
(8)客戶所付的錢
(9)上線後的技術支援
(10)客戶真正需要的系統

(出自http://projectcartoon.com/)



A1-3.系統發展生命週期有哪些階段?
資訊系統發展生命週期(System Development Life Cycle, SDLC)一般包含使用者需求分析、系統分析、系統設計、編碼實作、測試和操作運行與維護,如下圖所示:
(1)需求分析(Requirement Analysis):對企業的整體資訊系統需求作確認、分析,排定系統的範圍、定義與功能。
(2)系統分析(System Analysis):將系統需求轉化建構為軟體程式邏輯架構。
(3)系統設計(System Design):將軟體程式邏輯架構轉換成實體系統規格,並規劃資料庫、使用者介面及安全機制等。
(4)編碼實作(Implementation):包含撰寫程式、建置資料庫、測試、安裝等工作。
(5)測試除錯(Debugging):測試系統功能與效能,並進行除錯與修正。
(6)操作維護(maintenance):系統正式運作中,並且系統化方式進行維修與改善資訊系統。



A1-4.資訊系統的開發技術有哪些?
常見的資訊系統的開發技術有下列三種:
(1)結構化的(Structured)系統分析與設計技術:Structured systems analysis and design method)簡稱SSADM,將資料與程序分開處理,由文件主導的系統設計方法。最主要的三項技術為邏輯資料建模(Logical data modeling)、資料流建模(Data Flow Modeling)、實體表現建模(Entity Behavior Modeling)。
(2)物件導向的(Object-Oriented)系統分析與設計技術:是一種更符合人性化的設計方法,無論是系統分析或系統設計都採用物件導向技術,將資料與程序合併處理,並將之封裝成物件。
(3)敏捷軟體開發(Agile Software Development)技術:當使用者需求快速變化時,能快速應對的一種軟體開發方式,軟體開發過程中以人為核心、疊代、循序漸進,強調設計團隊與企業使用者之間的緊密協調、面對面的溝通、頻繁交付新的軟體版本、緊湊而自我組織型的團隊、能夠很好地適應快速變化的需求重新組織團隊或編寫程式。