以下介紹本論文使用到的開放原始碼工具,在第四章設計和實作部分將會使用它們和3.1 節的架構整合在一起。
3.2.1 OpenOffice.org
OpenOffice.org 同時是產品也是開放原始碼專案,從 2000 年 10 月 13 日 開 始 , OpenOffice.org 1.0 在 2002 年 4 月 30 日 釋 出 。
OpenOffice.org 的服務宗旨是要建立國際化辦公室套裝軟體領導品牌的社群,並且可以在任 何主要平台運行,可以透過基於開放式元件可程式介面(Open-Component based APIs)存取該 軟體所有的功能和資料,和儲存成標準的XML 檔案格式。OpenOffice.org 專案主要由 Oracle 支持,該公司主要提供專案的程式碼。其他的 支援廠商包含 Novell、RedHat、RedFlag CH2000 和 IBM 。 此 外 還 有 超 過 450,000 來 自 世 界 各 地 的 使 用 者 來 加 入 這 個 專 案 , 讓 OpenOffice.org 成為任何使用者都可輕易使用的辦公室套裝軟體。這就是開放遠始碼社群的 精髓所在(OpenOffice.org,2010)。
目前OpenOffice.org 的產品有
Writer ─ 文字處理軟體(Word Processor),就像 Microsoft Office Word。
Calc ─ 電子表格軟體(SpreadSheet),就像 Microsoft Office SpreadSheet。
Impress ─ 簡報軟體(Presentation),就像 Microsoft Office PowerPoint。
Draw ─ 就像 Microsoft Office Visio。
Base ─ 就像 Microsoft Office Access。
Math ─ 編輯數學運算式的軟體。
在本論文的實作中,將會使用此OpenOffice.org 來撰寫相關文件,如使用案例、設計文件 和Production Plan 等。
3.2.2 Eclipse IDE
Eclipse 是開放原始碼的多語言軟體開發環境,包 含整合開發環境(Integrated Development Environment) 和可延伸外掛系統(T. E. Foundation,2011b)。它主要
27
是支援基於Java 平台的軟體系統開發,同時也可以加上其它外掛來支援不同的平台和語言 的 軟 體 系 統 開 發 , 包 括 Ada 、 C 、 C++ 、 COBOL 、 Perl 、 PHP 、 Python 、 Ruby 等 (E.
Foundation,2010a)。
在本論文的實作中,將會使用此工具來作為系統開發時的主要平台,如撰寫系統程式碼,
並使用它跟其它工具溝通,包含VCS、Maven、Middle Ware 和 Database 等。
3.2.3 Jude UML
Jude UML 是在本論文中唯一不是開放原始碼專案之工具,
它 是 由 日 本 公 司 ChangeVision 開 發 , 本 論 文 使 用 的 是 Jude
Community 5.5.2 版本,為免費版本,雖然跟 Professional 版本比起來功能較少,但已滿足本 論文設計和實作之需求,功能條列如下(Vision,2011)。
1. Support of UML 2.x
2. Class diagram (Object, Package, Subsystem and Robustness Diagrams are included.) 3. Use case diagram
4. Sequence diagram 5. Collaboration Diagram 6. State diagram
7. Activity diagram 8. Deployment diagram 9. Component diagram
10. Generate Java 1.4 sourcecode from model.
11. Import Java 1.4 source files to create model.
在 本 論 文 的 實 作 中 , 將 會 使 用 此 工 具 來 描 述 Domain Model 、 Domain-Driven Design、General Architecture Design 和 Reusable Library Design(圖 3.1 (2) ~ (5)),它的功能雖 然不像商業CASE 工具那樣強大(會花很多錢),同時可做到順向工程和逆向工程,嚴格來說,
它只能提供單一順向工程或是單一逆向工程的能力,也就是無法將程式碼和既有UML 圖作 合併;在此論文中的主要使用方式是使用順向工程功能來從UML 圖產生程式碼骨架,當程 式碼實作發生不預期之變動時,再回頭手動更改UML 圖。
28
3.2.4 Apache Subversion
Subversion 是開放原始碼的版本控制系統,在 2000 年 由CollabNet 公司建立。在過去的十年它獲得了相當大的
成功,現在Subversion 仍然在開放原始碼和企業應用領域持續耕耘(Subversion,2011)。
3.2.5 Open Foundry
由自由軟體鑄造場(Open Source Software Foundry)開發之網路
專案管理平台,OSSF 為政府投資,旨在推廣自由軟體在台灣發展之腳步而創立之組織;
Open Foundry 主要的服務如下(自由軟體鑄造場,2011)。
1. 專案開發的面向
OpenFoundry 在專案開發方面,其本身即為一個供自由軟體愛好者討論、編寫、管理 專案內容所設置的共同開發平台,自由軟體的開發人員可以透過此 OpenFoundry 所 提供的工具模組建置其自由軟體專案;一般的使用者則可以透過 OpenFoundry 下載 所需要的自由軟體,並提供下載程式的改良意見。
2. 資訊匯集的面向
OpenFoundry 在資訊匯集方面,登錄有本專案的最新動態、自由軟體社群活動、法律 授權參考資訊以及自由軟體相關研究報告與教材資源等,可供使用者自行下載參照學 習。
3. 人才媒介的面向
OpenFoundry 在人才媒介方面,收集了國內軟體社群、學界與業界自由軟體相關人才 的資訊,延伸介紹台灣自由軟體社群發展的現狀,以整合跨領域的人際網絡與人才資 源,並讓使用者可以分享自由軟體活動訊息、開發經驗及個人近況,使用者亦可以透 過此平台與國內需要自由軟體人才的廠商聯繫接洽。
3.2.6 Apache Maven
Apache Maven 是開放原始碼的軟體專案管理 (Software
Project Management)工具,以 POM(Project Object Model)為基礎,Maven 就可以支援軟體專 案的建置、報告和文件管理等功能(T. A. S. Foundation,2010c)。
Maven 的主要目標是讓剛加入專案的 Developer 可以在最短的時間內了解軟體專案的整體 29
狀態;為了達到這主要目標,Maven 改善以下軟體專案開發的面向
3. 在每次建置專案可執行程式(Build Code)時,能自動化地執行所有測試程式,並且會 自動寄發測試報告給專案相關人員,進而保證每次產生的專案可執行程式的品質是在
3.2.7 Apache Tomcat
由Apache 開放原始碼社群所開發與維護之中介軟體(Middle Ware),
主要提供JavaEE 規格中 Servlet 和 JSP 所定義的功能,主要包含 Web Container(T. A. S. Foundation,2011a)。本論文將使用 Tomcat 作為主要 中介軟體。
30
3.2.8 H2 DB
100% 基 於 Java 平 台 所 開 發 的 開 放 原 始 碼 關 聯 式 資 料 庫 (Relational Database),為 MPL 1.1 (Mozilla Public License) 和 EPL 1.0 (Eclipse Public License)授權(Engine,2011);本論文將 H2 DB 用在如下所述的兩個環境。
1. Production 環境,由 H2 DB 起始的一個獨立運作之網路伺服器對系統提供服務,可支
3.2.9 JUunit
目前在開放原始碼社群中基於Java 平台上最出名的單元測試框架(Unit
Test Framework)(JUnit.org,2011),且市面上,不論是商業授權或是開放原始碼版本的 IDE 都支援其框架,在現今軟體開發方法中,都相當強調自動化測試的重要性(Beck,2003;
Wells,2009) ,而 JUnit 這樣的測試框架正是自動化測試基石。
在本論文中,除了前端UI(User Interface)之外,所有自行開發的程式碼都要納入 JUnit 的 測試範圍,接著使用Apache Maven 跟 JUnit 整合,如此每次專案在建置(Build)時,都會執行 測試程式並且將結果作成報表,方便開發團隊即時發覺每次專案程式修改是否合乎預期,如 有問題也能馬上修改,並且使用自動化測試即時驗證修改結果;如此便能提升專案團隊對於 專案程式碼品質提升的意願,勇於在必要時刻進行程式碼重構(code refactor)。
3.2.10Spring Framework
由SpringSource 開發之開放原始碼專案,它作為一個輕量級的框架 (SpringSource,2011),目前在 javaEE 領域中可說是相當的熱門,在本論 文中主要使用到之功能如下。
1. Inversion of control(Dependency Injection) 2. Aspect-oriented programing
31
3. Data accessing framework
4. Transaction management framework 5. Model-view-controller framework
3.2.11 Hibernate Framework
Hibernate 是在 javaEE 領域相當有名的 Object-Relation Mapping 開
放原始碼框架(J. Community,2011);在本論文中對於資料庫的存取,是透過 Java Persistence API 作為介面,底層是依靠此框架作管理。
3.2.12使用工具與軟體產品線開發活動之關係
以下駝峰圖描繪出關於各工具如何被使用在本論文軟體開發活動中的程度,圖中上半部 之X 軸是系統開發生命週期,下半部之 X 軸則是將本論文軟體產品線之開發活動,依照系 統開發生命週期作分類及歸納;Y 軸是本論文使用之主要工具;兩者交會處便代表某特定工 具在系統開發生命特定週期和本論文特定開發活動之使用狀態。
以Eclipse IDE 為例,在系統開發初期,處於需求蒐集及確認和需求分析等階段,尚不須 撰寫程式碼或建置開發環境,所以使用狀態為無;之後進入系統設計階段,SD 在設計系統 時,需考慮到系統架構和設計可行性之確認,通常會使用到IDE 去確認細部需求,所以使用 狀態漸漸提高;之後歷經實作、測試和維護階段,當然IDE 都脫不了干係。
32
資料來源:[本研究整理]
33
圖 11: 使用工具與本論文軟體開發活動之關係
第4章 軟體產品線之設計與實作
萃取出共用的部分(Project Template、Business Logic 和 API Library 等),以期之後能夠使用組 裝式開發來達成的兩個產品之實作。
AnonymousUser 不具名使用者,通常是隨機連線至網站潛在使用者;可瀏覽、查詢 網站上架的書籍和註冊成為網站顧客等。
Customer 在網站已有註冊資料且已登入網站表明身分的使用者;可購買書籍、
維護個人資料和聯絡客戶服務等。
Clerk 線上書店的店員;線上書店的維護帳號、訂單、書籍資料、庫存等。
Administrator 線上書店的管理員,擁有包含Clerk 的權限;維護 Administrator 和 Clerk 的權限等。
Carrier 把已訂購書籍宅配到顧客家中或是便利超商的貨運商;貨運商會連
線到系統更改訂單資訊,例如顧客已簽收就進系統把訂單close 掉等。
資料來源:[本研究整理]
下表列出不會與系統有直接互動之利害關係人
34