Tải bản đầy đủ (.doc) (17 trang)

Kiến trúc phần mềm ECLIPSE

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (241.37 KB, 17 trang )

Bài tập môn Công Nghệ Phần Mềm
SVTH: Hồ Chí Sĩ
Lớp SP Tin K30
Khoa CNTT - ĐHQN
Đề tài 2:
Tìm hiểu về kiến trúc phần mềm Eclipse
I. Tổng quan về kiến trúc phần mềm
1. Kiến trúc phần mềm là gì
Kiến trúc phần mềm (KTPM) của một chương trình hoặc hệ thống tính
toán là cấu trúc hoặc các cấu trúc của hệ thống đó, gồm các thành phần của
phần mềm, các thuộc tính có thể trông thấy được từ bên ngoài của các thành
phần này, và các mối quan hệ giữa chúng (Theo định nghĩa của Bass,
Clements, và Kazman).
Theo định nghĩa này thì các thành phần của phần mềm có thể được coi
là các bộ phận cơ bản của kiến trúc hay các khối xây dựng nên kiến trúc. Còn
các chi tiết bên trong của sự thiết kế và cài đặt thành phần phần mềm không
được phản ánh trong kiến trúc của hệ thống.
2. Tầm quan trọng của KTPM
- KTPM đưa ra một cái nhìn tổng quan về hệ thống, là tài liệu quan
trọng, chi phối toàn bộ quá trình xây dựng và tiến hóa phần mềm.
1
- KTPM là tài liệu giúp ích trong việc giao tiếp giữa những người tham
gia dự án trong suốt quá trình phát triển phần mềm như người dùng, người
phân tích, thiết kế…
- KTPM giúp ích trong việc sử dụng lại. Người phát triển có thể tham
khảo KTPM để biết những thành phần nào đã có để dùng lại hay thành phần
nào cần bổ sung.
3. Phương pháp phân tích KTPM
Có nhiều phương pháp để phân tích KTPM, trong đó phương pháp
ATAM (Architecture Tradeoff Analysis Method) là phương pháp đánh giá
KTPM một cách kĩ lưỡng và triệt để nhất.


• Output của ATAM:
- Tài liệu trình bày gắn gọn về kiến trúc: thường đề cập đến mô hình
các đối tượng, danh sách các giao diện và các đặc tính đặc trưng của chúng…
- Diễn tả các mục đích chính một cách rõ ràng.
- Bản vẽ, sơ đồ kiến trúc của hệ thống.
- Đưa ra các yếu tố rủi ro và không rủi ro.
II.Giới thiệu về Eclipse
1. Lược sử
Eclipse là môi trường phát triển tích hợp được phát hành miễn phí dùng để
lập trình java do IBM cùng với 8 tổ chức khác tạo nên. Hiện nay, Eclipse không
chỉ cung cấp môi trường phát triển tích hợp cho Java mà còn cho các ngôn ngữ
khác như JavaScript, PHP, C, C++, Cobol, Python, C#, HTML, XML nếu người
dùng mở rộng các plug-in.
Eclipse có nhiều gói sản phẩm hỗ trợ nhiều khía cạnh khác nhau trong lập
trình trên cả Windows, Linux và Mac và đáp ứng cho nhiều đối tượng người
dùng:
2
Eclipse IDE for Java Developers
Eclipse IDE for Java EE Developers
Eclipse Classic 3.6.1
Eclipse IDE for C/C++ Developers
Eclipse for PHP Developers
Eclipse IDE for JavaScript Web Developers
Eclipse Modeling Tools (includes Incubating components)
Eclipse IDE for Java and Report Developers
Eclipse for RCP and RAP Developers
Pulsar for Mobile Developers
Eclipse SOA Platform for Java and SOA Developers (includes
Incubating components)
2. Chức năng chính của Eclipse

