Nhiều, rất nhiều, những lần trước, tôi đã học thạc sĩ về Kỹ thuật phần mềm hướng đối tượng. Tôi bao quát mọi thứ: bắt đầu dự án, yêu cầu, phân tích, thiết kế, kiến trúc, phát triển, v.v. Cuốn sách CNTT yêu thích của tôi mọi thời đại là Phát triển phần mềm hướng đối tượng, Phương pháp tiếp cận dựa trên kinh nghiệm (IBM-1996). Một cuốn sách được tạo ra bởi một nhóm các chuyên gia thực sự của thời đại của họ. Nó mô tả một cách tiếp cận tập trung vào sản phẩm công việc đối với các phương pháp phân tích, thiết kế và phát triển hướng đối tượng.
Tôi đã thiết kế và phát triển và rất hạnh phúc và ở đầu trò chơi của mình, nhưng tôi bắt đầu cảm thấy hơi lạc hậu: Phong trào Agile trở thành mốt của thời đại và đổi tên thành một số cách tiếp cận lặp đi lặp lại và gia tăng nổi tiếng với những từ mới. Đột nhiên các nhà phát triển thiếu kinh nghiệm bắt đầu cau mày khi tôi nói "yêu cầu" hoặc "kiến trúc" như thể những thứ này được thay thế bằng ma thuật.
Thiết kế và phát triển mất đi điều đó thật thú vị và tôi sắp rời bỏ toàn bộ ngành CNTT phía sau mình.
Sau đó tôi phát hiện ra Scala. Ôi, như mưa mềm trên con đường bụi bặm. Mọi thứ trở nên rõ ràng, không khí trở nên ngọt ngào trở lại và ánh sáng nhỏ bé trong ổ cứng của tôi sẽ lóe lên trong màn đêm, vui vẻ giữ tôi lại trong thế giới khám phá của tôi.
Tôi thích thiết kế hệ thống. Tôi là một kiến trúc sư, hơn cả một lập trình viên. Tôi thích phân tích, thiết kế, suy nghĩ, tranh luận, cải tiến - Tôi chỉ thích những thiết kế đơn giản, sạch sẽ và sắc nét.
Làm thế nào để chúng tôi thiết kế các giải pháp Scala tinh khiết?
Chắc chắn các sơ đồ trình tự thông thường, sơ đồ tương tác, sơ đồ đối tượng, v.v., tất cả đều có thể được thay thế hoặc cải thiện cho sự tốt đẹp của việc pha trộn các hệ thống hướng đối tượng bắt buộc và chức năng. Chắc chắn có một sự mở đầu cho một cái gì đó hoàn toàn khác!
Tôi không tìm kiếm sự phức tạp cồng kềnh - Tôi đang tìm kiếm sự đơn giản linh hoạt. Giống như Scala thực sự đơn giản và dễ dàng (mặc dù khác nhau), nhưng có thể được mở rộng để phù hợp với yêu cầu của bạn như một chiếc quần Yoga. Phải có một hệ thống thiết kế cho ngôn ngữ đáng yêu này sẽ bắt đầu đơn giản và có thể được mở rộng để phù hợp với yêu cầu của bạn và miền của bạn. Chắc chắn UML không thể là nó!
Vậy làm thế nào để chúng ta thiết kế các hệ thống Scala thuần túy? Hãy tưởng tượng trong một khoảnh khắc, bạn có sự sang trọng để thiết kế một hệ thống hoàn chỉnh từ đầu, và biết rằng bạn sẽ chỉ sử dụng Scala - Các mô hình của bạn sẽ trông như thế nào? Những loại sơ đồ bạn sẽ phải mô tả cấu trúc và hành vi? Làm thế nào bạn có thể mô hình hóa Tùy chọn, kết hợp, mixin, Đối tượng đơn lẻ, v.v. mà không bị lôi cuốn vào sự phức tạp của việc mở rộng các kỹ thuật mô hình hiện có thay vì một bộ công cụ sáng tạo, nhẹ, mới.
Liệu một thiết kế / quy trình / giải pháp như vậy tồn tại , hay đã đến lúc phát minh ra nó?