課程報告 使用開放原始碼工具實作軟體產品線方法 報告者:郭景森 班級:進資一甲 學號:NA490017 課程:南臺科大資管所碩專班 軟體工程 授課老師:陳炳文 報告出處:繆維武 國立交通大學管理學院(資訊管理學程)碩士班碩士論文中華民國一百年六月
國立交通大學管理學院(資訊管理學程)碩士班 使用開放原始碼工具實作軟體產品線方法 國立交通大學管理學院(資訊管理學程)碩士班 研究生 繆維武 指導教授 楊千 博士 中 華 民 國 一百 年 六 月 報告人:郭景森(NA490017) 指導教授:陳炳文教授
一、緒論 二、相關背景介紹 三、軟體產品線設計與開放原始碼工具之整合 四、軟體產品線之設計與實作 五、結論與建議 綱要 一、緒論 二、相關背景介紹 三、軟體產品線設計與開放原始碼工具之整合 四、軟體產品線之設計與實作 五、結論與建議
一、緒論 1.1 、研究動機與目的 1.2 、論文架構與研究流程
1.1 、研究動機與目的 1.欲解決相似問題之系統歸納在同一產品線下, 每一個系統( 產品) 就可採用組裝式軟體開發。 2.此論文最後將實作希望能藉由此論文的產出,能對於實務上提出欲導入之原則與建議。
1.2 、論文架構與研究流程
二、相關背景介紹 2.1 、軟體抽象化層次之演進 2.2 、 物件導向系統的設計風格 2.3 、 Domain-Driven Desig(領域驅動設計) 2.4 、 Ubiquitous Language(統一建模語言) 2.5 、 Software Product Line Engineering(軟體產品線) 2.6 、軟體工廠與軟體產品線 2.7 、測試驅動開發
2.1 、軟體抽象化層次之演進 *機器語言(Machine Language) *組合語言(Assembly Language) *高階程式語言(High Level Programming Language) *結構式語言(Structured Programming) *物件導向語言(Object-Oriented Programming) (Eckel,2002) #高階程式語言的一種,除了包含結構式語言的特性之外,還另外具有 三種特性,封裝(Encapsulation)、繼承(Inheritance)和多型(Polymorphism) *應用虛擬機器(Application Virtual Machine) *中介軟體(Middleware) (Sun Microsystems,2008)
2.2.1 Transaction Script 設計風格(事務腳本) 2.2.2 Domain Model 設計風格(領域模式) 2.2 、 物件導向系統的設計風格 2.2.1 Transaction Script 設計風格(事務腳本) 2.2.2 Domain Model 設計風格(領域模式)
2.3 、 Domain-Driven Desig(領域驅動設計) 由 Eric Evans 提出的 Domain-Driven Design,可說是 Domain Model 設計風格的進階版,它系統化地提供了專有術語(Terminology)和最佳實務(Best Practices),來幫助開發團隊如何做出更好的設計抉擇,可以更快速地開發欲解決複雜問題領域的軟體系統(D.-D. D. Community,2009)。
2.4 、 Ubiquitous Language(統一建模語言) UML 的出現,有如救世主一般,結束了圖形化塑模語言的戰國時代(Fowler,2005)。因光從程式語言本身來看,無法提供更高的抽象化層次來幫助我們建立更複雜、更 龐大的軟體系統。
2.5 、 Software Product Line Engineering(軟體產品線) 「一個軟體集成系統的集合,集合中的系統彼此分享一套共通和管理的功能集合,此 功能集合是為了滿足某一特定市場區隔或是任務之需求,而基於事先規劃好的共享核心資產 所開發出來的」
2.6 、軟體工廠與軟體產品線 軟體工廠的內容,可以區分為兩個部份: 第一部份是 軟體產品線的發展, 第二部份是產品的發展。 軟體產品線的發展又可以區分為 三個階段,分別為 第一軟體產品線分析,進行的工作內容包括:產品線的定義、問題領域確定以 及解決方案領域確定; 第二為產品線設計,進行的工作內容包括:軟體架構的發展、客戶需 求的映對以及產品發展流程; 第三為產品線的實作,進行的工作內容包括:軟體資產的供應 以及軟體資產的包裝。
2.7 、測試驅動開發 1. 思考你要測什麼? 2. 思考你要怎麼測? 3. 寫出測試程式碼並執行,確認他們全都是有問題的(failed) 先確認它們都是有問題,免得測試程試結果有誤。 4. 開始實作一段、測試一段,直到全部測試程式都通過測試(pass) 5. 移除實作中重複的程式碼,或是加上設計樣式(也就是作重構),接著再確 認測試程式 是否全部通過在不影響實作程式功能性需求的情況下重構程式, 讓程式的品質提昇。 6. 持續使用以上步驟開發系統新功能
三、軟體產品線設計與開放原始碼工具之整合 3.1 、軟體產品線架構設計 3.2 、開放原始碼工具介紹
四、軟體產品線之設計與實作 4.1 背景描述 4.2軟體產品線之需求 4.3核心資產之設計pplication-service和Bookstore-domain-model-persistence-jpa專案。 4.4 產品開發之設計 4.5 系統實作
4.1 背景描述 目標是實作一線上書店網站前後台模組(兩個產品),其為網路應用程式;前台模組主要是讓線上書店的使用者和顧客能夠方便地做查詢、瀏覽、購買書籍和維護個人資料等作業;後台模組主要是讓線上書店的管理者和店員能夠方便地作書籍上架、促銷、接收顧客訂單和處理顧客抱怨等;其系統實作主要是驗證軟體產品線的可用性,故背景單純設定為一家線上書店、多家出版商和多位線上客戶的交易平台,且此線上書店有自己的書籍庫存。
4.2 軟體產品線之需求 4.2.1角色清單 4.2.2使用案例 4.2.3非功能性需求
4.3 核心資產之設計 4.3.1 Bookstore-project-template-spring 專案 4.3 核心資產之設計 4.3.1 Bookstore-project-template-spring 專案 4.3.2 Bookstore-domain-model專案 4.3.3 Bookstore-domain-model-persistence-jpa 專案 4.3.4 Bookstore-application-service專案 4.3.5 Bookstore-utilities專案 4.3.6 系統自動化測試之管理 4.3.7 系統元件相依性之管理
4.4 產品開發之設計開發之設計(線上書店後台系統之穩健分析圖) 4.4 產品開發之設計開發之設計(線上書店後台系統之穩健分析圖)
4.5 系統實作(前台)
4.5 系統實作(後台) 圖 33: 線上書店後台系統畫面 資料來源:[本研究整理] 4.5 系統實作(後台) 圖 33: 線上書店後台系統畫面 資料來源:[本研究整理] 以 上 系 統 實 作 之 專 案 放 置 在 自 由 軟 體 鑄 造 場 之 環 境 中 , URL 為 http://www.openfoundry.org/of/projects/1924。
五、結論與建議 5.1 、結論 5.2 、建議
5.1 結論 5.1.1 量化角度 5.1.2 質化角度
5.2 建議 1. 由上而下和由下而上之軟體產品線建置 2. 使用 MDA(Model Driven Architecture)開發 5.2 建議 1. 由上而下和由下而上之軟體產品線建置 2. 使用 MDA(Model Driven Architecture)開發 3. 不同語言與平台之選擇 4. 資源考量本論文實作沒有把時程和人力資源列入考量
問題討論 1.研究者利用商品規格化標準化之理念用開放原始碼製作之產品能類似生產線方式生產,但軟體製作屬客製化性質,除基本元件可行外,其產品都有獨特性,全面適用,以達量產,是否可行,有無問題衍生,值得思考。 2.建立原則,就要考慮例外,否則,無法適應未來發展。
THE END