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).
Trang 1Bà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
Trang 2- 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:
Trang 3Eclipse 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
Trang 4• 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
Trang 5nhiề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:
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
Trang 6Hì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 http://ant.apache.org/) 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ó
SWT
UI CORE
Text
Searc h
Searc h
Relen g
Relen g
Update
Help
Trang 7- 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ụ đó
Trang 8- 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…
Trang 9• 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
Trang 10đồ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:
Trang 11Hì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
Trang 12- 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
JDT Core
JDT APT
JDT Debug
JDT Text
JDT UI
Trang 13• 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:
Trang 14Hì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
Trang 15PDE 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