Bỏ qua đến nội dung
Bài viết này đã được dịch từ tiếng Nhật bằng AI
Đọc bằng tiếng Nhật
Bài viết này thuộc Miền Công Cộng (CC0). Hãy thoải mái sử dụng nó một cách tự do. CC0 1.0 Universal

Phát triển kiểu phát triển và kiểm thử theo hướng tái cấu trúc

Phát triển là quá trình lặp đi lặp lại để tạo ra một cái gì đó mới và hữu ích.

Khi nghĩ về phát triển, chúng ta thường nghĩ đến việc phát triển sản phẩm mới. Điều này khác với sản xuất, vốn tạo ra các sản phẩm riêng lẻ; thay vào đó, nó liên quan đến việc tạo ra các thông số kỹ thuật thiết kế hoặc khuôn mẫu cho sản phẩm.

Do đó, các bản thiết kế hoặc khuôn mẫu được tạo ra thông qua phát triển sản phẩm mới được sử dụng lặp đi lặp lại trong các nhà máy để sản xuất nhiều sản phẩm giống hệt nhau.

Cũng có những cách sử dụng như phát triển năng lực cá nhân hoặc phát triển xã hội và quốc gia. Điều này ngụ ý không chỉ đơn thuần là sự gia tăng những gì một người sở hữu, mà là khả năng sử dụng và hưởng lợi lặp đi lặp lại từ những năng lực đã được phát triển.

Mặc dù sức mạnh kinh tế của cá nhân và xã hội có thể dao động do điều kiện kinh tế, nhưng những năng lực đã phát triển về cơ bản là vĩnh viễn.

Ngay cả khi chúng giảm đi, đó được coi là sự suy thoái chứ không phải là sự dao động lên xuống của sự thịnh vượng kinh tế.

Ngoài ra, còn có sự phát triển của công nghệ và kiến thức. Không giống như khả năng của cá nhân hoặc các xã hội cụ thể, những thứ này có đặc điểm là dễ dàng chia sẻ.

Và trong số các sản phẩm, năng lực, kiến thức và công nghệ là kết quả của những phát triển này, một số có thể đóng góp vào sự phát triển tiếp theo.

Bằng cách phát triển các đầu ra hữu ích như vậy, phạm vi phát triển được mở rộng, đồng thời hiệu quả và chất lượng được cải thiện.

Phát triển phần mềm theo hướng AI

Nhìn chung, việc phát triển đòi hỏi rất nhiều thời gian và công sức. Đặc biệt khi xã hội tiến bộ và mọi thứ trở nên tinh vi hơn, việc tạo ra những điều mới mẻ càng trở nên khó khăn hơn.

Tuy nhiên, với sự ra đời của AI tạo sinh, tình hình này đang thay đổi. Hiện tại, phát triển phần mềm đang trải qua những thay đổi đáng kể nhờ khả năng lập trình cao của AI tạo sinh.

Trong bối cảnh này, một tầm nhìn tương lai, nơi các tác nhân tự trị dựa trên AI tạo sinh trở thành trung tâm của phát triển phần mềm với vai trò kỹ sư phần mềm, đã và đang trở thành hiện thực.

Chúng ta hiện đang ở trong giai đoạn chuyển đổi. Mặc dù chúng ta không thể hoàn toàn giao phó việc phát triển cho AI tạo sinh, nhưng việc khéo léo sử dụng AI tạo sinh có thể thúc đẩy mạnh mẽ quá trình phát triển phần mềm.

Đây được gọi là phát triển phần mềm theo hướng AI.

Phát triển theo hướng phát triển (Developmental Development)

Khi AI tạo sinh giúp phát triển phần mềm hiệu quả hơn, nó không chỉ hợp lý hóa việc phát triển phần mềm mục tiêu cuối cùng mà còn cả việc phát triển phần mềm hỗ trợ quá trình phát triển đó.

Như đã đề cập trước đó, các kết quả đầu ra tạo điều kiện cho sự phát triển sẽ mở rộng phạm vi của nó, đồng thời giúp cải thiện hiệu quả và chất lượng. Hơn nữa, nếu được tạo ra một cách hiệu quả, chúng có thể được tái sử dụng trong các dự án phát triển khác.

Do đó, bằng cách phát triển phần mềm hỗ trợ trong quá trình phát triển phần mềm, hiệu quả tổng thể có thể được tăng lên, và các tài sản này có thể được tận dụng cho các dự án phát triển trong tương lai.

Theo truyền thống, việc phát triển các phần mềm phụ trợ như vậy là một thông lệ phổ biến, nhưng nó đòi hỏi thời gian và công sức phát triển riêng, cần phải cân nhắc kỹ lưỡng và thực hiện tập trung.

Bằng cách sử dụng AI tạo sinh, người ta có thể nhanh chóng tạo ra các phần mềm đơn giản để tự động hóa các tác vụ nhỏ nảy sinh. Nếu tác vụ liên quan đến xử lý rõ ràng, AI tạo sinh có thể tạo ra chương trình một cách chính xác mà hầu như không có lỗi.

Do đó, việc phát triển phần mềm hỗ trợ trong quá trình phát triển phần mềm đã trở nên dễ dàng hơn trước đây.

Và, khi suy nghĩ sâu sắc về điều này, một phong cách phát triển xuất hiện, trong đó các công cụ hữu ích cho việc phát triển được liên tục tạo ra trong quá trình, từ đó biến đổi chính phương pháp phát triển.

Chúng ta sẽ gọi đây là "phát triển theo hướng phát triển" (developmental development).

