Багато, багато місяців тому я займався майстрами в області об'єктно-орієнтованої програмної інженерії. Я висвітлював усе: ініціювання проекту, вимоги, аналіз, дизайн, архітектура, розробка тощо, тощо. Моєю улюбленою інформаційною книжкою всіх часів була розробка об’єктно-орієнтованого програмного забезпечення, підхід, заснований на досвіді (IBM-1996). Книга, створена групою справжніх експертів свого часу. Він описує підхід, орієнтований на робочий продукт, до об'єктно-орієнтованих методів аналізу, проектування та розробки.
Я розробляв і розробляв, був задоволений і був на вершині своєї гри, але я почав відчувати себе трохи застарілим: рухливі рухи стали модою дня і перетворили бренди деяких відомих ітеративних та поступових підходів з новими словами стегна. Раптом недосвідчені розробники почали нахмуритися, коли я сказав "вимоги" чи "архітектура" так, ніби ці речі витіснили магія.
Дизайн та розробка втратили це задоволення, і я збирався залишити всю ІТ-індустрію за собою.
Тоді я відкрив Скалу. О, як м'який дощ на запиленій дорозі. Все просто стало ясно, повітря знову стало солодким, і маленьке світло мого жорсткого диска заграє глибоко в ніч, весело тримаючи компанію у моєму світі відкриття.
Мені подобається дизайн системи. Я по душі архітектор, більше, ніж програміст. Я люблю аналізувати, проектувати, мислити, сперечатися, вдосконалювати - я просто люблю прості, чисті та чіткі конструкції.
Як ми розробляємо чисті рішення Scala?
Звичайно звичайні діаграми послідовностей, діаграми взаємодії, діаграми об'єктів тощо можуть бути замінені або покращені для корисного поєднання імперативних та функціональних об'єктно-орієнтованих систем. Звичайно, є відкриття для чогось зовсім іншого!
Я не шукаю роздутої складності - я шукаю гнучку простоту. Наче подібний Scala насправді простий і легкий (хоча і різний), але його можна розширити, щоб відповідати вашим вимогам, як пара штанів з йоги. Повинна бути створена система дизайну цієї чудової мови, яка почнеться просто, і її можна буде розширити відповідно до ваших вимог та вашого домену. Напевно UML не може бути!
Тож як ми можемо проектувати чисті системи Scala? Уявіть собі на мить, у вас є розкіш, щоб розробити повну систему з нуля, і знайте, що ви будете використовувати лише Scala - як будуть виглядати ваші моделі? Які типи діаграм ви мали б описати структуру та поведінку? Як би ви моделювали параметри, сірники, комбінації, одиночні об'єкти тощо, не втягуючи їх у складність розширення існуючих методів моделювання, а не свіжого, легкого, інноваційного набору інструментів.
Чи існує така конструкція / процес / рішення чи пора її вигадати?