Phát triển phần mềm là một quá trình phức tạp đòi hỏi nhiều kiến thức và kỹ năng. Trong quá trình này, các nhà phát triển thường sử dụng các công cụ và công nghệ khác nhau để giúp họ tạo ra các ứng dụng chất lượng cao.
Trong bài viết này, chúng ta sẽ tìm hiểu về các khái niệm Platform, Framework, SDK, Engine, Library, API, IDE, Plugin và Extension. Các khái niệm này là nền tảng của phát triển phần mềm và hiểu rõ chúng sẽ giúp các nhà phát triển lựa chọn và sử dụng các công cụ và công nghệ phù hợp cho dự án của mình.
Bảng so sánh các khái niệm trong phát triển phần mềm
Tính chất | Platform | Framework | SDK | IDE | Engine | Library | API | Plugin/ Ext |
Định nghĩa | Một hệ thống phần cứng và phần mềm cho phép các ứng dụng chạy | Một tập hợp các công cụ, thư viện và API được thiết kế để giúp lập trình viên phát triển ứng dụng | Một bộ công cụ và API cung cấp quyền truy cập vào các tính năng cụ thể của một nền tảng | Một môi trường phát triển tích hợp, cung cấp các công cụ và tính năng cần thiết để phát triển ứng dụng | Một bộ công cụ và API cung cấp các khả năng đồ họa 3D | Một tập hợp các hàm và thủ tục được sử dụng để thực hiện một chức năng cụ thể | Một giao diện lập trình ứng dụng, cung cấp cách thức truy cập vào một chức năng hoặc dữ liệu cụ thể |
Một thành phần bổ sung có thể được thêm vào một ứng dụng để thêm chức năng hoặc tính năng mới
|
Quy mô | Lớn nhất | Lớn | Khá lớn | Trung bình | Trung bình | Nhỏ | Nhỏ | Nhỏ |
Độ phức tạp | Cao nhất | Cao | Khá cao | Trung bình | Trung bình | Trung bình | Thấp | Thấp |
Mục đích | Cung cấp các tính năng cơ bản cần thiết cho việc chạy ứng dụng | Cung cấp các chức năng chung, chẳng hạn như xử lý giao diện người dùng, truy cập cơ sở dữ liệu và mạng | Cung cấp quyền truy cập vào các tính năng cụ thể của một nền tảng | Cung cấp các công cụ và tính năng cần thiết để phát triển ứng dụng | Cung cấp các khả năng đồ họa 3D | Cung cấp các hàm và thủ tục được sử dụng để thực hiện một chức năng cụ thể | Cung cấp cách thức truy cập vào một chức năng hoặc dữ liệu cụ thể |
Thêm chức năng hoặc tính năng mới cho một ứng dụng
|
Ví dụ | Android, iOS, Windows, macOS, Linux | .NET Framework, Spring Framework, Django, Ruby on Rails, React Native… | Android SDK, iOS SDK | Visual Studio, Eclipse, Xcode | Unity Engine, Unreal Engine | Math.NET, Apache Commons | HTTP API, FTP API, MySQL API |
Adobe Photoshop plugin, WordPress plugin, Google Chrome extension
|
Mức độ trừu tượng | Thấp | Trung bình | Trung bình | Trung bình | Trung bình | Trung bình | Thấp | Thấp |
Khả năng tùy biến | Thấp | Trung bình | Trung bình | Trung bình | Trung bình | Trung bình | Thấp | Thấp |
Tính linh hoạt | Cao | Cao | Cao | Cao | Cao | Trung bình | Trung bình | Trung bình |
Theo quy mô và độ phức tạp nhỏ dần, các khái niệm trên được sắp xếp từ trên xuống như sau:
Platform
Platform là khái niệm lớn nhất và phức tạp nhất, bao gồm tất cả các thành phần cần thiết để chạy ứng dụng. Ta có thể hình dung các hệ điều hành Windows, MacOS, Android, iOS… đã được các hãng phần mềm hàng đầu trên thế giới đầu tư phát triển qua hàng chục năm nay. Đây đều là những hệ thống phần mềm đi kèm phần cứng lớn nhất, phức tạp nhất mà con người có thể tạo ra cho đến hiện tại.
Platform ngoài yêu cầu phần cứng đi kèm thì nó thường bao gồm rất nhiều framework, Library, API, Engine, plugin… đi kèm.
Framework
Framework là một tập hợp các công cụ (SDK), thư viện (Lib) và API được thiết kế để giúp lập trình viên phát triển ứng dụng, thường được sử dụng để xây dựng ứng dụng trên một nền tảng cụ thể.
IDE
IDE là một môi trường phát triển tích hợp, cung cấp các công cụ (SDK), thư viện (Lib), API và tính năng cần thiết để phát triển ứng dụng. IDE thường bao gồm một trình soạn thảo mã, trình biên dịch, trình gỡ lỗi và các công cụ khác. IDE giúp các nhà phát triển viết mã nhanh hơn và dễ dàng hơn, đồng thời giúp họ phát hiện và sửa lỗi.
IDE thường được sử dụng để phát triển ứng dụng cho nhiều nền tảng, trong khi SDK thường được sử dụng để phát triển ứng dụng cho một nền tảng cụ thể. IDE cung cấp nhiều công cụ và tính năng hơn SDK, nhưng SDK có thể được tùy chỉnh nhiều hơn IDE.
SDK
SDK là một bộ công cụ và API cung cấp quyền truy cập vào các tính năng cụ thể của một nền tảng. SDK thường được phát triển bởi nhà cung cấp nền tảng và được sử dụng để tạo ứng dụng cho nền tảng đó. SDK cung cấp các công cụ và API để các nhà phát triển truy cập các tính năng của nền tảng, chẳng hạn như giao diện người dùng, hệ thống file và mạng.
Engine
Engine là một bộ công cụ và API cung cấp các khả năng đồ họa 3D. Engine cung cấp các tính năng cần thiết để tạo và hiển thị đồ họa 3D, chẳng hạn như mô hình hóa, ánh sáng và kết xuất.
Library
Library là một tập hợp các hàm và thủ tục được sử dụng để thực hiện một chức năng cụ thể, thường được sử dụng để bổ sung cho Platform, Engine, IDE, SDK hay Framework
API
API là một giao diện lập trình ứng dụng, cung cấp cách thức truy cập vào một chức năng hoặc dữ liệu cụ thể. API có thể là một phần của Framework, SDK, Engine hoặc Library khác. Thông thường các API sẽ xây dựng một phương thức cho phép các truy cập từ bên ngoài vào hệ thống để đọc hoặc ghi dữ liệu.
Plugin
Plugin là một thành phần bổ sung có thể được thêm vào một ứng dụng để thêm chức năng hoặc tính năng mới cho một phần mềm có sẵn. Plugin có thể được phát triển bởi chính nhà phát triển ứng dụng hoặc được phát triển bên thứ ba.
Thông thường các Platform/Framework/Engine để có thể thu hút cộng động cùng góp sức phát triển họ sẽ cho phép người dùng phát triển các phần bổ sung này nhằm phục vụ các mục đính, tính năng riêng mà hệ thống hiện tại chưa có. Khi tính ổn định và sự phổ biến của Plugin đạt đến một mức nhất định, nó có thể sẽ được tích hợp và trong hệ thống.
Extension
Extension là một phần mềm nhỏ được thiết kế để thêm tính năng mới hoặc thay đổi giao diện của một ứng dụng. Extension thường được tạo bởi các nhà phát triển thứ ba và có thể được tải xuống và cài đặt miễn phí hoặc trả phí.
Ví dụ, một extension cho trình duyệt web có thể thêm tính năng chặn quảng cáo, chặn theo dõi hoặc thêm tiện ích mới. Extension cho ứng dụng văn phòng có thể thêm tính năng mới, chẳng hạn như kiểm tra chính tả bằng ngôn ngữ khác hoặc thêm các mẫu mới.
Extension được cài đặt và gỡ cài đặt thông qua cửa hàng extension của ứng dụng. Cửa hàng extension thường có một danh mục rộng lớn các extension, từ các extension phổ biến đến các extension ít phổ biến hơn.
Một số khái niệm tương tự khác
- Package là một tập hợp các file được liên kết với nhau. Package thường được sử dụng để quản lý các file và làm cho các file dễ tìm kiếm hơn. Trong Java Package là một tập hợp các lớp, interface và gói con tương tự nhau.
– Ví dụ, package java.lang chứa các lớp và interface cơ bản của Java, như String, System và Object. - Module là một tập hợp các chức năng và dữ liệu được liên kết với nhau. Module thường được sử dụng để tổ chức mã và làm cho mã dễ bảo trì hơn.
– Ví dụ, trong một ứng dụng web, module ở tầng cao có thể cung cấp các chức năng như quản lý người dùng, quản lý nội dung và quản lý giao dịch. Các module ở tầng thấp có thể cung cấp các chức năng cụ thể như xác thực người dùng, truy xuất dữ liệu và xử lý giao dịch.
Tạm kết
Qua bài viết này, chúng ta đã hiểu rõ về các khái niệm Platform, Framework, SDK, Engine, Library, API, IDE, Plugin và Extension. Các khái niệm này là nền tảng của phát triển phần mềm và hiểu rõ chúng sẽ giúp các nhà phát triển lựa chọn và sử dụng các công cụ và công nghệ phù hợp cho dự án của mình.