根據應用系統的功能特性可將其劃分為功能性需求(Functional Requirements)及非功能性需求(Non-functional Requirements)。功能性需求定義了系統的核心功能,而非功能性需求為系統層面的需求,且為核心模組所共用,例如logging、 authorization。雖然物件導向程式設計是目前最常被用來管理核心功能的方法論,但其對於橫跨(crosscutting)的非功能性需求則缺乏適當的模組化機制。剖面導向程式設計(Aspect-Oriented Programming)是一種新興的程式語言方法論,能夠利用新的模組化單位—aspect—有效處理橫跨性需求的模組化問題,因此本研究將剖面導向程式設計的觀念與技術運用在工作流程(Workflow)的領域中,並且以JBoss jBPM(Java Business Process Management)為基礎,設計jPDL(jBPM Process Definition Language)的剖面導向擴充語言AO4JPDL(Aspect-Oriented for jPDL),並擴充jBPM工作流程引擎(jBPM Workflow Engine),使流程設計人員能利用AO4JPDL解決橫跨性需求的模組化問題。 / Software-system is composed of functional requirements and non-functional requirements. Functional requirements define core functions of software-system. Non-functional requirements are crosscutting concerns such as logging, authorization and other elements common to many of the core modules. While object-oriented programming (OOP) is the most common methodology employed today to manage core functions, it is not enough to manage crosscutting concerns. Aspect-Oriented Programming (AOP) is a relative new methodology that specifically targeted the management of crosscutting concerns by introducing a new unit of modularization—an aspect—that realizes the concept of Separation of Concerns. Our research is to apply Aspect-Oriented Programming in the field of workflow. We implement Aspect-Oriented for jBPM Process Definition Language (AO4JPDL) and extend jBPM workflow Engine to support Aspect-Oriented Programming. AO4JPDL is a aspect-oriented extension to the jBPM Process Definition Language(jPDL). With AO4JPDL process designer can implement crosscutting concerns in aspects instead of fusing them in the core modules, resulting in a system that is easier to design, implement, and maintain.
Identifer | oai:union.ndltd.org:CHENGCHI/G0094971019 |
Creators | 鍾政憲, Chung,Cheng Hsien |
Publisher | 國立政治大學 |
Source Sets | National Chengchi University Libraries |
Language | 中文 |
Detected Language | English |
Type | text |
Rights | Copyright © nccu library on behalf of the copyright holders |
Page generated in 0.0024 seconds