Nền tảng Eclipse được xây dựng nhằm đáp ứng những yêu cầu cơ bản
như sau:
• Cho phép người dùng tạo dự án theo những yêu cầu họ đặt ra và thiết
lập môi trường làm việc.
• Cho phép người dùng lựa chọn thành phần gắn thêm phù hợp với dự án
• Cho phép người dùng lưu trạng thái của dự án và mở ra khi cần thiết
• Hỗ trợ cấu trúc của nhiều loại thành phần gắn thêm cho phát triển ứng
dụng
• Hỗ trợ không giới hạn các nhà cung cấp công cụ, bao gồm cả những
người phát triển phần mềm độc lập
3
• Hỗ trợ công cụ thao tác với nhiều loại nội dung: HTML, XML, Java, C,
EJB,…
• Dễ dàng tích hợp các công cụ trong cùng loại nội dung hay có sự giao
nhau giữa các loại nội dung
• Hỗ trợ cả môi trường phát triển có giao diện và không có giao diện
• Có thể chạy trên nhiều loại hệ điều hành khác nhau, bao gồm Microsoft
Windows, MacOS và Linux.
• Tận dụng được sự phổ biến của ngôn ngữ Java trong việc phát triển
thành phần gắn thêm.
3. Các thuộc tính chất lượng
• Khả năng mở rộng: Hệ thống được thiết kế và phát triển sao cho có thể dễ
dàng thêm hoặc bớt đi các thành phần gắn vào.
• Tính dễ sử dụng: Hệ thống cần được thiết kế để lập trình viên có thể dễ
dàng sử dụng, tìm kiếm trợ giúp, cập nhật phiên bản thường xuyên, các
thành phần gắn thêm có thể gọi lẫn nhau dựa trên chuẩn giao diện chung.
• Hiệu năng: Hệ thống được thiết kế để đưa ra phản ứng trong thời gian
ngắn và có thể tạo ra báo cáo chi tiết về lỗi.
III. Thiết kế kiến trúc của Eclipse
Eclipse SDK được thiết kế theo kiểu kiến trúc Module. Nó là tập hợp các

Module được gắn kết với nhau, trong mỗi Module gồm nhiều Module thành
phần. Eclipse SDK bao gồm 4 phần chính:
- Platform
- Java Development Toolkit (JDT)
- Plug-in Development Environment (PDE)
- Các Plug-in
Trong đó, Platform đóng vai trò là nền tảng cơ bản, điều kiển sự liên kết của
các thành phần khác. Hệ thống linh hoạt ở chỗ người dùng có thể tạo ra
4
nhiều Plug-in tùy theo mục đích sử dụng bằng cách sử dụng công cụ PDE và
liên kết chúng vào hệ thống một cách dễ dàng. JDT đóng vai trò là bộ công
cụ để phát triển mã nguồn Java.
Kiến trúc tổng quan của Eclipse có thể được mô tả bằng hình vẽ sau:
Hình 1: Kiến trúc tổng quan Eclipse
1. Platform
Là nền tảng của toàn bộ phần mềm Eclipse, mục đích của nó là cung cấp những dịch vụ
cần thiết cho việc tích hợp những bộ công cụ phát triển phần mềm khách dưới dạng
Plug-in.
Platform gồm nhiều thành phần, mỗi thành phần hoạt động như một dự án và giữa 2
thành phần bất kì đều có sự liên kết qua lại với nhau thông qua sự điều kiển của hạt
nhân Core:
5
Eclipse
Platform
Eclipse
Platform
Java
Development
Toolkit (JDT)
Java

Development
Toolkit (JDT)
Plug-in
Development
Environment
(PDE)
Plug-in
Development
Environment
(PDE)
Plug-in
Plug-in
Plug-in
Plug-in
Hình 2: Kiến trúc Eclipse Platform

