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).
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 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ó. 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 [...]... 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. .. 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... 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... 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... 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ó... 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ể... Introduction to Software Architecture” - David Garlan and Mary Shaw (1994) - “Software Architecture in Practice” - Len Bass, Paul Clements, Rick Kazman (2003) - http://www .eclipse. org/ - http://help .eclipse. org - 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 ... 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à... 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... 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: JDT APT JDT Debug JDT Text JDT Core JDT UI 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ề