Để thực hành phát triển theo hướng phát triển, một người cần có thói quen quan sát khách quan quá trình phát triển phần mềm của mình, xem xét những phần nào có thể được xử lý bởi phần mềm và những phần nào chỉ có thể được xử lý bởi con người, cùng với kỹ năng phát triển các phần mềm phụ trợ như vậy.

Hơn nữa, AI tạo sinh có thể được tích hợp vào các công cụ phần mềm này. Bằng cách nhúng nó vào phần mềm, không giống như các tác nhân AI tạo sinh, phạm vi xử lý có thể được thu hẹp ở một mức độ nào đó và các đường dẫn có thể được xác định.

Mặc dù các tác nhân AI có thể đạt được kết quả tương tự thông qua các lời nhắc (prompts), phần mềm với AI tạo sinh nhúng có thể dễ dàng tăng độ chính xác hơn bằng cách kết hợp cả chương trình và lời nhắc.

Nếu việc phát triển theo hướng phát triển như vậy có thể được thực hành, dự án thứ hai sẽ cho thấy sự cải thiện cả về chất lượng và chi phí so với dự án đầu tiên. Hơn nữa, với mỗi dự án tiếp theo – thứ ba, thứ tư, v.v. – những cải tiến sẽ tiếp tục tích lũy.

Điều này hoàn toàn khác so với việc chỉ đơn thuần sử dụng AI tạo sinh để phát triển phần mềm. Một khoảng cách đáng kể sẽ xuất hiện theo thời gian giữa các nhóm chỉ đơn giản thành thạo các công cụ AI tạo sinh và các nhóm thực hành phát triển theo hướng phát triển.

Kiểm thử theo hướng tái cấu trúc

Có một khái niệm gọi là Phát triển theo hướng kiểm thử (TDD), trong đó các bài kiểm thử được thiết kế trước dựa trên các thông số kỹ thuật, sau đó phần mềm được phát triển để vượt qua các bài kiểm thử đó.

Ban đầu, tôi cũng nghĩ rằng bằng cách tận dụng AI tạo sinh, sẽ dễ dàng phát triển các chương trình kiểm thử cho kiểm thử tự động, giúp TDD khả thi.

Tuy nhiên, khi bắt đầu thực hành phát triển kiểu phát triển, tôi nhận ra rằng việc suy nghĩ về các bài kiểm thử trước khi triển khai chúng không phải lúc nào cũng là phương pháp phù hợp nhất.

Đặc biệt đối với phần mềm như ứng dụng web liên quan đến các khía cạnh chủ quan như khả năng sử dụng và thiết kế trực quan, mà người dùng tương tác trực tiếp, tôi nhận thấy rằng việc thực sự chạy và tương tác với phần mềm được ưu tiên hơn so với các bài kiểm thử chi tiết.

Điều này là do nếu có sự không hài lòng đáng kể ở cấp độ UI/UX sau khi tương tác, có khả năng người ta sẽ muốn thay đổi các phần cơ bản như framework, kiến trúc cơ bản, mô hình dữ liệu hoặc các trường hợp sử dụng.

Trong dự án phát triển phần mềm cá nhân hiện tại của tôi, tôi nhận thấy các vấn đề về tính linh hoạt và hiệu suất của tính năng và cuối cùng đã thay thế hai framework bằng các framework khác.

Tôi cũng phải xem xét lại toàn bộ quá trình xử lý ở một số khu vực do sử dụng bộ nhớ không hiệu quả.

Chính tại những thời điểm tái cấu trúc này, việc kiểm thử lần đầu tiên trở thành một cân nhắc có ý thức.

Nếu điều này ở giai đoạn đầu của quá trình phát triển, hoặc nếu các chức năng và thông số kỹ thuật sẽ thay đổi đáng kể dù sao đi nữa, thì các bài kiểm thử có thể không cần thiết.

Tuy nhiên, nếu quá trình phát triển đã khá tiên tiến và có nhiều mục cần kiểm tra, thì các bài kiểm thử sẽ cần thiết để xác nhận rằng việc tái cấu trúc không gây ra các lỗi hoặc thiếu sót về chức năng.

Do đó, cách tiếp cận tạo chương trình kiểm thử khi quá trình phát triển đã tiến triển đến một mức độ nhất định và việc tái cấu trúc trở nên cần thiết không phải là một ý tưởng tồi.

Tại thời điểm này, điều quan trọng không phải là tạo bài kiểm thử cho tất cả mã, mà là tập trung vào việc kiểm thử các phần đã ổn định và ít có khả năng thay đổi nhiều trong tương lai, trong khi để lại các phần linh hoạt không có kiểm thử tự động.

Điều này có thể được gọi là Kiểm thử theo hướng tái cấu trúc.

Kết luận

AI tạo sinh đang thay đổi đáng kể lĩnh vực phát triển phần mềm.

Trong một bài viết trước, tôi đã viết về tầm quan trọng của việc hướng tới trở thành một "Kỹ sư đa năng" (Omni-directional Engineer), có khả năng phát triển các hệ thống kết hợp nhiều lĩnh vực, cơ sở hạ tầng và môi trường thực thi khác nhau, vượt ra ngoài khái niệm kỹ sư full-stack truyền thống.

Tôi cũng đã viết một bài báo cho rằng chúng ta đang bước vào kỷ nguyên của "Phát triển tập trung vào Trải nghiệm & Hành vi" (Experience & Behavior-centric Development), nơi trọng tâm không phải là điều chỉnh thông số kỹ thuật với việc triển khai, mà là cải thiện trải nghiệm người dùng thông qua hành vi của phần mềm.

Phát triển kiểu phát triển và kiểm thử theo hướng tái cấu trúc chính là những gì dẫn đến những chân trời mới này trong phát triển phần mềm.