Ant:
Là một công cụ xây dựng cơ bản của Java. Ant là một công cụ để
dịch code java dựa trên trình biên dịch java. Nó tồn tại độc lập với Eclipse và
giống như là một dự án mã nguồn mở Apache chúng ta đã biết (Có thể tham
khảo trên Việc tích hợp Ant Project vào Eclipse
nhằm:
- Thực thi Ant build-file (công cụ hỗ trợ biên dịch code java dựa trên
trình biên dịch của java) từ Eclipse
- Cho phép truy cập vào tài nguyên của Eclipse từ Ant build-file
- Cung cấp UI (giao diện người dùng) hỗ trợ cho việc chạy Ant build-
file và quản lý output của nó.
6
SWT
SWT

UI
UI
CORE
CORE
Text
Text
Ant
Ant
Debug
Debug
Searc
h
Searc
h
Relen
g
Relen
g
Update
Update
Help
Help
CVS
CVS
Team
Team
- Cung cấp các phương tiện để phát triển Ant build-file như trình soạn
thảo, gỡ lỗi…
Trong Ant có các plug-in sau:
org.eclipse.ant.core

org.eclipse.ant.ui
org.eclipse.ui.externaltools
org.eclipse.ant.tests.core
org.eclipse.ant.tests.ui

Core/Platform Runtime:
là thành phần cơ bản nhất của nền tảng, chức
năng của nó là thành phần thực thi nền tảng và quản lý tài nguyên của hệ
thống. Core như là hạt nhân liên kết các thành phần lại với nhau. Nó cung cấp
các bộ phận nền tảng cơ bản và không bao hàm một UI nào.
- Nhiệm vụ: hỗ trợ chuyển đổi thông tin giữa các thành phần, các plug-in với
nhau và với nền tảng. Core không trực tiếp điều khiển thực thi các plug-in mà
cung cấp cho mỗi thành phần plug-in thông tin ngữ cảnh mà plugin đó thực thi.
- Core có các plug-in cơ bản sau:
• org.eclipse.core.contenttype: Hỗ trợ cho việc định nghĩa và quản lý
các kiểu nội dung file.
• org.eclipse.core.expressions: Hỗ trợ cho việc quản lý, thực thi XML
• org.eclipse.core.filesystem: Cung cấp hệ thống các hàm API
• org.eclipse.core.jobs: Hỗ trợ cơ sở cho việc lập trình
• org.eclipse.core.resources: Hỗ trợ quản lý dự án, thư mục, file
• org.eclipse.core.runtime: Thành phần cơ bản nhất, trực tiếp điều
khiển toàn bộ công việc của Platform
Những Plug-in này là rất tổng quát, mỗi plug-in cung cấp 1 số dịch vụ cơ bản,
API và những điểm mở rộng cho việc quản lý và tương tác giữa các dịch vụ đó.
7
- Core cũng cung cấp một kỹ thuật cho phép mở rộng các đối tượng. Một lớp
được cài đặt giao diện adaptable (có thể thích ứng) sẽ công bố những hướng mở
của mình cho bên thứ 3. Chẳng hạn Workbench là một đối tượng adaptable.
- Core được cài đặt sử dụng mô hình dịch vụ OSGi (Open Service Gateway –
công nghệ kết nối mở các thành phần, viết bằng Java)


CVS
(Concurrent Versions System): Công cụ hỗ trợ quản lý mã. Mục đích
của thành phần CVS là cung cấp một sự hòa hợp CVS tốt nhất trong một môi
trường phát triển tốt nhất. CVS bao gồm một java client thuần túy, hỗ trợ làm
việc mà không cần thao tác trên dòng lệnh trên máy của người dùng. Thuận lợi
của việc viết một java client là chúng ta có thể mô tả những đặc trưng mà không
cần thao tác trên dòng lệnh (ví dụ: xem kho dữ liệu từ xa).

Debug:
Hỗ trợ gỡ lỗi. Thực chất nó gồm 2 thành phần con riêng biệt:
Platform Debug and JDT Debug. Platform Debug định nghĩa các giao diện cho
các mô hình gỡ lỗi ngôn ngữ độc lập nhau. JDT Debug là sự thể hiện của
Platform Debug, hỗ trợ cho việc tương tác với bất cứ một JPDA (
Java Platform
Debugger Architecture
- kiến trúc gỡ lỗi cơ sở) nào của Java.

Releng (Release Engineering):
Cung cấp các dịch vụ kỹ thuật cho
nhóm phát triển dự án chẳng hạn việc download source từ eclipse.org

Search:
Hỗ trợ khả năng tìm kiếm cho workbench.

SWT(Standard Widget Toolkit):
cung cấp những API chung nhất, độc
lập với hệ điều hành phục vụ cho các thao tác đồ họa. Các API này hướng đến
tích hợp chặt chẽ với hệ thống cửa sổ. Trên mỗi hệ điều hành khác nhau, các
thành phần đồ họa này sẽ chuyển thành các thành phần đồ họa trong hệ điều

hành đó. Điều này cho phép bộ công cụ có thể ngay lập tức phản ánh bất kì sự
thay đổi nào trong giao diện của hệ điều hành mà vẫn bảo đảm tính nhất quán
trong mô hình lập trình. Toàn bộ giao diện của Eclipse và các thành phần gắn
thêm sử dụng SWT để biểu diễn thông tin cho người dùng. SWT bao gồm nút
bấm, danh sách, hộp kí tự, thanh thực đơn, cây thực đơn…
8

Team/Compare:
Hỗ trợ làm việc theo nhóm
Eclipse hỗ trợ quản lí phiên bản và quản lí cấu hình cho dự án trong không
gian làm việc khi làm việc theo nhóm. Platform có những điểm mở rộng và cung
cấp các API cho phép các kho chứa của một nhóm làm việc gắn vào. Mỗi kho
chứa cung cấp chức năng khác nhau, phụ thuộc vào luồng công việc của người
dùng: như thêm các bước để lấy file từ kho chứa, cập nhật file đã được sửa vào
kho chứa và so sánh hai phiên bản khác nhau của cùng một file. Eclipse cung
cấp các móc để các kho chứa của nhóm làm việc thực hiện các thao tác với tài
nguyên trong dự án. Eclipse cũng hỗ trợ CVS truy cập thông qua giao thức ssh.

Text:
Hỗ trợ cho việc soạn thảo chương trình.

User Assistance:
Hệ thống trợ giúp người dùng. Cung cấp kĩ thuật cho
phép các công cụ định nghĩa và phân phối tài liệu trực tuyến. Hỗ trợ lần vết: thành
phần lần vết cho phép các thành phần gắn thêm khác cài đặt ngôn ngữ cho bộ chạy và
lần vết một chương trình.

UI (User Interface):
Giao diện tương tác với người dùng. UI gồm 2
thành phần đó là Jface và Workbench

-
Jface
: là một bộ công cụ dành cho việc lập trình những tác vụ liên quan
đến giao diện chung. JFace là một hệ thống cửa sổ độc lập trong cả API và lập
trình, nó được thiết kế để làm việc cùng với SWT mà không gây ra xung đột.
JFace bao gồm các thành phần giao diện thường dùng như: ảnh, phông
chữ, hộp thoại, khung tùy biến, và thanh tiến trình. Trong JFace có hai đặc điểm
nổi bật đó là hoạt động và khung nhìn. Hoạt động cho phép người dùng định
nghĩa các câu lệnh từ những thành phần xác định trong giao diện. Khung nhìn là
mô hình điều khiển các hành vi chung và cung cấp ngữ nghĩa ở mức cao hơn so
với các thành phần trong SWT.
- Workbench (Bàn làm việc)
Workbench là giao diện cá nhân của Eclipse, nó cung cấp cách thức người
dùng tương tác với Eclipse. Với vai trò trung tâm, bàn làm việc thường được coi
9
đồng nhất với giao diện của Eclipse. Mẫu giao diện của Eclipse dựa trên trình
soạn thảo (editor), khung nhìn (view) và phối cảnh (perspective).
- Trình soạn thảo cho phép người dùng mở, sửa chữa và lưu lại các đối
tượng.
- Khung nhìn cung cấp thông tin về một số đối tượng mà người dùng đang
làm việc. Một khung nhìn có thể trợ giúp cho trình soạn thảo nhờ việc cung cấp
thông tin về đối tượng đang được thao tác.
Ví dụ:
Hình 3: Views dùng để xem các lớp, thuộc tính, method
- Một cửa sổ làm việc có thể có một vài phối cảnh (perspective) riêng biệt,
nhưng chỉ một trong số chúng có thể được hiển thị tại một thời điểm. Mỗi phối
cảnh có những khung nhìn và trình soạn thảo của riêng nó, những thành phần
này được sắp xếp theo một cách nào đó trên màn hình.
VD về 1 kiểu phối cảnh các views trong Eclipse:
10

Hình 4: Một kiểu phối cảnh
Hình 5: Mối liên hệ giữa các thành phần trong workbench

Update:
Cung cấp các dịch vụ cập nhật cho hệ thống. Các chức năng
chính của nó:
- Phát hiện ra vị trí của bản cập nhật (trên Web, hoặc hệ thống tập tin
cục bộ)
- Thêm mới các plug-in cho Eclipse
11
- Cập nhật các plug-in hiện có
- Quản lý cục bộ việc cài đặt, cấu hình của người dùng Eclipse
2. JDT
JDT cũng có thể được coi như là một Plug-in làm cho Eclipse như là một Java
IDE (Integrated Development Enviroment- môi trường phát triển tích hợp).
JDT bao gồm các thành phần sau:
Hình 6: Các thành phần trong JDT

APT (Annotation Processing Tool):
Công cụ tạo chú thích trong java.
Một bộ chế biến chú thích là một trình biên dịch Java có thể thu thập thông tin
về mã nguồn khi nó đang được biên dịch, tạo ra thêm các loại tài liệu, tập tin tài
nguyên khác, và cảnh báo về các lỗi.
12
JDT Core
JDT Core
JDT APT
JDT APT
JDT Debug
JDT Debug

JDT Text
JDT Text
JDT UI
JDT UI

Core:
là một bộ phận quan trọng của Java IDE. Nó bao gồm:
-
Trình biên dịch java
- Java Model: cung cấp các API
- Trợ giúp về mã
- Một danh mục cơ cở cho việc tìm kiếm dựa trên cơ sở hạ tầng được sử
dụng để tìm kiếm, trợ giúp về mã, khôi phục cấu trúc mã
- Hỗ trợ trong việc định dạng mã

Debug:
là một thành phần của Platform debug. JDT debug cung cấp các
chức năng gỡ lỗi sau:
-
Chạy máy ảo java hay chế độ debug
- Đánh giá bối cảnh của hàng đợi
- Đánh giá sự tương tác của các đoạn mã java
- Nạp lại các Class được hỗ trợ bởi máy ảo java

Text:
Hỗ trợ cho việc soạn thảo chương trình

UI:
Cung cấp giao diện người dùng. Các chức năng của nó:
- Package Explorer View:


Cho phép hiển thị cây phần tử trong dự án
- Java Outline View: hiển thị cấu trúc các lớp
- Hỗ trợ việc tạo project, package, class, interface
- Java Editor: hỗ trợ các công cụ cho việc soạn thảo như hiển thị màu theo
của code, đưa ra mô tả của phương thức, sửa lỗi nhanh, trợ giúp…
Mối quan hệ giữa JDT và Platform:
13
Hình 7 : Các mối liên hệ chính giữa JDT và Platform
3. PDE
PDE hỗ trợ việc mở rộng Eclipse, tích hợp các Plug-in vào Eclipse Platform
14
PDE cung cấp các công cụ cho việc tạo, phát triển, kiểm thử, gỡ lỗi, biên dịch
và triển khai các Eclipse plug-in, các Fragment, các trang cập nhật và RCP. PDE
cũng cung cấp công cụ OSGi – môi trường lí tưởng cho việc lập trình thành phần
chứ không chỉ riêng phát triển các Eclipse plug-in
Các thành phần của PDE:

PDE Build
: mục đích của nó là giúp thuận tiện hơn trong vấn đề biên dịch
các plug-in. Thực chất, PDE Build đưa ra các kịch bản Ant dựa trên thông
tin development-time được cung cấp, ví dụ như việc gắn kết các file .XML.
Các kịch bản Ant có thể chỉ rõ mối quan hệ của các dự án trong kho CVS,
build jars, Javadoc, source zips, và đặt chúng trong cùng một định dạng
để có thể gửi đi.

PDE UI:
Cung cấp các công cụ hỗ trợ giao diện người dùng. Một số chức
năng của nó :
- Trình soạn thảo

- Hướng dẫn tạo một dự án mới
- Cho phép import/export các Plug-in
- Trợ giúp người dùng trong quá trình soạn thảo
- Tích hợp với JDT
- Test và debug các ứng dụng
- …

PDE API Tools:
Công cụ API giúp người phát triển trong việc bảo trì như
thông báo sự không tương thích, sự khác nhau của các version của các
plug-in.
Công cụ này được thiết kế nhằm:
15
- Đưa ra khả năng tương thích giữa các phiên bản của một thành
phần phần mềm.
- Cập nhật số lượng các phiên bản của plug-in dựa trên biểu đồ
version
- Cung cấp công cụ trợ giúp sinh tài liệu (javadoc)
- Dựa vào thông tin của MANIFEST.MF của plug-in để định nghĩa
tình trạng của các package giữa các gói

PDE Incubator:
Là nơi để phát triển và test các ý tưởng mới
4. Thành phần gắn thêm (Plug-in):
Là đơn vị chức năng nhỏ nhất của Eclipse. Nó có thể được phát triển và
phân phối riêng rẽ. Mỗi thành phần gắn thêm có thể tập trung vào lượng nhỏ
các tác vụ và hoàn thành tốt tác vụ đó. Có rất nhiều loại tác vụ: kiểm thử, xuất
bản, biên dịch, gỡ lỗi…Các nhà phát triển các thành phần gắn thêm này không
cần lo lắng vấn đề tích hợp và nền tảng thế nào mà chỉ cần tập trung vào nội
dung thành phần của mình vì Eclipse đã cung cấp sẵn cơ chế làm việc này.

Thành phần gắn thêm có thể chỉ là một thành phần đơn hoặc cũng có thể
được tổ hợp từ nhiều thành phần. Thành phần gắn thêm được viết bằng ngôn
ngữ java. Một thành phần gắn thêm thường có những thành phần như sau:
- Mã java trong thư viện .Jar
- Các tài nguyên khác như: ảnh, danh sách thông điệp, thư viện…
- Tập tin khai báo: khai báo liên kết với các thành phần gắn thêm
khác. Mô hình liên kết khá đơn giản: một thành phần gắn thêm khai báo số
lượng bất kì điểm mở rộng nào, và bất kì số lượng mở rộng đến một hay nhiều
điểm mở rộng trong các thành phần gắn thêm khác.
Khai báo gồm hai file chính: khai báo OSGi (MANIFEST.MF) và khai báo thành
phần gắn thêm (plugin.xml)
16
Khi khởi động, bộ thực thi nền tảng sẽ tìm kiếm tập các thành phần gắn thêm
hiện có, đọc file
manifest
và tạo nên một bản đăng kí trong bộ nhớ của thành
phần gắn thêm này. Một thành phần gắn thêm hoạt động khi mã của nó được
thực thi. Khi hoạt động, thành phần gắn thêm sử dụng bản ghi đăng kí để tìm
kiếm và truy cập đến những phần cộng tác mở rộng cho điểm mở rộng của nó.
IV. Đánh giá
Kiến trúc Module mở của Eclipse có tính linh động rất cao, đem lại nhiều
thuận lợi cho người phát triển. Với Eclipse, chúng ta có nhiều sự hỗ trợ tốt để
phát triển dự án và cũng có thể tạo ra nhiều công cụ cho riêng mình bằng các
plug-in.
**********************************
Tài liệu tham khảo:
- “Eclipse Platform Technical Overview” – IBM (2006)
- “An Introduction to Software Architecture” - David Garlan and Mary Shaw
(1994)
- “Software Architecture in Practice” - Len Bass, Paul Clements, Rick Kazman

(2003)
- /
-
- Tiểu luận: Phân tích kiến trúc của Eclipse – SV Khoa CNTT Trường ĐH Công
Nghệ (2009)
17

×