Thứ Sáu, 30 tháng 6, 2023

Giá Sẽ Phải Trả - Cost of Fixing Bugs

The cost of detecting and fixing defects in software increases exponentially with time in the software development workflow. (phụ chú B, Chi phí phát hiện và sửa lỗi trong phần mềm tăng theo cấp số nhân theo thời gian trong quy trình phát triển phần mềm.)

Thân chào các Bê (*),
Hôm nay xin viết nhăng về một đề tài có tính chuyên môn trong công nghệ viết phần mềm (software development). "Theo thời gian trong quy trình phát triển phần mềm" thật ra chỉ là theo những công đoạn (những bước) trong quy trình phát triển software. 
Có nhiều quy trình phát triển software khác nhau (waterfall, agile,  v-shaped, interative, incremental, etc...) nhưng tựu chung thì vẫn là qua quá trình từ nhu cầu/yêu cầu (requirements), tới thiết kế (design), tới viết code (development), tới thử nghiệm (testing), tới cài đặt (deployment/installation) và tới bảo trì (maintenance, bảo hành, bảo dưỡng hay nôm na là sửa lỗi) (xin xem hình trong phụ chú E).

Dạ, dạ Đệ xin vào đề...
Bài này mục đích là vạch ra một chân lý ngàn đời: phát hiện lỗi (bugs) ở giai đoạn sau, thí dụ như ở giai đoạn design, thì sẽ rất tốn kém so với phát hiện lỗi ở giai đoạn trước, thí dụ như ở giai đoạn viết requirements (nên nhớ là viết ra giấy và hoàn thiện requirements phải được duyệt đi duyệt lại và phải được phê chuẩn (approved) bởi cấp thẩm quyền độc lập với các nhóm phát triển software (software development teams). 

"Tay mơ" sẽ nói:  "Có code xong và thử thì mới phát hiện lỗi chứ?" Thật sự thì theo chân lý trên thì giai đoạn nào cũng có thể có lỗi. Sửa càng sớm càng dễ và ít tốn kém. Xin lấy thí dụ có người khách đến tiệm bánh và đặt một chiếc bánh cưới. Requirements ở đây là: kích thước bánh, hình dạng bánh, các màu và lối phối màu (bánh màu kem, hoa màu như hoa thật, hoa gì, lá  màu xanh, trong bánh có kem không, bánh mấy lớp, bao giờ giao bánh, có phải chở tới nhà hàng không, etc...). Tất cả các requirements phải được sự đồng ý của hai bên (khách hàng và tiệm bánh). Khi hai bên thương thảo thì cũng là lúc tiệm bánh có thể yêu cầu sửa đổi requirements (thí dụ khách muốn kem với dâu tươi mà đang không phải mùa dâu). Requirements sau nhiều lần thương thảo thì hai bên phải đồng phê chuẩn. 

Đó! Nếu có lỗi ở giai đoạn requirements thì sửa khá dễ, khá nhanh vì chỉ cần hai bên đồng ý với requirement mới (thí dụ như dùng dâu đông lạnh). Nhưng nếu vì sơ xuất mà tiệm bánh không tim ra dâu tươi mà thế đại bằng dâu đông lạnh thì có thể bị thưa kiện vì không làm đúng thỏa thuận (lỗi này khá là khó sửa).
Chân lý trên nói là sửa lỗi ở giai đoạn sau phải trả giá tăng theo cấp số nhân (thí dụ sửa lỗi ở requirements là $10 (giá của số giờ thương thảo) thì nếu để tới giai đoạn giao cho khách hàng (deployment) thì phải đổi từ dâu đông lạnh sang dâu tươi thì chỉ có hai cách: 
  • hoặc cho không khách hàng cái bánh với dâu đông lạnh và đền thêm một số tiền (giá của cách này có thể là $(10 x 10 x 10 x 10 x 10) = $10,000 + tiền đền + mất tiếng tăm tiệm bánh
  • hoặc cho người bay qua nước nào có dâu tươi, mua và mang về bằng chuyên cơ hỏa tốc và làm lại chiếc bánh với việc tăng số thợ làm bánh và tăng giờ phụ trội!
Tất cả những điều nói trên. trong thập niên 2000's, bị một hãng software của Mỹ đã phá và hãng này đưa ra một luận cứ mới: cứ đưa sản phẩm ra thị trường sớm và nếu người tiêu thụ tìm ra lỗi thì sửa sau (beta test by real customers). 
Phụ chú F nói về việc IBM sáng tạo ra khái niệm Alpha Testing và Beta Testing (nhưng beta testing theo IBM là giao cho một nhóm nhỏ khách hàng tự nguyện thử nghiệm sản phẩm mới). Phải đến 2004 thì Google công khai giao GMail, được ghi rõ là bản Beta, cho khách hàng dùng. Từ đó, lịch sử đã sang trang...

Chúc các Bê một cuối tuần vui vẻ bên gia đình và người thân.
Thân,

Chú thích:
(*) Bê là Bê 60: Từ chữ tắt B60 (Beyond 60 years young) để chỉ các bác trên 60 tuổi trẻ. Tuổi Bê thì Life is short. Don't make it shorter!

Phụ chú:
A. Blogs Đã Viết--Theo Đề Tài
B. The exponential cost of fixing bugs

Thứ Ba, 6 tháng 6, 2023

Ba Vòng Kim Cô

Thân chào các Bê (*),
Hôm nay lại xin viết nhăng về một đề tài tổng quát cho bất cứ hãng xe hơi nào muốn bán xe trên các bang Hoa Kỳ và muốn gia nhập thị trường chứng khoán tại Hoa Kỳ. Vàng thật thì không sợ lửa nhưng nếu không thật thì sẽ có ít nhất ba cơ quan (1) tại Hoa Kỳ sẽ hành các hãng xe này lên bờ xuống ruộng...

Dạ, dạ Đệ xin vào đề...
Ba cơ quan của liên bang Hoa Kỳ có nhiệm vụ:
  • NHTSA (National Highway Traffic Safety Administration) - Có nhiệm vụ giám sát các lỗi về an toàn của xe giao thông trên đường phố Hoa Kỳ.

  • SEC (U.S. Securities and Exchange Commission) - Có nhiệm vụ giám sát tất cả thị trường chứng khoán tại Hoa Kỳ. Cổ phần lên xuống phần lớn là do đề nghị của các chuyên gia tài chính theo dõi hoạt động của hãng ra cổ phần. SEC sẽ đòi báo cáo (reports form 10-K hàng năm và form 10-Q hàng quý, 3 tháng).

  • USPTO (U.S. Patent and Trademark Office) - Có nhiệm vụ cấp chứng chỉ (bằng) sáng chế cho người/nhóm nộp đơn xin cấp bằng cho sáng chế của mình. Quá trình từ hình thành ý tưởng (incubating), đến được hãng, mình làm việc, chấp thuận cho mình nộp đơn với USPTO (approval for filing), đến khi USPTO cấp bằng có khi là nhiều năm (các bằng sáng chế mà Đệ có góp phần thường là mất năm, sáu năm). 
Vài điều quan trọng:
  • NHTSA
    • NHTSA chỉ trách nhiệm các "recalls" (do khách hàng báo cáo trực tiếp cho NHTSA hoặc do hãng xe tự nguyện) mang tính an toàn (safety). Thí dụ ghế da trong xe mau bạc màu thì NHTSA không quan tâm; nhưng nếu ghế của người lái mà tự dưng bật ngữa thì là vấn đề an toàn và NHTSA sẽ công bố recall.
    • Mặc dầu người sở hữu xe có quyền không sửa xe theo khuyến cáo nhưng đây có thể là lý do mà hãng bảo hiểm vin vào và từ chối trả tiền cho chủ xe khi có tai nạn (có thể tránh được khi sửa chữa theo khuyến cáo của NHTSA). Tất cả chi phí sửa chữa recall là miễn phí cho chủ xe nên thường là họ làm theo khuyến cáo.
    • Khi có recall thì hãng phải có biện pháp khắc phục (hoặc lấy lại sản phẩm; đồng nghĩa với bồi hoàn tiền cho chủ xe).
    • Khi có recall thì hãng KHÔNG được mang xe mới ra lưu hành (hoặc bán hoặc cho thuê) cho đến khi xe được sửa chửa đúng như cam kết trong recall.
  • SEC
    • SEC mà có báo cáo thì rất nhiều chuyên gia phân tích và báo chí sẽ được biết. C'est à dire: không khai gian được. Khai gian mang đến nhiều hậu quả "sanctions & penalties" như nói trong phụ chú C. Hãng vi phạm có thể phải trả nhiều trăm triệu đô la (người tố cáo có thể hưởng từ 10% tới 30% tiền phạt. Theo phụ chú C thì tiền thưởng lớn nhất tới nay là 114 triệu đô la).
  • USPTO
    • USPTO thường không được chú ý nhiều như hai cơ quan trên nhưng vai trò cầm cân nẩy mực của USPTO, trong việc quyết định bằng sáng chế, làm hãng xe, với số lượng bằng sáng chế khiêm nhường, khốn đốn vì các hãng, có nhiều bằng sáng chế, thưa kiện là hãng này xâm phạm bằng sáng chế (patent infringements). Có nhiều vụ kiện kéo dài nhiều năm; phụ chú D cho một thí dụ về việc Toyota, Honda, và GM phải hầu tòa.
Chúc các Bê một cuối tuần vui vẻ bên gia đình và người thân.
Thân,

Chú thích:
(*) Bê là Bê 60: Từ chữ tắt B60 (Beyond 60 years young) để chỉ các bác trên 60 tuổi trẻ. Đang yên đang lành với cuộc sống bình bình thì nhào vô vòng tranh đua thế giới về xe hơi!
(1) Còn một cơ quan nữa: EPA (U.S. Environmental Protection Agency) nhưng xin nói về cơ quan này vào một dịp khác.

Phụ chú:
A. Blogs Đã Viết--Theo Đề Tài
B. Chiếc vòng kim cô Tôn Ngộ Không đeo đáng giá bao nhiêu?

Thứ Năm, 1 tháng 6, 2023

Crumple Zones - Vùng Dễ Bị Biến Dạng

Thân chào các Bê (*),
Hôm nay lại xin viết nhăng về một vấn đề mà kỹ sư xe hơi không ngừng cải tiến. Xin nói ngay là Đệ không có chuyên môn trong lãnh vực này. Viết bài blog này chỉ là gởi đến Bê những thông tin về vấn đề cũng như là những gợi ý cho Bê tìm hiểu thêm nếu muốn...

Dạ, dạ Đệ xin vào đề...
Từ khá lâu rồi, Mercedes, Béla Barényi, 1959, thế giới xe hơi đã đưa ra khái niệm ứng dụng tản lực bằng nguyên liệu dễ gẫy vỡ ở đầu và đuôi xe. Khi vật liệu bị biến dạng và gẫy vỡ trong quá trình đụng xe thì lực thay vì chuyển tới người trong xe thì lực được phân phối phần lớn qua sự biến dạng/gẫy vỡ của vật chất ở đầu và đuôi xe (sau này cả hai bên hông xe). Từ đó người ta gọi là thiết kế  "Crumple Zones - Vùng Dễ Bị Biến Dạng".

Vài nhận xét:
  • Vẫn có khá nhiều người chuộng kiểu mẫu "ăn chắc, mặc bền". Vẫn thích xe có độ cứng/bền quanh xe mà không hiểu là vật liệu cứng truyền lực chấn gần như 100% tới người trong xe và gây chấn thương cho người trong xe. 
  • Crumple zones và túi khí an toàn (airbags) ngày nay tản và triệt tiêu lực chấn để bảo vệ người trong xe.
  • Quan trọng là "khung xe" (từ cột A tới cột C; khung màu đỏ trong hình trong phụ chú C), mà người ngồi phía trong, thì phải chắc chắn, không được biến dạng để bảo vệ người trong xe. 
  • Xe có crumple zones khi đụng thì thường là phải bỏ (totalled) vì không còn sửa chữa được (xem hình trong phụ chú C); nhưng đây cũng là điểm chính: của đi thay người. Hơn nữa hãng bảo hiểm đền cho nên nó không phải là mối quan tâm lớn. 
Chúc các Bê một cuối tuần vui vẻ bên gia đình và người thân.
Thân,

Chú thích:
(*) Bê là Bê 60: Từ chữ tắt B60 (Beyond 60 years young) để chỉ các bác trên 60 tuổi trẻ. Tuổi già mà có bị chấn thương thì rất khó lành.

Phụ chú:
A. Blogs Đã Viết--Theo Đề Tài