Tôi đã tham gia một số khóa học thiết kế phần mềm trong vài học kỳ vừa qua và trong khi tôi thấy lợi ích của rất nhiều hình thức, tôi cảm thấy như nó không cho tôi biết bất cứ điều gì về chính chương trình:
- Bạn không thể biết chương trình sẽ vận hành như thế nào từ thông số ca sử dụng, mặc dù nó thảo luận về những gì chương trình có thể làm.
- Bạn không thể nói bất cứ điều gì về trải nghiệm người dùng từ tài liệu yêu cầu, mặc dù nó có thể bao gồm các yêu cầu chất lượng.
- Các sơ đồ trình tự là một mô tả tốt về cách phần mềm hoạt động như ngăn xếp cuộc gọi, nhưng rất hạn chế và cung cấp một cái nhìn cao một phần cho toàn bộ hệ thống.
- Các sơ đồ lớp rất tốt để mô tả cách hệ thống được xây dựng, nhưng hoàn toàn vô dụng trong việc giúp bạn tìm ra phần mềm cần gì.
Trường hợp trong tất cả các hình thức này là điểm mấu chốt: chương trình trông như thế nào, hoạt động như thế nào và nó mang lại trải nghiệm gì? Nó không có ý nghĩa hơn để thiết kế ra khỏi đó? Không phải là tốt hơn để tìm ra làm thế nào chương trình nên hoạt động thông qua một nguyên mẫu và cố gắng thực hiện nó thực sự?
Tôi biết rằng có lẽ tôi đang bị dạy bởi các nhà lý thuyết, nhưng tôi cần hỏi, liệu họ có làm điều này trong ngành không? Làm thế nào để mọi người tìm ra chương trình thực sự là gì, không phải là những gì nó phải phù hợp với? Có phải mọi người tạo nguyên mẫu rất nhiều, hoặc họ chủ yếu sử dụng các công cụ chính thức như UML và tôi chưa hiểu rõ về việc sử dụng chúng?