làm thế nào để phiên bản ngữ nghĩa áp dụng cho các chương trình không có API


42

Trong http://semver.org/ Wapwhich trong nhận thức của tôi dường như là quy ước được sử dụng rộng rãi nhất trong phiên bản của Wap, nên tăng số phiên bản chính khi thay đổi phá vỡ / sửa đổi API được đưa ra.

Có hai kịch bản liên quan tôi không thấy cách áp dụng hướng dẫn này:

  1. Điều gì xảy ra nếu mã của tôi không cung cấp bất kỳ API nào? Làm thế nào tôi nên phiên bản mã của tôi?
  2. Điều gì xảy ra nếu mã của tôi bắt đầu cung cấp API trong giai đoạn phát triển muộn?

7
Điểm 1 của thông số kỹ thuật nêu rõ: Phần mềm sử dụng Phiên bản ngữ nghĩa PHẢI khai báo API công khai. API này có thể được khai báo trong chính mã hoặc tồn tại nghiêm ngặt trong tài liệu. Tuy nhiên, nó được thực hiện, nó phải chính xác và toàn diện. Vì vậy, tôi đoán câu trả lời là bạn không sử dụng SemVer về mặt kỹ thuật nên nó hoàn toàn phụ thuộc vào bạn.
Ant P

Kiểm tra bài viết này đề xuất một giải pháp tốt cho các ứng dụng không cung cấp bất kỳ API nào, như ứng dụng dành cho máy tính để bàn: softwareengineering.stackexchange.com/a/357887/269082
men

Câu trả lời:


48

Semver chủ yếu quan tâm đến việc lập phiên bản các thư viện và gói theo cách tránh địa ngục phụ thuộc, trong các hóa thân khác nhau của nó. Tuy nhiên, ý tưởng đằng sau Semver có thể được mở rộng cho tất cả các loại chương trình - bất kỳ đoạn mã nào cũng có một loại giao diện người dùng hoặc nó khá vô dụng.

  • Thư viện lập trình hoặc dịch vụ web có API.
  • Phần mềm tiêu dùng có thể có GUI.
  • Các chương trình dòng lệnh có một bộ các công tắc và tùy chọn.
  • Các tập tin cấu hình cũng là một giao diện người dùng.

Sử dụng ví dụ về phần mềm tiêu dùng, chẳng hạn như trình xử lý văn bản:

  • Tăng số bản vá khi bạn gửi bản sửa lỗi, ví dụ: Lỗi cố định trong đó ứng dụng luôn gặp sự cố vào lúc 00:00 PM vào thứ Ba hàng tuần .
  • Tăng số phiên bản nhỏ khi thêm một tính năng mới, ví dụ: Hỗ trợ thêm cho văn bản gạch chân .
  • Tăng phiên bản chính khi bạn đại tu đáng kể giao diện người dùng hoặc viết lại tất cả nội bộ. Ví dụ: Thanh công cụ sử dụng quá nhiều màn hình. Giao diện người dùng hiện chỉ được cung cấp thông qua các cử chỉ cảm ứng - một thay đổi như vậy sẽ phá vỡ các quy trình công việc hiện có.

Tuy nhiên, nhiều vấn đề mà Semver cố gắng giải quyết không tồn tại bên ngoài lĩnh vực quản lý phụ thuộc. Trong các ứng dụng tiêu dùng, phiên bản không chỉ là một phiên bản, mà còn là một tài sản tiếp thị.

  • Firefox và Chrome phát hành các phiên bản mới tương đối thường xuyên và tăng số phiên bản chính của chúng tại mỗi phiên bản. Điều này dẫn đến số phiên bản cao một cách lố bịch (cả hai hiện đang ở độ tuổi 30). Một trình duyệt có số phiên bản cao hơn đơn giản phải tốt hơn một trình duyệt có số phiên bản thấp hơn, phải không?

  • Số phiên bản chính của hệ điều hành OS X của Apple đã trở thành một phần của tên (X là 10 bằng chữ số La Mã), làm cho số phiên bản nhỏ trở thành số phiên bản chính hiệu quả.

  • Hệ điều hành Ubuntu sử dụng sơ đồ tạo phiên bản year.month.patchlevel. Điều này giúp bạn dễ nhớ hệ điều hành của mình bao nhiêu tuổi, nhưng khó khăn hơn nhiều để tìm ra phiên bản nào tương thích và thời gian hỗ trợ cho mỗi phiên bản kéo dài.

  • Nhân Linux đã tăng số phiên bản từ 2.6,39 đến 3.0.0, vì nó 39đã lớn hơn một chút và để kỷ niệm 20 năm của Linux.

  • Hệ thống sắp chữ TeX huyền thoại của Donald Knuth sử dụng số phiên bản, kể từ phiên bản 3, hội tụ thành số π bằng cách thêm một chữ số khác vào mỗi bản phát hành: 3.14159265 Lỗi. Điều này biểu thị cách hệ thống đang tiến gần hơn đến sự hoàn hảo. Tương tự, hệ thống Metafont hội tụ đến e : 2.7182818.

Vì vậy, nhiều ứng dụng không được phục vụ tốt bởi Semver. Chọn một lược đồ phiên bản phù hợp với người dùng của bạn (bất kể những người dùng này là lập trình viên hay người tiêu dùng) và giữ cho nó phù hợp.


1
Rất nhiều phần mềm được sản xuất bởi các công cụ phát triển của Microsoft có định dạng ABCD, trong đó AB là số phiên bản chính / phụ "chung" và CD mã hóa ngày / giờ khi phần mềm được xây dựng.
MZB

Tôi yêu các ngữ nghĩa của hệ thống phiên bản π.
Ogier Schelvis
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.